diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1e8673bc449..3b76d0c2144 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -11,9 +11,6 @@ Hello and welcome to /tg/station's contributing page. You are here because you a But first we want to make it clear how you can contribute, if contributing is a new experience for you, and what powers the team has over your pull request so you do not get any surprises when submitting pull requests, and it is closed for a reason you did not anticipate. ##Getting Started - -####EOF settings of main repo are forbidden territory one must avoid wandering into - At /tg/station we do not have a list of goals and features to add, we instead allow freedom for contributors to suggest and create their ideas for the game. That does not mean we aren't determined to squash bugs, which unfortunately pop up a lot due to the deep complexity of the game. Here are some useful getting started guides, if you want to contribute or if you want to know what challenges you can tackle with zero knowledge about the game's code structure. If you want to contribute the first thing you'll need to do is [set up Git](http://tgstation13.org/wiki/Setting_up_git) so you can download the source code. @@ -273,3 +270,9 @@ There is no strict process when it comes to merging pull requests, pull requests * If you are proposing multiple changes, which change many different aspects of the code, you are expected to section them off into different pull requests in order to make it easier to review them and to deny/accept the changes that are deemed acceptable. * If your pull request is accepted, the code you add no longer belongs exclusively to you but to everyone; everyone is free to work on it, but you are also free to object to any changes being made, which will be noted by a Project Lead or Project Manager. It is a shame this has to be explicitly said, but there have been cases where this would've saved some trouble. + + +##A word on git +Yes we know that the files have a tonne of mixed windows and linux line endings, attempts to fix this have been met with less than stellar success and as such we have decided to give up caring until such a time as it matters. + +Therefore EOF settings of main repo are forbidden territory one must avoid wandering into diff --git a/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm b/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm index 0314b624a82..6f671cd0e3e 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_biodome_beach.dmm @@ -1,133 +1,1550 @@ -"aa" = (/turf/template_noop,/area/template_noop) -"ab" = (/turf/closed/wall/r_wall{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"ac" = (/turf/closed/wall/r_wall,/area/ruin/powered) -"ad" = (/obj/structure/flora/ausbushes/leafybush,/turf/open/floor/plating/beach/sand,/area/ruin/powered) -"ae" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical,/obj/item/stack/cable_coil,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"af" = (/obj/structure/table,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"ag" = (/obj/structure/reagent_dispensers/fueltank,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"ah" = (/obj/machinery/power/smes,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"ai" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"aj" = (/turf/closed/wall/mineral/sandstone{baseturf = /turf/open/floor/plating/beach/sand},/area/ruin/powered) -"ak" = (/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/obj/structure/toilet,/turf/open/floor/plasteel/sandeffect,/area/ruin/powered) -"al" = (/obj/structure/urinal{pixel_y = 32},/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"am" = (/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/obj/structure/urinal{pixel_y = 32},/turf/open/floor/plasteel/sandeffect,/area/ruin/powered) -"an" = (/obj/item/device/flashlight/lantern,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"ao" = (/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/open/floor/plasteel/sandeffect,/area/ruin/powered) -"ap" = (/obj/structure/flora/ausbushes/sparsegrass,/turf/open/floor/plating/beach/sand,/area/ruin/powered) -"aq" = (/obj/structure/flora/ausbushes/sunnybush,/turf/open/floor/plating/beach/sand,/area/ruin/powered) -"ar" = (/turf/open/floor/plating/beach/sand,/area/ruin/powered) -"as" = (/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"at" = (/obj/item/weapon/tank/internals/oxygen,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"au" = (/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/turf/open/floor/plasteel/sandeffect,/area/ruin/powered) -"av" = (/obj/machinery/door/airlock/hatch,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"aw" = (/obj/machinery/door/airlock/sandstone,/turf/open/floor/wood,/area/ruin/powered) -"ax" = (/obj/structure/extinguisher_cabinet,/turf/closed/wall/mineral/sandstone{baseturf = /turf/open/floor/plating/beach/sand},/area/ruin/powered) -"ay" = (/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/obj/machinery/door/airlock/hatch,/turf/open/floor/plasteel/sandeffect,/area/ruin/powered) -"az" = (/obj/item/clothing/tie/dope_necklace,/obj/item/weapon/reagent_containers/spray/spraytan,/turf/open/floor/plating/beach/sand,/area/ruin/powered) -"aA" = (/turf/open/floor/plating/beach/sand,/turf/open/floor/plasteel/sandeffect,/area/ruin/powered) -"aB" = (/turf/open/floor/plasteel/asteroid/warning{baseturf = /turf/open/floor/plating/beach/sand; dir = 1; icon_state = "asteroidwarning"; tag = "icon-asteroidwarning (NORTH)"},/area/ruin/powered) -"aC" = (/turf/open/floor/wood,/area/ruin/powered) -"aD" = (/obj/structure/table,/obj/item/weapon/storage/box/drinkingglasses,/obj/item/weapon/storage/box/drinkingglasses,/obj/item/weapon/reagent_containers/food/drinks/shaker,/obj/item/weapon/storage/box/beakers,/turf/open/floor/wood,/area/ruin/powered) -"aE" = (/obj/structure/table,/obj/machinery/reagentgrinder,/turf/open/floor/wood,/area/ruin/powered) -"aF" = (/obj/machinery/vending/boozeomat{emagged = 1},/turf/open/floor/wood,/area/ruin/powered) -"aG" = (/obj/structure/table,/obj/item/weapon/reagent_containers/glass/rag,/turf/open/floor/wood,/area/ruin/powered) -"aH" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets,/turf/open/floor/wood,/area/ruin/powered) -"aI" = (/obj/structure/table,/obj/machinery/microwave,/turf/open/floor/wood,/area/ruin/powered) -"aJ" = (/obj/structure/closet/crate/bin,/obj/item/weapon/tank/internals/emergency_oxygen,/obj/item/trash/candy,/obj/item/toy/talking/owl,/turf/open/floor/plasteel/asteroid/warning{baseturf = /turf/open/floor/plating/beach/sand; dir = 1; icon_state = "asteroidwarning"; tag = "icon-asteroidwarning (NORTH)"},/area/ruin/powered) -"aK" = (/turf/open/floor/plasteel/asteroid{baseturf = /turf/open/floor/plating/beach/sand},/area/ruin/powered) -"aL" = (/obj/effect/mob_spawn/human/bartender/alive{name = "beach bum sleeper"},/turf/open/floor/wood,/area/ruin/powered) -"aM" = (/obj/structure/reagent_dispensers/beerkeg,/turf/open/floor/wood,/area/ruin/powered) -"aN" = (/obj/machinery/vending/cigarette,/turf/open/floor/plasteel/asteroid{baseturf = /turf/open/floor/plating/beach/sand},/area/ruin/powered) -"aO" = (/obj/structure/stacklifter,/turf/open/floor/plating/beach/sand,/area/ruin/powered) -"aP" = (/obj/structure/table/wood,/turf/open/floor/wood,/area/ruin/powered) -"aQ" = (/obj/structure/table/wood,/obj/item/device/flashlight/lamp,/turf/open/floor/wood,/area/ruin/powered) -"aR" = (/obj/structure/table/wood,/obj/item/weapon/reagent_containers/food/drinks/bottle/tequila,/turf/open/floor/wood,/area/ruin/powered) -"aS" = (/obj/machinery/processor,/turf/open/floor/wood,/area/ruin/powered) -"aT" = (/obj/machinery/vending/cola,/turf/open/floor/plasteel/asteroid{baseturf = /turf/open/floor/plating/beach/sand},/area/ruin/powered) -"aU" = (/obj/effect/overlay/palmtree_l,/turf/open/floor/plating/beach/sand,/area/ruin/powered) -"aV" = (/obj/effect/mob_spawn/human/beach/alive{flavour_text = "You're, like, totally a dudebro, bruh. Ch'yea. You came here, like, on spring break, hopin' to pick up some bangin' hot chicks, y'knaw?"; pocket2 = /obj/item/weapon/reagent_containers/food/snacks/pizzaslice/dank; uniform = /obj/item/clothing/under/pants/youngfolksjeans},/turf/open/floor/plating/beach/sand,/area/ruin/powered) -"aW" = (/obj/structure/chair/stool,/turf/open/floor/plasteel/asteroid/warning{baseturf = /turf/open/floor/plating/beach/sand; dir = 1; icon_state = "asteroidwarning"; tag = "icon-asteroidwarning (NORTH)"},/area/ruin/powered) -"aX" = (/obj/structure/closet/secure_closet/freezer/meat,/turf/open/floor/wood,/area/ruin/powered) -"aY" = (/obj/machinery/vending/snack,/turf/open/floor/plasteel/asteroid{baseturf = /turf/open/floor/plating/beach/sand},/area/ruin/powered) -"aZ" = (/obj/effect/overlay/coconut,/turf/open/floor/plating/beach/sand,/area/ruin/powered) -"ba" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/open/floor/pod/dark{baseturf = /turf/open/floor/plating/asteroid/basalt},/area/ruin/powered) -"bb" = (/obj/structure/weightlifter,/turf/open/floor/plating/beach/sand,/area/ruin/powered) -"bc" = (/turf/open/floor/wood,/obj/machinery/door/airlock/sandstone,/turf/open/floor/plasteel/sandeffect,/area/ruin/powered) -"bd" = (/obj/structure/closet/secure_closet/freezer/kitchen,/turf/open/floor/wood,/area/ruin/powered) -"be" = (/obj/vehicle/scooter/skateboard{dir = 4},/turf/open/floor/plating/beach/sand,/area/ruin/powered) -"bf" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/open/floor/pod/dark{baseturf = /turf/open/floor/plating/asteroid/basalt},/area/ruin/powered) -"bg" = (/obj/structure/sign/barsign,/turf/closed/wall/mineral/sandstone,/area/ruin/powered) -"bh" = (/turf/closed/wall/mineral/sandstone,/area/ruin/powered) -"bi" = (/turf/open/floor/plating/beach/sand{density = 1; opacity = 1},/area/ruin/powered) -"bj" = (/obj/structure/chair/wood/normal{icon_state = "wooden_chair"; dir = 4},/turf/open/floor/plasteel/asteroid{baseturf = /turf/open/floor/plating/beach/sand},/area/ruin/powered) -"bk" = (/obj/structure/table/wood,/obj/item/weapon/reagent_containers/food/snacks/pastatomato,/turf/open/floor/plasteel/asteroid{baseturf = /turf/open/floor/plating/beach/sand},/area/ruin/powered) -"bl" = (/obj/structure/chair/wood/normal{icon_state = "wooden_chair"; dir = 8},/turf/open/floor/plasteel/asteroid{baseturf = /turf/open/floor/plating/beach/sand},/area/ruin/powered) -"bm" = (/mob/living/simple_animal/crab,/turf/open/floor/plating/beach/sand{density = 1; opacity = 1},/area/ruin/powered) -"bn" = (/obj/structure/closet/athletic_mixed,/turf/open/floor/pod/dark{baseturf = /turf/open/floor/plating/asteroid/basalt},/area/ruin/powered) -"bo" = (/turf/open/floor/pod/dark{baseturf = /turf/open/floor/plating/asteroid/basalt},/obj/structure/rack,/obj/item/clothing/shoes/sandal,/obj/item/clothing/shoes/sandal,/turf/open/floor/plasteel/sandeffect,/area/ruin/powered) -"bp" = (/obj/structure/grille,/obj/structure/window/fulltile,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"bq" = (/turf/open/floor/pod/dark{baseturf = /turf/open/floor/plating/asteroid/basalt},/obj/structure/closet/athletic_mixed,/turf/open/floor/plasteel/sandeffect,/area/ruin/powered) -"br" = (/turf/open/floor/pod/dark{baseturf = /turf/open/floor/plating/asteroid/basalt},/area/ruin/powered) -"bs" = (/turf/open/floor/pod/dark{baseturf = /turf/open/floor/plating/asteroid/basalt},/turf/open/floor/plasteel/sandeffect,/area/ruin/powered) -"bt" = (/obj/machinery/door/airlock/hatch,/obj/structure/fans/tiny,/turf/open/floor/pod/dark{baseturf = /turf/open/floor/plating/asteroid/basalt},/area/ruin/powered) -"bu" = (/turf/open/floor/pod/light{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"bv" = (/turf/open/floor/pod/light{baseturf = /turf/open/floor/plating/lava/smooth},/turf/open/floor/plasteel/sandeffect,/area/ruin/powered) -"bw" = (/obj/machinery/door/airlock/sandstone,/turf/open/floor/pod/dark{baseturf = /turf/open/floor/plating/asteroid/basalt},/area/ruin/powered) -"bx" = (/obj/structure/flora/rock,/turf/open/floor/plating/beach/sand,/area/ruin/powered) -"by" = (/turf/open/floor/pod/dark{baseturf = /turf/open/floor/plating/asteroid/basalt},/obj/machinery/door/airlock/sandstone,/turf/open/floor/plasteel/sandeffect,/area/ruin/powered) -"bz" = (/mob/living/simple_animal/crab,/turf/open/floor/plating/beach/sand,/area/ruin/powered) -"bA" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/item/weapon/bikehorn/airhorn,/obj/structure/table/wood,/obj/item/weapon/storage/firstaid,/obj/item/weapon/storage/firstaid/brute,/turf/open/floor/wood,/area/ruin/powered) -"bB" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 1; layer = 2.9},/obj/structure/chair/stool,/turf/open/floor/wood,/area/ruin/powered) -"bC" = (/obj/structure/table/wood,/obj/item/weapon/tank/internals/oxygen,/obj/item/weapon/pickaxe,/turf/open/floor/pod/dark{baseturf = /turf/open/floor/plating/asteroid/basalt},/area/ruin/powered) -"bD" = (/turf/open/floor/pod/dark{baseturf = /turf/open/floor/plating/asteroid/basalt},/obj/structure/dresser,/turf/open/floor/plasteel/sandeffect,/area/ruin/powered) -"bE" = (/obj/item/weapon/reagent_containers/spray/spraytan,/turf/open/floor/plating/beach/sand,/area/ruin/powered) -"bF" = (/obj/item/toy/beach_ball,/turf/open/floor/plating/beach/sand,/area/ruin/powered) -"bG" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/item/device/megaphone,/turf/open/floor/wood,/area/ruin/powered) -"bH" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/effect/mob_spawn/human/beach/alive{flavour_text = "You're a spunky lifeguard! It's up to you to make sure nobody drowns or gets eaten by sharks and stuff."; has_id = 1; id_access = "Medical Doctor"; id_job = "Lifeguard"; mob_gender = "female"},/turf/open/floor/wood,/area/ruin/powered) -"bI" = (/obj/structure/dresser,/turf/open/floor/pod/dark{baseturf = /turf/open/floor/plating/asteroid/basalt},/area/ruin/powered) -"bJ" = (/obj/structure/chair,/turf/open/floor/plating/beach/sand,/area/ruin/powered) -"bK" = (/obj/item/weapon/storage/backpack/dufflebag,/turf/open/floor/plating/beach/sand,/area/ruin/powered) -"bL" = (/turf/open/floor/pod/light{baseturf = /turf/open/floor/plating/lava/smooth; density = 1},/obj/structure/lattice,/turf/open/floor/plasteel/sandeffect,/area/ruin/powered) -"bM" = (/turf/open/floor/plasteel/stairs/old,/area/ruin/powered) -"bN" = (/obj/structure/flora/ausbushes/reedbush,/turf/open/floor/plating/beach/sand,/area/ruin/powered) -"bO" = (/obj/item/weapon/reagent_containers/spray/spraytan,/obj/item/device/camera,/turf/open/floor/plating/beach/sand,/area/ruin/powered) -"bP" = (/obj/item/weapon/reagent_containers/food/drinks/beer,/turf/open/floor/plating/beach/sand,/area/ruin/powered) -"bQ" = (/obj/structure/flora/ausbushes/reedbush,/turf/open/floor/plating/beach/coastline_t,/area/ruin/powered) -"bR" = (/turf/open/floor/plating/beach/coastline_t,/area/ruin/powered) -"bS" = (/obj/structure/flora/ausbushes/sparsegrass,/turf/open/floor/plating/beach/coastline_t,/area/ruin/powered) -"bT" = (/turf/open/floor/plating/beach/coastline_b,/area/ruin/powered) -"bU" = (/turf/open/floor/plating/beach/water,/area/ruin/powered) -"bV" = (/obj/structure/flora/ausbushes/stalkybush,/turf/open/floor/plating/beach/water,/area/ruin/powered) +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aa" = ( +/turf/template_noop, +/area/template_noop) +"ab" = ( +/turf/closed/wall/r_wall{ + baseturf = /turf/open/floor/plating/lava/smooth + }, +/area/ruin/powered) +"ac" = ( +/turf/closed/wall/r_wall, +/area/ruin/powered) +"ad" = ( +/obj/structure/flora/ausbushes/leafybush, +/turf/open/floor/plating/beach/sand, +/area/ruin/powered) +"ae" = ( +/obj/structure/table, +/obj/item/weapon/storage/toolbox/mechanical, +/obj/item/stack/cable_coil, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/lava/smooth + }, +/area/ruin/powered) +"af" = ( +/obj/structure/table, +/obj/item/clothing/mask/gas, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/lava/smooth + }, +/area/ruin/powered) +"ag" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/lava/smooth + }, +/area/ruin/powered) +"ah" = ( +/obj/machinery/power/smes, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/lava/smooth + }, +/area/ruin/powered) +"ai" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/lava/smooth + }, +/area/ruin/powered) +"aj" = ( +/turf/closed/wall/mineral/sandstone{ + baseturf = /turf/open/floor/plating/beach/sand + }, +/area/ruin/powered) +"ak" = ( +/obj/structure/toilet, +/obj/effect/decal/sandeffect, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/lava/smooth + }, +/area/ruin/powered) +"al" = ( +/obj/structure/urinal{ + pixel_y = 32 + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/lava/smooth + }, +/area/ruin/powered) +"am" = ( +/obj/structure/urinal{ + pixel_y = 32 + }, +/obj/effect/decal/sandeffect, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/lava/smooth + }, +/area/ruin/powered) +"an" = ( +/obj/item/device/flashlight/lantern, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/lava/smooth + }, +/area/ruin/powered) +"ao" = ( +/obj/structure/sink{ + dir = 4; + icon_state = "sink"; + pixel_x = 11; + pixel_y = 0 + }, +/obj/effect/decal/sandeffect, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/lava/smooth + }, +/area/ruin/powered) +"ap" = ( +/obj/structure/flora/ausbushes/sparsegrass, +/turf/open/floor/plating/beach/sand, +/area/ruin/powered) +"aq" = ( +/obj/structure/flora/ausbushes/sunnybush, +/turf/open/floor/plating/beach/sand, +/area/ruin/powered) +"ar" = ( +/turf/open/floor/plating/beach/sand, +/area/ruin/powered) +"as" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/lava/smooth + }, +/area/ruin/powered) +"at" = ( +/obj/item/weapon/tank/internals/oxygen, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/lava/smooth + }, +/area/ruin/powered) +"au" = ( +/obj/effect/decal/sandeffect, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/lava/smooth + }, +/area/ruin/powered) +"av" = ( +/obj/machinery/door/airlock/hatch, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/lava/smooth + }, +/area/ruin/powered) +"aw" = ( +/obj/machinery/door/airlock/sandstone, +/turf/open/floor/wood, +/area/ruin/powered) +"ax" = ( +/obj/structure/extinguisher_cabinet, +/turf/closed/wall/mineral/sandstone{ + baseturf = /turf/open/floor/plating/beach/sand + }, +/area/ruin/powered) +"ay" = ( +/obj/machinery/door/airlock/hatch, +/obj/effect/decal/sandeffect, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/lava/smooth + }, +/area/ruin/powered) +"az" = ( +/obj/item/clothing/tie/dope_necklace, +/obj/item/weapon/reagent_containers/spray/spraytan, +/turf/open/floor/plating/beach/sand, +/area/ruin/powered) +"aA" = ( +/obj/effect/decal/sandeffect, +/turf/open/floor/plating/beach/sand, +/area/ruin/powered) +"aB" = ( +/turf/open/floor/plasteel/asteroid/warning{ + baseturf = /turf/open/floor/plating/beach/sand; + dir = 1; + icon_state = "asteroidwarning"; + tag = "icon-asteroidwarning (NORTH)" + }, +/area/ruin/powered) +"aC" = ( +/turf/open/floor/wood, +/area/ruin/powered) +"aD" = ( +/obj/structure/table, +/obj/item/weapon/storage/box/drinkingglasses, +/obj/item/weapon/storage/box/drinkingglasses, +/obj/item/weapon/reagent_containers/food/drinks/shaker, +/obj/item/weapon/storage/box/beakers, +/turf/open/floor/wood, +/area/ruin/powered) +"aE" = ( +/obj/structure/table, +/obj/machinery/reagentgrinder, +/turf/open/floor/wood, +/area/ruin/powered) +"aF" = ( +/obj/machinery/vending/boozeomat{ + emagged = 1 + }, +/turf/open/floor/wood, +/area/ruin/powered) +"aG" = ( +/obj/structure/table, +/obj/item/weapon/reagent_containers/glass/rag, +/turf/open/floor/wood, +/area/ruin/powered) +"aH" = ( +/obj/structure/table, +/obj/item/weapon/storage/box/donkpockets, +/turf/open/floor/wood, +/area/ruin/powered) +"aI" = ( +/obj/structure/table, +/obj/machinery/microwave, +/turf/open/floor/wood, +/area/ruin/powered) +"aJ" = ( +/obj/structure/closet/crate/bin, +/obj/item/weapon/tank/internals/emergency_oxygen, +/obj/item/trash/candy, +/obj/item/toy/talking/owl, +/turf/open/floor/plasteel/asteroid/warning{ + baseturf = /turf/open/floor/plating/beach/sand; + dir = 1; + icon_state = "asteroidwarning"; + tag = "icon-asteroidwarning (NORTH)" + }, +/area/ruin/powered) +"aK" = ( +/turf/open/floor/plasteel/asteroid{ + baseturf = /turf/open/floor/plating/beach/sand + }, +/area/ruin/powered) +"aL" = ( +/obj/effect/mob_spawn/human/bartender/alive{ + name = "beach bum sleeper" + }, +/turf/open/floor/wood, +/area/ruin/powered) +"aM" = ( +/obj/structure/reagent_dispensers/beerkeg, +/turf/open/floor/wood, +/area/ruin/powered) +"aN" = ( +/obj/machinery/vending/cigarette, +/turf/open/floor/plasteel/asteroid{ + baseturf = /turf/open/floor/plating/beach/sand + }, +/area/ruin/powered) +"aO" = ( +/obj/structure/stacklifter, +/turf/open/floor/plating/beach/sand, +/area/ruin/powered) +"aP" = ( +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/ruin/powered) +"aQ" = ( +/obj/structure/table/wood, +/obj/item/device/flashlight/lamp, +/turf/open/floor/wood, +/area/ruin/powered) +"aR" = ( +/obj/structure/table/wood, +/obj/item/weapon/reagent_containers/food/drinks/bottle/tequila, +/turf/open/floor/wood, +/area/ruin/powered) +"aS" = ( +/obj/machinery/processor, +/turf/open/floor/wood, +/area/ruin/powered) +"aT" = ( +/obj/machinery/vending/cola, +/turf/open/floor/plasteel/asteroid{ + baseturf = /turf/open/floor/plating/beach/sand + }, +/area/ruin/powered) +"aU" = ( +/obj/effect/overlay/palmtree_l, +/turf/open/floor/plating/beach/sand, +/area/ruin/powered) +"aV" = ( +/obj/effect/mob_spawn/human/beach/alive{ + flavour_text = "You're, like, totally a dudebro, bruh. Ch'yea. You came here, like, on spring break, hopin' to pick up some bangin' hot chicks, y'knaw?"; + pocket2 = /obj/item/weapon/reagent_containers/food/snacks/pizzaslice/dank; + uniform = /obj/item/clothing/under/pants/youngfolksjeans + }, +/turf/open/floor/plating/beach/sand, +/area/ruin/powered) +"aW" = ( +/obj/structure/chair/stool, +/turf/open/floor/plasteel/asteroid/warning{ + baseturf = /turf/open/floor/plating/beach/sand; + dir = 1; + icon_state = "asteroidwarning"; + tag = "icon-asteroidwarning (NORTH)" + }, +/area/ruin/powered) +"aX" = ( +/obj/structure/closet/secure_closet/freezer/meat, +/turf/open/floor/wood, +/area/ruin/powered) +"aY" = ( +/obj/machinery/vending/snack, +/turf/open/floor/plasteel/asteroid{ + baseturf = /turf/open/floor/plating/beach/sand + }, +/area/ruin/powered) +"aZ" = ( +/obj/effect/overlay/coconut, +/turf/open/floor/plating/beach/sand, +/area/ruin/powered) +"ba" = ( +/obj/machinery/light{ + dir = 4; + icon_state = "tube1" + }, +/turf/open/floor/pod/dark{ + baseturf = /turf/open/floor/plating/asteroid/basalt + }, +/area/ruin/powered) +"bb" = ( +/obj/structure/weightlifter, +/turf/open/floor/plating/beach/sand, +/area/ruin/powered) +"bc" = ( +/obj/machinery/door/airlock/sandstone, +/obj/effect/decal/sandeffect, +/turf/open/floor/wood, +/area/ruin/powered) +"bd" = ( +/obj/structure/closet/secure_closet/freezer/kitchen, +/turf/open/floor/wood, +/area/ruin/powered) +"be" = ( +/obj/vehicle/scooter/skateboard{ + dir = 4 + }, +/turf/open/floor/plating/beach/sand, +/area/ruin/powered) +"bf" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/turf/open/floor/pod/dark{ + baseturf = /turf/open/floor/plating/asteroid/basalt + }, +/area/ruin/powered) +"bg" = ( +/obj/structure/sign/barsign, +/turf/closed/wall/mineral/sandstone, +/area/ruin/powered) +"bh" = ( +/turf/closed/wall/mineral/sandstone, +/area/ruin/powered) +"bi" = ( +/turf/open/floor/plating/beach/sand{ + density = 1; + opacity = 1 + }, +/area/ruin/powered) +"bj" = ( +/obj/structure/chair/wood/normal{ + icon_state = "wooden_chair"; + dir = 4 + }, +/turf/open/floor/plasteel/asteroid{ + baseturf = /turf/open/floor/plating/beach/sand + }, +/area/ruin/powered) +"bk" = ( +/obj/structure/table/wood, +/obj/item/weapon/reagent_containers/food/snacks/pastatomato, +/turf/open/floor/plasteel/asteroid{ + baseturf = /turf/open/floor/plating/beach/sand + }, +/area/ruin/powered) +"bl" = ( +/obj/structure/chair/wood/normal{ + icon_state = "wooden_chair"; + dir = 8 + }, +/turf/open/floor/plasteel/asteroid{ + baseturf = /turf/open/floor/plating/beach/sand + }, +/area/ruin/powered) +"bm" = ( +/mob/living/simple_animal/crab, +/turf/open/floor/plating/beach/sand{ + density = 1; + opacity = 1 + }, +/area/ruin/powered) +"bn" = ( +/obj/structure/closet/athletic_mixed, +/turf/open/floor/pod/dark{ + baseturf = /turf/open/floor/plating/asteroid/basalt + }, +/area/ruin/powered) +"bo" = ( +/obj/structure/rack, +/obj/item/clothing/shoes/sandal, +/obj/item/clothing/shoes/sandal, +/obj/effect/decal/sandeffect, +/turf/open/floor/pod/dark{ + baseturf = /turf/open/floor/plating/asteroid/basalt + }, +/area/ruin/powered) +"bp" = ( +/obj/structure/grille, +/obj/structure/window/fulltile, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/lava/smooth + }, +/area/ruin/powered) +"bq" = ( +/obj/structure/closet/athletic_mixed, +/obj/effect/decal/sandeffect, +/turf/open/floor/pod/dark{ + baseturf = /turf/open/floor/plating/asteroid/basalt + }, +/area/ruin/powered) +"br" = ( +/turf/open/floor/pod/dark{ + baseturf = /turf/open/floor/plating/asteroid/basalt + }, +/area/ruin/powered) +"bs" = ( +/obj/effect/decal/sandeffect, +/turf/open/floor/pod/dark{ + baseturf = /turf/open/floor/plating/asteroid/basalt + }, +/area/ruin/powered) +"bt" = ( +/obj/machinery/door/airlock/hatch, +/obj/structure/fans/tiny, +/turf/open/floor/pod/dark{ + baseturf = /turf/open/floor/plating/asteroid/basalt + }, +/area/ruin/powered) +"bu" = ( +/turf/open/floor/pod/light{ + baseturf = /turf/open/floor/plating/lava/smooth + }, +/area/ruin/powered) +"bv" = ( +/obj/effect/decal/sandeffect, +/turf/open/floor/pod/light{ + baseturf = /turf/open/floor/plating/lava/smooth + }, +/area/ruin/powered) +"bw" = ( +/obj/machinery/door/airlock/sandstone, +/turf/open/floor/pod/dark{ + baseturf = /turf/open/floor/plating/asteroid/basalt + }, +/area/ruin/powered) +"bx" = ( +/obj/structure/flora/rock, +/turf/open/floor/plating/beach/sand, +/area/ruin/powered) +"by" = ( +/obj/machinery/door/airlock/sandstone, +/obj/effect/decal/sandeffect, +/turf/open/floor/pod/dark{ + baseturf = /turf/open/floor/plating/asteroid/basalt + }, +/area/ruin/powered) +"bz" = ( +/mob/living/simple_animal/crab, +/turf/open/floor/plating/beach/sand, +/area/ruin/powered) +"bA" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/item/weapon/bikehorn/airhorn, +/obj/structure/table/wood, +/obj/item/weapon/storage/firstaid, +/obj/item/weapon/storage/firstaid/brute, +/turf/open/floor/wood, +/area/ruin/powered) +"bB" = ( +/obj/structure/window/reinforced{ + dir = 4; + pixel_x = 0 + }, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/obj/structure/chair/stool, +/turf/open/floor/wood, +/area/ruin/powered) +"bC" = ( +/obj/structure/table/wood, +/obj/item/weapon/tank/internals/oxygen, +/obj/item/weapon/pickaxe, +/obj/item/clothing/mask/gas, +/turf/open/floor/pod/dark{ + baseturf = /turf/open/floor/plating/asteroid/basalt + }, +/area/ruin/powered) +"bD" = ( +/turf/open/floor/pod/dark{ + baseturf = /turf/open/floor/plating/asteroid/basalt + }, +/obj/structure/dresser, +/turf/open/floor/plasteel/sandeffect, +/area/ruin/powered) +"bE" = ( +/obj/item/weapon/reagent_containers/spray/spraytan, +/turf/open/floor/plating/beach/sand, +/area/ruin/powered) +"bF" = ( +/obj/item/toy/beach_ball, +/turf/open/floor/plating/beach/sand, +/area/ruin/powered) +"bG" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/obj/item/device/megaphone, +/turf/open/floor/wood, +/area/ruin/powered) +"bH" = ( +/obj/structure/window/reinforced{ + dir = 4; + pixel_x = 0 + }, +/obj/effect/mob_spawn/human/beach/alive{ + flavour_text = "You're a spunky lifeguard! It's up to you to make sure nobody drowns or gets eaten by sharks and stuff."; + has_id = 1; + id_access = "Medical Doctor"; + id_job = "Lifeguard"; + mob_gender = "female" + }, +/turf/open/floor/wood, +/area/ruin/powered) +"bI" = ( +/obj/structure/dresser, +/turf/open/floor/pod/dark{ + baseturf = /turf/open/floor/plating/asteroid/basalt + }, +/area/ruin/powered) +"bJ" = ( +/obj/structure/chair, +/turf/open/floor/plating/beach/sand, +/area/ruin/powered) +"bK" = ( +/obj/item/weapon/storage/backpack/dufflebag, +/turf/open/floor/plating/beach/sand, +/area/ruin/powered) +"bL" = ( +/obj/effect/decal/sandeffect{ + density = 1 + }, +/obj/effect/decal/fakelattice, +/turf/open/floor/pod/light{ + baseturf = /turf/open/floor/plating/lava/smooth; + density = 1 + }, +/area/ruin/powered) +"bM" = ( +/turf/open/floor/plasteel/stairs/old, +/area/ruin/powered) +"bN" = ( +/obj/structure/flora/ausbushes/reedbush, +/turf/open/floor/plating/beach/sand, +/area/ruin/powered) +"bO" = ( +/obj/item/device/camera, +/turf/open/floor/plating/beach/sand, +/area/ruin/powered) +"bP" = ( +/obj/item/weapon/reagent_containers/food/drinks/beer, +/turf/open/floor/plating/beach/sand, +/area/ruin/powered) +"bQ" = ( +/obj/structure/flora/ausbushes/reedbush, +/turf/open/floor/plating/beach/coastline_t, +/area/ruin/powered) +"bR" = ( +/turf/open/floor/plating/beach/coastline_t, +/area/ruin/powered) +"bS" = ( +/obj/structure/flora/ausbushes/sparsegrass, +/turf/open/floor/plating/beach/coastline_t, +/area/ruin/powered) +"bT" = ( +/turf/open/floor/plating/beach/coastline_b, +/area/ruin/powered) +"bU" = ( +/turf/open/floor/plating/beach/water, +/area/ruin/powered) +"bV" = ( +/obj/structure/flora/ausbushes/stalkybush, +/turf/open/floor/plating/beach/water, +/area/ruin/powered) (1,1,1) = {" -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaabababacacacacacacacacacacacacabababaaaaaaaaaaaa -aaaaaaaaabababadabaeafagahaiajakajalamanaoabapabababaaaaaaaa -aaaaaaababaqararabasasasasatajauavasasauauabararaqababaaaaaa -aaaaababadaraparababajawajaxajajajajajajayabaraparapababaaaa -aaaaabapararazaraAaBajaCaDaEaFaGaHaIajaJaKaAararararadabaaaa -aaababarararararaAaKajaCaCaLaCaCaCaMajaNaKaAarararararababaa -aaabaparaOaraOaraAaKajaPaQaPaRajaCaSajaTaKaAaraUaraqarapabaa -aaabarararaVararaAaKaBaWaWaWaWajaCaXajaYaKaAararaZarararabaa -baabararbbarbbaraAaKaKaKaKaKaKbcaCbdajaKaKaAarararbearapabbf -aaabararararararaAaKaKaKaKaKaKajbgbhajaKaKaAararararararabaa -ababababbibibibiaAaKbjbkblaKaKaBaBaBaBaKaKaAbibmbibiabababab -acbnbobpararararaAaKaKaKaKaKaKaKaKaKaKaKaKaAararararbpbqboab -acbrbrbpararaUaraAaAaAaAaAaAaAaAaAaAaAaAaAaAararararbpbrbsab -btbubvbpaAaraZararararararararararararararararararaAbpbububt -abbvbvbwaAarararararararbxararararaZarararararararaAbybvbuab -btbububpaAarararararararararararaUararararararararaAbpbvbvbt -acbsbrbparbzarararbxarararararararararbAbBararaZararbpbsbrab -acbCbDbpararararararararararbEararbFarbGbHarararararbpbIbCab -ababababarbJarbJarbJarbJbKbJarbJarararbLbMarbJararaUabababab -aaabadapbNarararbOararararararararbzarararbPararararapbNabaa -baabbQbRbRbSbRbRbRbRbRbRbRbRbRbRbRbRbRbRbRbRbRbRbSbRbRbRabbf -aaabbTbTbTbTbTbTbTbTbTbTbTbTbTbTbTbTbTbTbTbTbTbTbTbTbTbTabaa -aaababbUbUbUbUbUbUbUbUbUbUbUbUbUbUbUbUbUbUbUbUbUbUbUbUababaa -aaaaabbUbUbUbUbUbUbUbUbUbUbUbUbUbVbUbUbUbUbUbUbUbUbUbUabaaaa -aaaaababbUbUbUbUbUbVbUbUbUbUbUbUbUbUbUbUbUbUbUbUbUbUababaaaa -aaaaaaababbUbUbUbUbUbUbUbUbUbUbUbUbUbUbUbUbVbUbUbUababaaaaaa -aaaaaaaaabababbUbUbUbUbUbUbUbUbUbUbUbUbUbUbUbUabababaaaaaaaa -aaaaaaaaaaaaababababababababababababababababababaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ba +aa +ab +ac +ac +bt +ab +bt +ac +ac +ab +aa +ba +aa +aa +aa +aa +aa +aa +aa +aa +"} +(2,1,1) = {" +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +bn +br +bu +bv +bu +bs +bC +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +"} +(3,1,1) = {" +aa +aa +aa +aa +ab +ab +ab +ap +ar +ar +ar +ab +bo +br +bv +bv +bu +br +bI +ab +ad +bQ +bT +ab +ab +ab +aa +aa +aa +aa +"} +(4,1,1) = {" +aa +aa +aa +ab +ab +ap +ar +ar +ar +ar +ar +ab +bp +bp +bp +bw +bp +bp +bp +ab +ap +bR +bT +bU +bU +ab +ab +aa +aa +aa +"} +(5,1,1) = {" +aa +aa +ab +ab +ad +ar +ar +aO +ar +bb +ar +ar +ar +ar +aA +aA +aA +ar +ar +ar +bN +bR +bT +bU +bU +bU +ab +ab +aa +aa +"} +(6,1,1) = {" +aa +aa +ab +aq +ar +ar +ar +ar +aV +ar +ar +ar +ar +ar +ar +ar +ar +bz +ar +bJ +ar +bS +bT +bU +bU +bU +bU +ab +aa +aa +"} +(7,1,1) = {" +aa +ab +ab +ar +ap +az +ar +aO +ar +bb +ar +ar +ar +aU +aZ +ar +ar +ar +ar +ar +ar +bR +bT +bU +bU +bU +bU +ab +ab +ab +"} +(8,1,1) = {" +aa +ab +ad +ar +ar +ar +ar +ar +ar +ar +ar +ar +ar +ar +ar +ar +ar +ar +ar +bJ +bE +bR +bT +bU +bU +bU +bU +bU +ab +ab +"} +(9,1,1) = {" +aa +ab +ab +ab +ab +aA +aA +aA +aA +aA +aA +aA +aA +aA +ar +ar +ar +ap +ar +ar +bO +bR +bT +bU +bU +bU +bU +bU +ab +ab +"} +(10,1,1) = {" +aa +ac +ae +as +ab +aB +aK +aK +aK +aK +aK +aK +aK +aA +ar +ar +ap +bx +ar +bJ +ar +bR +bT +bU +bU +bV +bU +bU +ab +ab +"} +(11,1,1) = {" +aa +ac +af +as +aj +aj +aj +aj +aB +aK +aK +bj +aK +aA +ar +ar +ar +ar +ar +ar +ar +bR +bT +bU +bU +bU +bU +bU +ab +ab +"} +(12,1,1) = {" +aa +ac +ag +as +aw +aC +aC +aP +aW +aK +aK +bk +aK +aA +ar +ar +ap +ar +ar +bJ +ar +bR +bT +bU +bU +bU +bU +bU +ab +ab +"} +(13,1,1) = {" +aa +ac +ah +as +aj +aD +aC +aQ +aW +aK +aK +bl +aK +aA +ar +bx +ar +ar +ar +bK +ar +bR +bT +bU +bU +bU +bU +bU +ab +ab +"} +(14,1,1) = {" +aa +ac +ai +at +ax +aE +aL +aP +aW +aK +aK +aK +aK +aA +ar +ap +ar +ar +ar +bJ +ar +bR +bT +bU +bU +bU +bU +bU +ab +ab +"} +(15,1,1) = {" +aa +ac +aj +aj +aj +aF +aC +aR +aW +aK +aK +aK +aK +aA +ar +ar +ar +ar +bE +ar +ar +bR +bT +bU +bU +bU +bU +bU +ab +ab +"} +(16,1,1) = {" +aa +ac +ak +au +aj +aG +aC +aj +aj +bc +aj +aB +aK +aA +ar +ar +ar +ar +ar +bJ +ar +bR +bT +bU +bU +bU +bU +bU +ab +ab +"} +(17,1,1) = {" +aa +ac +aj +av +aj +aH +aC +aC +aC +aC +bg +aB +aK +aA +ar +ar +aU +ar +ar +ar +ar +bR +bT +bU +bV +bU +bU +bU +ab +ab +"} +(18,1,1) = {" +aa +ac +al +as +aj +aI +aM +aS +aX +bd +bh +aB +aK +aA +ar +aZ +ar +ar +bF +ar +bz +bR +bT +bU +bU +bU +bU +bU +ab +ab +"} +(19,1,1) = {" +aa +ac +am +as +aj +aj +aj +aj +aj +aj +aj +aB +aK +aA +ar +ar +ar +ar +ar +ar +ar +bR +bT +bU +bU +bU +bU +bU +ab +ab +"} +(20,1,1) = {" +aa +ac +an +au +aj +aJ +aN +aT +aY +aK +aK +aK +aK +aA +ar +ar +ar +bA +bG +bL +ar +bR +bT +bU +bU +bU +bU +bU +ab +ab +"} +(21,1,1) = {" +aa +ac +ao +au +ay +aK +aK +aK +aK +aK +aK +aK +aK +aA +ar +ar +ar +bB +bH +bM +ar +bR +bT +bU +bU +bU +bU +bU +ab +ab +"} +(22,1,1) = {" +aa +ab +ab +ab +ab +aA +aA +aA +aA +aA +aA +aA +aA +aA +ar +ar +ar +ar +ar +ar +bP +bR +bT +bU +bU +bU +bV +bU +ab +ab +"} +(23,1,1) = {" +aa +ab +ap +ar +ar +ar +ar +ar +ar +ar +ar +ar +ar +ar +ar +ar +ar +ar +ar +bJ +ar +bR +bT +bU +bU +bU +bU +bU +ab +ab +"} +(24,1,1) = {" +aa +ab +ab +ar +ap +ar +ar +aU +ar +ar +ar +bz +ar +ar +ar +ar +ar +aZ +ar +ar +ar +bR +bT +bU +bU +bU +bU +ab +ab +ab +"} +(25,1,1) = {" +aa +aa +ab +aq +ar +ar +ar +ar +aZ +ar +ar +ar +ar +ar +ar +ar +ar +ar +ar +ar +ar +bS +bT +bU +bU +bU +bU +ab +aa +aa +"} +(26,1,1) = {" +aa +aa +ab +ab +ap +ar +ar +aq +ar +be +ar +ar +ar +ar +aA +aA +aA +ar +ar +aU +ar +bR +bT +bU +bU +bU +ab +ab +aa +aa +"} +(27,1,1) = {" +aa +aa +aa +ab +ab +ad +ar +ar +ar +ar +ar +ab +bp +bp +bp +by +bp +bp +bp +ab +ap +bR +bT +bU +bU +ab +ab +aa +aa +aa +"} +(28,1,1) = {" +aa +aa +aa +aa +ab +ab +ab +ap +ar +ap +ar +ab +bq +br +bu +bv +bv +bs +bI +ab +bN +bR +bT +ab +ab +ab +aa +aa +aa +aa +"} +(29,1,1) = {" +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +bo +bs +bu +bu +bv +br +bC +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +"} +(30,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +bf +aa +ab +ab +ab +bt +ab +bt +ab +ab +ab +aa +bf +aa +aa +aa +aa +aa +aa +aa +aa "} diff --git a/_maps/RandomRuins/LavaRuins/lavaland_biodome_clown_planet.dmm b/_maps/RandomRuins/LavaRuins/lavaland_biodome_clown_planet.dmm index 39984b994aa..09eb16a80e0 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_biodome_clown_planet.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_biodome_clown_planet.dmm @@ -1,68 +1,140 @@ -"a" = (/turf/template_noop,/area/template_noop) -"b" = (/turf/closed/wall/r_wall,/area/ruin/powered) -"c" = (/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"d" = (/obj/structure/grille,/obj/structure/window/fulltile,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"e" = (/turf/open/floor/grass{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"f" = (/obj/item/weapon/reagent_containers/food/snacks/grown/banana,/turf/open/floor/grass{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"g" = (/turf/closed/mineral,/area/ruin/powered) -"h" = (/obj/item/weapon/bikehorn,/turf/open/floor/grass{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"i" = (/obj/item/weapon/grown/bananapeel,/turf/open/floor/grass{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"j" = (/turf/closed/mineral/clown,/area/ruin/powered) -"k" = (/obj/structure/ore_box,/turf/open/floor/grass{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"l" = (/turf/open/floor/plating/asteroid,/area/ruin/powered) -"m" = (/obj/item/weapon/grown/bananapeel,/turf/open/floor/plating/asteroid,/area/ruin/powered) -"n" = (/turf/closed/mineral/gibtonite,/area/ruin/powered) -"o" = (/mob/living/simple_animal/hostile/retaliate/clown,/turf/open/floor/grass{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"p" = (/obj/machinery/door/airlock/hatch,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth; blocks_air = 1},/area/ruin/powered) -"q" = (/obj/machinery/door/airlock/clown,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"r" = (/turf/open/floor/mineral/bananium,/area/ruin/powered) -"s" = (/obj/item/weapon/grown/bananapeel,/turf/open/floor/mineral/bananium,/area/ruin/powered) -"t" = (/turf/closed/wall/mineral/wood,/area/ruin/powered) -"u" = (/obj/structure/table/wood,/obj/item/weapon/banhammer,/turf/open/floor/mineral/bananium,/area/ruin/powered) -"v" = (/obj/structure/table/wood,/obj/item/clothing/mask/gas/sexyclown,/turf/open/floor/mineral/bananium,/area/ruin/powered) -"w" = (/obj/structure/table/wood,/obj/item/clothing/mask/gas/clown_hat,/turf/open/floor/mineral/bananium,/area/ruin/powered) -"x" = (/obj/structure/bed,/obj/item/weapon/bedsheet/clown,/turf/open/floor/mineral/bananium,/area/ruin/powered) -"y" = (/obj/machinery/door/airlock/clown,/obj/item/weapon/grown/bananapeel,/turf/open/floor/mineral/bananium,/area/ruin/powered) -"z" = (/obj/item/weapon/grown/bananapeel,/mob/living/simple_animal/hostile/retaliate/clown,/turf/open/floor/mineral/bananium,/area/ruin/powered) -"A" = (/obj/structure/table/wood,/turf/open/floor/grass{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"B" = (/obj/structure/table/wood,/obj/item/weapon/reagent_containers/food/snacks/pie/cream,/turf/open/floor/grass{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"C" = (/obj/structure/table/wood,/obj/item/weapon/sord,/turf/open/floor/grass{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"D" = (/obj/structure/table/wood,/obj/item/weapon/bikehorn/rubberducky,/turf/open/floor/grass{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"E" = (/obj/item/weapon/grenade/clusterbuster/soap,/obj/structure/bed,/obj/item/weapon/bedsheet/clown,/turf/open/floor/mineral/bananium,/area/ruin/powered) -"F" = (/obj/structure/table/wood,/obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers,/turf/open/floor/grass{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"G" = (/obj/structure/table/wood,/obj/item/weapon/restraints/handcuffs/fake,/turf/open/floor/grass{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"H" = (/obj/structure/table/wood,/obj/item/weapon/bikehorn/airhorn,/turf/open/floor/grass{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"I" = (/turf/closed/wall/r_wall{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"aa" = (/turf/template_noop,/area/template_noop) +"ab" = (/turf/open/floor/plating/asteroid/basalt/lava_land_surface,/area/ruin/powered) +"ac" = (/turf/open/floor/noslip{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"ad" = (/mob/living/simple_animal/hostile/retaliate/clown,/turf/open/floor/plating/asteroid/basalt/lava_land_surface,/area/ruin/powered) +"ae" = (/obj/machinery/light,/turf/open/floor/plating/asteroid/basalt/lava_land_surface,/area/ruin/powered) +"af" = (/obj/item/clothing/head/cone,/turf/open/floor/noslip{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"ag" = (/obj/item/weapon/paper/crumpled/bloody{info = "Abandon hope, all ye who enter here."},/obj/effect/decal/cleanable/blood/old,/turf/open/floor/noslip{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"ah" = (/turf/closed/wall/r_wall{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"ai" = (/obj/machinery/disposal/deliveryChute{desc = "The following is engraved upon the chute: A FATE WORSE THAN DEATH LIES WITHIN"; dir = 1; name = "THE TRIAL OF HONKITUDE"},/obj/structure/disposalpipe/trunk,/turf/open/floor/noslip{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"aj" = (/obj/structure/disposalpipe/trunk,/obj/structure/disposaloutlet{dir = 1},/turf/open/floor/noslip{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"ak" = (/turf/open/floor/plating/lava/smooth/lava_land_surface,/area/ruin/powered) +"al" = (/obj/structure/disposalpipe/segment,/turf/closed/wall/r_wall{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"am" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/closed/wall/r_wall{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"an" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/closed/wall/r_wall{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"ao" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"ap" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"aq" = (/obj/structure/disposalpipe/trunk,/obj/structure/disposaloutlet{dir = 1},/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"ar" = (/obj/structure/disposalpipe/segment,/obj/effect/decal/cleanable/dirt,/turf/open/floor/plasteel/darkyellow{baseturf = /turf/open/floor/plating/lava/smooth; wet = 2},/area/ruin/powered) +"as" = (/obj/structure/disposalpipe/segment,/obj/effect/mob_spawn/human/corpse/damaged,/obj/effect/decal/cleanable/blood/old,/turf/open/floor/plasteel/darkyellow{baseturf = /turf/open/floor/plating/lava/smooth; wet = 2},/area/ruin/powered) +"at" = (/obj/structure/disposalpipe/segment,/turf/open/floor/plasteel/darkyellow{baseturf = /turf/open/floor/plating/lava/smooth; wet = 2},/area/ruin/powered) +"au" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/open/floor/plasteel/darkyellow{baseturf = /turf/open/floor/plating/lava/smooth; wet = 2},/area/ruin/powered) +"av" = (/obj/structure/disposalpipe/segment,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"aw" = (/obj/structure/disposalpipe/sortjunction{dir = 1; icon_state = "pipe-j2s"; sortType = 3},/turf/closed/wall/r_wall{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"ax" = (/obj/structure/disposalpipe/segment,/obj/structure/window/reinforced,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"ay" = (/obj/structure/disposalpipe/segment,/obj/effect/decal/cleanable/pie_smudge,/turf/open/floor/plasteel/darkyellow{baseturf = /turf/open/floor/plating/lava/smooth; wet = 2},/area/ruin/powered) +"az" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/effect/decal/cleanable/dirt,/turf/open/floor/plasteel/darkyellow{baseturf = /turf/open/floor/plating/lava/smooth; wet = 2},/area/ruin/powered) +"aA" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/open/floor/plasteel/darkyellow{baseturf = /turf/open/floor/plating/lava/smooth; wet = 2},/area/ruin/powered) +"aB" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/open/floor/plasteel/darkyellow{baseturf = /turf/open/floor/plating/lava/smooth; wet = 2},/area/ruin/powered) +"aC" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/open/floor/plasteel/darkyellow{baseturf = /turf/open/floor/plating/lava/smooth; wet = 2},/area/ruin/powered) +"aD" = (/turf/open/floor/plasteel/darkyellow{baseturf = /turf/open/floor/plating/lava/smooth; wet = 2},/area/ruin/powered) +"aE" = (/obj/effect/decal/cleanable/dirt,/turf/open/floor/plasteel/darkyellow{baseturf = /turf/open/floor/plating/lava/smooth; wet = 2},/area/ruin/powered) +"aF" = (/obj/effect/decal/cleanable/cobweb{icon_state = "cobweb2"},/turf/open/floor/plasteel/darkyellow{baseturf = /turf/open/floor/plating/lava/smooth; wet = 2},/area/ruin/powered) +"aG" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/decal/cleanable/cobweb,/turf/open/floor/plasteel/darkyellow{baseturf = /turf/open/floor/plating/lava/smooth; wet = 2},/area/ruin/powered) +"aH" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/open/floor/plasteel/darkyellow{baseturf = /turf/open/floor/plating/lava/smooth; wet = 2},/area/ruin/powered) +"aI" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/effect/decal/cleanable/dirt,/turf/open/floor/plasteel/darkyellow{baseturf = /turf/open/floor/plating/lava/smooth; wet = 2},/area/ruin/powered) +"aJ" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/item/weapon/bikehorn,/turf/open/floor/plasteel/darkyellow{baseturf = /turf/open/floor/plating/lava/smooth; wet = 2},/area/ruin/powered) +"aK" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/closed/wall/r_wall{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"aL" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/decal/cleanable/pie_smudge,/turf/open/floor/plasteel/darkyellow{baseturf = /turf/open/floor/plating/lava/smooth; wet = 2},/area/ruin/powered) +"aM" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/closed/wall/r_wall{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"aN" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/open/floor/plasteel/darkyellow{baseturf = /turf/open/floor/plating/lava/smooth; wet = 2},/area/ruin/powered) +"aO" = (/obj/structure/disposalpipe/segment,/turf/open/floor/plating,/area/ruin/powered) +"aP" = (/obj/item/weapon/bikehorn,/obj/structure/disposalpipe/segment{dir = 4},/turf/open/floor/plasteel/darkyellow{baseturf = /turf/open/floor/plating/lava/smooth; wet = 2},/area/ruin/powered) +"aQ" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"aR" = (/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"aS" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/open/floor/plating,/area/ruin/powered) +"aT" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"aU" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"aV" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/effect/decal/cleanable/dirt,/turf/open/floor/plasteel/darkyellow{baseturf = /turf/open/floor/plating/lava/smooth; wet = 2},/area/ruin/powered) +"aW" = (/obj/structure/disposalpipe/segment,/obj/item/weapon/bikehorn,/obj/effect/decal/cleanable/dirt,/turf/open/floor/plasteel/darkyellow{baseturf = /turf/open/floor/plating/lava/smooth; wet = 2},/area/ruin/powered) +"aX" = (/obj/structure/disposalpipe/trunk{dir = 4},/obj/structure/disposaloutlet{dir = 8},/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"aY" = (/obj/structure/disposalpipe/segment,/obj/item/weapon/bikehorn,/turf/open/floor/plasteel/darkyellow{baseturf = /turf/open/floor/plating/lava/smooth; wet = 2},/area/ruin/powered) +"aZ" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/open/floor/plasteel/darkred{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"ba" = (/obj/effect/decal/cleanable/pie_smudge,/turf/open/floor/plasteel/darkyellow{baseturf = /turf/open/floor/plating/lava/smooth; wet = 2},/area/ruin/powered) +"bb" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) +"bc" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/effect/decal/cleanable/dirt,/turf/open/floor/plasteel/darkyellow{baseturf = /turf/open/floor/plating/lava/smooth; wet = 2},/area/ruin/powered) +"bd" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/table,/obj/item/weapon/paper/crumpled/bloody{info = "If you dare not continue down this path of madness, escape can be found through the chute in this room. "},/obj/item/weapon/pen/fourcolor,/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) +"be" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/table,/obj/item/device/flashlight/lamp/bananalamp,/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) +"bf" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/effect/decal/cleanable/pie_smudge,/turf/open/floor/plasteel/darkyellow{baseturf = /turf/open/floor/plating/lava/smooth; wet = 2},/area/ruin/powered) +"bg" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/item/weapon/pickaxe,/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) +"bh" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) +"bi" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) +"bj" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/open/floor/light{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"bk" = (/obj/structure/disposalpipe/segment,/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) +"bl" = (/turf/open/floor/light{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"bm" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) +"bn" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) +"bo" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/open/floor/plating/asteroid/basalt/lava_land_surface,/area/ruin/powered) +"bp" = (/turf/closed/mineral/clown,/area/ruin/powered) +"bq" = (/obj/item/weapon/pickaxe,/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) +"br" = (/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) +"bs" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/open/floor/plasteel/darkred{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"bt" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"bu" = (/obj/item/weapon/bikehorn,/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/open/floor/plasteel/darkyellow{baseturf = /turf/open/floor/plating/lava/smooth; wet = 2},/area/ruin/powered) +"bv" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/open/floor/plasteel/darkred{baseturf = /turf/open/floor/plating/lava/smooth; wet = 2},/area/ruin/powered) +"bw" = (/obj/machinery/light{dir = 8},/turf/open/floor/plating/asteroid/basalt/lava_land_surface,/area/ruin/powered) +"bx" = (/turf/open/chasm/straight_down/lava_land_surface,/area/ruin/powered) +"by" = (/obj/effect/decal/cleanable/cobweb,/turf/open/floor/plasteel/darkred{baseturf = /turf/open/floor/plating/lava/smooth; wet = 2},/area/ruin/powered) +"bz" = (/obj/machinery/disposal/deliveryChute{dir = 1},/obj/structure/disposalpipe/trunk,/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) +"bA" = (/turf/open/floor/plasteel/darkred{baseturf = /turf/open/floor/plating/lava/smooth; wet = 2},/area/ruin/powered) +"bB" = (/turf/open/floor/mineral/bananium{baseturf = /turf/open/floor/plating/lava/smooth; wet = 2},/area/ruin/powered) +"bC" = (/obj/structure/disposalpipe/junction{icon_state = "pipe-y"; dir = 1},/obj/effect/decal/cleanable/dirt,/turf/open/floor/plasteel/darkyellow{baseturf = /turf/open/floor/plating/lava/smooth; wet = 2},/area/ruin/powered) +"bD" = (/obj/structure/mecha_wreckage/honker,/obj/structure/disposalpipe/segment{dir = 4},/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"bE" = (/obj/effect/decal/cleanable/oil,/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"bF" = (/obj/effect/decal/cleanable/cobweb{icon_state = "cobweb2"},/turf/open/floor/mineral/bananium{baseturf = /turf/open/floor/plating/lava/smooth; wet = 2},/area/ruin/powered) +"bG" = (/obj/item/weapon/grown/bananapeel{color = "#2F3000"; name = "stealth banana peel"},/turf/open/floor/plating/asteroid/basalt/lava_land_surface,/area/ruin/powered) +"bH" = (/obj/effect/decal/cleanable/dirt,/turf/open/floor/mineral/bananium{baseturf = /turf/open/floor/plating/lava/smooth; wet = 2},/area/ruin/powered) +"bI" = (/obj/effect/mob_spawn/human/corpse/damaged,/obj/effect/decal/cleanable/blood/old,/turf/open/floor/plasteel/darkyellow{baseturf = /turf/open/floor/plating/lava/smooth; wet = 2},/area/ruin/powered) +"bJ" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/open/floor/plasteel/darkred{baseturf = /turf/open/floor/plating/lava/smooth; wet = 2},/area/ruin/powered) +"bK" = (/obj/item/weapon/reagent_containers/food/drinks/trophy/gold_cup,/obj/structure/table/glass,/turf/open/floor/carpet{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"bL" = (/turf/open/floor/carpet{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"bM" = (/obj/machinery/disposal/deliveryChute,/obj/structure/disposalpipe/trunk{dir = 1},/turf/open/floor/carpet{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"bN" = (/obj/effect/decal/cleanable/cobweb,/turf/open/floor/mineral/bananium{baseturf = /turf/open/floor/plating/lava/smooth; wet = 2},/area/ruin/powered) +"bO" = (/obj/structure/statue/bananium/clown,/turf/open/floor/carpet{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"bP" = (/obj/structure/table/glass,/obj/item/weapon/grown/bananapeel/bluespace,/turf/open/floor/carpet{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"bQ" = (/obj/structure/table/glass,/obj/item/clothing/shoes/clown_shoes/banana_shoes,/turf/open/floor/carpet{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"bR" = (/obj/item/weapon/coin/clown,/obj/item/weapon/coin/clown,/obj/item/weapon/coin/clown,/obj/item/weapon/coin/clown,/turf/open/floor/carpet{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"bS" = (/obj/item/slime_extract/rainbow,/obj/structure/table/glass,/turf/open/floor/carpet{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"bT" = (/obj/item/weapon/bikehorn/airhorn,/turf/open/floor/carpet{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"bU" = (/obj/structure/table/glass,/obj/item/weapon/gun/magic/staff/honk,/turf/open/floor/carpet{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"bV" = (/obj/item/weapon/bikehorn,/turf/open/floor/mineral/bananium{baseturf = /turf/open/floor/plating/lava/smooth; wet = 2},/area/ruin/powered) +"bW" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/open/floor/plating,/area/ruin/powered) +"bX" = (/obj/effect/mob_spawn/human/corpse/damaged,/obj/effect/decal/cleanable/blood/old,/turf/open/floor/mineral/bananium{baseturf = /turf/open/floor/plating/lava/smooth; wet = 2},/area/ruin/powered) +"bY" = (/obj/machinery/door/airlock/clown,/turf/open/floor/mineral/bananium{baseturf = /turf/open/floor/plating/lava/smooth; wet = 2},/area/ruin/powered) +"bZ" = (/obj/item/weapon/bikehorn,/obj/effect/decal/cleanable/dirt,/turf/open/floor/mineral/bananium{baseturf = /turf/open/floor/plating/lava/smooth; wet = 2},/area/ruin/powered) +"ca" = (/obj/machinery/light{dir = 1},/turf/open/floor/plating/asteroid/basalt/lava_land_surface,/area/ruin/powered) (1,1,1) = {" -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb -bccccccccccccccccccccccccccccb -bcddddddddddddddddddddddddddcb -bcdefeeeeeeegggggggggggggggdcb -bcdeeheieefeeggggggggggjgjgdcb -bcdeeeeeheeeeekkggggjllllmgdcb -bcdeeeeeieeeeeeeggggglllllgdcb -bcdeeheeeeheeieeeeggglnjgggdcb -bcdeheeoeeeeeeeeoellllgggjgdcb -bcdeeeeeheeieheeeelmllgggggdcb -bcdeeheeeeeeeeeeeggggggggggdcb -bcdeeeeeeeheeeeheggggggggggdcb -bcdeeeeeeeeefeeeegggggeegggdcb -bcdeeeeheeeeeeheegggggefeeedcb -pcqrrrsrrreeeeeeeeeeeeeeeeidcb -bcdeeeeeereeeheeeeeefeeheehdcb -bcdeeheeerefeeeoeeeeeeeeeeedcb -bcdeeeeeereeeeehettttteeoeedcb -bcdefeheereheeeeetuvwteeeeedcb -bcdeeeeeireeeeeeetrrxteiehedcb -bcdeheeeerrrrrsrryrrxteeeeedcb -bcdeeeoeheeeeeeeetxzxteheeedcb -bcdeieeeeABCDBefetxxEteeefedcb -bcdeeeheeBAFGHheetttttieeeedcb -bcdefeeeeeeheeeeeeeeeeeheeedcb -bcdeeeeeeeeeeeeoeeeeheeeeehdcb -bcddddddddddddddddddddddddddcb -bccccccccccccccccccccccccccccb -bbbbbIbbbbbbbbbbbbbbbbbbbbbbbb +aaaaaaaaaaaaaaaaaaaaaaaaababacacacababaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaadaeadadafacagacacadadaeadaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaahahahahahahahahaiacajahahahahahahahahahaaaaaaaaaaaa +aaaaaaaaahahahakakakakakakahalahalahakakakakakakakahahaaaaaaaaaa +aaaaaaahahakakakamanaoapahakalakalakakahahaqahahakakahahaaaaaaaa +aaaaahahakakamaparasalatauanavaoawahahahahaxahahahahakahahaaaaaa +aaaaahakakahayatatatatatararatatazaAaAaBaBaCaDaEaFahakakahaaaaaa +aaahahakamaGaCaHaIaHaIaJaCaralaKaBaAaAaBaLaMaBaBaBaNahakahahaaaa +aaahakakaOauaAaAaBaMaAaAaNatatauaBaAaPaBaMaQaBaMaBaCaRakakahaaaa +aaahakaSaTatamaMaBaAaAanayataraHaMaBaBaAaAaAaPaBaBaNahaUakahaaaa +aaahakaKaVaWataXaMaMaMaCataYalauaBaBaBaBaMaMaZaMaNatbaaUakahaaaa +aaahakaoaIataKaMbbbbbbaMaCatayarbcaBaMaMbdbebbaMaCataDaUakahaaaa +aaahakaKbfaHaMbbbbbbbgbbaMaIatatataDahbhbbbbbibhaMaTaRahakahaaaa +aaahahakaKaMaMbbbbbjbjbbaMaBaIavaHaNahbkblblbmbnahahahakahahaaaa +aaboahahakakahbpbqblblbrbsaVaEbtbuaHbvbnblblbrbpahakakahahbwaaaa +ababbxahahahbyahbpbrbpahalazaBaNatbaahahbpbzbpahbAahahahbxababaa +abbxbxbxahbBbAbAahbAahahaKaAaNaHbCaMbDbEahalahbAbAbFahbxbxabbxaa +ababbGbxahbHbBbAahbAbAbAahahaHaVaEbIahaKbvbJbAbAbBbBahbxbGababaa +ababbxbxahbBbHbBbAbAbAbBahahahalahahbBbBbAahbAbBbBbBahbxbxababaa +abbxbxahahahbHahbBbBbBbBahbKbLbMbLbKahbBbBbBbBbBbBahahahbxbxabaa +aaboahahbNbBbBahbBahbBahbObLbPbLbQbLbOahbBbBbBbBbHbBbBahahbwaaaa +aaahahakbBbHbHbHbHbBahahbRbLbSbTbUbLbRahahbHbHbBbVbBbBakahahaaaa +aaahakakbWbXbBahbBbBbBbBahbLbLbLbLbLahbXbBbHbHbBbBahbBakakahaaaa +aaahakbWakbBbBbBbBbHbBbBbBahahbYahahbBbBbHbHbBahbBbBakaRakahaaaa +aaahakaRakbWbBbBbZbHbBahbBbBahbBbBbBbBbBbBbBbBbBbBbBakbWakahaaaa +aaahahakakakahbBbHbBbBbBbHbHbHbHbBbBbHbHbBbVahbBahakakakahahaaaa +aaaaahakakbWakbWbBbBbHbHbZbHbBbBbBbBbHbBbBbBahakakaRakakahaaaaaa +aaaaahahakakaRakahakakakbBbBbBahbBbBbBakakahakaRbWakakahahaaaaaa +aaaaaaahahakakakakbWbWaRakakakakakakakbWbWbWaRakakakahahaaaaaaaa +aaaaaaaaahahahakakakakbWbWbWbWbWbWbWbWaRakakakakahahahaaaaaaaaaa +aaaaaaaaaacaahahahahakakakakakakakakakakakahahahahcaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaahahahahahahahahahahahahahaaaaaaaaaaaaaaaaaaaa "} diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm index 6249fddfb88..3c45e66d34e 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm @@ -1,141 +1,1465 @@ -"aa" = (/turf/template_noop,/area/template_noop) -"ab" = (/turf/open/floor/plating/asteroid/basalt/lava_land_surface,/area/lavaland/surface/outdoors) -"ac" = (/turf/open/floor/grass{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/lavaland/surface/outdoors) -"ad" = (/obj/structure/flora/ausbushes/brflowers,/turf/open/floor/grass{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/lavaland/surface/outdoors) -"ae" = (/turf/closed/wall/shuttle/smooth{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"af" = (/obj/structure/grille,/obj/structure/window/fulltile,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"ag" = (/turf/open/floor/plasteel/bar{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"ah" = (/obj/structure/toilet,/turf/open/floor/plasteel/bar{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"ai" = (/obj/machinery/vending/coffee,/turf/open/floor/plasteel/cmo{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"aj" = (/obj/structure/table/wood,/obj/item/device/flashlight/lamp,/turf/open/floor/plasteel/cmo{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"ak" = (/obj/structure/table/wood,/obj/item/device/taperecorder,/obj/item/weapon/pen/blue,/turf/open/floor/plasteel/cmo{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"al" = (/obj/structure/table/wood,/obj/item/toy/carpplushie,/turf/open/floor/plasteel/cmo{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"am" = (/obj/machinery/vending/snack,/turf/open/floor/plasteel/cmo{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"an" = (/obj/machinery/sleeper{icon_state = "sleeper-open";dir = 4},/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"ao" = (/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"ap" = (/obj/structure/table,/obj/item/weapon/circular_saw,/obj/item/weapon/scalpel{pixel_y = 12},/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"aq" = (/obj/structure/table,/obj/item/weapon/cautery{pixel_x = 4},/obj/item/weapon/surgicaldrill,/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"ar" = (/obj/structure/table,/obj/item/weapon/surgical_drapes,/obj/item/weapon/razor,/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"as" = (/turf/open/floor/plasteel/cmo{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"at" = (/obj/structure/chair/office/dark{dir = 1},/turf/open/floor/plasteel/cmo{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"au" = (/obj/structure/chair/office/dark{dir = 4},/turf/open/floor/plasteel/cmo{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"av" = (/obj/item/weapon/reagent_containers/glass/rag,/obj/item/weapon/reagent_containers/spray/cleaner,/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;dir = 8;icon_state = "blue"},/area/ruin/powered) -"aw" = (/obj/structure/bed/roller,/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"ax" = (/obj/structure/closet/crate/trashcart,/obj/item/weapon/storage/bag/trash,/obj/item/trash/cheesie,/obj/item/weapon/reagent_containers/syringe/antiviral,/obj/item/bodybag,/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka,/turf/open/floor/grass{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/lavaland/surface/outdoors) -"ay" = (/obj/structure/sink{icon_state = "sink";dir = 8;pixel_x = -12;pixel_y = 2},/obj/structure/mirror{pixel_x = -28},/turf/open/floor/plasteel/bar{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"az" = (/obj/structure/noticeboard{dir = 1;pixel_y = -27},/obj/item/weapon/paper{info = "Nothing of interest to report.";name = "Important Notice - Mrs. Henderson"},/turf/open/floor/plasteel/cmo{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"aA" = (/obj/structure/closet/secure_closet/medical2,/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"aB" = (/obj/machinery/computer/operating,/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"aC" = (/obj/structure/table/optable,/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"aD" = (/obj/structure/table,/obj/item/weapon/retractor,/obj/item/weapon/hemostat,/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"aE" = (/turf/closed/wall/shuttle/smooth/nodiagonal{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"aF" = (/obj/machinery/door/unpowered/shuttle,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"aG" = (/obj/structure/extinguisher_cabinet,/turf/closed/wall/shuttle/smooth{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"aH" = (/obj/structure/extinguisher_cabinet,/turf/closed/wall/shuttle/smooth/nodiagonal{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"aI" = (/turf/closed/wall/shuttle/smooth,/area/ruin/powered) -"aJ" = (/turf/open/floor/plasteel/grimy{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/lavaland/surface/outdoors) -"aK" = (/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"aL" = (/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;dir = 1;icon_state = "blue"},/area/ruin/powered) -"aM" = (/obj/effect/mob_spawn/human/doctor/alive{flavour_text = "You were putting in your hours as a vet in the local animal hospital when a massive bluespace translocation shunted you across the galaxy. Can you survive on this desolate wasteland..?";id_job = "Veterinarian"},/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;dir = 1;icon_state = "blue"},/area/ruin/powered) -"aN" = (/obj/structure/closet/crate/freezer,/obj/item/weapon/reagent_containers/blood/random,/obj/item/weapon/reagent_containers/blood/random,/obj/item/weapon/reagent_containers/blood/random,/obj/item/weapon/reagent_containers/blood/random,/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;dir = 1;icon_state = "blue"},/area/ruin/powered) -"aO" = (/obj/machinery/iv_drip,/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;dir = 1;icon_state = "blue"},/area/ruin/powered) -"aP" = (/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;dir = 0;icon_state = "blue"},/area/ruin/powered) -"aQ" = (/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;dir = 8;icon_state = "bluecorner"},/area/ruin/powered) -"aR" = (/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;dir = 4;icon_state = "blue"},/area/ruin/powered) -"aS" = (/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;dir = 8;icon_state = "blue"},/area/ruin/powered) -"aT" = (/obj/structure/closet,/obj/effect/decal/cleanable/cobweb,/obj/item/ammo_casing/shotgun/dart,/obj/item/ammo_casing/shotgun/dart,/obj/item/weapon/gun/projectile/revolver/doublebarrel{desc = "For putting critters out to pasture."},/obj/item/ammo_casing/shotgun/buckshot,/obj/item/weapon/storage/box/bodybags,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"aU" = (/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"aV" = (/obj/structure/closet/secure_closet/medical1,/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"aW" = (/obj/machinery/vending/wallmed{pixel_y = 28},/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"aX" = (/obj/item/stack/cable_coil/random,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"aY" = (/obj/structure/bodycontainer/morgue,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"aZ" = (/obj/effect/decal/cleanable/ash,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"ba" = (/obj/structure/table/glass,/obj/item/weapon/reagent_containers/glass/beaker,/obj/item/weapon/storage/backpack/dufflebag/med,/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"bb" = (/obj/structure/table/reinforced,/obj/item/device/laser_pointer,/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"bc" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/firstaid/regular,/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"bd" = (/obj/structure/table/glass,/obj/item/weapon/storage/box/gloves,/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"be" = (/obj/effect/decal/cleanable/oil,/obj/item/weapon/storage/toolbox/mechanical,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"bf" = (/obj/structure/table,/obj/item/weapon/storage/fancy/cigarettes/dromedaryco,/obj/item/weapon/storage/box/matches,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"bg" = (/mob/living/simple_animal/cockroach,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"bh" = (/obj/structure/table/glass,/obj/item/weapon/storage/firstaid/brute,/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"bi" = (/obj/item/toy/cattoy,/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"bj" = (/obj/structure/table/glass,/obj/item/weapon/lazarus_injector,/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"bk" = (/obj/structure/reagent_dispensers/fueltank,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"bl" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/snacks/cookie{name = "doggie biscuit"},/obj/item/weapon/reagent_containers/food/snacks/cookie{name = "doggie biscuit"},/obj/item/weapon/reagent_containers/food/snacks/cookie{name = "doggie biscuit"},/obj/item/weapon/reagent_containers/food/snacks/cookie{name = "doggie biscuit"},/obj/item/weapon/reagent_containers/food/snacks/cookie{name = "doggie biscuit"},/obj/item/weapon/reagent_containers/food/snacks/cookie{name = "doggie biscuit"},/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;dir = 1;icon_state = "blue"},/area/ruin/powered) -"bm" = (/obj/structure/chair/comfy/teal{dir = 8},/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;dir = 1;icon_state = "blue"},/area/ruin/powered) -"bn" = (/obj/structure/bed/dogbed,/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"bo" = (/obj/item/weapon/reagent_containers/glass/bowl,/obj/item/weapon/reagent_containers/food/snacks/cheesewedge,/obj/item/weapon/reagent_containers/food/snacks/cheesewedge,/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"bp" = (/obj/structure/closet/crate/bin,/obj/item/trash/pistachios,/obj/item/weapon/lipstick/random,/obj/item/seeds/apple,/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;dir = 8;icon_state = "blue"},/area/ruin/powered) -"bq" = (/obj/structure/filingcabinet/chestdrawer/wheeled,/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"br" = (/obj/structure/chair/office/dark,/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"bs" = (/obj/structure/table/reinforced,/obj/item/weapon/phone,/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"bt" = (/obj/structure/flora/kirbyplants,/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"bu" = (/obj/structure/chair/comfy/teal{dir = 8},/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;dir = 4;icon_state = "blue"},/area/ruin/powered) -"bv" = (/obj/effect/mob_spawn/mouse{dir = 4;flavour_text = "You're a mousey! You're getting pretty old as mice go, and you haven't been feeling well as of late. Your master loves you a lot so he took you to this place so you can get better! You can't wait to see him again!";mob_name = "Stallman Jr."},/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"bw" = (/obj/effect/decal/cleanable/dirt,/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"bx" = (/obj/machinery/door/airlock/medical{name = "Patient Room";req_access_txt = "5"},/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"by" = (/obj/structure/table/reinforced,/obj/item/device/flashlight/lamp,/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;dir = 8;icon_state = "blue"},/area/ruin/powered) -"bz" = (/obj/structure/table/reinforced,/obj/item/clothing/glasses/regular,/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"bA" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin,/obj/item/weapon/pen/fourcolor,/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"bB" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/hug,/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"bC" = (/obj/structure/chair/office/light{dir = 1},/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"bD" = (/obj/structure/table/glass,/obj/item/weapon/reagent_containers/glass/bottle/cyanide{desc = "A cocktail of chemotherpy drugs intended to treat bladder cancer.";name = "MVAC regimen"},/obj/item/weapon/reagent_containers/syringe,/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"bE" = (/obj/structure/closet/crate/critter,/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;dir = 8;icon_state = "blue"},/area/ruin/powered) -"bF" = (/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;dir = 10;icon_state = "blue"},/area/ruin/powered) -"bG" = (/obj/structure/chair/comfy/teal{dir = 8},/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;dir = 6;icon_state = "blue"},/area/ruin/powered) -"bH" = (/obj/structure/table,/obj/item/weapon/tank/internals/oxygen,/obj/item/weapon/tank/internals/oxygen,/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;dir = 8;icon_state = "blue"},/area/ruin/powered) -"bI" = (/obj/structure/sign/bluecross_2{name = "animal hospital"},/turf/closed/wall/shuttle/smooth{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"bJ" = (/obj/machinery/door/airlock/glass_large,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"bK" = (/obj/item/weapon/reagent_containers/glass/bowl,/obj/item/weapon/reagent_containers/food/snacks/grown/wheat,/obj/item/weapon/reagent_containers/food/snacks/grown/wheat,/obj/item/weapon/reagent_containers/food/snacks/grown/wheat,/obj/effect/decal/cleanable/dirt,/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"bL" = (/obj/vehicle/scooter/skateboard{dir = 4},/turf/open/floor/grass{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/lavaland/surface/outdoors) -"bM" = (/obj/structure/flora/ausbushes/sunnybush,/turf/open/floor/grass{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/lavaland/surface/outdoors) -"bN" = (/obj/effect/mob_spawn/cow{dir = 4;flavour_text = "You're a cow. You've lived a pampered life as a prized show heifer, a real blue-ribbon winner. After showing signs of a minor respiratory infection, your master took you to the hospital right away. He'd better come back soon, you're getting quite impatient.";mob_name = "Flossie"},/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"bO" = (/obj/structure/flora/ausbushes/ppflowers,/turf/open/floor/grass{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/lavaland/surface/outdoors) -"bP" = (/obj/structure/chair/office/light{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"bQ" = (/obj/structure/table/glass,/obj/item/clothing/tie/petcollar,/obj/item/weapon/pen/blue,/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"bR" = (/obj/structure/table,/obj/machinery/cell_charger,/obj/item/weapon/melee/baton/cattleprod,/obj/item/weapon/stock_parts/cell/high,/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;dir = 10;icon_state = "blue"},/area/ruin/powered) -"bS" = (/obj/structure/closet,/obj/item/weapon/defibrillator/loaded,/obj/item/weapon/storage/belt/medical,/obj/item/clothing/glasses/hud/health,/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;dir = 6;icon_state = "blue"},/area/ruin/powered) -"bT" = (/obj/item/weapon/pickaxe,/obj/effect/decal/cleanable/blood/old,/turf/open/floor/plating/asteroid/basalt/lava_land_surface,/area/lavaland/surface/outdoors) -"bU" = (/obj/effect/decal/remains/human,/turf/open/floor/plating/asteroid/basalt/lava_land_surface,/area/lavaland/surface/outdoors) -"bV" = (/obj/effect/decal/cleanable/blood/old,/turf/open/floor/plating/asteroid/basalt/lava_land_surface,/area/lavaland/surface/outdoors) -"bW" = (/turf/open/floor/grass,/area/lavaland/surface/outdoors) -"cf" = (/obj/machinery/sleeper{icon_state = "sleeper-open";dir = 4},/turf/open/floor/plasteel{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface;dir = 1;icon_state = "blue"},/area/ruin/powered) -"ce" = (/obj/machinery/atmospherics/components/unary/portables_connector/visible{dir = 1},/obj/machinery/portable_atmospherics/pump,/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"cd" = (/obj/structure/table/reinforced,/obj/item/clothing/gloves/color/latex,/obj/item/clothing/mask/surgical,/obj/item/clothing/suit/apron/surgical,/turf/open/floor/plasteel/white{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/space) -"cc" = (/obj/machinery/atmospherics/pipe/simple/general/visible,/turf/closed/wall/shuttle/smooth{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/ruin/powered) -"cb" = (/obj/machinery/atmospherics/components/binary/valve,/turf/open/floor/grass{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/lavaland/surface/outdoors) -"ca" = (/obj/machinery/atmospherics/components/unary/tank/air{dir = 4},/turf/open/floor/grass{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/lavaland/surface/outdoors) -"bZ" = (/obj/machinery/atmospherics/pipe/simple/general/visible{dir = 10},/turf/open/floor/grass{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/lavaland/surface/outdoors) -"bY" = (/obj/machinery/atmospherics/pipe/manifold/general/visible{dir = 1},/turf/open/floor/grass{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/lavaland/surface/outdoors) -"bX" = (/obj/machinery/atmospherics/pipe/simple/general/visible{dir = 6},/turf/open/floor/grass{baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface},/area/lavaland/surface/outdoors) +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aa" = ( +/turf/template_noop, +/area/template_noop) +"ab" = ( +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"ac" = ( +/turf/open/floor/grass{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/lavaland/surface/outdoors) +"ad" = ( +/obj/structure/flora/ausbushes/brflowers, +/turf/open/floor/grass{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/lavaland/surface/outdoors) +"ae" = ( +/turf/closed/wall/shuttle/smooth{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"af" = ( +/obj/structure/grille, +/obj/structure/window/fulltile, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"ag" = ( +/turf/open/floor/plasteel/bar{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"ah" = ( +/obj/structure/toilet, +/turf/open/floor/plasteel/bar{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"ai" = ( +/obj/machinery/vending/coffee, +/turf/open/floor/plasteel/cmo{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"aj" = ( +/obj/structure/table/wood, +/obj/item/device/flashlight/lamp, +/turf/open/floor/plasteel/cmo{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"ak" = ( +/obj/structure/table/wood, +/obj/item/device/taperecorder, +/obj/item/weapon/pen/blue, +/turf/open/floor/plasteel/cmo{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"al" = ( +/obj/structure/table/wood, +/obj/item/toy/carpplushie, +/turf/open/floor/plasteel/cmo{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"am" = ( +/obj/machinery/vending/snack, +/turf/open/floor/plasteel/cmo{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"an" = ( +/obj/machinery/sleeper{ + icon_state = "sleeper-open"; + dir = 4 + }, +/turf/open/floor/plasteel/white{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"ao" = ( +/turf/open/floor/plasteel/white{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"ap" = ( +/obj/structure/table, +/obj/item/weapon/circular_saw, +/obj/item/weapon/scalpel{ + pixel_y = 12 + }, +/turf/open/floor/plasteel/white{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"aq" = ( +/obj/structure/table, +/obj/item/weapon/cautery{ + pixel_x = 4 + }, +/obj/item/weapon/surgicaldrill, +/turf/open/floor/plasteel/white{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"ar" = ( +/obj/structure/table, +/obj/item/weapon/surgical_drapes, +/obj/item/weapon/razor, +/turf/open/floor/plasteel/white{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"as" = ( +/turf/open/floor/plasteel/cmo{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"at" = ( +/obj/structure/chair/office/dark{ + dir = 1 + }, +/turf/open/floor/plasteel/cmo{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"au" = ( +/obj/structure/chair/office/dark{ + dir = 4 + }, +/turf/open/floor/plasteel/cmo{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"av" = ( +/obj/item/weapon/reagent_containers/glass/rag, +/obj/item/weapon/reagent_containers/spray/cleaner, +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; + dir = 8; + icon_state = "blue" + }, +/area/ruin/powered) +"aw" = ( +/obj/structure/bed/roller, +/turf/open/floor/plasteel/white{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"ax" = ( +/obj/structure/closet/crate/trashcart, +/obj/item/weapon/storage/bag/trash, +/obj/item/trash/cheesie, +/obj/item/weapon/reagent_containers/syringe/antiviral, +/obj/item/bodybag, +/obj/item/weapon/reagent_containers/food/drinks/bottle/vodka, +/turf/open/floor/grass{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/lavaland/surface/outdoors) +"ay" = ( +/obj/structure/sink{ + icon_state = "sink"; + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/obj/structure/mirror{ + pixel_x = -28 + }, +/turf/open/floor/plasteel/bar{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"az" = ( +/obj/structure/noticeboard{ + dir = 1; + pixel_y = -27 + }, +/obj/item/weapon/paper{ + info = "Nothing of interest to report."; + name = "Important Notice - Mrs. Henderson" + }, +/turf/open/floor/plasteel/cmo{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"aA" = ( +/obj/structure/closet/secure_closet/medical2, +/turf/open/floor/plasteel/white{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"aB" = ( +/obj/machinery/computer/operating, +/turf/open/floor/plasteel/white{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"aC" = ( +/obj/structure/table/optable, +/turf/open/floor/plasteel/white{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"aD" = ( +/obj/structure/table, +/obj/item/weapon/retractor, +/obj/item/weapon/hemostat, +/turf/open/floor/plasteel/white{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"aE" = ( +/turf/closed/wall/shuttle/smooth/nodiagonal{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"aF" = ( +/obj/machinery/door/unpowered/shuttle, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"aG" = ( +/obj/structure/extinguisher_cabinet, +/turf/closed/wall/shuttle/smooth{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"aH" = ( +/obj/structure/extinguisher_cabinet, +/turf/closed/wall/shuttle/smooth/nodiagonal{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"aI" = ( +/turf/closed/wall/shuttle/smooth, +/area/ruin/powered) +"aJ" = ( +/turf/open/floor/plasteel/grimy{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/lavaland/surface/outdoors) +"aK" = ( +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"aL" = ( +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; + dir = 1; + icon_state = "blue" + }, +/area/ruin/powered) +"aM" = ( +/obj/effect/mob_spawn/human/doctor/alive{ + flavour_text = "You were putting in your hours as a vet in the local animal hospital when a massive bluespace translocation shunted you across the galaxy. Can you survive on this desolate wasteland..?"; + id_job = "Veterinarian" + }, +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; + dir = 1; + icon_state = "blue" + }, +/area/ruin/powered) +"aN" = ( +/obj/structure/closet/crate/freezer, +/obj/item/weapon/reagent_containers/blood/random, +/obj/item/weapon/reagent_containers/blood/random, +/obj/item/weapon/reagent_containers/blood/random, +/obj/item/weapon/reagent_containers/blood/random, +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; + dir = 1; + icon_state = "blue" + }, +/area/ruin/powered) +"aO" = ( +/obj/machinery/iv_drip, +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; + dir = 1; + icon_state = "blue" + }, +/area/ruin/powered) +"aP" = ( +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; + dir = 0; + icon_state = "blue" + }, +/area/ruin/powered) +"aQ" = ( +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; + dir = 8; + icon_state = "bluecorner" + }, +/area/ruin/powered) +"aR" = ( +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; + dir = 4; + icon_state = "blue" + }, +/area/ruin/powered) +"aS" = ( +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; + dir = 8; + icon_state = "blue" + }, +/area/ruin/powered) +"aT" = ( +/obj/structure/closet, +/obj/effect/decal/cleanable/cobweb, +/obj/item/ammo_casing/shotgun/dart, +/obj/item/ammo_casing/shotgun/dart, +/obj/item/weapon/gun/projectile/revolver/doublebarrel{ + desc = "For putting critters out to pasture." + }, +/obj/item/ammo_casing/shotgun/buckshot, +/obj/item/weapon/storage/box/bodybags, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"aU" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"aV" = ( +/obj/structure/closet/secure_closet/medical1, +/turf/open/floor/plasteel/white{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"aW" = ( +/obj/machinery/vending/wallmed{ + pixel_y = 28 + }, +/turf/open/floor/plasteel/white{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"aX" = ( +/obj/item/stack/cable_coil/random, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"aY" = ( +/obj/structure/bodycontainer/morgue, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"aZ" = ( +/obj/effect/decal/cleanable/ash, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"ba" = ( +/obj/structure/table/glass, +/obj/item/weapon/reagent_containers/glass/beaker, +/obj/item/weapon/storage/backpack/dufflebag/med, +/turf/open/floor/plasteel/white{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bb" = ( +/obj/structure/table/reinforced, +/obj/item/device/laser_pointer, +/turf/open/floor/plasteel/white{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bc" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/storage/firstaid/regular, +/turf/open/floor/plasteel/white{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bd" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/box/gloves, +/turf/open/floor/plasteel/white{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"be" = ( +/obj/effect/decal/cleanable/oil, +/obj/item/weapon/storage/toolbox/mechanical, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bf" = ( +/obj/structure/table, +/obj/item/weapon/storage/fancy/cigarettes/dromedaryco, +/obj/item/weapon/storage/box/matches, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bg" = ( +/mob/living/simple_animal/cockroach, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bh" = ( +/obj/structure/table/glass, +/obj/item/weapon/storage/firstaid/brute, +/turf/open/floor/plasteel/white{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bi" = ( +/obj/item/toy/cattoy, +/turf/open/floor/plasteel/white{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bj" = ( +/obj/structure/table/glass, +/obj/item/weapon/lazarus_injector, +/turf/open/floor/plasteel/white{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bk" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bl" = ( +/obj/structure/table, +/obj/item/weapon/reagent_containers/food/snacks/cookie{ + name = "doggie biscuit" + }, +/obj/item/weapon/reagent_containers/food/snacks/cookie{ + name = "doggie biscuit" + }, +/obj/item/weapon/reagent_containers/food/snacks/cookie{ + name = "doggie biscuit" + }, +/obj/item/weapon/reagent_containers/food/snacks/cookie{ + name = "doggie biscuit" + }, +/obj/item/weapon/reagent_containers/food/snacks/cookie{ + name = "doggie biscuit" + }, +/obj/item/weapon/reagent_containers/food/snacks/cookie{ + name = "doggie biscuit" + }, +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; + dir = 1; + icon_state = "blue" + }, +/area/ruin/powered) +"bm" = ( +/obj/structure/chair/comfy/teal{ + dir = 8 + }, +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; + dir = 1; + icon_state = "blue" + }, +/area/ruin/powered) +"bn" = ( +/obj/structure/bed/dogbed, +/turf/open/floor/plasteel/white{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bo" = ( +/obj/item/weapon/reagent_containers/glass/bowl, +/obj/item/weapon/reagent_containers/food/snacks/cheesewedge, +/obj/item/weapon/reagent_containers/food/snacks/cheesewedge, +/turf/open/floor/plasteel/white{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bp" = ( +/obj/structure/closet/crate/bin, +/obj/item/trash/pistachios, +/obj/item/weapon/lipstick/random, +/obj/item/seeds/apple, +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; + dir = 8; + icon_state = "blue" + }, +/area/ruin/powered) +"bq" = ( +/obj/structure/filingcabinet/chestdrawer/wheeled, +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"br" = ( +/obj/structure/chair/office/dark, +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bs" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/phone, +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bt" = ( +/obj/structure/flora/kirbyplants, +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bu" = ( +/obj/structure/chair/comfy/teal{ + dir = 8 + }, +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; + dir = 4; + icon_state = "blue" + }, +/area/ruin/powered) +"bv" = ( +/obj/effect/mob_spawn/mouse{ + dir = 4; + flavour_text = "You're a mousey! You're getting pretty old as mice go, and you haven't been feeling well as of late. Your master loves you a lot so he took you to this place so you can get better! You can't wait to see him again!"; + mob_name = "Stallman Jr." + }, +/turf/open/floor/plasteel/white{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bw" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/white{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bx" = ( +/obj/machinery/door/airlock/medical{ + name = "Patient Room"; + req_access_txt = "5" + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"by" = ( +/obj/structure/table/reinforced, +/obj/item/device/flashlight/lamp, +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; + dir = 8; + icon_state = "blue" + }, +/area/ruin/powered) +"bz" = ( +/obj/structure/table/reinforced, +/obj/item/clothing/glasses/regular, +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bA" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/paper_bin, +/obj/item/weapon/pen/fourcolor, +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bB" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/storage/box/hug, +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bC" = ( +/obj/structure/chair/office/light{ + dir = 1 + }, +/turf/open/floor/plasteel/white{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bD" = ( +/obj/structure/table/glass, +/obj/item/weapon/reagent_containers/glass/bottle/cyanide{ + desc = "A cocktail of chemotherpy drugs intended to treat bladder cancer."; + name = "MVAC regimen" + }, +/obj/item/weapon/reagent_containers/syringe, +/turf/open/floor/plasteel/white{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bE" = ( +/obj/structure/closet/crate/critter, +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; + dir = 8; + icon_state = "blue" + }, +/area/ruin/powered) +"bF" = ( +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; + dir = 10; + icon_state = "blue" + }, +/area/ruin/powered) +"bG" = ( +/obj/structure/chair/comfy/teal{ + dir = 8 + }, +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; + dir = 6; + icon_state = "blue" + }, +/area/ruin/powered) +"bH" = ( +/obj/structure/table, +/obj/item/weapon/tank/internals/oxygen, +/obj/item/weapon/tank/internals/oxygen, +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; + dir = 8; + icon_state = "blue" + }, +/area/ruin/powered) +"bI" = ( +/obj/structure/sign/bluecross_2{ + name = "animal hospital" + }, +/turf/closed/wall/shuttle/smooth{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bJ" = ( +/obj/machinery/door/airlock/glass_large, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bK" = ( +/obj/item/weapon/reagent_containers/glass/bowl, +/obj/item/weapon/reagent_containers/food/snacks/grown/wheat, +/obj/item/weapon/reagent_containers/food/snacks/grown/wheat, +/obj/item/weapon/reagent_containers/food/snacks/grown/wheat, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/white{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bL" = ( +/obj/vehicle/scooter/skateboard{ + dir = 4 + }, +/turf/open/floor/grass{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/lavaland/surface/outdoors) +"bM" = ( +/obj/structure/flora/ausbushes/sunnybush, +/turf/open/floor/grass{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/lavaland/surface/outdoors) +"bN" = ( +/obj/effect/mob_spawn/cow{ + dir = 4; + flavour_text = "You're a cow. You've lived a pampered life as a prized show heifer, a real blue-ribbon winner. After showing signs of a minor respiratory infection, your master took you to the hospital right away. He'd better come back soon, you're getting quite impatient."; + mob_name = "Flossie" + }, +/turf/open/floor/plasteel/white{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bO" = ( +/obj/structure/flora/ausbushes/ppflowers, +/turf/open/floor/grass{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/lavaland/surface/outdoors) +"bP" = ( +/obj/structure/chair/office/light{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/white{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bQ" = ( +/obj/structure/table/glass, +/obj/item/clothing/tie/petcollar, +/obj/item/weapon/pen/blue, +/turf/open/floor/plasteel/white{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bR" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/weapon/melee/baton/cattleprod, +/obj/item/weapon/stock_parts/cell/high, +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; + dir = 10; + icon_state = "blue" + }, +/area/ruin/powered) +"bS" = ( +/obj/structure/closet, +/obj/item/weapon/defibrillator/loaded, +/obj/item/weapon/storage/belt/medical, +/obj/item/clothing/glasses/hud/health, +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; + dir = 6; + icon_state = "blue" + }, +/area/ruin/powered) +"bT" = ( +/obj/item/weapon/pickaxe, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"bU" = ( +/obj/effect/decal/remains/human, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"bV" = ( +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"bW" = ( +/turf/open/floor/grass, +/area/lavaland/surface/outdoors) +"bX" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 6 + }, +/turf/open/floor/grass{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/lavaland/surface/outdoors) +"bY" = ( +/obj/machinery/atmospherics/pipe/manifold/general/visible{ + dir = 1 + }, +/turf/open/floor/grass{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/lavaland/surface/outdoors) +"bZ" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 10 + }, +/turf/open/floor/grass{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/lavaland/surface/outdoors) +"ca" = ( +/obj/machinery/atmospherics/components/unary/tank/air{ + dir = 4 + }, +/turf/open/floor/grass{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/lavaland/surface/outdoors) +"cb" = ( +/obj/machinery/atmospherics/components/binary/valve, +/turf/open/floor/grass{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/lavaland/surface/outdoors) +"cc" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible, +/turf/closed/wall/shuttle/smooth{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"cd" = ( +/obj/structure/table/reinforced, +/obj/item/clothing/gloves/color/latex, +/obj/item/clothing/mask/surgical, +/obj/item/clothing/suit/apron/surgical, +/turf/open/floor/plasteel/white{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"ce" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1 + }, +/obj/machinery/portable_atmospherics/pump, +/turf/open/floor/plasteel/white{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"cf" = ( +/obj/machinery/sleeper{ + icon_state = "sleeper-open"; + dir = 4 + }, +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; + dir = 1; + icon_state = "blue" + }, +/area/ruin/powered) (1,1,1) = {" -aaaaaaaaaaaaaaaaabababababababaaaaaaaaaaaa -aaaaaaaaaaaaababababacacabacabababaaaaaaaa -aaaaaaaaaaaaababacabacacacbXbYbZabababaaaa -aaaaaaaaaaababacacacacadaccacacbacacababaa -aaaaaaaaaeaeaeaeaeafafafaeaeaeccaeaeaeaeaa -aaaaababaeagahaeaiajakalamaecdceapaqaraeaa -aaaaababaeagagaeasatasauasaeanaoaoaoawaeaa -aaababaxaeayagaeasasazasasaeaAaoaBaCaDaeaa -abababacaEaeaFaGaFaeaeaeaFaHaeaFaIaIaIaeaa -ababaJaJaFaKaKaLaKaMaMaMaKaLcfaKaLaNaOaeaa -abababacaeaKaKaPaPaKaPaKaPaPaPaKaPaQaRaeaa -aaababaeaEaFaEaeaeaFaeaFaeaeaEaFaeaSaRaeaa -ababacaeaTaUaeaVaWaoaeaoaWaVaeaXaeaSaRaeaa -aaababaeaYaZaebaaobbaebcaobdaebeaeaSaRaeaa -aaaaaaaebfbgaebhbiaoaeaoaobjaebkaeaSaRaeaa -aaaaaaaeaEaFaEaGaeaFaeaFaeaeaeaeaEaSaRaeaa -aaaaaaaaaeaKaLaLaLaKblaKbmaebnboafavaRaeaa -aaaaaaaaaebpbqbrbsaKbtaKbuaebvbwbxaKaRaeaa -aaaaaaaaaebybzbAbBaKaKaKbuaebCbDaebEaRaeaa -aaaaaaaaaebFaPaPaPaKaKaPbGaeaeaeaEbHaRaeaa -aaaaaaabaeaeafafbIbJaUaeaeaebnbKafaSaRaeaa -aaaaababacacadbLbMaJaJbMacaebNaobxaKaRaeaa -aaaaabababacacacacaJaJacbOaebPbQaebRbSaeaa -aaababbTababacacabaJabacacaeaeaeaeaeaeaeaa -aaabbUababababacababababababababaaaaaaaaaa -aaabbVabababababababbWababababaaaaaaaaaaaa -aaaaababababbWababababababaaaaaaaaaaaaaaaa -aaaaaaaaababababaaabababaaaaaaaaaaaaaaaaaa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +aa +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(2,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +aa +aa +"} +(3,1,1) = {" +aa +aa +aa +aa +aa +ab +ab +ab +ab +aJ +ab +ab +ac +ab +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +bU +bV +ab +ab +"} +(4,1,1) = {" +aa +aa +aa +aa +aa +ab +ab +ax +ac +aJ +ac +ae +ae +ae +ae +ae +aa +aa +aa +aa +ab +ab +ab +bT +ab +ab +ab +ab +"} +(5,1,1) = {" +aa +aa +aa +aa +ae +ae +ae +ae +aE +aF +ae +aE +aT +aY +bf +aE +ae +ae +ae +ae +ae +ac +ab +ab +ab +ab +ab +ab +"} +(6,1,1) = {" +aa +aa +aa +ab +ae +ag +ag +ay +ae +aK +aK +aF +aU +aZ +bg +aF +aK +bp +by +bF +ae +ac +ac +ab +ab +ab +ab +ab +"} +(7,1,1) = {" +aa +ab +ab +ab +ae +ah +ag +ag +aF +aK +aK +aE +ae +ae +ae +aE +aL +bq +bz +aP +af +ad +ac +ac +ab +ab +bW +bW +"} +(8,1,1) = {" +aa +ab +ab +ac +ae +ae +ae +ae +aG +aL +aP +ae +aV +ba +bh +aG +aL +br +bA +aP +af +bL +ac +ac +ac +ab +ab +ab +"} +(9,1,1) = {" +ab +ab +ac +ac +ae +ai +as +as +aF +aK +aP +ae +aW +ao +bi +ae +aL +bs +bB +aP +bI +bM +ac +ab +ab +ab +ab +ab +"} +(10,1,1) = {" +ab +ab +ab +ac +af +aj +at +as +ae +aM +aK +aF +ao +bb +ao +aF +aK +aK +aK +aK +bJ +aJ +aJ +aJ +ab +ab +ab +ab +"} +(11,1,1) = {" +ab +ac +ac +ac +af +ak +as +az +ae +aM +aP +ae +ae +ae +ae +ae +bl +bt +aK +aK +aU +aJ +aJ +ab +ab +bW +ab +ab +"} +(12,1,1) = {" +ab +ac +ac +ad +af +al +au +as +ae +aM +aK +aF +ao +bc +ao +aF +aK +aK +aK +aP +ae +bM +ac +ac +ab +ab +ab +ab +"} +(13,1,1) = {" +ab +ab +ac +ac +ae +am +as +as +aF +aK +aP +ae +aW +ao +ao +ae +bm +bu +bu +bG +ae +ac +bO +ac +ab +ab +ab +ab +"} +(14,1,1) = {" +ab +ac +bX +ca +ae +ae +ae +ae +aH +aL +aP +ae +aV +bd +bj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ab +ab +aa +aa +"} +(15,1,1) = {" +ab +ab +bY +ca +ae +cd +an +aA +ae +aL +aP +aE +ae +ae +ae +ae +bn +bv +bC +ae +bn +bN +bP +ae +ab +ab +aa +aa +"} +(16,1,1) = {" +aa +ab +bZ +cb +cc +ce +ao +ao +aF +aK +aK +aF +aX +be +bk +ae +bo +bw +bD +ae +bK +ao +bQ +ae +ab +aa +aa +aa +"} +(17,1,1) = {" +aa +ab +ab +ac +ae +ap +ao +aB +aI +aL +aP +ae +ae +ae +ae +aE +af +bx +ae +aE +af +bx +ae +ae +aa +aa +aa +aa +"} +(18,1,1) = {" +aa +aa +ab +ac +ae +aq +ao +aC +aI +aN +aQ +aS +aS +aS +aS +aS +av +aK +bE +bH +aS +aK +bR +ae +aa +aa +aa +aa +"} +(19,1,1) = {" +aa +aa +ab +ab +ae +ar +aw +aD +aI +aO +aR +aR +aR +aR +aR +aR +aR +aR +aR +aR +aR +aR +bS +ae +aa +aa +aa +aa +"} +(20,1,1) = {" +aa +aa +aa +ab +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aa +aa +aa +aa +"} +(21,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa "} diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_golem_ship.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_golem_ship.dmm index 0a2280a5a53..d41cfaa3a68 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_golem_ship.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_golem_ship.dmm @@ -1,34 +1,35 @@ "a" = (/turf/template_noop,/area/template_noop) -"b" = (/turf/closed/wall/shuttle/smooth/nodiagonal{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"c" = (/obj/structure/closet/crate,/obj/item/weapon/pickaxe,/obj/item/weapon/pickaxe,/obj/item/weapon/pickaxe,/obj/item/weapon/storage/bag/ore,/obj/item/weapon/storage/bag/ore,/obj/item/device/mining_scanner,/obj/item/device/flashlight/lantern,/obj/item/weapon/card/id/mining,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"d" = (/obj/structure/closet/crate,/obj/item/weapon/pickaxe,/obj/item/weapon/pickaxe,/obj/item/weapon/storage/bag/ore,/obj/item/weapon/storage/bag/ore,/obj/item/device/mining_scanner,/obj/item/device/flashlight/lantern,/obj/item/weapon/card/id/mining,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"e" = (/obj/item/weapon/storage/toolbox/mechanical,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"f" = (/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"g" = (/obj/structure/reagent_dispensers/watertank,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"h" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth; initial_gas_mix = "o2=14;n2=23;TEMP=300"},/area/ruin/powered) -"i" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion"; dir = 8},/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth; initial_gas_mix = "o2=14;n2=23;TEMP=300"},/area/ruin/powered) -"j" = (/obj/machinery/door/airlock/shuttle,/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"k" = (/obj/machinery/computer/arcade/battle,/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"l" = (/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"m" = (/obj/effect/mob_spawn/human/golem/adamantine,/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"n" = (/obj/machinery/mineral/equipment_vendor/golem,/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"o" = (/obj/item/weapon/resonator,/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"p" = (/obj/machinery/mineral/ore_redemption,/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"q" = (/obj/structure/statue/gold/rd,/obj/structure/window/reinforced{dir = 4; name = "shrine of the liberator"; pixel_x = 0},/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"r" = (/obj/machinery/computer/shuttle,/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"s" = (/obj/structure/extinguisher_cabinet{pixel_y = 30},/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"t" = (/obj/structure/table/wood,/obj/item/weapon/bedsheet/rd{desc = "Majestic."; layer = 3; name = "Royal Cape of the Liberator"; pixel_x = 5; pixel_y = 9},/obj/item/weapon/book/manual/research_and_development{name = "Sacred Text of the Liberator"; pixel_x = -4; pixel_y = 3},/obj/structure/window/reinforced{dir = 4; name = "shrine of the liberator"; pixel_x = 0},/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"u" = (/obj/item/weapon/resonator/upgraded,/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"v" = (/obj/machinery/autolathe,/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"w" = (/obj/structure/table/wood,/obj/machinery/reagentgrinder,/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"x" = (/obj/machinery/computer/arcade/orion_trail,/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"y" = (/obj/structure/extinguisher_cabinet{pixel_y = -30},/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"z" = (/obj/structure/table/wood,/obj/item/weapon/surgical_drapes{pixel_x = 15},/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/fire,/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"A" = (/obj/item/weapon/storage/firstaid/fire,/obj/structure/table/wood,/obj/item/weapon/storage/firstaid/fire,/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"B" = (/obj/item/weapon/storage/firstaid/brute,/obj/structure/table/wood,/obj/item/weapon/storage/firstaid/brute,/obj/item/areaeditor/blueprints{desc = "Use to build new structures in the wastes."; name = "land claim"},/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"C" = (/obj/item/weapon/storage/firstaid/brute,/obj/structure/table/wood,/obj/item/weapon/storage/firstaid/brute,/obj/item/weapon/disk/design_disk/golem_shell,/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"D" = (/obj/structure/reagent_dispensers/fueltank,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) -"E" = (/obj/structure/ore_box,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered) +"b" = (/turf/closed/wall/shuttle/smooth/nodiagonal{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/golem_ship) +"c" = (/obj/structure/closet/crate,/obj/item/weapon/pickaxe,/obj/item/weapon/pickaxe,/obj/item/weapon/pickaxe,/obj/item/weapon/storage/bag/ore,/obj/item/weapon/storage/bag/ore,/obj/item/device/mining_scanner,/obj/item/device/flashlight/lantern,/obj/item/weapon/card/id/mining,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/golem_ship) +"d" = (/obj/structure/closet/crate,/obj/item/weapon/pickaxe,/obj/item/weapon/pickaxe,/obj/item/weapon/storage/bag/ore,/obj/item/weapon/storage/bag/ore,/obj/item/device/mining_scanner,/obj/item/device/flashlight/lantern,/obj/item/weapon/card/id/mining,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/golem_ship) +"e" = (/obj/item/weapon/storage/toolbox/mechanical,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/golem_ship) +"f" = (/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/golem_ship) +"g" = (/obj/structure/reagent_dispensers/watertank,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/golem_ship) +"h" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth; initial_gas_mix = "o2=14;n2=23;TEMP=300"},/area/ruin/powered/golem_ship) +"i" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion"; dir = 8},/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth; initial_gas_mix = "o2=14;n2=23;TEMP=300"},/area/ruin/powered/golem_ship) +"j" = (/obj/machinery/door/airlock/shuttle,/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/golem_ship) +"k" = (/obj/machinery/computer/arcade/battle,/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/golem_ship) +"l" = (/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/golem_ship) +"m" = (/obj/effect/mob_spawn/human/golem/adamantine,/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/golem_ship) +"n" = (/obj/machinery/mineral/equipment_vendor/golem,/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/golem_ship) +"o" = (/obj/item/weapon/resonator,/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/golem_ship) +"p" = (/obj/machinery/mineral/ore_redemption,/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/golem_ship) +"q" = (/obj/structure/statue/gold/rd,/obj/structure/window/reinforced{dir = 4; name = "shrine of the liberator"; pixel_x = 0},/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/golem_ship) +"r" = (/obj/machinery/computer/shuttle,/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/golem_ship) +"s" = (/obj/machinery/bluespace_beacon,/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/golem_ship) +"t" = (/obj/structure/extinguisher_cabinet{pixel_y = 30},/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/golem_ship) +"u" = (/obj/structure/table/wood,/obj/item/weapon/bedsheet/rd{desc = "Majestic."; layer = 3; name = "Royal Cape of the Liberator"; pixel_x = 5; pixel_y = 9},/obj/item/weapon/book/manual/research_and_development{name = "Sacred Text of the Liberator"; pixel_x = -4; pixel_y = 3},/obj/structure/window/reinforced{dir = 4; name = "shrine of the liberator"; pixel_x = 0},/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/golem_ship) +"v" = (/obj/item/weapon/resonator/upgraded,/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/golem_ship) +"w" = (/obj/machinery/autolathe,/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/golem_ship) +"x" = (/obj/structure/table/wood,/obj/machinery/reagentgrinder,/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/golem_ship) +"y" = (/obj/machinery/computer/arcade/orion_trail,/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/golem_ship) +"z" = (/obj/structure/extinguisher_cabinet{pixel_y = -30},/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/golem_ship) +"A" = (/obj/structure/table/wood,/obj/item/weapon/surgical_drapes{pixel_x = 15},/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/fire,/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/golem_ship) +"B" = (/obj/item/weapon/storage/firstaid/fire,/obj/structure/table/wood,/obj/item/weapon/storage/firstaid/fire,/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/golem_ship) +"C" = (/obj/item/weapon/storage/firstaid/brute,/obj/structure/table/wood,/obj/item/weapon/storage/firstaid/brute,/obj/item/areaeditor/blueprints{desc = "Use to build new structures in the wastes."; name = "land claim"},/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/golem_ship) +"D" = (/obj/item/weapon/storage/firstaid/brute,/obj/structure/table/wood,/obj/item/weapon/storage/firstaid/brute,/obj/item/weapon/disk/design_disk/golem_shell,/turf/open/floor/plasteel/shuttle/purple{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/golem_ship) +"E" = (/obj/structure/reagent_dispensers/fueltank,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/golem_ship) +"F" = (/obj/structure/ore_box,/turf/open/floor/plating{baseturf = /turf/open/floor/plating/lava/smooth},/area/ruin/powered/golem_ship) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaa @@ -40,14 +41,14 @@ aabbbbjjbbbbjjbbbbbb aabkllllmmbllllllnhi aabllllloojlllllllhi bbbjjbbbbbblllllpbbb -bqrllllllljlllllljsj -btlllllllljlllllljlj -bbbjjbbbbbblllluvbbb -aabllllloojllllllwhi -aabxllllmmbyllzABChi +bqrllllllljlslllljtj +bulllllllljlllllljlj +bbbjjbbbbbbllllvwbbb +aabllllloojllllllxhi +aabyllllmmbzllABCDhi aabbbbjjbbbbjjbbbbbb -aaaaabfffffffffffDhi -aaaaabEEEEEEEefffDhi +aaaaabfffffffffffEhi +aaaaabFFFFFFFefffEhi aaaaabbbbbbbbbbbbbbb aaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaa diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_survivalpod.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_survivalpod.dmm new file mode 100644 index 00000000000..5d7751cb668 --- /dev/null +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_survivalpod.dmm @@ -0,0 +1,372 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"b" = ( +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"c" = ( +/obj/structure/sign/mining/survival{ + pixel_y = -32 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"d" = ( +/turf/closed/wall/shuttle/survival/pod{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"e" = ( +/obj/structure/sign/mining/survival{ + dir = 4; + icon_state = "survival"; + pixel_x = 32; + tag = "icon-survival (EAST)" + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"f" = ( +/obj/structure/fans, +/turf/open/floor/pod/dark{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"g" = ( +/obj/machinery/smartfridge/survival_pod/empty, +/turf/open/floor/pod/dark{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"h" = ( +/obj/item/device/gps/computer, +/obj/structure/tubes, +/turf/open/floor/pod/dark{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"i" = ( +/obj/structure/sign/mining/survival{ + dir = 8; + icon_state = "survival"; + pixel_x = -32; + tag = "icon-survival (WEST)" + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"j" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"k" = ( +/obj/machinery/sleeper/survival_pod, +/turf/open/floor/pod/dark{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"l" = ( +/obj/item/weapon/pickaxe, +/obj/effect/decal/cleanable/blood, +/turf/open/floor/pod/dark{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"m" = ( +/obj/structure/bed/pod, +/obj/item/weapon/bedsheet/black, +/obj/structure/tubes, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/pod/dark{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"n" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"o" = ( +/obj/effect/decal/cleanable/blood, +/mob/living/simple_animal/hostile/asteroid/goliath/beast{ + health = 0 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"p" = ( +/obj/structure/table/survival_pod, +/obj/item/weapon/kitchen/knife/combat/survival, +/turf/open/floor/pod/dark{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"q" = ( +/obj/effect/mob_spawn/human/miner/explorer{ + brute_damage = 150; + oxy_damage = 50 + }, +/obj/effect/decal/cleanable/blood, +/obj/effect/decal/cleanable/blood/drip, +/obj/effect/decal/cleanable/blood/footprints{ + tag = "icon-blood1 (NORTH)"; + icon_state = "blood1"; + dir = 1 + }, +/turf/open/floor/pod/dark{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"r" = ( +/obj/structure/tubes, +/obj/item/weapon/crowbar, +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/pod/dark{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"s" = ( +/obj/effect/decal/cleanable/blood/footprints{ + icon_state = "blood1" + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"t" = ( +/obj/effect/decal/cleanable/blood/footprints{ + tag = "icon-blood1 (NORTH)"; + icon_state = "blood1"; + dir = 1 + }, +/obj/machinery/door/airlock/survival_pod, +/turf/open/floor/pod/dark{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"u" = ( +/obj/effect/decal/cleanable/blood/footprints{ + tag = "icon-blood1 (WEST)"; + icon_state = "blood1"; + dir = 8 + }, +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"v" = ( +/obj/effect/decal/cleanable/blood/footprints{ + tag = "icon-blood1 (WEST)"; + icon_state = "blood1"; + dir = 8 + }, +/obj/effect/decal/cleanable/blood/footprints{ + icon_state = "blood1" + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"w" = ( +/obj/structure/sign/mining/survival{ + pixel_y = 32 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"x" = ( +/obj/effect/decal/cleanable/blood/drip, +/obj/effect/decal/cleanable/blood/footprints{ + tag = "icon-blood1 (NORTH)"; + icon_state = "blood1"; + dir = 1 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"y" = ( +/obj/structure/sign/mining{ + pixel_y = 32 + }, +/obj/effect/decal/cleanable/blood/footprints{ + tag = "icon-blood1 (WEST)"; + icon_state = "blood1"; + dir = 8 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"z" = ( +/obj/effect/decal/cleanable/blood/footprints{ + tag = "icon-blood1 (WEST)"; + icon_state = "blood1"; + dir = 8 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"A" = ( +/obj/effect/decal/cleanable/blood/footprints{ + icon_state = "blood1" + }, +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) + +(1,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +"} +(2,1,1) = {" +a +a +a +a +b +b +b +b +b +a +a +a +"} +(3,1,1) = {" +a +a +a +b +b +e +b +e +b +b +a +a +"} +(4,1,1) = {" +a +a +a +b +d +d +d +d +d +b +a +a +"} +(5,1,1) = {" +a +a +b +c +d +f +k +p +d +w +b +b +"} +(6,1,1) = {" +a +a +b +b +d +g +l +q +t +x +b +b +"} +(7,1,1) = {" +a +b +b +c +d +h +m +r +d +y +b +b +"} +(8,1,1) = {" +a +a +b +b +d +d +d +d +d +z +j +j +"} +(9,1,1) = {" +a +a +a +b +b +i +b +i +u +A +b +b +"} +(10,1,1) = {" +a +a +a +b +b +j +n +s +v +a +a +a +"} +(11,1,1) = {" +a +a +a +a +a +a +o +j +b +a +a +a +"} +(12,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +"} diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_tomb.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_tomb.dmm new file mode 100644 index 00000000000..dc5f71c3e89 --- /dev/null +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_tomb.dmm @@ -0,0 +1,877 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"b" = ( +/turf/closed/mineral/volcanic/lava_land_surface, +/area/lavaland/underground) +"c" = ( +/turf/template_noop, +/area/lavaland/underground) +"d" = ( +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/underground) +"e" = ( +/obj/effect/decal/remains/human, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/underground) +"f" = ( +/turf/open/floor/plating/lava/smooth/lava_land_surface, +/area/lavaland/underground) +"g" = ( +/turf/closed/indestructible/riveted{ + icon = 'icons/turf/walls/iron_wall.dmi'; + icon_state = "iron"; + name = "dense wall" + }, +/area/ruin/powered) +"h" = ( +/obj/structure/table, +/turf/open/floor/plasteel/black{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"i" = ( +/turf/open/floor/plasteel/black{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"j" = ( +/mob/living/simple_animal/hostile/skeleton, +/turf/open/floor/plasteel/black{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"k" = ( +/obj/structure/bodycontainer/morgue{ + desc = "An oddly modernized tomb, at least compared to where it currently is."; + name = "tomb" + }, +/obj/effect/mob_spawn/human/skeleton, +/turf/open/floor/plasteel/black{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"l" = ( +/obj/structure/bodycontainer/morgue{ + desc = "An oddly modernized tomb, at least compared to where it currently is."; + name = "tomb" + }, +/obj/effect/mob_spawn/human/skeleton, +/obj/item/weapon/shovel/cursed, +/turf/open/floor/plasteel/black{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"m" = ( +/obj/item/weapon/grown/bananapeel, +/obj/structure/mineral_door/transparent/diamond, +/turf/open/floor/vault{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"n" = ( +/obj/item/weapon/ore/diamond, +/turf/open/floor/plasteel/black{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"o" = ( +/turf/open/floor/vault{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"p" = ( +/obj/item/weapon/ore/gold, +/turf/open/floor/plasteel/black{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"q" = ( +/turf/open/floor/plating/lava/smooth/lava_land_surface, +/area/ruin/powered) +"r" = ( +/obj/structure/bodycontainer/morgue{ + desc = "An oddly modernized tomb, at least compared to where it currently is."; + name = "tomb" + }, +/obj/effect/mob_spawn/human/skeleton{ + helmet = /obj/item/clothing/head/helmet/stahlhelm; + name = "german remains"; + uniform = /obj/item/clothing/under/wwii + }, +/turf/open/floor/plasteel/black{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"s" = ( +/obj/structure/table, +/obj/item/weapon/tome, +/turf/open/floor/plasteel/black{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"t" = ( +/obj/item/weapon/grown/bananapeel, +/obj/structure/mineral_door/silver, +/turf/open/floor/vault{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"u" = ( +/obj/item/weapon/ore/bananium, +/turf/open/floor/plasteel/black{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"v" = ( +/obj/item/weapon/grown/bananapeel, +/obj/structure/mineral_door/gold, +/turf/open/floor/vault{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"w" = ( +/obj/structure/table/optable/abductor{ + desc = "A strange, alien-like table for cutting up things, like people."; + name = "strange alien slab" + }, +/obj/effect/gibspawner/human, +/obj/effect/mob_spawn/human/skeleton, +/obj/item/weapon/veilrender/honkrender, +/obj/item/clothing/mask/gas/clown_hat, +/turf/open/floor/vault{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"x" = ( +/obj/structure/table, +/obj/item/weapon/spellbook/oneuse/charge, +/turf/open/floor/plasteel/black{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"y" = ( +/obj/structure/bodycontainer/morgue{ + desc = "An oddly modernized tomb, at least compared to where it currently is."; + name = "tomb" + }, +/obj/effect/mob_spawn/human/skeleton{ + helmet = /obj/item/clothing/head/ushanka; + name = "russian remains"; + uniform = /obj/item/clothing/under/soviet + }, +/turf/open/floor/plasteel/black{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"z" = ( +/obj/item/weapon/ore/uranium, +/turf/open/floor/plasteel/black{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"A" = ( +/obj/item/weapon/ore/plasma, +/turf/open/floor/plasteel/black{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"B" = ( +/obj/item/weapon/grown/bananapeel, +/obj/structure/mineral_door/iron, +/turf/open/floor/vault{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"C" = ( +/obj/structure/table, +/obj/item/weapon/twohanded/spear, +/obj/item/weapon/shield/riot/buckler, +/turf/open/floor/plasteel/black{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"D" = ( +/obj/item/weapon/grown/bananapeel, +/obj/structure/mineral_door/iron, +/turf/open/floor/plasteel/black{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) + +(1,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +b +b +b +a +a +a +a +a +a +a +a +a +a +a +"} +(2,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +b +d +d +e +d +b +b +d +a +a +a +a +a +a +"} +(3,1,1) = {" +a +a +a +a +a +a +a +a +d +b +b +b +e +b +b +b +b +b +e +d +d +a +a +a +a +"} +(4,1,1) = {" +a +a +a +b +a +e +d +d +b +g +g +g +g +g +g +g +g +g +b +f +f +d +a +a +a +"} +(5,1,1) = {" +a +a +a +b +b +d +d +e +b +g +k +h +j +k +j +x +y +g +b +b +f +d +a +a +a +"} +(6,1,1) = {" +a +a +b +b +b +d +f +b +g +g +j +i +i +i +i +i +j +g +b +f +f +e +d +a +a +"} +(7,1,1) = {" +a +a +b +b +b +e +b +g +g +g +g +g +t +g +t +g +g +g +g +e +b +b +b +a +a +"} +(8,1,1) = {" +a +b +b +b +g +g +g +g +g +n +o +o +o +i +o +o +o +z +g +g +b +b +b +b +b +"} +(9,1,1) = {" +a +b +b +b +g +h +i +j +g +o +n +o +o +i +o +o +z +o +g +g +g +g +g +b +b +"} +(10,1,1) = {" +a +a +b +b +g +i +k +i +g +o +i +q +q +i +q +q +i +o +g +C +C +C +g +b +b +"} +(11,1,1) = {" +a +a +c +d +g +i +i +i +g +o +q +i +q +i +q +i +q +o +g +i +i +i +g +b +b +"} +(12,1,1) = {" +a +a +b +e +g +j +i +i +m +o +q +q +o +u +o +q +q +o +B +i +j +i +D +b +b +"} +(13,1,1) = {" +a +a +b +b +g +i +l +i +g +i +i +i +u +w +u +i +i +i +g +i +i +i +g +d +d +"} +(14,1,1) = {" +a +a +b +b +g +j +i +i +m +o +q +q +o +u +o +q +q +o +B +i +j +i +D +b +b +"} +(15,1,1) = {" +a +a +b +b +g +i +i +i +g +o +q +i +q +i +q +i +q +o +g +i +i +i +g +b +b +"} +(16,1,1) = {" +a +a +b +e +g +i +k +i +g +o +i +q +q +i +q +q +i +o +g +C +C +C +g +b +b +"} +(17,1,1) = {" +a +a +b +d +g +h +i +j +g +o +p +o +o +i +o +o +A +o +g +g +g +g +g +b +b +"} +(18,1,1) = {" +a +a +b +f +g +g +g +g +g +p +o +o +o +i +o +o +o +A +g +g +b +e +b +b +b +"} +(19,1,1) = {" +a +a +b +d +b +b +d +g +g +g +g +g +v +g +v +g +g +g +g +b +e +d +d +d +d +"} +(20,1,1) = {" +a +a +a +a +b +b +e +d +g +g +r +s +i +k +i +h +k +g +b +b +d +f +d +a +a +"} +(21,1,1) = {" +a +a +a +a +a +b +b +e +d +g +j +i +j +i +j +i +j +g +b +e +d +a +a +a +a +"} +(22,1,1) = {" +a +a +a +a +a +b +b +b +d +g +g +g +g +g +g +g +g +g +b +b +b +a +a +a +a +"} +(23,1,1) = {" +a +a +a +a +a +d +b +b +f +b +b +b +b +b +e +f +b +b +b +b +b +a +a +a +a +"} +(24,1,1) = {" +a +a +a +a +a +a +a +a +a +b +b +d +e +b +b +d +d +b +b +a +a +a +a +a +a +"} +(25,1,1) = {" +a +a +a +a +a +a +a +a +a +a +b +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_wwiioutpost.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_wwiioutpost.dmm new file mode 100644 index 00000000000..5e745c1c7d8 --- /dev/null +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_wwiioutpost.dmm @@ -0,0 +1,2489 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aa" = ( +/turf/template_noop, +/area/template_noop) +"ab" = ( +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"ac" = ( +/obj/item/stack/rods, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"ad" = ( +/obj/item/stack/sheet/metal, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"ae" = ( +/turf/open/floor/plating/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors) +"af" = ( +/obj/item/stack/rods, +/turf/open/floor/plating{ + baseturf = /turf/open/chasm/straight_down/lava_land_surface + }, +/area/lavaland/surface/outdoors) +"ag" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/chasm/straight_down/lava_land_surface + }, +/area/lavaland/surface/outdoors) +"ah" = ( +/obj/effect/mob_spawn/human/skeleton{ + helmet = /obj/item/clothing/head/ushanka; + name = "russian remains"; + uniform = /obj/item/clothing/under/soviet + }, +/obj/item/weapon/gun/projectile/revolver/nagant, +/obj/effect/decal/cleanable/blood/old, +/obj/item/ammo_casing/a357, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"ai" = ( +/obj/item/weapon/c4, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) +"aj" = ( +/turf/closed/wall/r_wall{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"ak" = ( +/obj/item/stack/sheet/plasteel, +/obj/item/ammo_casing/a357, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; + icon_plating = "platingdmg1"; + icon_state = "platingdmg1" + }, +/area/ruin/powered) +"al" = ( +/obj/item/stack/sheet/plasteel, +/obj/item/stack/rods, +/obj/item/ammo_casing/a357, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; + icon_plating = "platingdmg1"; + icon_state = "platingdmg1" + }, +/area/ruin/powered) +"am" = ( +/obj/item/stack/rods, +/obj/item/ammo_casing/a357, +/obj/item/ammo_casing/mm556x45, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; + icon_plating = "platingdmg1"; + icon_state = "platingdmg1" + }, +/area/ruin/powered) +"an" = ( +/obj/effect/mob_spawn/human/skeleton{ + helmet = /obj/item/clothing/head/ushanka; + name = "russian remains"; + uniform = /obj/item/clothing/under/soviet + }, +/obj/item/stack/sheet/plasteel, +/obj/item/weapon/gun/projectile/shotgun/boltaction, +/obj/effect/decal/cleanable/blood/old, +/obj/item/ammo_casing/mm556x45, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; + icon_plating = "platingdmg1"; + icon_state = "platingdmg1" + }, +/area/ruin/powered) +"ao" = ( +/obj/structure/filingcabinet, +/turf/open/floor/plasteel/black{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"ap" = ( +/obj/structure/window{ + icon_state = "rwindow"; + dir = 4 + }, +/turf/open/floor/plasteel/black{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"aq" = ( +/obj/structure/table, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/black{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"ar" = ( +/obj/effect/mob_spawn/human/skeleton{ + helmet = /obj/item/clothing/head/helmet/stahlhelm; + name = "german remains"; + uniform = /obj/item/clothing/under/wwii + }, +/obj/item/weapon/gun/projectile/automatic/pistol/APS, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plasteel/black{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"as" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; + icon_plating = "platingdmg1"; + icon_state = "platingdmg1" + }, +/area/ruin/powered) +"at" = ( +/obj/item/ammo_casing/mm556x45, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; + icon_plating = "platingdmg1"; + icon_state = "platingdmg1" + }, +/area/ruin/powered) +"au" = ( +/obj/item/ammo_casing/a357, +/turf/open/floor/plasteel/black{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"av" = ( +/turf/open/floor/plasteel/black{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"aw" = ( +/obj/structure/window{ + icon_state = "rwindow"; + dir = 8 + }, +/turf/open/floor/plasteel/black{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"ax" = ( +/obj/structure/window{ + icon_state = "rwindow"; + dir = 4 + }, +/obj/item/weapon/shard, +/turf/open/floor/plasteel/black{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"ay" = ( +/obj/effect/gibspawner/human, +/turf/open/floor/plasteel/black{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"az" = ( +/obj/machinery/constructable_frame/machine_frame{ + desc = "A specialized hypersleep chamber meant to keep its occupent in suspended animation for long periods of time. The initials 'A.D' are marked on a specialized plaque. The hypersleeper is empty. "; + dir = 2; + icon = 'icons/obj/Cryogenic2.dmi'; + icon_state = "sleeper-o"; + name = "broken hypersleep chamber"; + pixel_y = 3 + }, +/turf/open/floor/plasteel/black{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"aA" = ( +/obj/effect/mob_spawn/human/skeleton{ + helmet = /obj/item/clothing/head/ushanka; + name = "russian remains"; + uniform = /obj/item/clothing/under/soviet + }, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plasteel/black{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"aB" = ( +/obj/structure/filingcabinet, +/obj/item/weapon/paper/pamphlet{ + icon = 'icons/obj/items.dmi'; + icon_state = "blueprints"; + info = "A strange looking set of blueprints with the actual schematics for whatever was once on it ripped out in what appears to be in a haste. The top of what remains of the blueprints spells out 'aus der Asche'."; + name = "ripped blueprints" + }, +/turf/open/floor/plasteel/black{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"aC" = ( +/obj/item/weapon/shard, +/turf/open/floor/plasteel/black{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"aD" = ( +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plasteel/black{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"aE" = ( +/obj/effect/mob_spawn/human/skeleton{ + helmet = /obj/item/clothing/head/helmet/stahlhelm; + name = "german remains"; + uniform = /obj/item/clothing/under/wwii + }, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plasteel/black{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"aF" = ( +/obj/effect/mob_spawn/human/skeleton{ + helmet = /obj/item/clothing/head/helmet/stahlhelm; + name = "german remains"; + uniform = /obj/item/clothing/under/wwii + }, +/obj/structure/table_frame, +/obj/effect/decal/cleanable/blood/old, +/obj/machinery/light, +/turf/open/floor/plasteel/black{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"aG" = ( +/obj/item/stack/sheet/metal, +/turf/open/floor/plasteel/black{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"aH" = ( +/obj/structure/table, +/obj/machinery/light, +/turf/open/floor/plasteel/black{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"aI" = ( +/obj/machinery/door/poddoor/preopen{ + id = "lavagerman" + }, +/turf/open/floor/plasteel/black{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"aJ" = ( +/turf/open/floor/plasteel/stairs{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"aK" = ( +/mob/living/simple_animal/hostile/wwii/bomber, +/turf/open/floor/plasteel/black{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"aL" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"aM" = ( +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"aN" = ( +/obj/item/ammo_casing/c9mm, +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"aO" = ( +/obj/machinery/light{ + dir = 4; + icon_state = "tube1" + }, +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"aP" = ( +/obj/structure/table, +/obj/item/device/flashlight/lamp, +/turf/open/floor/plasteel/black{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"aQ" = ( +/mob/living/simple_animal/hostile/wwii/melee, +/turf/open/floor/plasteel/black{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"aR" = ( +/obj/effect/spawner/lootdrop/crate_spawner, +/turf/open/floor/plasteel/black{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"aS" = ( +/obj/effect/mob_spawn/human/skeleton{ + helmet = /obj/item/clothing/head/ushanka; + name = "russian remains"; + uniform = /obj/item/clothing/under/soviet + }, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"aT" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/item/ammo_casing/c9mm, +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"aU" = ( +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"aV" = ( +/obj/effect/gibspawner/human, +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"aW" = ( +/obj/structure/closet/crate, +/obj/item/weapon/dnainjector/dwarf, +/turf/open/floor/plasteel/black{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"aX" = ( +/obj/structure/table, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/item/weapon/storage/firstaid/regular{ + empty = 1; + name = "first-aid kit" + }, +/turf/open/floor/plasteel/black{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"aY" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/plasteel/black{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"aZ" = ( +/obj/structure/closet/crate, +/obj/item/weapon/dnainjector/timed/hulk, +/obj/item/weapon/dnainjector/wackymut, +/turf/open/floor/plasteel/black{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"ba" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel/black{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bb" = ( +/obj/structure/table, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plasteel/black{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bc" = ( +/obj/structure/table, +/obj/item/weapon/paper_bin, +/obj/item/weapon/pen, +/turf/open/floor/plasteel/black{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bd" = ( +/obj/item/weapon/c4, +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"be" = ( +/obj/item/stack/sheet/plasteel, +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bf" = ( +/obj/effect/mob_spawn/human/skeleton{ + helmet = /obj/item/clothing/head/helmet/stahlhelm; + name = "german remains"; + uniform = /obj/item/clothing/under/wwii + }, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bg" = ( +/obj/structure/closet/crate, +/turf/open/floor/plasteel/black{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bh" = ( +/obj/structure/table, +/obj/item/weapon/paper_bin, +/obj/item/weapon/pen/edagger, +/obj/item/weapon/storage/firstaid/regular, +/turf/open/floor/plasteel/black{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bi" = ( +/turf/open/floor/plasteel/neutral{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bj" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/plasteel/neutral{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bk" = ( +/turf/closed/wall{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bl" = ( +/obj/machinery/door/poddoor{ + id = "lavagerman" + }, +/turf/open/floor/plasteel{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bm" = ( +/obj/item/stack/rods, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; + icon_plating = "platingdmg1"; + icon_state = "platingdmg1" + }, +/area/ruin/powered) +"bn" = ( +/obj/item/ammo_casing/c9mm, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/turf/open/floor/plasteel/neutral{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bo" = ( +/obj/item/ammo_casing/c9mm, +/turf/open/floor/plasteel/neutral{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bp" = ( +/obj/machinery/door/poddoor{ + id = "lavagerman1"; + name = "secure storage a" + }, +/turf/open/floor/plasteel/neutral{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bq" = ( +/obj/item/stack/sheet/plasteel, +/turf/open/floor/plasteel/stairs{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"br" = ( +/obj/item/stack/sheet/metal, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface; + icon_plating = "platingdmg1"; + icon_state = "platingdmg1" + }, +/area/ruin/powered) +"bs" = ( +/obj/machinery/door/poddoor{ + id = "lavagerman2"; + name = "secure storage b" + }, +/turf/open/floor/plasteel/neutral{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bt" = ( +/obj/machinery/light{ + dir = 4; + icon_state = "tube1" + }, +/turf/open/floor/plasteel/neutral{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bu" = ( +/obj/effect/mob_spawn/human/skeleton{ + helmet = /obj/item/clothing/head/helmet/stahlhelm; + name = "german remains"; + uniform = /obj/item/clothing/under/wwii + }, +/obj/item/weapon/gun/projectile/automatic/pistol/APS, +/obj/effect/decal/cleanable/blood/old, +/obj/item/ammo_casing/c9mm, +/obj/item/ammo_casing/c9mm, +/turf/open/floor/plasteel/neutral{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bv" = ( +/obj/effect/gibspawner/human, +/turf/open/floor/plasteel/neutral{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bw" = ( +/obj/machinery/button/door{ + id = "lavagerman1"; + pixel_y = 32 + }, +/turf/open/floor/plasteel/neutral{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bx" = ( +/obj/machinery/door/airlock/highsecurity, +/turf/open/floor/plasteel/neutral{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"by" = ( +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plasteel/neutral{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bz" = ( +/obj/machinery/button/door{ + id = "lavagerman2"; + pixel_y = 32 + }, +/turf/open/floor/plasteel/neutral{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bA" = ( +/obj/structure/table, +/turf/open/floor/plasteel/neutral{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bB" = ( +/obj/effect/mob_spawn/human/skeleton{ + helmet = /obj/item/clothing/head/ushanka; + name = "russian remains"; + uniform = /obj/item/clothing/under/soviet + }, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plasteel/neutral{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bC" = ( +/obj/item/ammo_casing/a357, +/turf/open/floor/plasteel/neutral{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bD" = ( +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/turf/open/floor/plasteel/neutral{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bE" = ( +/obj/item/stack/sheet/metal, +/turf/open/floor/plasteel/neutral{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bF" = ( +/obj/effect/mob_spawn/human/skeleton{ + helmet = /obj/item/clothing/head/helmet/stahlhelm; + name = "german remains"; + uniform = /obj/item/clothing/under/wwii + }, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plasteel/neutral{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bG" = ( +/obj/structure/table_frame, +/obj/item/stack/sheet/metal, +/turf/open/floor/plasteel/neutral{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bH" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/item/ammo_casing/c9mm, +/turf/open/floor/plasteel/neutral{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bI" = ( +/obj/structure/table, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1" + }, +/turf/open/floor/plasteel/neutral{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bJ" = ( +/obj/effect/mob_spawn/human/skeleton{ + helmet = /obj/item/clothing/head/ushanka; + name = "russian remains"; + uniform = /obj/item/clothing/under/soviet + }, +/obj/item/weapon/gun/projectile/shotgun/boltaction, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plasteel/neutral{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bK" = ( +/obj/structure/table, +/obj/machinery/light{ + icon_state = "tube1"; + dir = 8 + }, +/turf/open/floor/plasteel/neutral{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bL" = ( +/obj/effect/mob_spawn/human/skeleton{ + helmet = /obj/item/clothing/head/helmet/stahlhelm; + name = "german remains"; + uniform = /obj/item/clothing/under/wwii + }, +/obj/item/weapon/gun/projectile/automatic/pistol/APS, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plasteel/neutral{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bM" = ( +/obj/machinery/door/poddoor{ + id = "lavagerman" + }, +/turf/open/floor/plasteel/neutral{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bN" = ( +/obj/machinery/door/airlock/glass_external, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bO" = ( +/obj/structure/window{ + icon_state = "rwindow"; + dir = 8 + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bP" = ( +/obj/machinery/porta_turret/stationary, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bQ" = ( +/obj/structure/window{ + icon_state = "rwindow"; + dir = 4 + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bR" = ( +/obj/structure/sign/xeno_warning_mining{ + pixel_y = -32 + }, +/obj/structure/closet/emcloset, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bS" = ( +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bT" = ( +/obj/structure/sign/xeno_warning_mining{ + pixel_y = -32 + }, +/obj/item/weapon/rcd/loaded, +/obj/structure/closet/emcloset, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bU" = ( +/obj/structure/window{ + icon_state = "rwindow"; + dir = 8 + }, +/obj/structure/window{ + tag = "icon-rwindow"; + icon_state = "rwindow"; + dir = 2 + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bV" = ( +/obj/structure/window{ + tag = "icon-rwindow"; + icon_state = "rwindow"; + dir = 2 + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) +"bW" = ( +/obj/structure/window{ + icon_state = "rwindow"; + dir = 4 + }, +/obj/structure/window{ + tag = "icon-rwindow"; + icon_state = "rwindow"; + dir = 2 + }, +/turf/open/floor/plating{ + baseturf = /turf/open/floor/plating/lava/smooth/lava_land_surface + }, +/area/ruin/powered) + +(1,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +aa +ae +ae +ae +ae +ae +ab +ab +ab +ab +ab +ab +aa +aa +aa +aa +aa +aa +aa +"} +(2,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ab +aa +aa +aa +aa +aa +aa +aa +"} +(3,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +aa +ab +ab +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +aa +aa +aa +aa +aa +aa +aa +"} +(4,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ab +ab +ab +ae +ae +ae +ae +ae +ae +ab +ab +aa +aa +aa +aa +aa +"} +(5,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ae +ae +ae +ae +ae +ae +ae +ae +ae +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ae +ae +ae +ab +ab +aa +aa +aa +aa +aa +"} +(6,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +ab +ab +ab +ae +ae +ae +ae +ae +ab +ab +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ae +ae +ae +ab +ab +aa +aa +aa +aa +aa +"} +(7,1,1) = {" +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ae +ae +ae +ae +ae +ab +ab +ab +ab +ab +aj +bi +bn +bi +bA +bA +bA +bi +aj +ab +ae +ae +ae +ab +ab +aa +aa +aa +aa +aa +"} +(8,1,1) = {" +aa +aa +aa +aa +aa +ab +ab +ae +ae +ae +ae +ae +ae +ae +ae +ab +ab +ab +ab +ab +aj +bi +bo +bu +bi +bi +bi +bi +aj +ab +ae +ae +ae +ab +ab +aa +aa +aa +aa +aa +"} +(9,1,1) = {" +aa +aa +aa +aa +aa +aa +ab +ae +ae +ae +ae +ae +ab +ab +ab +ab +ab +ab +ab +ab +aj +bj +bi +bv +bo +bi +bi +bi +aj +ab +ae +ae +ae +ae +ab +aa +aa +aa +aa +aa +"} +(10,1,1) = {" +aa +aa +aa +aa +aa +ab +ab +ae +ae +ae +ae +ae +ab +ab +ab +aj +aj +aj +aj +aj +aj +bk +bk +bw +bi +bi +bF +bi +aj +ab +ae +ae +ae +ae +ab +ab +aa +aa +aa +aa +"} +(11,1,1) = {" +aa +aa +aa +aa +ab +ae +ae +ae +ae +ae +ae +ae +ab +ab +ab +aj +ao +av +aP +aX +bc +av +bp +bi +bA +bA +bI +bi +aj +ab +ae +ae +ae +ae +ab +ab +aa +aa +aa +aa +"} +(12,1,1) = {" +aa +aa +aa +aa +ab +ae +ae +ae +ae +ae +ae +ae +ab +ab +ab +aj +ao +av +aQ +aY +av +av +bk +as +bk +bk +bk +bM +aj +ab +ab +ae +ae +ae +ab +ab +aa +aa +aa +aa +"} +(13,1,1) = {" +aa +aa +aa +aa +ab +ae +ae +ae +ab +ab +ab +ab +ab +ab +ab +aj +ao +aK +aR +aZ +aR +aR +bk +bi +bi +bD +bi +bi +aj +ab +ab +ae +ae +ae +ab +ab +aa +aa +aa +aa +"} +(14,1,1) = {" +aa +aa +ab +ab +ab +ae +ae +ae +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +bk +bi +bB +bC +bi +bi +aj +bO +bU +ae +ae +ae +ab +ab +aa +aa +aa +aa +"} +(15,1,1) = {" +aa +aa +ab +ab +ab +ae +ae +ae +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +bi +bC +bi +bF +bi +aj +bP +bV +ae +ae +ae +ab +aa +aa +aa +aa +aa +"} +(16,1,1) = {" +aa +aa +aa +ab +ab +ae +ae +ae +ab +aj +aj +ao +ao +aB +ao +aj +aj +aL +aM +aM +aL +aj +aj +bi +bi +bi +bi +bi +aj +bQ +bW +ae +ae +ae +ab +ab +aa +aa +aa +aa +"} +(17,1,1) = {" +aa +aa +aa +ab +ae +ae +ae +ae +ab +aj +aj +ap +ax +av +ap +aj +aj +aM +aM +aM +aM +aj +aj +bx +bk +bk +bk +bk +aj +ab +ab +ae +ae +ae +ab +ab +aa +aa +aa +aa +"} +(18,1,1) = {" +aa +aa +aa +ab +ae +ae +ae +ae +ab +aj +aj +aq +av +aC +aF +aj +aj +aM +aM +aS +aM +aj +aj +bi +bD +bi +bi +bi +aj +ab +ab +ae +ae +ae +ab +ab +aa +aa +aa +aa +"} +(19,1,1) = {" +aa +aa +aa +ab +ae +ae +ae +ab +ab +aj +aj +ar +ay +av +aG +aj +aj +aM +aS +aN +aM +aj +aj +bi +bi +bi +by +bi +bk +aj +aj +ae +ae +ae +ab +ab +aa +aa +aa +aa +"} +(20,1,1) = {" +aa +aa +ac +ab +ae +ae +ae +ab +ad +ak +aj +as +av +au +aD +aI +aJ +aM +aM +aM +bd +bl +bq +by +bB +bi +bi +bi +bk +bR +aj +ae +ae +ae +ab +ab +aa +aa +aa +aa +"} +(21,1,1) = {" +aa +aa +ad +ab +af +ae +ag +ab +ah +al +am +at +az +aD +av +aj +aj +aM +aT +aM +be +bm +br +bi +bi +bi +bi +bi +bN +bS +bN +ae +ae +ab +ab +aa +aa +aa +aa +aa +"} +(22,1,1) = {" +aa +aa +aa +ab +ae +ae +ae +ab +ai +aj +an +au +aA +av +av +aI +aJ +aM +aU +aM +aN +bl +bq +bi +bi +bi +bJ +bi +bk +bT +aj +ae +ae +ab +ab +aa +aa +aa +aa +aa +"} +(23,1,1) = {" +aa +aa +aa +ad +ae +ae +ae +ab +ab +aj +aj +av +av +av +av +aj +aj +aM +aM +aM +bf +aj +aj +bi +by +bi +bi +bi +bk +aj +aj +ae +ae +ab +ab +aa +aa +aa +aa +aa +"} +(24,1,1) = {" +aa +aa +aa +ab +ae +ae +ae +ab +ab +aj +aj +aq +av +aE +aH +aj +aj +aN +aM +aM +aM +aj +aj +bi +bt +bi +bi +bi +aj +ab +ab +ae +ae +ab +ab +aa +aa +aa +aa +aa +"} +(25,1,1) = {" +aa +aa +aa +ab +ae +ae +ae +ae +ab +aj +aj +aw +aw +aw +aw +aj +aj +aM +aV +aM +aM +aj +aj +bx +bk +bk +bk +bk +aj +ab +ab +ae +ae +ae +ab +aa +aa +aa +aa +aa +"} +(26,1,1) = {" +aa +aa +ab +ab +ae +ae +ae +ae +ab +aj +aj +ao +ao +ao +ao +aj +aj +aO +aM +aM +aO +aj +aj +bi +bi +bi +bi +bi +aj +bO +bU +ae +ae +ae +ab +aa +aa +aa +aa +aa +"} +(27,1,1) = {" +aa +aa +ab +ab +ae +ae +ae +ae +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +bi +bi +bi +bi +bi +aj +bP +bV +ae +ae +ae +ab +aa +aa +aa +aa +aa +"} +(28,1,1) = {" +aa +aa +ab +ab +ae +ae +ae +ae +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +aj +bk +bi +bB +bi +by +bi +aj +bQ +bW +ae +ae +ae +aa +aa +aa +aa +aa +aa +"} +(29,1,1) = {" +aa +ab +ab +ab +ae +ae +ae +ae +ab +ab +ab +ab +ab +ab +ab +aj +ao +aK +aW +aR +bg +aR +bk +bi +bE +bi +bt +bi +aj +ab +ae +ae +ae +ab +ab +aa +aa +aa +aa +aa +"} +(30,1,1) = {" +aa +ab +ab +ab +ae +ae +ae +ae +ab +ab +ab +ab +ab +ab +ab +aj +ao +av +aQ +ba +av +av +bk +bk +bk +br +bk +bM +aj +ab +ae +ae +ae +ae +ab +ab +aa +aa +aa +aa +"} +(31,1,1) = {" +aa +ab +ab +ab +ae +ae +ae +ae +ab +ab +ab +ab +ab +ab +ab +aj +ao +av +aP +bb +bh +av +bs +bi +bA +bG +bK +bi +aj +ab +ab +ae +ae +ae +ab +ab +aa +aa +aa +aa +"} +(32,1,1) = {" +aa +ab +ab +ab +ae +ae +ae +ae +ae +ae +ae +ae +ab +ab +ab +aj +aj +aj +aj +aj +aj +bk +bk +bz +bi +bi +bi +bi +aj +ab +ab +ae +ae +ae +ab +ab +aa +aa +aa +aa +"} +(33,1,1) = {" +aa +aa +aa +aa +ab +ab +ae +ae +ae +ae +ae +ae +ab +ab +ab +ab +ab +ab +ab +ab +aj +bj +bi +bi +bF +bo +bL +bo +aj +ab +ab +ae +ae +ae +ab +ab +aa +aa +aa +aa +"} +(34,1,1) = {" +aa +aa +aa +aa +ab +ab +ae +ae +ae +ae +ae +ae +ab +ab +ab +ab +ab +ab +ab +ab +aj +bi +bi +bi +bi +bH +bi +bo +aj +ab +ab +ae +ae +ae +ab +ab +aa +aa +aa +aa +"} +(35,1,1) = {" +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ae +ae +ae +ae +ae +ae +ae +ab +ab +ab +aj +bi +bt +bi +bA +bA +bA +bi +aj +ab +ab +ae +ae +ae +ab +ab +aa +aa +aa +aa +"} +(36,1,1) = {" +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ae +ae +ae +ae +ae +ae +ae +ab +ab +ab +aj +aj +aj +aj +aj +aj +aj +aj +aj +ab +ab +ae +ae +ab +ab +ab +aa +aa +aa +aa +"} +(37,1,1) = {" +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ae +ae +ae +ae +ae +ae +ae +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ab +ae +ae +ab +ab +aa +aa +aa +aa +aa +"} +(38,1,1) = {" +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ab +ab +ab +ab +ab +ab +ae +ae +ae +ae +ae +ab +ab +aa +aa +aa +aa +aa +"} +(39,1,1) = {" +aa +aa +aa +aa +aa +aa +ab +ab +ab +ab +ab +ab +ab +ab +ab +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ab +ab +ab +aa +aa +aa +aa +aa +"} +(40,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +ab +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ab +ab +aa +aa +aa +aa +aa +aa +"} diff --git a/_maps/birdstation.dm b/_maps/birdstation.dm index e35fa7106cf..b1f4350ed1e 100644 --- a/_maps/birdstation.dm +++ b/_maps/birdstation.dm @@ -31,7 +31,6 @@ A small map intended for lowpop(40 players and less). #if !defined(MAP_OVERRIDE_FILES) #define MAP_OVERRIDE_FILES #include "map_files\BirdStation\telecomms.dm" - #include "map_files\BirdStation\misc.dm" #include "map_files\BirdStation\job\job_changes.dm" #include "map_files\BirdStation\job\removed_jobs.dm" #endif @@ -40,4 +39,4 @@ A small map intended for lowpop(40 players and less). #warn a map has already been included, ignoring birdstation. -#endif \ No newline at end of file +#endif diff --git a/_maps/map_files/BirdStation/BirdStation.dmm b/_maps/map_files/BirdStation/BirdStation.dmm index b08b7ff7e43..23fe48b8871 100644 --- a/_maps/map_files/BirdStation/BirdStation.dmm +++ b/_maps/map_files/BirdStation/BirdStation.dmm @@ -1469,7 +1469,7 @@ "aCm" = (/obj/machinery/conveyor{dir = 8; id = "garbage"},/obj/structure/disposaloutlet{dir = 4},/obj/structure/disposalpipe/trunk,/turf/open/floor/plating,/area/maintenance/disposal) "aCn" = (/obj/machinery/conveyor{dir = 8; id = "garbage"},/obj/machinery/light,/turf/open/floor/plating,/area/maintenance/disposal) "aCo" = (/obj/machinery/conveyor{dir = 8; id = "garbage"},/obj/machinery/door/poddoor{id = "crusherdoor"; layer = 3.1; name = "crusher safety blast door"},/turf/open/floor/plating,/area/maintenance/disposal) -"aCp" = (/obj/machinery/conveyor{dir = 8; id = "garbage"},/obj/machinery/recycler/birdstation{emagged = 1; name = "dangerous old crusher"},/turf/open/floor/plating,/area/maintenance/disposal) +"aCp" = (/obj/machinery/conveyor{dir = 8; id = "garbage"},/obj/machinery/recycler/deathtrap,/turf/open/floor/plating,/area/maintenance/disposal) "aCq" = (/obj/machinery/conveyor{dir = 8; id = "garbage"},/turf/open/floor/plating,/area/maintenance/disposal) "aCr" = (/obj/machinery/conveyor{dir = 8; id = "garbage"},/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/disposal/deliveryChute{dir = 8},/turf/open/floor/plating,/area/maintenance/disposal) "aCs" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/closed/wall/r_wall,/area/maintenance/disposal) diff --git a/_maps/map_files/BirdStation/job/job_changes.dm b/_maps/map_files/BirdStation/job/job_changes.dm index 679c212c7ee..cca341cc117 100644 --- a/_maps/map_files/BirdStation/job/job_changes.dm +++ b/_maps/map_files/BirdStation/job/job_changes.dm @@ -6,7 +6,7 @@ supervisors = "the captain and the head of personnel" /datum/outfit/job/New() - box = /obj/item/weapon/storage/box/birdsurv + box = /obj/item/weapon/storage/box/survival/radio /datum/job/assistant // Here so assistant appears on the top of the select job list. @@ -29,7 +29,7 @@ ..() /datum/outfit/job/hos/New() - box = /obj/item/weapon/storage/box/birdsec + box = /obj/item/weapon/storage/box/security/radio /datum/job/officer/New() ..() @@ -39,7 +39,7 @@ minimal_access = list(access_security, access_sec_doors, access_brig, access_armory, access_court, access_maint_tunnels, access_morgue, access_weapons, access_forensics_lockers) /datum/outfit/job/officer/New() - box = /obj/item/weapon/storage/box/birdsec + box = /obj/item/weapon/storage/box/security/radio /datum/job/detective/New() ..() @@ -47,7 +47,7 @@ minimal_access = list(access_security, access_sec_doors, access_brig, access_armory, access_court, access_maint_tunnels, access_morgue, access_weapons, access_forensics_lockers) /datum/outfit/job/detective/New() - box = /obj/item/weapon/storage/box/birdsec + box = /obj/item/weapon/storage/box/security/radio //Medbay @@ -69,7 +69,7 @@ minimal_access = list(access_eva, access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels, access_external_airlocks, access_construction, access_atmospherics, access_tcomsat) /datum/outfit/job/engineer/New() - box = /obj/item/weapon/storage/box/birdeng + box = /obj/item/weapon/storage/box/engineer/radio //Science @@ -93,7 +93,7 @@ minimal_access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station, access_mineral_storeroom) /datum/outfit/job/mining/New() - box = /obj/item/weapon/storage/box/birdeng + box = /obj/item/weapon/storage/box/engineer/radio //Service @@ -123,4 +123,4 @@ /datum/job/clown/New() ..() - supervisors = "nobody but yourself" //Honk \ No newline at end of file + supervisors = "nobody but yourself" //Honk diff --git a/_maps/map_files/BirdStation/misc.dm b/_maps/map_files/BirdStation/misc.dm deleted file mode 100644 index b86c9247888..00000000000 --- a/_maps/map_files/BirdStation/misc.dm +++ /dev/null @@ -1,63 +0,0 @@ - -// modified crusher -// only does 120 brute damage and won't eat the victims items - - -/obj/machinery/recycler/birdstation/eat(mob/living/L) - - L.loc = src.loc - - if(istype(L,/mob/living/silicon)) - playsound(src.loc, 'sound/items/Welder.ogg', 50, 1) - else - playsound(src.loc, 'sound/effects/splat.ogg', 50, 1) - - var/gib = 1 - if(istype(L,/mob/living/carbon)) - gib = 0 - add_blood(L) - - if(!blood && !istype(L,/mob/living/silicon)) - blood = 1 - update_icon() - L.Paralyse(5) - if(gib || emagged == 2) - L.gib() - else if(emagged == 1) - L.adjustBruteLoss(120) - -// we don't want anyone to dismantle or disable the crusher easily - -/obj/machinery/recycler/birdstation/attackby(obj/item/I, mob/user, params) - if (istype(I, /obj/item/weapon/wrench) || istype(I, /obj/item/weapon/screwdriver)) - return - - -//special birdstation survival boxes - -/obj/item/weapon/storage/box/birdsurv/New() - ..() - contents = list() - new /obj/item/clothing/mask/breath(src) - new /obj/item/weapon/tank/internals/emergency_oxygen(src) - new /obj/item/weapon/reagent_containers/hypospray/medipen(src) - new /obj/item/device/radio/off(src) - return - -/obj/item/weapon/storage/box/birdeng/New() - ..() - contents = list() - new /obj/item/clothing/mask/breath(src) - new /obj/item/weapon/tank/internals/emergency_oxygen/engi(src) - new /obj/item/weapon/reagent_containers/hypospray/medipen(src) - new /obj/item/device/radio/off(src) - return - -/obj/item/weapon/storage/box/birdsec/New() - ..() - contents = list() - new /obj/item/clothing/mask/gas/sechailer(src) - new /obj/item/weapon/tank/internals/emergency_oxygen(src) - new /obj/item/weapon/reagent_containers/hypospray/medipen(src) - new /obj/item/device/radio/off(src) - return diff --git a/_maps/map_files/DreamStation/dreamstation04.dmm b/_maps/map_files/DreamStation/dreamstation04.dmm index 9f1dde54049..21f5b372084 100644 --- a/_maps/map_files/DreamStation/dreamstation04.dmm +++ b/_maps/map_files/DreamStation/dreamstation04.dmm @@ -15,10 +15,7 @@ /area/space) "aad" = ( /obj/structure/lattice, -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /turf/open/space, /area/space) "aae" = ( @@ -7678,10 +7675,7 @@ tag = "icon-2-5"; icon_state = "2-5" }, -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /turf/open/floor/plating/airless, /area/engine/engineering) "aql" = ( @@ -11496,10 +11490,7 @@ tag = "icon-1-2"; icon_state = "1-2" }, -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /obj/effect/spawner/lootdrop{ loot = list(/obj/item/stack/sheet/metal = 1, /obj/item/stack/rods = 2, /obj/item/weapon/shard = 2, "" = 3); lootcount = 2; @@ -12196,10 +12187,7 @@ tag = "icon-2-4"; icon_state = "2-4" }, -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 6 }, @@ -12347,10 +12335,7 @@ tag = "icon-1-8"; icon_state = "1-8" }, -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -13394,6 +13379,7 @@ pixel_x = 0; pixel_y = 0 }, +/obj/machinery/portable_atmospherics/canister/bz, /turf/open/floor/plasteel{ tag = "icon-escape (NORTH)"; icon_state = "escape"; @@ -13646,10 +13632,7 @@ /turf/open/floor/plating, /area/maintenance/asmaint) "aBz" = ( -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /obj/effect/spawner/lootdrop{ loot = list(/obj/item/stack/sheet/metal = 1, /obj/item/stack/rods = 2, /obj/item/weapon/shard = 2, "" = 3); lootcount = 2; @@ -14374,10 +14357,7 @@ tag = "icon-1-2"; icon_state = "1-2" }, -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ tag = "icon-manifold-b-f (EAST)"; dir = 4 @@ -15969,10 +15949,7 @@ /turf/closed/wall/r_wall, /area/engine/engine_smes) "aGe" = ( -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plating, /area/maintenance/aft) @@ -19423,10 +19400,7 @@ }, /area/engine/engineering) "aNv" = ( -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -26679,10 +26653,7 @@ /turf/open/floor/plating, /area/maintenance/asmaint) "bbe" = ( -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /obj/item/weapon/shard, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -28183,10 +28154,7 @@ /turf/open/floor/plating, /area/maintenance/asmaint) "bed" = ( -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /obj/structure/cable/green{ tag = "icon-4-8"; icon_state = "4-8" @@ -28648,10 +28616,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 9 }, -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /obj/item/weapon/shard, /turf/open/floor/plating, /area/maintenance/atmos_control) @@ -28661,10 +28626,7 @@ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /obj/effect/spawner/lootdrop{ loot = list(/obj/item/stack/sheet/metal = 1, /obj/item/stack/rods = 2, /obj/item/weapon/shard = 2, "" = 3); lootcount = 2; @@ -28969,10 +28931,7 @@ /turf/open/floor/plating, /area/maintenance/asmaint) "bfB" = ( -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /obj/item/weapon/shard{ icon_state = "medium" }, @@ -33852,7 +33811,14 @@ /area/crew_quarters/theatre) "boC" = ( /obj/structure/table/wood, -/obj/item/weapon/lipstick/random, +/obj/item/weapon/lipstick/random{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/weapon/lipstick/random{ + pixel_x = -2; + pixel_y = -2 + }, /turf/open/floor/wood, /area/crew_quarters/theatre) "boD" = ( @@ -36375,10 +36341,7 @@ /area/engine/gravity_generator) "btm" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /turf/open/floor/plating, /area/maintenance/fsmaint2) "btn" = ( @@ -36913,10 +36876,7 @@ tag = "icon-1-6"; icon_state = "1-6" }, -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /turf/open/floor/plating/airless, /area/engine/engineering) "buj" = ( @@ -48250,10 +48210,7 @@ /turf/open/floor/plating, /area/maintenance/fpmaint) "bOb" = ( -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /obj/item/weapon/shard{ icon_state = "medium" }, @@ -50370,10 +50327,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /turf/open/floor/plating, /area/maintenance/fsmaint2) "bSf" = ( @@ -57196,10 +57150,7 @@ /turf/closed/wall/rust, /area/storage/emergency2) "cfk" = ( -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/fsmaint) @@ -57940,10 +57891,7 @@ /turf/closed/wall, /area/maintenance/fsmaint) "cgP" = ( -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/meter, /obj/effect/spawner/lootdrop{ @@ -58568,10 +58516,7 @@ /turf/open/floor/plating, /area/maintenance/apmaint) "chV" = ( -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -59537,10 +59482,7 @@ tag = "icon-4-8"; icon_state = "4-8" }, -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -60465,10 +60407,7 @@ tag = "icon-1-4"; icon_state = "1-4" }, -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /obj/item/device/assembly/mousetrap/armed, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -62374,10 +62313,7 @@ tag = "icon-4-8"; icon_state = "4-8" }, -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /obj/effect/spawner/lootdrop{ loot = list(/obj/item/stack/sheet/metal = 1, /obj/item/stack/rods = 2); name = "random metal material damage spawner" @@ -62630,10 +62566,7 @@ /turf/open/floor/plating, /area/maintenance/fsmaint) "cpH" = ( -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /obj/item/device/assembly/mousetrap, /obj/item/trash/deadmouse, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -64079,10 +64012,7 @@ /turf/open/floor/plating, /area/maintenance/fsmaint) "csA" = ( -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -64132,17 +64062,11 @@ /turf/open/floor/plating, /area/maintenance/portsolar) "csH" = ( -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /turf/open/floor/plating, /area/maintenance/fsmaint) "csI" = ( -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /turf/open/floor/plating{ broken = 1; icon_state = "platingdmg1" @@ -64289,10 +64213,7 @@ tag = "icon-1-2"; icon_state = "1-2" }, -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plating, /area/maintenance/fsmaint) @@ -64927,10 +64848,7 @@ tag = "icon-4-8"; icon_state = "4-8" }, -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, @@ -64944,10 +64862,7 @@ tag = "icon-4-8"; icon_state = "4-8" }, -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /obj/item/device/assembly/mousetrap/armed, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -70342,6 +70257,7 @@ dir = 4; network = list("SS13","Sci") }, +/obj/machinery/portable_atmospherics/canister/bz, /turf/open/floor/plasteel{ icon_state = "floorgrime" }, @@ -70897,10 +70813,7 @@ }, /area/maintenance/asmaint2) "cFf" = ( -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /obj/effect/spawner/lootdrop{ loot = list(/obj/item/stack/sheet/metal = 1, /obj/item/stack/rods = 2, /obj/item/weapon/shard = 2, "" = 3); lootcount = 2; @@ -70924,6 +70837,7 @@ icon_state = "tube1"; dir = 8 }, +/obj/machinery/portable_atmospherics/canister/bz, /turf/open/floor/plasteel{ icon_state = "floorgrime" }, @@ -71322,10 +71236,7 @@ tag = "icon-4-8"; icon_state = "4-8" }, -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /obj/effect/spawner/lootdrop{ loot = list(/obj/item/stack/sheet/metal = 1, /obj/item/stack/rods = 2, /obj/item/weapon/shard = 2, "" = 3); lootcount = 2; @@ -71835,10 +71746,7 @@ /turf/open/floor/plating, /area/maintenance/apmaint) "cGI" = ( -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /obj/effect/spawner/lootdrop{ loot = list(/obj/item/stack/sheet/metal = 1, /obj/item/stack/rods = 2, /obj/item/weapon/shard = 2, "" = 3); lootcount = 2; @@ -73188,10 +73096,7 @@ /turf/open/floor/plating, /area/maintenance/asmaint2) "cJa" = ( -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /obj/effect/spawner/lootdrop/maintenance{ lootcount = 2; name = "2maintenance loot spawner" @@ -73219,10 +73124,7 @@ /turf/open/floor/plating, /area/maintenance/asmaint2) "cJc" = ( -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /obj/item/weapon/shard, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -73767,10 +73669,7 @@ tag = "icon-1-2"; icon_state = "1-2" }, -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /obj/effect/spawner/lootdrop{ loot = list(/obj/item/stack/sheet/metal = 1, /obj/item/stack/rods = 2, /obj/item/weapon/shard = 2, "" = 3); lootcount = 2; @@ -73854,10 +73753,7 @@ "cKl" = ( /obj/structure/lattice, /obj/structure/lattice, -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /turf/open/space, /area/space) "cKm" = ( @@ -73906,10 +73802,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /obj/effect/spawner/lootdrop{ loot = list(/obj/item/stack/sheet/metal = 1, /obj/item/stack/rods = 2, /obj/item/weapon/shard = 2, "" = 3); lootcount = 2; @@ -73937,10 +73830,7 @@ }, /area/maintenance/apmaint) "cKu" = ( -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /turf/open/floor/plating, /area/maintenance/apmaint) "cKv" = ( @@ -74166,10 +74056,7 @@ tag = "icon-4-8"; icon_state = "4-8" }, -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /obj/effect/spawner/lootdrop{ loot = list(/obj/item/stack/sheet/metal = 1, /obj/item/stack/rods = 2, /obj/item/weapon/shard = 2, "" = 3); lootcount = 2; @@ -75300,10 +75187,7 @@ /turf/open/floor/plating, /area/maintenance/asmaint2) "cNe" = ( -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /obj/item/weapon/shard{ icon_state = "small" }, @@ -75410,10 +75294,7 @@ /turf/open/floor/plating, /area/toxins/xenobiology) "cNn" = ( -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /obj/effect/spawner/lootdrop{ loot = list(/obj/item/stack/sheet/metal = 1, /obj/item/stack/rods = 2); name = "random metal material damage spawner" @@ -75421,10 +75302,7 @@ /turf/open/floor/plating, /area/maintenance/asmaint2) "cNo" = ( -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /obj/item/weapon/wrench, /turf/open/floor/plating, /area/maintenance/asmaint2) @@ -78083,6 +77961,10 @@ /area/hallway/primary/aft{ name = "Aft Port Hallway" }) +"cSm" = ( +/obj/structure/closet/secure_closet/freezer/cream_pie, +/turf/open/floor/wood, +/area/crew_quarters/theatre) (1,1,1) = {" aaa @@ -108287,7 +108169,7 @@ biH bjZ bkT bmM -boC +cSm bqO bte bmM diff --git a/_maps/map_files/EfficiencyStation/EfficiencyStation.dmm b/_maps/map_files/EfficiencyStation/EfficiencyStation.dmm index 8e7fc5e4d84..4dd58063038 100644 --- a/_maps/map_files/EfficiencyStation/EfficiencyStation.dmm +++ b/_maps/map_files/EfficiencyStation/EfficiencyStation.dmm @@ -8556,10 +8556,7 @@ d2 = 2; icon_state = "1-2" }, -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /obj/structure/closet, /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, @@ -26523,6 +26520,7 @@ /obj/machinery/camera{ c_tag = "Atmospherics Monitoring" }, +/obj/machinery/portable_atmospherics/canister/bz, /turf/open/floor/plasteel{ icon_state = "cautioncorner"; dir = 1 @@ -33996,8 +33994,8 @@ }, /area/crew_quarters/kitchen) "bjL" = ( -/obj/structure/closet, /obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/closet/secure_closet/freezer/cream_pie, /turf/open/floor/plasteel{ icon_state = "redbluefull" }, @@ -34014,8 +34012,15 @@ }, /area/crew_quarters/theatre) "bjN" = ( -/obj/item/weapon/storage/crayons, /obj/structure/table/wood, +/obj/item/weapon/storage/crayons{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/weapon/reagent_containers/food/snacks/pie/cream{ + pixel_x = -3; + pixel_y = -3 + }, /turf/open/floor/plasteel{ icon_state = "redbluefull" }, @@ -35032,10 +35037,7 @@ /obj/item/weapon/shard{ icon_state = "medium" }, -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/maintenance/fpmaint{ @@ -36479,10 +36481,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /obj/item/stack/rods, /obj/structure/disposalpipe/segment{ dir = 1; @@ -37317,7 +37316,7 @@ }, /obj/item/weapon/reagent_containers/food/drinks/bottle/holywater, /obj/item/weapon/nullrod, -/obj/item/device/soulstone/anybody, +/obj/item/device/soulstone/anybody/chaplain, /turf/open/floor/plasteel{ icon_state = "grimy" }, @@ -38548,10 +38547,7 @@ /turf/open/floor/plating, /area/maintenance/fsmaint2) "bsw" = ( -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /obj/effect/decal/cleanable/oil{ icon_state = "floor6" }, @@ -40613,10 +40609,7 @@ /turf/open/floor/plating, /area/maintenance/fsmaint2) "bwr" = ( -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /obj/effect/decal/cleanable/ash, /turf/open/floor/plating, /area/maintenance/fsmaint2) @@ -40695,10 +40688,7 @@ on = 1; pressure_checks = 1 }, -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /turf/open/floor/plating, /area/maintenance/fsmaint2) "bwB" = ( @@ -46054,10 +46044,7 @@ d2 = 8; icon_state = "1-8" }, -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /obj/item/stack/rods, /turf/open/floor/plating, /area/maintenance/starboard) @@ -61714,6 +61701,25 @@ }, /turf/closed/indestructible/opshuttle, /area/shuttle/syndicate) +"ckh" = ( +/obj/structure/table/wood, +/obj/machinery/airalarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/obj/item/weapon/storage/crayons{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/weapon/reagent_containers/food/snacks/pie/cream{ + pixel_x = -3; + pixel_y = -3 + }, +/turf/open/floor/plasteel{ + icon_state = "redbluefull" + }, +/area/space) "cki" = ( /turf/open/space, /obj/machinery/porta_turret/syndicate{ @@ -61724,17 +61730,12 @@ icon_state = "diagonalWall3" }, /area/shuttle/syndicate) -"ckh" = ( -/turf/open/space, -/obj/machinery/porta_turret/syndicate{ - dir = 4 +"ckj" = ( +/obj/machinery/portable_atmospherics/canister/bz, +/turf/open/floor/plasteel{ + icon_state = "floorgrime" }, -/turf/closed/wall/shuttle{ - tag = "icon-diagonalWall3 (WEST)"; - icon_state = "diagonalWall3"; - dir = 8 - }, -/area/shuttle/syndicate) +/area/toxins/storage) (1,1,1) = {" aaa @@ -89086,7 +89087,7 @@ aze aAw aBE aCO -aFp +ckj aFn aGo aCO @@ -95288,7 +95289,7 @@ bkQ bfv bvd bfv -bfv +ckh bqH bsy btK diff --git a/_maps/map_files/MetaStation/MetaStation.v41I.dmm b/_maps/map_files/MetaStation/MetaStation.dmm similarity index 99% rename from _maps/map_files/MetaStation/MetaStation.v41I.dmm rename to _maps/map_files/MetaStation/MetaStation.dmm index afe423895f5..fe82c35a6a7 100644 --- a/_maps/map_files/MetaStation/MetaStation.v41I.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -52,10 +52,7 @@ /turf/open/floor/plating/airless, /area/solar/auxport) "aai" = ( -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /obj/structure/lattice, /turf/open/space, /area/space) @@ -401,8 +398,11 @@ /turf/open/floor/plating/airless, /area/solar/auxstarboard) "aaQ" = ( -/turf/open/space, -/area/security/prison) +/obj/machinery/portable_atmospherics/canister/air, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/atmos) "aaR" = ( /obj/machinery/hydroponics/constructable, /obj/item/weapon/cultivator, @@ -590,9 +590,9 @@ d2 = 8; icon_state = "4-8" }, -/obj/structure/flora/kirbyplants{ - icon_state = "plant-13" - }, +/obj/structure/easel, +/obj/item/weapon/canvas/twentythreeXtwentythree, +/obj/item/weapon/canvas/twentythreeXtwentythree, /turf/open/floor/plasteel{ icon_state = "floorgrime" }, @@ -607,6 +607,7 @@ icon_state = "1-2" }, /obj/item/weapon/pen, +/obj/item/weapon/storage/crayons, /turf/open/floor/plasteel{ icon_state = "floorgrime" }, @@ -1417,6 +1418,9 @@ dir = 1; initialize_directions = 11 }, +/obj/structure/flora/kirbyplants{ + icon_state = "plant-13" + }, /turf/open/floor/plasteel{ icon_state = "floorgrime" }, @@ -3422,9 +3426,7 @@ name = "\improper Recreation Area" }) "afB" = ( -/obj/structure/chair/stool{ - pixel_y = 8 - }, +/obj/structure/easel, /turf/open/floor/plasteel{ icon_state = "dark" }, @@ -3752,7 +3754,6 @@ }, /area/ai_monitored/security/armory) "agf" = ( -/obj/machinery/flasher/portable, /obj/item/device/radio/intercom{ freerange = 0; frequency = 1459; @@ -3760,6 +3761,20 @@ pixel_x = 0; pixel_y = 24 }, +/obj/structure/rack, +/obj/item/weapon/grenade/barrier{ + pixel_x = -3; + pixel_y = 1 + }, +/obj/item/weapon/grenade/barrier, +/obj/item/weapon/grenade/barrier{ + pixel_x = 3; + pixel_y = -1 + }, +/obj/item/weapon/grenade/barrier{ + pixel_x = 6; + pixel_y = -2 + }, /turf/open/floor/plasteel{ icon_state = "vault"; dir = 1 @@ -3767,9 +3782,13 @@ /area/ai_monitored/security/armory) "agg" = ( /mob/living/simple_animal/bot/secbot{ - health = 35; - name = "Securitron #359"; - on = 0 + arrest_type = 1; + health = 45; + icon_state = "secbot1"; + idcheck = 1; + name = "Sergeant-at-Armsky"; + on = 1; + weaponscheck = 1 }, /turf/open/floor/plasteel{ icon_state = "vault"; @@ -4263,13 +4282,14 @@ }, /area/ai_monitored/security/armory) "agX" = ( -/obj/machinery/flasher/portable, /obj/machinery/airalarm{ dir = 4; locked = 0; pixel_x = -23; pixel_y = 0 }, +/obj/structure/rack, +/obj/item/weapon/storage/fancy, /turf/open/floor/plasteel{ icon_state = "vault"; dir = 1 @@ -4666,7 +4686,14 @@ d2 = 4; icon_state = "2-4" }, -/obj/machinery/flasher/portable, +/obj/structure/rack, +/obj/item/weapon/storage/box/flashes{ + pixel_x = 3 + }, +/obj/item/weapon/storage/box/teargas{ + pixel_x = 1; + pixel_y = -2 + }, /turf/open/floor/plasteel{ icon_state = "vault"; dir = 1 @@ -4728,7 +4755,6 @@ pixel_x = 3; pixel_y = -3 }, -/obj/item/weapon/storage/box/teargas, /obj/machinery/button/door{ id = "armory"; name = "Armory Shutters"; @@ -5042,6 +5068,7 @@ /turf/open/floor/plating, /area/maintenance/disposal) "aio" = ( +/obj/structure/easel, /turf/open/floor/plating, /area/maintenance/disposal) "aip" = ( @@ -5399,8 +5426,11 @@ }, /area/security/range) "aiT" = ( -/turf/open/floor/plating, -/area/maintenance/fore) +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/open/floor/plasteel{ + icon_state = "bot" + }, +/area/atmos) "aiU" = ( /obj/structure/chair/stool{ pixel_y = 8 @@ -5594,7 +5624,7 @@ name = "HIGH VOLTAGE"; pixel_y = 0 }, -/turf/closed/wall/r_wall, +/turf/closed/wall, /area/maintenance/auxsolarport) "ajp" = ( /obj/structure/table, @@ -5736,6 +5766,10 @@ lootcount = 2; name = "2maintenance loot spawner" }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 28 + }, /turf/open/floor/plasteel{ icon_state = "vault"; dir = 4 @@ -6455,7 +6489,6 @@ }, /area/security/warden) "akI" = ( -/obj/item/weapon/grenade/barrier, /obj/structure/extinguisher_cabinet{ pixel_x = -27; pixel_y = 0 @@ -6465,12 +6498,13 @@ dir = 4; network = list("SS13") }, +/obj/machinery/flasher/portable, /turf/open/floor/plasteel{ icon_state = "bot" }, /area/security/warden) "akJ" = ( -/obj/item/weapon/grenade/barrier, +/obj/machinery/flasher/portable, /turf/open/floor/plasteel{ icon_state = "bot" }, @@ -7898,7 +7932,7 @@ dir = 8 }, /obj/machinery/conveyor{ - dir = 9; + dir = 2; id = "garbage" }, /turf/open/floor/plating, @@ -7911,6 +7945,10 @@ /turf/open/floor/plating, /area/maintenance/disposal) "amW" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "garbage" + }, /obj/machinery/door/window/eastright{ base_state = "left"; dir = 4; @@ -7918,11 +7956,6 @@ name = "Danger: Conveyor Access"; req_access_txt = "12" }, -/obj/machinery/conveyor{ - dir = 6; - id = "garbage"; - verted = -1 - }, /turf/open/floor/plating, /area/maintenance/disposal) "amX" = ( @@ -8159,10 +8192,6 @@ /obj/structure/filingcabinet/security{ pixel_x = 4 }, -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 28 - }, /turf/open/floor/plasteel{ icon_state = "vault"; dir = 10 @@ -8178,6 +8207,11 @@ /obj/item/weapon/storage/lockbox/loyalty, /obj/item/weapon/reagent_containers/glass/bottle/morphine, /obj/machinery/light/small, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26; + pixel_y = 0 + }, /turf/open/floor/plasteel{ icon_state = "bot" }, @@ -8564,8 +8598,7 @@ req_access_txt = "12" }, /obj/machinery/conveyor{ - dir = 10; - icon_state = "conveyor0"; + dir = 2; id = "garbage" }, /turf/open/floor/plating, @@ -9297,7 +9330,7 @@ }, /obj/item/weapon/storage/belt{ desc = "Can hold quite a lot of stuff."; - name = "mutli-belt" + name = "multi-belt" }, /obj/item/clothing/gloves/color/fyellow, /obj/effect/spawner/lootdrop/maintenance, @@ -9379,7 +9412,7 @@ /turf/open/floor/plating, /area/engine/gravity_generator) "apu" = ( -/turf/closed/wall/r_wall, +/turf/closed/wall, /area/maintenance/auxsolarstarboard) "apv" = ( /obj/machinery/power/solar_control{ @@ -9502,12 +9535,22 @@ name = "Port Maintenance" }) "apF" = ( -/turf/open/floor/plating{ - icon_state = "platingdmg3" +/obj/structure/rack{ + dir = 8; + layer = 2.9 }, -/area/maintenance/fpmaint2{ - name = "Port Maintenance" - }) +/obj/item/weapon/circuitboard/computer/secure_data{ + pixel_x = -2; + pixel_y = 2 + }, +/obj/item/weapon/circuitboard/computer/security{ + pixel_x = 1; + pixel_y = -1 + }, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/storage/tech) "apG" = ( /obj/machinery/light_construct/small{ dir = 4 @@ -9526,11 +9569,19 @@ name = "Port Maintenance" }) "apI" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plating, -/area/maintenance/fpmaint2{ - name = "Port Maintenance" - }) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/sign/kiddieplaque{ + desc = "A long list of rules to be followed when in the library, extolling the virtues of being quiet at all times and threatening those who would dare eat hot food inside."; + name = "Library Rules Sign"; + pixel_y = -32 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/port) "apJ" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 6 @@ -10132,10 +10183,7 @@ /area/maintenance/auxsolarstarboard) "aqJ" = ( /obj/structure/lattice, -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /turf/open/space, /area/space) "aqK" = ( @@ -10349,11 +10397,11 @@ /turf/open/floor/plating, /area/maintenance/fore) "arf" = ( -/obj/effect/decal/cleanable/blood, /obj/structure/chair, /obj/item/weapon/restraints/handcuffs, /obj/effect/decal/remains/human, /obj/item/clothing/under/soviet, +/obj/effect/decal/cleanable/blood/old, /turf/open/floor/plating, /area/maintenance/fore) "arg" = ( @@ -11957,7 +12005,7 @@ name = "HIGH VOLTAGE"; pixel_y = 0 }, -/turf/closed/wall/r_wall, +/turf/closed/wall, /area/maintenance/auxsolarstarboard) "atw" = ( /turf/closed/wall/r_wall, @@ -12735,8 +12783,8 @@ icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; - pixel_x = 0; - pixel_y = 32 + pixel_x = 32; + pixel_y = 0 }, /turf/open/floor/plating, /area/maintenance/starboard) @@ -13447,19 +13495,15 @@ }, /area/maintenance/starboard) "avT" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; - icon_state = "space"; - layer = 4; - name = "EXTERNAL AIRLOCK"; - pixel_x = 0; - pixel_y = -32 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1; + initialize_directions = 11 }, -/turf/open/floor/plating{ - icon_state = "warnplate"; - dir = 4 +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" }, -/area/maintenance/starboard) +/area/hallway/primary/port) "avU" = ( /obj/structure/closet/crate, /obj/item/stack/sheet/metal{ @@ -13987,8 +14031,8 @@ /obj/machinery/door/airlock/security{ name = "Interrogation"; req_access = null; - req_access_txt = "0"; - req_one_access_txt = "1;4" + req_access_txt = "63"; + req_one_access_txt = "0" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -14171,15 +14215,18 @@ }, /area/engine/gravity_generator) "awY" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'RADIOACTIVE AREA'"; - icon_state = "radiation"; - name = "RADIOACTIVE AREA"; - pixel_x = 0; - pixel_y = 0 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 }, -/turf/closed/wall/r_wall, -/area/maintenance/starboard) +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "neutralcorner" + }, +/area/hallway/primary/port) "awZ" = ( /obj/structure/closet, /obj/effect/spawner/lootdrop/maintenance, @@ -14949,7 +14996,11 @@ /turf/closed/wall/r_wall, /area/engine/engineering) "ayp" = ( -/obj/structure/closet/emcloset, +/obj/structure/closet/emcloset{ + anchored = 1; + desc = "It's a storage unit for emergency breath masks and O2 tanks, and is securely bolted in place."; + name = "anchored emergency closet" + }, /turf/open/floor/plating, /area/engine/engineering) "ayq" = ( @@ -15611,13 +15662,12 @@ /turf/open/floor/plating/airless, /area/engine/engineering) "azv" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'HIGH VOLTAGE'"; - icon_state = "shock"; - name = "HIGH VOLTAGE" +/obj/structure/flora/kirbyplants{ + icon_state = "plant-22" }, -/turf/closed/wall/r_wall, -/area/engine/engineering) +/obj/effect/decal/cleanable/cobweb2, +/turf/open/floor/wood, +/area/library) "azw" = ( /obj/structure/grille, /turf/open/floor/plating/airless, @@ -16572,13 +16622,20 @@ /turf/open/floor/plating/airless, /area/engine/engineering) "aAQ" = ( -/obj/machinery/camera/emp_proof{ - c_tag = "Fore Arm - Far"; - dir = 8; - network = list("Singulo") +/obj/structure/table/wood, +/obj/item/device/flashlight/lamp/green{ + pixel_x = 1; + pixel_y = 5 }, -/turf/open/floor/plating/airless, -/area/engine/engineering) +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_y = 30 + }, +/obj/effect/decal/cleanable/cobweb, +/turf/open/floor/plasteel{ + icon_state = "cult"; + dir = 2 + }, +/area/library) "aAR" = ( /obj/machinery/door/airlock/shuttle{ name = "Mining Shuttle Airlock"; @@ -17411,6 +17468,7 @@ dir = 4; network = list("Singulo") }, +/obj/structure/lattice, /turf/open/space, /area/space) "aCi" = ( @@ -19944,15 +20002,19 @@ /turf/open/floor/plating/airless, /area/space) "aGc" = ( -/obj/structure/sign/securearea{ - desc = "A warning sign which reads 'RADIOACTIVE AREA'"; - icon_state = "radiation"; - name = "RADIOACTIVE AREA"; +/obj/structure/table/wood, +/obj/machinery/newscaster{ pixel_x = 0; - pixel_y = 0 + pixel_y = 32 }, -/turf/closed/wall/r_wall, -/area/space) +/obj/item/weapon/folder, +/obj/item/weapon/folder, +/obj/effect/decal/cleanable/cobweb2, +/turf/open/floor/plasteel{ + icon_state = "cult"; + dir = 2 + }, +/area/library) "aGd" = ( /obj/structure/grille, /obj/structure/window/reinforced/fulltile, @@ -20832,13 +20894,13 @@ amount = 50 }, /obj/item/stack/sheet/glass{ - amount = 12 + amount = 50 }, /obj/item/stack/sheet/glass{ - amount = 12 + amount = 50 }, /obj/item/stack/sheet/glass{ - amount = 12 + amount = 50 }, /obj/item/weapon/crowbar, /obj/item/weapon/grenade/chem_grenade/metalfoam, @@ -24449,12 +24511,12 @@ /turf/open/floor/wood, /area/lawoffice) "aNP" = ( +/obj/structure/filingcabinet/chestdrawer, /obj/machinery/airalarm{ dir = 8; icon_state = "alarm0"; pixel_x = 24 }, -/obj/structure/filingcabinet/employment, /turf/open/floor/wood, /area/lawoffice) "aNQ" = ( @@ -24749,8 +24811,12 @@ }, /area/engine/engineering) "aOo" = ( -/turf/open/floor/plating, -/area/maintenance/starboard) +/obj/machinery/light{ + dir = 4; + icon_state = "tube1" + }, +/turf/open/floor/carpet, +/area/library) "aOp" = ( /turf/open/floor/plating{ icon_plating = "warnplate"; @@ -25058,10 +25124,7 @@ /area/quartermaster/qm) "aOT" = ( /obj/structure/table, -/obj/item/weapon/paper_bin{ - pixel_x = -3; - pixel_y = 7 - }, +/obj/machinery/computer/stockexchange, /turf/open/floor/plasteel{ dir = 1; icon_state = "brown" @@ -26649,7 +26712,18 @@ pixel_y = 0; supply_display = 1 }, -/obj/machinery/computer/stockexchange, +/obj/item/weapon/cartridge/quartermaster{ + pixel_x = 6; + pixel_y = 5 + }, +/obj/item/weapon/cartridge/quartermaster, +/obj/item/weapon/cartridge/quartermaster{ + pixel_x = -4; + pixel_y = 7 + }, +/obj/item/device/gps{ + gpstag = "QM0" + }, /turf/open/floor/plasteel, /area/quartermaster/qm) "aRC" = ( @@ -27565,18 +27639,10 @@ /area/quartermaster/qm) "aSY" = ( /obj/structure/table, -/obj/item/weapon/cartridge/quartermaster{ - pixel_x = 6; - pixel_y = 5 - }, -/obj/item/weapon/cartridge/quartermaster, -/obj/item/weapon/cartridge/quartermaster{ - pixel_x = -4; +/obj/item/weapon/paper_bin{ + pixel_x = -3; pixel_y = 7 }, -/obj/item/device/gps{ - gpstag = "QM0" - }, /turf/open/floor/plasteel{ dir = 2; icon_state = "brown" @@ -29711,11 +29777,7 @@ /turf/open/floor/plating/airless, /area/engine/engineering) "aWD" = ( -/obj/machinery/camera/emp_proof{ - c_tag = "Aft Arm - Far"; - dir = 8; - network = list("Singulo") - }, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating/airless, /area/engine/engineering) "aWE" = ( @@ -30089,6 +30151,10 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ req_access_txt = 1 }, +/obj/item/weapon/storage/firstaid/regular{ + pixel_x = 0; + pixel_y = 0 + }, /turf/open/floor/plasteel{ icon_state = "delivery"; name = "floor" @@ -31654,18 +31720,21 @@ dir = 8; layer = 2.9 }, -/obj/item/weapon/circuitboard/computer/powermonitor{ - pixel_x = -2; - pixel_y = 2 +/obj/item/weapon/circuitboard/computer/pandemic{ + pixel_x = -3; + pixel_y = 3 }, -/obj/item/weapon/circuitboard/computer/stationalert{ - pixel_x = 1; - pixel_y = -1 - }, -/obj/item/weapon/circuitboard/computer/atmos_alert{ +/obj/item/weapon/circuitboard/computer/rdconsole, +/obj/item/weapon/circuitboard/machine/rdserver{ pixel_x = 3; pixel_y = -3 }, +/obj/item/weapon/circuitboard/machine/destructive_analyzer, +/obj/item/weapon/circuitboard/machine/protolathe, +/obj/item/weapon/circuitboard/computer/aifixer, +/obj/item/weapon/circuitboard/computer/teleporter, +/obj/item/weapon/circuitboard/machine/circuit_imprinter, +/obj/item/weapon/circuitboard/machine/mechfab, /turf/open/floor/plasteel{ icon_state = "dark" }, @@ -31675,14 +31744,12 @@ dir = 8; layer = 2.9 }, -/obj/item/weapon/circuitboard/computer/secure_data{ - pixel_x = -2; - pixel_y = 2 - }, -/obj/item/weapon/circuitboard/computer/security{ - pixel_x = 1; - pixel_y = -1 +/obj/item/weapon/circuitboard/computer/mining, +/obj/item/weapon/circuitboard/machine/autolathe{ + pixel_x = 3; + pixel_y = -3 }, +/obj/item/weapon/circuitboard/computer/arcade/battle, /obj/machinery/ai_status_display{ pixel_x = 0; pixel_y = 31 @@ -31692,20 +31759,15 @@ }, /area/storage/tech) "aZI" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 +/obj/structure/rack, +/obj/item/weapon/circuitboard/machine/telecomms/processor, +/obj/item/weapon/circuitboard/machine/telecomms/receiver, +/obj/item/weapon/circuitboard/machine/telecomms/server, +/obj/item/weapon/circuitboard/machine/telecomms/bus, +/obj/item/weapon/circuitboard/machine/telecomms/broadcaster, +/obj/item/weapon/circuitboard/computer/message_monitor{ + pixel_y = -5 }, -/obj/item/weapon/circuitboard/computer/cloning{ - pixel_x = 0 - }, -/obj/item/weapon/circuitboard/computer/med_data{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/weapon/circuitboard/machine/clonescanner, -/obj/item/weapon/circuitboard/machine/clonepod, -/obj/item/weapon/circuitboard/computer/scan_consolenew, /turf/open/floor/plasteel{ icon_state = "dark" }, @@ -31838,6 +31900,14 @@ /turf/closed/wall, /area/security/checkpoint/engineering) "aZS" = ( +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; + icon_state = "space"; + layer = 4; + name = "EXTERNAL AIRLOCK"; + pixel_x = 32; + pixel_y = 0 + }, /turf/open/floor/plating{ dir = 2; icon_state = "warnplate" @@ -32749,13 +32819,20 @@ }, /area/security/checkpoint/engineering) "bbn" = ( -/obj/machinery/door/airlock/external{ - name = "South Containment Arm Access" +/obj/structure/closet/emcloset, +/obj/machinery/status_display{ + density = 0; + layer = 4; + pixel_x = -32; + pixel_y = 0 }, -/turf/open/floor/plating, -/area/engine/engineering) +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/hallway/primary/central) "bbo" = ( /obj/machinery/space_heater, +/obj/effect/decal/cleanable/cobweb2, /turf/open/floor/plating{ icon_state = "platingdmg3" }, @@ -33263,6 +33340,7 @@ pixel_x = 0; pixel_y = 30 }, +/obj/item/weapon/pen/red, /turf/open/floor/plasteel{ dir = 9; icon_state = "brown" @@ -33271,11 +33349,6 @@ name = "\improper Cargo Office" }) "bbW" = ( -/obj/item/weapon/paper_bin{ - pixel_x = -3; - pixel_y = 7 - }, -/obj/item/weapon/pen/red, /obj/structure/table/reinforced, /obj/machinery/computer/stockexchange, /turf/open/floor/plasteel{ @@ -33769,8 +33842,7 @@ pixel_y = -2 }, /turf/open/floor/plasteel{ - icon_state = "vault"; - dir = 4 + icon_state = "dark" }, /area/storage/tech) "bcK" = ( @@ -33788,7 +33860,8 @@ dir = 4 }, /turf/open/floor/plasteel{ - icon_state = "dark" + icon_state = "vault"; + dir = 8 }, /area/storage/tech) "bcL" = ( @@ -33796,7 +33869,8 @@ dir = 8 }, /turf/open/floor/plasteel{ - icon_state = "dark" + icon_state = "vault"; + dir = 8 }, /area/storage/tech) "bcM" = ( @@ -33804,50 +33878,40 @@ dir = 8; layer = 2.9 }, -/obj/item/weapon/circuitboard/computer/message_monitor{ - pixel_y = -5 +/obj/item/weapon/circuitboard/computer/cloning{ + pixel_x = 0 }, -/obj/item/weapon/circuitboard/computer/arcade/battle{ - pixel_x = -4; - pixel_y = 2 - }, -/obj/item/weapon/circuitboard/computer/arcade/orion_trail{ - pixel_x = 4 +/obj/item/weapon/circuitboard/computer/med_data{ + pixel_x = 3; + pixel_y = -3 }, +/obj/item/weapon/circuitboard/machine/clonescanner, +/obj/item/weapon/circuitboard/machine/clonepod, +/obj/item/weapon/circuitboard/computer/scan_consolenew, /turf/open/floor/plasteel{ icon_state = "dark" }, /area/storage/tech) "bcN" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/item/weapon/circuitboard/computer/mining, -/obj/item/weapon/circuitboard/machine/autolathe{ - pixel_x = 3; - pixel_y = -3 - }, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, -/area/storage/tech) +/turf/closed/wall, +/area/maintenance/auxsolarport) "bcO" = ( /obj/structure/rack{ dir = 8; layer = 2.9 }, -/obj/item/weapon/circuitboard/computer/pandemic{ - pixel_x = -3; - pixel_y = 3 +/obj/item/weapon/circuitboard/computer/powermonitor{ + pixel_x = -2; + pixel_y = 2 }, -/obj/item/weapon/circuitboard/computer/rdconsole, -/obj/item/weapon/circuitboard/machine/rdserver{ +/obj/item/weapon/circuitboard/computer/stationalert{ + pixel_x = 1; + pixel_y = -1 + }, +/obj/item/weapon/circuitboard/computer/atmos_alert{ pixel_x = 3; pixel_y = -3 }, -/obj/item/weapon/circuitboard/machine/destructive_analyzer, -/obj/item/weapon/circuitboard/machine/protolathe, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel{ icon_state = "dark" @@ -34078,8 +34142,8 @@ icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; - pixel_x = 0; - pixel_y = 32 + pixel_x = 32; + pixel_y = -32 }, /turf/open/floor/plating{ icon_state = "warnplate"; @@ -34227,10 +34291,16 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ req_access_txt = 1 }, -/obj/machinery/light_switch{ - pixel_x = -25; +/obj/machinery/power/apc{ + dir = 8; + name = "Cargo Office APC"; + pixel_x = -24; pixel_y = 0 }, +/obj/structure/cable/yellow{ + d2 = 4; + icon_state = "0-4" + }, /turf/open/floor/plasteel{ dir = 9; icon_state = "brown" @@ -34245,6 +34315,12 @@ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 8; + icon_state = "2-8"; + tag = "" + }, /turf/open/floor/plasteel{ dir = 1; icon_state = "brown" @@ -34296,13 +34372,17 @@ }) "bdz" = ( /obj/structure/table/reinforced, -/obj/item/weapon/folder/yellow, /obj/machinery/door/firedoor, /obj/machinery/door/window/westleft{ dir = 8; name = "Cargo Desk"; req_access_txt = "50" }, +/obj/item/weapon/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/weapon/pen, /turf/open/floor/plasteel, /area/quartermaster/office{ name = "\improper Cargo Office" @@ -34531,8 +34611,7 @@ pixel_y = -5 }, /turf/open/floor/plasteel{ - icon_state = "vault"; - dir = 8 + icon_state = "dark" }, /area/storage/tech) "bea" = ( @@ -34757,11 +34836,11 @@ }, /area/security/checkpoint/engineering) "bes" = ( -/obj/structure/closet/emcloset, +/obj/structure/easel, /turf/open/floor/plating{ - icon_state = "platingdmg2" + icon_state = "platingdmg3" }, -/area/engine/engineering) +/area/maintenance/starboard) "bet" = ( /obj/machinery/light{ dir = 8 @@ -35460,8 +35539,7 @@ pixel_y = -1 }, /turf/open/floor/plasteel{ - icon_state = "vault"; - dir = 1 + icon_state = "dark" }, /area/storage/tech) "bfE" = ( @@ -35469,7 +35547,8 @@ dir = 4 }, /turf/open/floor/plasteel{ - icon_state = "dark" + icon_state = "vault"; + dir = 8 }, /area/storage/tech) "bfF" = ( @@ -37123,18 +37202,41 @@ name = "Customs" }) "bin" = ( -/obj/item/weapon/grenade/barrier, -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -26; - pixel_y = 0 - }, /obj/machinery/light/small{ dir = 1 }, /obj/machinery/airalarm{ pixel_y = 28 }, +/obj/structure/closet/crate/secure/weapon{ + desc = "A secure clothing crate."; + name = "formal uniform crate"; + req_access_txt = "3" + }, +/obj/item/clothing/under/rank/security/navyblue, +/obj/item/clothing/under/rank/security/navyblue, +/obj/item/clothing/under/rank/security/navyblue, +/obj/item/clothing/under/rank/security/navyblue, +/obj/item/clothing/under/rank/security/navyblue, +/obj/item/clothing/under/rank/security/navyblue, +/obj/item/clothing/suit/security/officer, +/obj/item/clothing/suit/security/officer, +/obj/item/clothing/suit/security/officer, +/obj/item/clothing/suit/security/officer, +/obj/item/clothing/suit/security/officer, +/obj/item/clothing/suit/security/officer, +/obj/item/clothing/under/rank/warden/navyblue, +/obj/item/clothing/suit/security/warden, +/obj/item/clothing/under/rank/head_of_security/navyblue, +/obj/item/clothing/suit/security/hos, +/obj/item/clothing/head/beret/sec/navyofficer, +/obj/item/clothing/head/beret/sec/navyofficer, +/obj/item/clothing/head/beret/sec/navyofficer, +/obj/item/clothing/head/beret/sec/navyofficer, +/obj/item/clothing/head/beret/sec/navyofficer, +/obj/item/clothing/head/beret/sec/navyofficer, +/obj/item/clothing/head/beret/sec/navywarden, +/obj/item/clothing/head/beret/sec/navyhos, /turf/open/floor/plasteel{ icon_state = "bot" }, @@ -37290,11 +37392,6 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 2 }, -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, /turf/open/floor/plasteel{ dir = 8; icon_state = "brown" @@ -37311,11 +37408,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, /turf/open/floor/plasteel, /area/quartermaster/office{ name = "\improper Cargo Office" @@ -38487,18 +38579,9 @@ /obj/structure/table, /obj/item/weapon/clipboard, /obj/item/weapon/folder/yellow, +/obj/item/weapon/folder/yellow, /obj/item/device/multitool, -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -26; - pixel_y = 0 - }, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/computer/stockexchange, +/obj/item/weapon/pen/red, /turf/open/floor/plasteel{ dir = 8; icon_state = "brown" @@ -39532,23 +39615,12 @@ }) "bmb" = ( /obj/structure/table, -/obj/item/device/radio/intercom{ - freerange = 0; - frequency = 1459; - name = "Station Intercom (General)"; - pixel_x = -29 - }, -/obj/item/weapon/storage/firstaid/regular{ - pixel_x = 0; +/obj/machinery/computer/stockexchange, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26; pixel_y = 0 }, -/obj/machinery/power/apc{ - dir = 2; - name = "Cargo Office APC"; - pixel_x = 1; - pixel_y = -24 - }, -/obj/structure/cable/yellow, /turf/open/floor/plasteel{ dir = 10; icon_state = "brown" @@ -39589,6 +39661,13 @@ pixel_x = 28; pixel_y = 0 }, +/obj/item/device/radio/intercom{ + freerange = 0; + frequency = 1459; + name = "Station Intercom (General)"; + pixel_x = 0; + pixel_y = -28 + }, /turf/open/floor/plasteel{ dir = 6; icon_state = "brown" @@ -40241,7 +40320,7 @@ /area/engine/break_room) "bng" = ( /obj/structure/sign/pods, -/turf/closed/wall, +/turf/closed/wall/r_wall, /area/engine/break_room) "bnh" = ( /obj/structure/grille, @@ -40857,10 +40936,6 @@ /area/crew_quarters/heads) "boh" = ( /obj/machinery/recharger, -/obj/machinery/keycard_auth{ - pixel_x = 0; - pixel_y = 24 - }, /obj/item/weapon/storage/secure/safe{ pixel_x = 34; pixel_y = 0 @@ -41340,10 +41415,15 @@ /area/engine/break_room) "boU" = ( /obj/structure/table/glass, +/obj/item/device/lightreplacer{ + pixel_y = 7 + }, /turf/open/floor/plasteel, /area/engine/break_room) "boV" = ( -/obj/item/weapon/reagent_containers/food/drinks/soda_cans/thirteenloko, +/obj/item/weapon/reagent_containers/food/drinks/soda_cans/thirteenloko{ + pixel_y = 4 + }, /obj/structure/table/glass, /turf/open/floor/plasteel, /area/engine/break_room) @@ -44053,8 +44133,6 @@ /area/hallway/primary/central) "btc" = ( /obj/structure/table, -/obj/item/weapon/storage/crayons, -/obj/item/weapon/storage/crayons, /obj/machinery/power/apc{ cell_type = 2500; dir = 8; @@ -44066,6 +44144,11 @@ d2 = 4; icon_state = "0-4" }, +/obj/item/stack/cable_coil/random, +/obj/item/stack/cable_coil/random, +/obj/item/stack/cable_coil/random, +/obj/item/stack/cable_coil/random, +/obj/item/stack/cable_coil/random, /turf/open/floor/plasteel, /area/storage/art) "btd" = ( @@ -45176,10 +45259,6 @@ dir = 4 }, /obj/machinery/light, -/obj/machinery/firealarm{ - dir = 1; - pixel_y = -24 - }, /turf/open/floor/plasteel{ dir = 8; icon_state = "neutralcorner" @@ -45597,10 +45676,15 @@ /area/hallway/primary/central) "bvn" = ( /obj/structure/table, -/obj/item/stack/cable_coil/random, -/obj/item/stack/cable_coil/random, -/obj/item/stack/cable_coil/random, -/obj/item/stack/cable_coil/random, +/obj/item/weapon/canvas/twentythreeXtwentythree, +/obj/item/weapon/canvas/twentythreeXtwentythree, +/obj/item/weapon/canvas/twentythreeXnineteen, +/obj/item/weapon/canvas/twentythreeXnineteen, +/obj/item/weapon/canvas/nineteenXnineteen, +/obj/item/weapon/canvas/nineteenXnineteen, +/obj/item/weapon/storage/crayons, +/obj/item/weapon/storage/crayons, +/obj/item/weapon/storage/crayons, /turf/open/floor/plasteel, /area/storage/art) "bvo" = ( @@ -45643,7 +45727,14 @@ }, /obj/structure/closet/gmcloset, /obj/item/weapon/wrench, -/obj/item/stack/cable_coil/white, +/obj/item/stack/sheet/glass{ + amount = 30 + }, +/obj/item/stack/sheet/metal{ + amount = 30 + }, +/obj/item/stack/cable_coil/random, +/obj/item/stack/cable_coil/random, /turf/open/floor/wood, /area/crew_quarters/bar) "bvt" = ( @@ -46068,14 +46159,17 @@ /turf/closed/wall, /area/library) "bwi" = ( -/obj/structure/grille, -/obj/structure/window/fulltile, -/turf/open/floor/plating, -/area/library) +/obj/structure/closet/firecloset, +/turf/open/floor/plasteel{ + icon_state = "dark" + }, +/area/hallway/primary/central) "bwj" = ( /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass{ - name = "Library" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/airlock/centcom{ + name = "Library"; + opacity = 1 }, /turf/open/floor/wood, /area/library) @@ -46084,8 +46178,9 @@ req_access_txt = 1 }, /obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass{ - name = "Library" +/obj/machinery/door/airlock/centcom{ + name = "Library"; + opacity = 1 }, /turf/open/floor/wood, /area/library) @@ -47221,14 +47316,15 @@ }) "byd" = ( /obj/structure/table/wood, -/obj/item/device/flashlight/lamp/green{ - pixel_x = 1; - pixel_y = 5 - }, /obj/machinery/computer/security/telescreen/entertainment{ pixel_x = -32; pixel_y = 0 }, +/obj/effect/decal/cleanable/cobweb, +/obj/item/device/flashlight/lamp/green{ + pixel_x = 1; + pixel_y = 5 + }, /turf/open/floor/wood, /area/library) "bye" = ( @@ -49529,11 +49625,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ req_access_txt = 1 }, -/obj/item/device/radio/intercom{ - dir = 4; - name = "Station Intercom (General)"; - pixel_x = 27 - }, /turf/open/floor/carpet, /area/library) "bBK" = ( @@ -49558,20 +49649,9 @@ /area/library) "bBM" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/item/device/radio/intercom{ - freerange = 1; - frequency = 1459; - name = "Station Intercom (General)"; - pixel_x = -30 - }, /obj/machinery/light{ dir = 8 }, -/obj/machinery/camera{ - c_tag = "Central Primary Hallway - Port"; - dir = 4; - network = list("SS13") - }, /turf/open/floor/plasteel{ dir = 8; icon_state = "neutralcorner" @@ -49939,7 +50019,10 @@ /area/crew_quarters/bar) "bCu" = ( /obj/structure/table/wood/poker, -/obj/effect/spawner/lootdrop/gambling, +/obj/effect/spawner/lootdrop{ + loot = list(/obj/item/weapon/gun/projectile/revolver/russian = 5, /obj/item/weapon/storage/box/syndie_kit/throwing_weapons, /obj/item/toy/cards/deck/syndicate = 2); + name = "gambling valuables spawner" + }, /turf/open/floor/wood, /area/crew_quarters/bar) "bCv" = ( @@ -50488,19 +50571,17 @@ /turf/open/floor/wood, /area/library) "bDx" = ( -/obj/structure/chair/comfy/black, -/turf/open/floor/wood, -/area/library) -"bDy" = ( -/obj/item/device/flashlight/lamp/green{ - pixel_x = 1; - pixel_y = 5 +/obj/machinery/portable_atmospherics/canister/bz, +/turf/open/floor/plasteel{ + icon_state = "bot" }, +/area/atmos) +"bDy" = ( +/obj/machinery/vending/coffee, /obj/machinery/newscaster{ pixel_x = 0; pixel_y = 32 }, -/obj/structure/table/wood, /turf/open/floor/wood, /area/library) "bDz" = ( @@ -50511,23 +50592,11 @@ /turf/open/floor/wood, /area/library) "bDA" = ( -/obj/machinery/vending/coffee, -/obj/machinery/newscaster{ - pixel_x = 0; - pixel_y = 32 - }, -/obj/machinery/light{ - dir = 1 - }, +/obj/machinery/bookbinder, /turf/open/floor/wood, /area/library) "bDB" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - dir = 2; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, +/obj/effect/decal/cleanable/cobweb2, /turf/open/floor/wood, /area/library) "bDC" = ( @@ -50677,7 +50746,7 @@ dir = 4 }, /turf/open/floor/goonplaque{ - desc = "\"This is a plaque in honour of our comrades on the G4407 Stations. Hopefully TG4407 model can live up to your fame and fortune.\" Scratched in beneath that is a crude image of sentient postcards in a realm of darkness. The station model number is MSv41I:151101" + desc = "\"This is a plaque in honour of our comrades on the G4407 Stations. Hopefully TG4407 model can live up to your fame and fortune.\" Scratched in beneath that is a crude image of sentient postcards in a realm of darkness. The station model number is MSv42A-160516" }, /area/hallway/primary/port) "bDM" = ( @@ -52317,8 +52386,9 @@ /turf/open/floor/wood, /area/library) "bGD" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8; + initialize_directions = 11 }, /turf/open/floor/carpet, /area/library) @@ -52338,21 +52408,21 @@ /turf/open/floor/carpet, /area/library) "bGG" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 2; - initialize_directions = 11 +/obj/machinery/camera/autoname{ + dir = 8; + network = list("SS13") + }, +/obj/machinery/newscaster{ + pixel_x = 29; + pixel_y = 1 }, /turf/open/floor/carpet, /area/library) "bGH" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 + dir = 10 }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass{ - name = "Library" - }, -/turf/open/floor/wood, +/turf/open/floor/carpet, /area/library) "bGI" = ( /obj/structure/cable/yellow{ @@ -52366,9 +52436,6 @@ d2 = 4; icon_state = "1-4" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10 - }, /obj/machinery/navbeacon{ codes_txt = "patrol;next_patrol=11.1-Command-Starboard"; location = "11-Command-Port" @@ -53722,28 +53789,31 @@ }, /area/library) "bIB" = ( -/obj/machinery/bookbinder, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 1; + on = 1; + scrub_N2O = 0; + scrub_Toxins = 0 + }, /turf/open/floor/wood, /area/library) "bIC" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/central) -"bID" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ +/obj/item/device/radio/intercom{ dir = 4; - initialize_directions = 11 + name = "Station Intercom (General)"; + pixel_x = 0 + }, +/turf/closed/wall, +/area/library) +"bID" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/camera{ + c_tag = "Central Primary Hallway - Port"; + dir = 8; + network = list("SS13") }, /turf/open/floor/plasteel{ - dir = 4; + dir = 2; icon_state = "neutralcorner" }, /area/hallway/primary/central) @@ -54489,12 +54559,12 @@ icon_state = "shower"; dir = 4 }, -/obj/effect/decal/cleanable/blood, -/obj/effect/decal/cleanable/blood/gibs/limb, /obj/machinery/light/small, /obj/effect/landmark{ name = "revenantspawn" }, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/blood/gibs/old, /turf/open/floor/plasteel{ icon_state = "floorgrime" }, @@ -54552,15 +54622,11 @@ name = "\improper Auxiliary Restrooms" }) "bJY" = ( -/obj/structure/bookcase{ - name = "bookcase (Non-Fiction)" - }, +/obj/structure/bookcase/random/nonfiction, /turf/open/floor/wood, /area/library) "bJZ" = ( -/obj/structure/bookcase{ - name = "bookcase (Fiction)" - }, +/obj/structure/bookcase/random/fiction, /turf/open/floor/wood, /area/library) "bKa" = ( @@ -54572,14 +54638,7 @@ /turf/open/floor/wood, /area/library) "bKb" = ( -/obj/item/device/camera_film{ - pixel_y = 9 - }, -/obj/item/device/camera_film{ - pixel_x = -3; - pixel_y = 5 - }, -/obj/structure/table/wood, +/obj/machinery/hologram/holopad, /turf/open/floor/wood, /area/library) "bKc" = ( @@ -54587,16 +54646,11 @@ /turf/open/floor/wood, /area/library) "bKd" = ( -/obj/item/weapon/paper_bin{ - pixel_x = 1; - pixel_y = 9 - }, -/obj/item/device/radio/intercom{ - dir = 4; - name = "Station Intercom (General)"; - pixel_x = 27 - }, /obj/structure/table/wood, +/obj/item/weapon/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, /turf/open/floor/wood, /area/library) "bKe" = ( @@ -55505,6 +55559,7 @@ dir = 8; pixel_x = -24 }, +/obj/effect/decal/cleanable/cobweb, /turf/open/floor/wood, /area/library) "bLH" = ( @@ -55533,21 +55588,33 @@ /turf/open/floor/wood, /area/library) "bLK" = ( -/obj/structure/table/wood, -/obj/structure/noticeboard{ - desc = "A board for pinning important notices upon. Probably helpful for keeping track of requests."; - name = "requests board"; - pixel_x = 32; - pixel_y = 0 +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/item/device/radio/intercom{ + freerange = 1; + frequency = 1459; + name = "Station Intercom (General)"; + pixel_x = -30 }, -/obj/machinery/computer/libraryconsole/bookmanagement, -/turf/open/floor/wood, -/area/library) -"bLL" = ( -/obj/structure/closet/firecloset, /turf/open/floor/plasteel{ - icon_state = "dark" + dir = 8; + icon_state = "neutralcorner" }, +/area/hallway/primary/central) +"bLL" = ( +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 27 + }, +/obj/structure/table/wood, +/obj/item/device/camera_film{ + pixel_y = 9 + }, +/obj/item/device/camera_film{ + pixel_x = -3; + pixel_y = 5 + }, +/turf/open/floor/wood, /area/library) "bLM" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -56442,7 +56509,9 @@ name = "Port Maintenance" }) "bNo" = ( -/obj/machinery/vending/autodrobe, +/obj/machinery/vending/autodrobe{ + req_access_txt = "0" + }, /turf/open/floor/plating, /area/maintenance/fpmaint2{ name = "Port Maintenance" @@ -56471,15 +56540,11 @@ name = "Port Maintenance" }) "bNr" = ( -/obj/structure/bookcase{ - name = "bookcase (Religious)" - }, +/obj/structure/bookcase/random/religion, /turf/open/floor/wood, /area/library) "bNs" = ( -/obj/structure/bookcase{ - name = "bookcase (Adult)" - }, +/obj/structure/bookcase/random/adult, /turf/open/floor/wood, /area/library) "bNt" = ( @@ -56492,9 +56557,7 @@ /turf/open/floor/carpet, /area/library) "bNu" = ( -/obj/structure/bookcase{ - name = "bookcase (Reference)" - }, +/obj/structure/bookcase/random/reference, /turf/open/floor/wood, /area/library) "bNv" = ( @@ -56515,16 +56578,16 @@ /turf/open/floor/wood, /area/library) "bNx" = ( -/obj/structure/closet/emcloset, -/obj/machinery/status_display{ - density = 0; - layer = 4; - pixel_x = -32; +/obj/structure/table/wood, +/obj/structure/noticeboard{ + desc = "A board for pinning important notices upon. Probably helpful for keeping track of requests."; + dir = 8; + name = "requests board"; + pixel_x = 32; pixel_y = 0 }, -/turf/open/floor/plasteel{ - icon_state = "dark" - }, +/obj/machinery/computer/libraryconsole/bookmanagement, +/turf/open/floor/wood, /area/library) "bNy" = ( /obj/item/stack/sheet/rglass{ @@ -56963,13 +57026,7 @@ /area/bridge) "bOg" = ( /obj/structure/rack, -/obj/item/weapon/circuitboard/machine/telecomms/processor, -/obj/item/weapon/circuitboard/machine/telecomms/processor, -/obj/item/weapon/circuitboard/machine/telecomms/receiver, -/obj/item/weapon/circuitboard/machine/telecomms/server, -/obj/item/weapon/circuitboard/machine/telecomms/server, -/obj/item/weapon/circuitboard/machine/telecomms/bus, -/obj/item/weapon/circuitboard/machine/telecomms/bus, +/obj/machinery/telecomms/bus, /obj/item/weapon/circuitboard/machine/telecomms/broadcaster, /obj/machinery/atmospherics/components/unary/vent_pump{ dir = 1; @@ -57016,15 +57073,17 @@ name = "Telecoms Storage" }) "bOj" = ( -/obj/structure/closet/wardrobe/grey, -/turf/open/floor/plating, +/obj/structure/closet, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, /area/maintenance/starboard) "bOk" = ( /obj/machinery/portable_atmospherics/canister/oxygen, /turf/open/floor/plating, /area/maintenance/starboard) "bOl" = ( -/obj/item/weapon/storage/box/lights/mixed, +/obj/structure/closet/cardboard, /turf/open/floor/plating, /area/maintenance/starboard) "bOm" = ( @@ -57447,6 +57506,7 @@ d2 = 4; icon_state = "0-4" }, +/obj/effect/decal/cleanable/cobweb, /turf/open/floor/wood, /area/library) "bOU" = ( @@ -57497,12 +57557,15 @@ /area/library) "bOZ" = ( /obj/machinery/light/small, -/obj/machinery/hologram/holopad, +/obj/machinery/photocopier{ + pixel_y = 3 + }, /turf/open/floor/wood, /area/library) "bPa" = ( -/obj/machinery/light_switch{ - pixel_y = -28 +/obj/machinery/newscaster{ + pixel_x = -1; + pixel_y = -29 }, /turf/open/floor/wood, /area/library) @@ -57511,13 +57574,17 @@ dir = 4; pixel_x = 24 }, +/obj/structure/table/wood, +/obj/item/weapon/clipboard, +/obj/item/device/taperecorder, +/obj/item/device/tape, /turf/open/floor/wood, /area/library) "bPc" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/plasteel{ - icon_state = "vault" - }, +/obj/structure/easel, +/obj/item/weapon/canvas/twentythreeXtwentythree, +/obj/item/weapon/canvas/twentythreeXtwentythree, +/turf/open/floor/wood, /area/library) "bPd" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -58852,10 +58919,19 @@ }, /area/crew_quarters/kitchen) "bRk" = ( -/turf/open/floor/plasteel{ - icon_state = "showroomfloor" +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; + icon_state = "space"; + layer = 4; + name = "EXTERNAL AIRLOCK"; + pixel_x = 32; + pixel_y = 0 }, -/area/crew_quarters/kitchen) +/turf/open/floor/plating{ + icon_state = "warnplate"; + dir = 1 + }, +/area/maintenance/starboard) "bRl" = ( /obj/machinery/chem_master/condimaster{ name = "CondiMaster Neo"; @@ -59295,6 +59371,7 @@ pixel_y = 4 }, /obj/item/weapon/pen, +/obj/effect/decal/cleanable/cobweb, /turf/open/floor/wood, /area/library) "bSb" = ( @@ -59340,16 +59417,17 @@ /obj/structure/table/wood, /obj/item/weapon/dice/d20, /obj/item/weapon/dice, +/obj/effect/decal/cleanable/cobweb2, /turf/open/floor/wood, /area/library) "bSh" = ( /obj/structure/cult/tome, /obj/machinery/newscaster{ - pixel_x = -32; + pixel_x = -30; pixel_y = 0 }, /obj/item/clothing/under/suit_jacket/red, -/obj/item/weapon/book/codex_gigas, +/obj/effect/decal/cleanable/cobweb, /turf/open/floor/plasteel{ icon_state = "cult"; dir = 2 @@ -59904,21 +59982,7 @@ }, /area/crew_quarters/kitchen) "bSU" = ( -/obj/structure/closet/crate{ - desc = "It's a storage unit for kitchen clothes and equipment."; - name = "Kitchen Crate" - }, -/obj/item/clothing/head/chefhat, -/obj/item/clothing/under/rank/chef, -/obj/item/weapon/storage/box/mousetraps{ - pixel_x = 5; - pixel_y = 5 - }, -/obj/item/weapon/storage/box/mousetraps, -/obj/item/clothing/under/waiter, -/obj/item/clothing/under/waiter, -/obj/item/weapon/storage/box/donkpockets, -/obj/item/weapon/storage/box/donkpockets, +/obj/structure/closet/chefcloset, /turf/open/floor/plasteel{ icon_state = "showroomfloor" }, @@ -60467,7 +60531,7 @@ pixel_y = 6 }, /obj/structure/table/wood, -/obj/item/toy/AI{ +/obj/item/toy/talking/AI{ name = "NanoTrasen-brand toy AI"; pixel_y = 6 }, @@ -61121,8 +61185,8 @@ /turf/open/floor/wood, /area/library) "bUM" = ( -/obj/item/toy/cards/deck, /obj/structure/table/wood, +/obj/item/weapon/storage/crayons, /turf/open/floor/wood, /area/library) "bUN" = ( @@ -61602,11 +61666,12 @@ name = "HIGH VOLTAGE"; pixel_y = 0 }, -/turf/closed/wall/r_wall, +/turf/closed/wall, /area/maintenance/portsolar) "bVC" = ( -/turf/closed/wall/r_wall, -/area/maintenance/portsolar) +/obj/machinery/power/grounding_rod, +/turf/open/floor/plating/airless, +/area/engine/engineering) "bVD" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/machinery/door/airlock/maintenance{ @@ -61687,11 +61752,18 @@ "bVL" = ( /obj/structure/table/wood, /obj/machinery/light, -/obj/item/toy/cards/deck/cas, /obj/item/toy/cards/deck/cas/black{ pixel_x = -2; pixel_y = 6 }, +/obj/item/toy/cards/deck{ + pixel_x = 2; + pixel_y = 7 + }, +/obj/item/toy/cards/deck/cas{ + pixel_x = -1; + pixel_y = 2 + }, /turf/open/floor/wood, /area/library) "bVM" = ( @@ -65361,6 +65433,10 @@ pixel_x = -2; pixel_y = 8 }, +/obj/structure/window/reinforced{ + dir = 1; + pixel_y = 1 + }, /turf/open/floor/plasteel{ dir = 4; icon_state = "caution" @@ -69913,7 +69989,11 @@ }, /area/crew_quarters/kitchen) "ciS" = ( -/obj/structure/closet/emcloset, +/obj/structure/closet/emcloset{ + anchored = 1; + desc = "It's a storage unit for emergency breath masks and O2 tanks, and is securely bolted in place."; + name = "anchored emergency closet" + }, /turf/open/floor/plating{ icon_state = "warnplate"; dir = 1 @@ -72348,8 +72428,8 @@ name = "old sink"; pixel_y = 28 }, -/obj/effect/decal/cleanable/blood, -/obj/effect/decal/cleanable/blood/gibs/limb, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/blood/gibs/old, /turf/open/floor/plating, /area/maintenance/starboard) "cmL" = ( @@ -73278,8 +73358,6 @@ name = "Aft Maintenance" }) "col" = ( -/obj/effect/decal/cleanable/blood, -/obj/effect/decal/cleanable/blood/gibs/limb, /obj/effect/landmark{ name = "xeno_spawn"; pixel_x = -1 @@ -73287,6 +73365,8 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 }, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/blood/gibs/old, /turf/open/floor/plating, /area/maintenance/aft{ name = "Aft Maintenance" @@ -73441,14 +73521,14 @@ name = "Sleepers" }) "coC" = ( -/obj/structure/grille, -/obj/structure/window/fulltile{ - layer = 2.9 +/obj/structure/lattice, +/obj/machinery/camera/emp_proof{ + c_tag = "Fore Arm - Far"; + dir = 8; + network = list("Singulo") }, -/turf/open/floor/plating, -/area/medical/sleeper{ - name = "Sleepers" - }) +/turf/open/space, +/area/space) "coD" = ( /obj/machinery/door/firedoor, /obj/structure/extinguisher_cabinet{ @@ -74664,6 +74744,10 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 8 }, +/obj/item/stack/sheet/mineral/plasma{ + layer = 2.9; + pixel_y = 4 + }, /turf/open/floor/plasteel{ icon_state = "white" }, @@ -74760,7 +74844,7 @@ name = "Aft Maintenance" }) "cqG" = ( -/obj/effect/decal/cleanable/blood, +/obj/effect/decal/cleanable/blood/old, /turf/open/floor/plating, /area/maintenance/aft{ name = "Aft Maintenance" @@ -76559,9 +76643,9 @@ }, /area/toxins/explab) "ctj" = ( -/obj/effect/decal/cleanable/blood, -/obj/effect/decal/cleanable/blood/gibs/limb, /obj/structure/bed/roller, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/blood/gibs/old, /turf/open/floor/plating{ icon_state = "warnplate"; dir = 4 @@ -76602,8 +76686,8 @@ }) "ctn" = ( /obj/structure/bed, -/obj/effect/decal/cleanable/blood/gibs/limb, -/obj/effect/decal/cleanable/blood, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/blood/gibs/old, /turf/open/floor/plating, /area/maintenance/aft{ name = "Aft Maintenance" @@ -78064,6 +78148,7 @@ /obj/structure/sign/nosmoking_2{ pixel_y = 32 }, +/obj/machinery/portable_atmospherics/canister/bz, /turf/open/floor/plasteel{ dir = 5; icon_state = "warning" @@ -78119,10 +78204,7 @@ /turf/open/space, /area/space) "cvy" = ( -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /turf/open/space, /area/space) "cvz" = ( @@ -79098,7 +79180,6 @@ pixel_x = -2; pixel_y = 4 }, -/obj/item/weapon/circuitboard/computer/teleporter, /turf/open/floor/plasteel{ icon_state = "cafeteria"; dir = 5 @@ -80503,6 +80584,7 @@ /obj/machinery/light_switch{ pixel_y = -23 }, +/obj/machinery/portable_atmospherics/canister/bz, /turf/open/floor/plasteel{ dir = 10; icon_state = "warning" @@ -81487,7 +81569,7 @@ pixel_y = 25 }, /obj/machinery/atmospherics/components/unary/portables_connector/visible, -/obj/machinery/portable_atmospherics/canister, +/obj/machinery/portable_atmospherics/canister/oxygen, /turf/open/floor/plasteel{ dir = 2; icon_state = "warning" @@ -81771,6 +81853,7 @@ }, /obj/machinery/power/apc{ dir = 4; + locked = 0; name = "Cloning Lab APC"; pixel_x = 24; pixel_y = 0 @@ -83886,8 +83969,14 @@ }, /area/medical/morgue) "cEt" = ( -/turf/open/floor/plating, -/area/construction) +/obj/structure/sign/securearea{ + desc = "A warning sign which reads 'HIGH VOLTAGE'"; + icon_state = "shock"; + name = "HIGH VOLTAGE"; + pixel_y = 0 + }, +/turf/closed/wall/r_wall, +/area/engine/engineering) "cEu" = ( /obj/machinery/firealarm{ dir = 2; @@ -90519,7 +90608,7 @@ pixel_x = 4 }, /obj/item/organ/heart, -/obj/item/device/soulstone/anybody, +/obj/item/device/soulstone/anybody/chaplain, /obj/effect/landmark{ name = "revenantspawn" }, @@ -91024,31 +91113,27 @@ "cPb" = ( /obj/item/candle, /obj/machinery/light_switch{ - pixel_x = 6; + pixel_x = 0; pixel_y = 25 }, /obj/effect/decal/cleanable/cobweb2, /obj/structure/table/wood, -/obj/machinery/button/door{ - id = "chapel_shutters"; - name = "chapel shutters control"; - pixel_x = -6; - pixel_y = 25; - req_access_txt = "0" - }, /turf/open/floor/plasteel{ icon_state = "vault" }, /area/chapel/main) "cPc" = ( -/obj/structure/grille, -/obj/structure/window/fulltile, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "chapel_shutters"; - name = "chapel shutters" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 }, -/turf/open/floor/plating, -/area/chapel/main) +/obj/structure/noticeboard{ + pixel_y = 32 + }, +/turf/open/floor/plasteel{ + icon_state = "neutral"; + dir = 1 + }, +/area/hallway/primary/central) "cPd" = ( /obj/structure/table, /obj/item/candle, @@ -95007,6 +95092,11 @@ /obj/machinery/light/small{ dir = 8 }, +/obj/machinery/camera{ + c_tag = "Xenobiology Lab - Pen #1"; + dir = 4; + network = list("SS13","RD","Xeno") + }, /turf/open/floor/engine, /area/toxins/xenobiology) "cVE" = ( @@ -95104,6 +95194,11 @@ /obj/machinery/light/small{ dir = 4 }, +/obj/machinery/camera{ + c_tag = "Xenobiology Lab - Pen #2"; + dir = 8; + network = list("SS13","RD","Xeno") + }, /turf/open/floor/engine, /area/toxins/xenobiology) "cVN" = ( @@ -96177,10 +96272,9 @@ /turf/closed/indestructible/opshuttle, /area/shuttle/syndicate) "cXn" = ( -/obj/structure/closet/cardboard, -/turf/open/floor/plating{ - icon_state = "platingdmg3" - }, +/obj/machinery/atmospherics/components/unary/portables_connector/visible, +/obj/item/weapon/storage/box/lights/mixed, +/turf/open/floor/plating, /area/maintenance/starboard) "cXo" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ @@ -97776,8 +97870,6 @@ }, /area/shuttle/abandoned) "daw" = ( -/obj/structure/frame/machine, -/obj/item/weapon/circuitboard/machine/cyborgrecharger, /obj/effect/decal/cleanable/oil, /obj/effect/decal/cleanable/dirt{ desc = "A thin layer of dust coating the floor."; @@ -97945,7 +98037,6 @@ }, /area/shuttle/abandoned) "daO" = ( -/obj/structure/frame/computer, /obj/effect/decal/cleanable/cobweb, /obj/effect/decal/cleanable/dirt{ desc = "A thin layer of dust coating the floor."; @@ -98033,43 +98124,21 @@ }, /area/shuttle/abandoned) "daW" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" +/obj/machinery/light/small{ + dir = 8 }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/structure/frame/machine{ - desc = "A NanoTrasen hypersleep chamber - this one appears broken. There are exposed bolts for easy detachment using a wrench."; - dir = 1; - icon = 'icons/obj/Cryogenic2.dmi'; - icon_state = "sleeper-o"; - name = "broken hypersleep chamber"; - pixel_y = 0 - }, -/turf/open/floor/plasteel/shuttle{ - icon_state = "shuttlefloor3" - }, -/area/shuttle/abandoned) +/obj/structure/easel, +/turf/open/floor/plating, +/area/maintenance/starboard) "daX" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" +/obj/structure/lattice, +/obj/machinery/camera/emp_proof{ + c_tag = "Aft Arm - Far"; + dir = 8; + network = list("Singulo") }, -/obj/structure/frame/machine{ - desc = "A NanoTrasen hypersleep chamber - this one appears broken. There are exposed bolts for easy detachment using a wrench."; - dir = 1; - icon = 'icons/obj/Cryogenic2.dmi'; - icon_state = "sleeper-o"; - name = "broken hypersleep chamber"; - pixel_y = 0 - }, -/turf/open/floor/plasteel/shuttle{ - icon_state = "shuttlefloor3" - }, -/area/shuttle/abandoned) +/turf/open/space, +/area/space) "daY" = ( /obj/structure/chair/office/light{ dir = 4 @@ -98345,43 +98414,17 @@ }, /area/shuttle/abandoned) "dbt" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" +/obj/machinery/camera/emp_proof{ + c_tag = "Aft Arm - Near"; + dir = 4; + network = list("Singulo") }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/structure/frame/machine{ - desc = "A NanoTrasen hypersleep chamber - this one appears broken. There are exposed bolts for easy detachment using a wrench."; - dir = 2; - icon = 'icons/obj/Cryogenic2.dmi'; - icon_state = "sleeper-o"; - name = "broken hypersleep chamber"; - pixel_y = 3 - }, -/turf/open/floor/plasteel/shuttle{ - icon_state = "shuttlefloor3" - }, -/area/shuttle/abandoned) +/obj/structure/lattice, +/turf/open/space, +/area/space) "dbu" = ( -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/structure/frame/machine{ - desc = "A NanoTrasen hypersleep chamber - this one appears broken. There are exposed bolts for easy detachment using a wrench."; - dir = 2; - icon = 'icons/obj/Cryogenic2.dmi'; - icon_state = "sleeper-o"; - name = "broken hypersleep chamber"; - pixel_y = 3 - }, -/turf/open/floor/plasteel/shuttle{ - icon_state = "shuttlefloor3" - }, -/area/shuttle/abandoned) +/turf/closed/wall/r_wall, +/area/security/checkpoint/engineering) "dbv" = ( /obj/structure/chair/office/light, /obj/effect/decal/cleanable/dirt{ @@ -98466,15 +98509,9 @@ }, /area/shuttle/abandoned) "dbC" = ( -/obj/structure/frame/computer, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/plasteel/shuttle{ - icon_state = "shuttlefloor3" - }, -/area/shuttle/abandoned) +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/engine/engineering) "dbD" = ( /obj/structure/table, /obj/item/device/radio/off{ @@ -98644,7 +98681,6 @@ }, /area/shuttle/abandoned) "dbS" = ( -/obj/structure/frame/machine, /obj/effect/decal/cleanable/oil, /obj/effect/decal/cleanable/dirt{ desc = "A thin layer of dust coating the floor."; @@ -98655,16 +98691,13 @@ }, /area/shuttle/abandoned) "dbT" = ( -/obj/structure/frame/machine, -/obj/item/weapon/circuitboard/machine/autolathe, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" +/obj/structure/reagent_dispensers/watertank, +/obj/structure/window/reinforced{ + dir = 8 }, -/turf/open/floor/plasteel/shuttle{ - icon_state = "shuttlefloor3" - }, -/area/shuttle/abandoned) +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/engine/engineering) "dbU" = ( /obj/machinery/sleeper{ dir = 4; @@ -98788,26 +98821,15 @@ /turf/open/floor/plasteel/shuttle, /area/shuttle/abandoned) "dcd" = ( -/obj/structure/frame/machine, -/obj/item/weapon/circuitboard/machine/chem_dispenser, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/plasteel/shuttle{ - icon_state = "shuttlefloor3" - }, -/area/shuttle/abandoned) +/obj/structure/closet/firecloset, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/engine/engineering) "dce" = ( -/obj/structure/frame/machine, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/plasteel/shuttle{ - icon_state = "shuttlefloor3" - }, -/area/shuttle/abandoned) +/obj/machinery/portable_atmospherics/canister/air, +/obj/effect/spawner/lootdrop/maintenance, +/turf/open/floor/plating, +/area/engine/engineering) "dcf" = ( /obj/structure/chair/office/light, /obj/effect/decal/cleanable/dirt{ @@ -99275,12 +99297,11 @@ }, /area/shuttle/escape) "dcR" = ( -/obj/machinery/door/airlock/shuttle{ - name = "Emergency Shuttle Airlock"; - req_access_txt = "2" +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12" }, -/turf/open/floor/plasteel/shuttle, -/area/shuttle/escape) +/turf/open/floor/plating, +/area/engine/break_room) "dcS" = ( /obj/structure/closet/crate/medical{ name = "medical crate" @@ -99362,9 +99383,6 @@ }, /area/shuttle/escape) "dcY" = ( -/obj/machinery/door/airlock/shuttle{ - name = "Emergency Shuttle Cargo Bay Airlock" - }, /obj/docking_port/stationary{ dheight = 0; dir = 4; @@ -99381,6 +99399,9 @@ height = 14; width = 25 }, +/obj/machinery/door/airlock/shuttle{ + name = "Emergency Shuttle Airlock" + }, /turf/open/floor/plasteel/shuttle, /area/shuttle/escape) "dcZ" = ( @@ -100407,13 +100428,12 @@ /turf/open/floor/wood, /area/crew_quarters/bar) "dfi" = ( -/obj/machinery/camera/emp_proof{ - c_tag = "Aft Arm - Near"; - dir = 4; - network = list("Singulo") +/obj/machinery/keycard_auth{ + pixel_x = 26; + pixel_y = 0 }, -/turf/open/floor/plating/airless, -/area/space) +/turf/open/floor/carpet, +/area/crew_quarters/heads) "dfj" = ( /obj/structure/cable{ icon_state = "0-2"; @@ -100457,14 +100477,18 @@ /turf/open/floor/plating, /area/maintenance/starboard) "dfo" = ( -/turf/open/floor/wood, -/area/security/vacantoffice) +/obj/item/hand_labeler_refill, +/obj/structure/easel, +/turf/open/floor/plating, +/area/maintenance/fpmaint2{ + name = "Port Maintenance" + }) "dfp" = ( -/turf/open/floor/plasteel{ - icon_state = "cafeteria"; - dir = 5 - }, -/area/crew_quarters/kitchen) +/obj/structure/easel, +/turf/open/floor/plating, +/area/maintenance/aft{ + name = "Aft Maintenance" + }) "dfq" = ( /turf/open/floor/plasteel, /area/ai_monitored/storage/eva{ @@ -100476,16 +100500,27 @@ }, /area/crew_quarters/kitchen) "dfs" = ( -/obj/structure/chair/stool, -/turf/open/floor/wood, -/area/maintenance/aft{ - name = "Aft Maintenance" - }) +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/camera{ + c_tag = "Xenobiology Lab - Pen #3"; + dir = 4; + network = list("SS13","RD","Xeno") + }, +/turf/open/floor/engine, +/area/toxins/xenobiology) "dft" = ( -/turf/open/floor/wood, -/area/maintenance/aft{ - name = "Aft Maintenance" - }) +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Xenobiology Lab - Pen #4"; + dir = 8; + network = list("SS13","RD","Xeno") + }, +/turf/open/floor/engine, +/area/toxins/xenobiology) "dfu" = ( /turf/open/floor/wood{ icon_state = "wood-broken6" @@ -100504,23 +100539,27 @@ }, /area/medical/morgue) "dfw" = ( -/turf/open/floor/plasteel{ - icon_state = "dark" +/obj/machinery/light/small{ + dir = 8 }, -/area/medical/morgue) +/obj/machinery/camera{ + c_tag = "Xenobiology Lab - Pen #5"; + dir = 4; + network = list("SS13","RD","Xeno") + }, +/turf/open/floor/engine, +/area/toxins/xenobiology) "dfx" = ( -/obj/structure/window/reinforced{ +/obj/machinery/light/small{ dir = 4 }, -/obj/structure/table/wood, -/obj/item/clothing/under/burial, -/obj/item/clothing/under/burial, -/obj/item/clothing/under/burial, -/obj/item/clothing/under/burial, -/obj/item/clothing/under/burial, -/obj/item/clothing/under/burial, -/turf/open/floor/plating, -/area/chapel/main) +/obj/machinery/camera{ + c_tag = "Xenobiology Lab - Pen #6"; + dir = 8; + network = list("SS13","RD","Xeno") + }, +/turf/open/floor/engine, +/area/toxins/xenobiology) "dfy" = ( /turf/open/floor/engine/vacuum, /area/atmos) @@ -109770,9 +109809,9 @@ dai dav daE dai -daX +daU dbi -dbu +daU dai cZz cZK @@ -110027,13 +110066,13 @@ dah dau daD dai -daW +daV dbh -dbt +daV dbA daa dbS -dcd +daU dcr cZy aaa @@ -110546,8 +110585,8 @@ dbj cZS dai daE -dbT -dce +daU +daU dcs cZy aaa @@ -110798,9 +110837,9 @@ dal dau daG dai -daX +daU dbm -dbu +daU dai cZz cZK @@ -111055,9 +111094,9 @@ dak daw daa dai -daX +daU dbl -dbt +daV dai dbJ dbU @@ -111829,7 +111868,7 @@ daO daY dai dbv -dbC +daU cZy cLU dcj @@ -113878,10 +113917,10 @@ bRQ asj alQ bVz -bVC -bVC -bVC -bVC +bVz +bVz +bVz +bVz aaa aaf aaa @@ -114905,11 +114944,11 @@ aLU bRT aLU bUA -bVC -bVC -bVC -bVC -bVC +bVz +bVz +bVz +bVz +bVz aaa aaf aaa @@ -118505,7 +118544,7 @@ alQ bQr bQH alI -avZ +dfo bVE caW ccb @@ -118954,10 +118993,10 @@ aaf aaf aaf aek -agG -agG -agG -agG +bcN +bcN +bcN +bcN akr ahv ahv @@ -119214,7 +119253,7 @@ aek agH ahx air -agG +bcN aks alI amY @@ -119982,8 +120021,8 @@ aaf aaf aaf aek -agG -agG +bcN +bcN agG agG aiu @@ -120028,8 +120067,8 @@ bmc bdr bpS bsj -buz -bwi +apI +bwh bye bzZ bBI @@ -120041,7 +120080,7 @@ bJY bLH bNs bOU -bwi +bwh bSb bTt bUK @@ -120285,13 +120324,13 @@ bmd bnY bpS bsj -buz +avT bwj -byf -byf -byf -byf -byf +bFa +bFa +bFa +bFa +bFa bGD bFa bFa @@ -120799,12 +120838,12 @@ bmf bbS bpS bsj -buz -bwi -byh -byh +awY bwh -bDx +azv +byh +bIC +bKa byf bGF bIz @@ -120812,7 +120851,7 @@ bJZ bBI bNu bBI -bwi +bwh bSe bSd bDw @@ -120865,7 +120904,7 @@ cOU cRS cRS cSP -dfx +cRS cOU cUb cOU @@ -121064,13 +121103,13 @@ bwh bDy byf bGF -bBI +bIA bJZ bBI bNu bOX bwh -bSf +bPc bTv bUN bSd @@ -121315,13 +121354,13 @@ bqb bsj buJ bwh -byi +aAQ bAa bBK bBI byf -bGF -bBI +bGH +bIB bKa bLI bNv @@ -121577,9 +121616,9 @@ bAb bwh bDz byf -bGF +byf bBI -bKb +bSf bBI bBI bOZ @@ -121768,7 +121807,7 @@ aaa aaf aaa aaa -aaQ +aaa aax aax aax @@ -121834,8 +121873,8 @@ bwh bwh bDA byf -bGF -bBI +byf +bKb bKc bLJ bBI @@ -122090,13 +122129,13 @@ byi bAa bBL bDB -bFa +aOo bGG -bIA +bDC bKd -bLK -bNw -bPb +bBI +bBI +bBI bQy bSi bTy @@ -122343,17 +122382,17 @@ bpS bsu buz bwh -byj +aGc bAb bwh -bDC -byf -bGF -bIB bwh bwh bwh bwh +bLL +bNx +bNw +bPb bwh bSj bTz @@ -122604,13 +122643,13 @@ bwh bwh bwh bwi -bwj -bGH -bwi +bbn +aXs +bwh +bwh +bwh +bwh bwh -bLL -bNx -bPc bwh bwh bwh @@ -122862,8 +122901,8 @@ bAc bBM bwm bFb -buM bwm +bLK bFb bwm bwm @@ -123120,7 +123159,7 @@ bcf bcf bFc bGI -bIC +bcf bKe bcf bcf @@ -123373,11 +123412,11 @@ bsy bwo bgR bmm -bgR +bID bgR bFd bGJ -bID +bKf bKf bLM bKf @@ -124983,7 +125022,7 @@ cOU dcy dcF dcF -dcR +dcB dcz dcY dcF @@ -124993,7 +125032,7 @@ dcz dcK dcB dcz -dcR +dcB dcF dcz dcF @@ -125226,10 +125265,10 @@ cLJ cKP cNv bVE -cPc +cOU cPT cQB -cPc +cOU cOU cSd cSB @@ -125489,7 +125528,7 @@ cQC cPd cOU cOU -cPc +cOU cOU cOU aaa @@ -125682,7 +125721,7 @@ bdK bol bfm bsF -buS +dfi bww bys bmn @@ -127498,7 +127537,7 @@ bQM bSu bTL bNI -bWb +cPc bXr bYE cad @@ -129617,7 +129656,7 @@ cTC cTC cTC cVt -cVD +dfw cVB cTC cTC @@ -129870,7 +129909,7 @@ cVD cVN cVo cVt -cVD +dfs cVN cVo cVs @@ -132954,7 +132993,7 @@ cVM cVY cVo cVN -cVM +dft cVY cVo cVB @@ -133215,7 +133254,7 @@ cTC cTC cTC cVB -cVM +dfx cVY cTC cTC @@ -133960,7 +133999,7 @@ cIx cJs cKt chP -bZQ +dfp cgG ciY bVE @@ -138265,7 +138304,7 @@ avN aXR aZH baX -bcN +apF bee bfH aXR @@ -138772,7 +138811,7 @@ aMR aOg apj aQW -asL +daW aTz alw avN @@ -140598,9 +140637,9 @@ bFT bHN bJw bKQ -bzf +aaQ +atw bOj -atn bRw bTc bUq @@ -140855,9 +140894,9 @@ bEn bHO bJx bKR -bzf +aiT +atw bOk -apk bRx apk aqy @@ -141112,9 +141151,9 @@ bFU bHP bJy bKS -bzf -cXn -apk +bDx +atw +bOl bRy apk bUr @@ -141369,9 +141408,9 @@ bEn bHQ bJz bKT -bzf -bOl -bQa +bDx +atw +cXn bRz bTd apk @@ -141834,7 +141873,7 @@ aaf aaf acn alx -apn +bes apk apk apk @@ -143147,15 +143186,15 @@ aCf ayo azn aZR -aZR -aZR -aZR -aZR -aZR +dbu +dbu +dbu +dbu +dbu bjQ bly bng -bfV +bjF brj bjF bjF @@ -143403,12 +143442,12 @@ aDp aVe ayo aYd -aZS -bbn +ayp +ayo bdd -bes -bfV -bhH +bdf +dcR +bjR bjR bjR bjF @@ -143663,11 +143702,11 @@ azn ayo ayo aKe -ayo -bfV +dbT +bjF bhI bjR -bjR +bhH bjF bsD brm @@ -143901,8 +143940,8 @@ ayq azp aaf aCh +aaf aIK -aoa aDq aDq aDq @@ -143912,16 +143951,16 @@ aDq aDq aDq aDq -dfi aIK -aaa +aaf +dbt aaf aYe aZT ayo -aKe -ayo -bfV +dbC +dcd +bjF bhJ bjS blz @@ -144156,7 +144195,7 @@ avP atw ayr azq -aaf +aoa aaf aIM aLy @@ -144172,13 +144211,13 @@ aLy aLy dfk aaf -aaf +aoa azq ayr ayo bde -ayo -bnn +dce +brr bhK cXk bhK @@ -144434,8 +144473,8 @@ aYf aZU ayo aKe -ayo -bnn +aBZ +brr bhK cWO bhK @@ -144669,7 +144708,7 @@ apk avN atw ayr -azq +bVC aAO aaa aIN @@ -144687,11 +144726,11 @@ dfj dfl aaa aWC -azq +bVC ayr ayo bdf -ayo +aBZ aaf bhL bjV @@ -144947,8 +144986,8 @@ azq ayq azu ayo -aKe -ayo +dbC +aBZ aaf aaa cYF @@ -145205,7 +145244,7 @@ ayr ayo ayo aKe -ayo +aBZ aaf aaf aaf @@ -145436,7 +145475,7 @@ apu apu apu apu -atw +alw apk anU atw @@ -145462,7 +145501,7 @@ aYg ayo bbo aKe -ayo +aBZ aaf aaa aaa @@ -145692,7 +145731,7 @@ aaf aaa aaa aaa -atw +alw auL avD atw @@ -145719,7 +145758,7 @@ ayr ayo ayo bdg -ayo +aBZ aaf aaa aaa @@ -145975,7 +146014,7 @@ azq ayt aZT ayo -aKe +dbC aDq aaf aaa @@ -146206,12 +146245,12 @@ aaa aaa aaf aaa -atw +alw auN avS atw ayr -azq +bVC aAP aaa aIN @@ -146229,11 +146268,11 @@ dfj dfl aaa azq -azq +bVC ayr ayo bdh -ayo +aBZ aaf aaf aaa @@ -146463,8 +146502,8 @@ aaa aaa aaf aaa -atw -atw +alw +alw atx atw ayt @@ -146490,8 +146529,8 @@ aYf azu ayo bdi -ayo -ayo +aBZ +aBZ aaf aaa aaa @@ -146721,13 +146760,13 @@ aaa acn acn atx -anV -avT +bRk +avS atw ayu azq azq -aaa +aaf aIL aoa aoa @@ -146746,7 +146785,7 @@ azq azq ayu ayo -bdh +aKg aZS bdi acn @@ -146977,14 +147016,14 @@ aaf aaf aaf aaf -atw -atw +alw +alw atx -awY +atw ayu ayu -aAQ -aoa +azq +aaa aLw aSG aSG @@ -146998,14 +147037,14 @@ aTN aSG aSG dfm -aoa +aaf aWD ayu ayu -aHA +ayo bdi -ayo -ayo +aBZ +aBZ aaf aaa aaa @@ -147239,25 +147278,25 @@ aaf acn atw ayo -azv ayo -azq -aoa -aoa -aaf -aaf -aoa -apy -aoa -aaf -aaf -aaf -aaf -aaf -aaf -azq ayo -azv +aaa +coC +aIK +aaf +aaa +aaa +aaf +aIK +aaf +aaa +aaa +aaf +aIK +daX +aaa +ayo +ayo ayo ayo acn @@ -147496,7 +147535,7 @@ aaf acn aaf aaf -azw +aaf ayo ayo ayo @@ -147752,25 +147791,25 @@ aaa aaa aaa aaa +aaa aaf -aaf +ayo azw azw azw -azw -aGc +aHA azw azw azw +cEt azw azw azw -azw -aGc -azw +aHA azw azw azw +ayo aaf aaa aaf @@ -148271,17 +148310,17 @@ aaa aaa aaa aaa -aaa +aaf aaf aaa aaa aaf -aaa +aaf aaa aaa aaa aaf -aaa +aaf aaa aaa aaa @@ -148533,7 +148572,7 @@ aaf aaa aaa aaa -aaa +aaf aaa aaa aaa @@ -149051,7 +149090,7 @@ aaa aaa aaa aaa -aaf +aaa aaa aaa aaa diff --git a/_maps/map_files/TgStation/tgstation.2.1.3.dmm b/_maps/map_files/TgStation/tgstation.2.1.3.dmm index 355c2d64f14..3939c080778 100644 --- a/_maps/map_files/TgStation/tgstation.2.1.3.dmm +++ b/_maps/map_files/TgStation/tgstation.2.1.3.dmm @@ -373,11 +373,8 @@ /turf/closed/wall/r_wall, /area/ai_monitored/security/armory) "aba" = ( -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, /obj/structure/lattice, +/obj/structure/grille/broken, /turf/open/space, /area/space) "abb" = ( @@ -464,21 +461,41 @@ /obj/item/key/security, /turf/open/floor/plasteel{ icon_state = "vault"; - dir = 1 + dir = 8 }, /area/ai_monitored/security/armory) "abn" = ( +/obj/structure/rack, +/obj/item/clothing/suit/armor/vest{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/clothing/suit/armor/vest{ + pixel_y = 0 + }, +/obj/item/clothing/suit/armor/vest{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/clothing/head/helmet{ + layer = 3.00001; + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/clothing/head/helmet{ + layer = 3.00001 + }, +/obj/item/clothing/head/helmet{ + layer = 3.00001; + pixel_x = 3; + pixel_y = -3 + }, /obj/machinery/firealarm{ pixel_y = 24 }, -/obj/structure/closet/secure_closet{ - anchored = 1; - name = "Contraband Locker"; - req_access_txt = "3" - }, /turf/open/floor/plasteel{ icon_state = "vault"; - dir = 1 + dir = 8 }, /area/ai_monitored/security/armory) "abo" = ( @@ -639,14 +656,6 @@ }, /area/security/prison) "abH" = ( -/obj/machinery/camera/motion{ - c_tag = "Armory Motion Sensor"; - dir = 2; - name = "motion-sensitive security camera" - }, -/obj/machinery/airalarm{ - pixel_y = 23 - }, /obj/structure/table, /obj/item/weapon/storage/box/chemimp{ pixel_x = 6 @@ -657,74 +666,80 @@ /obj/item/weapon/storage/lockbox/loyalty, /turf/open/floor/plasteel{ icon_state = "vault"; - dir = 1 + dir = 8 }, /area/ai_monitored/security/armory) "abI" = ( /obj/structure/rack, -/obj/structure/window/reinforced{ +/obj/item/clothing/suit/armor/riot{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/clothing/suit/armor/riot, +/obj/item/clothing/suit/armor/riot{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/machinery/light{ dir = 1 }, -/obj/item/clothing/suit/armor/bulletproof{ - pixel_x = 3; - pixel_y = -1 - }, -/obj/item/clothing/suit/armor/bulletproof{ - pixel_y = -1 - }, -/obj/item/clothing/suit/armor/bulletproof{ +/obj/item/clothing/head/helmet/riot{ pixel_x = -3; - pixel_y = -1 + pixel_y = 3 }, -/obj/item/clothing/head/helmet/alt{ - layer = 3.00001; - pixel_x = 3 +/obj/item/clothing/head/helmet/riot, +/obj/item/clothing/head/helmet/riot{ + pixel_x = 3; + pixel_y = -3 }, -/obj/item/clothing/head/helmet/alt{ - layer = 3.00001 +/obj/item/weapon/shield/riot{ + pixel_x = -3; + pixel_y = 3 }, -/obj/item/clothing/head/helmet/alt{ - layer = 3.00001; - pixel_x = -3 +/obj/item/weapon/shield/riot, +/obj/item/weapon/shield/riot{ + pixel_x = 3; + pixel_y = -3 }, /turf/open/floor/plasteel{ icon_state = "vault"; - dir = 1 + dir = 8 }, /area/ai_monitored/security/armory) "abJ" = ( /obj/structure/rack, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/item/clothing/suit/armor/vest{ - pixel_x = 3; - pixel_y = -1 - }, -/obj/item/clothing/suit/armor/vest{ - pixel_y = -1 - }, -/obj/item/clothing/suit/armor/vest{ +/obj/item/clothing/suit/armor/bulletproof{ pixel_x = -3; - pixel_y = -1 + pixel_y = 3 }, -/obj/item/clothing/head/helmet{ +/obj/item/clothing/suit/armor/bulletproof{ + pixel_y = 0 + }, +/obj/item/clothing/suit/armor/bulletproof{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/clothing/head/helmet/alt{ layer = 3.00001; - pixel_x = 3 + pixel_x = -3; + pixel_y = 3 }, -/obj/item/clothing/head/helmet{ +/obj/item/clothing/head/helmet/alt{ layer = 3.00001 }, -/obj/item/clothing/head/helmet{ +/obj/item/clothing/head/helmet/alt{ layer = 3.00001; - pixel_x = -3 + pixel_x = 3; + pixel_y = -3 + }, +/obj/machinery/camera/motion{ + c_tag = "Armory Motion Sensor"; + dir = 2; + name = "motion-sensitive security camera" }, /turf/open/floor/plasteel{ icon_state = "vault"; - dir = 1 + dir = 8 }, /area/ai_monitored/security/armory) "abK" = ( @@ -782,17 +797,9 @@ }, /area/security/prison) "abN" = ( -/obj/structure/rack, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/machinery/light{ - dir = 1 - }, -/obj/item/clothing/suit/armor/laserproof, +/obj/structure/closet/secure_closet/lethalshots, /turf/open/floor/plasteel{ - icon_state = "vault"; - dir = 1 + icon_state = "dark" }, /area/ai_monitored/security/armory) "abO" = ( @@ -808,27 +815,14 @@ /area/security/main) "abQ" = ( /obj/structure/rack, -/obj/item/clothing/suit/armor/riot, -/obj/item/clothing/head/helmet/riot, -/obj/item/clothing/suit/armor/riot, -/obj/item/clothing/head/helmet/riot, -/obj/item/clothing/suit/armor/riot, -/obj/item/clothing/head/helmet/riot, -/obj/item/weapon/shield/riot{ - pixel_x = 4; - pixel_y = 0 - }, -/obj/item/weapon/shield/riot, -/obj/item/weapon/shield/riot{ - pixel_x = -4; - pixel_y = 0 - }, -/obj/structure/window/reinforced{ - dir = 1 +/obj/machinery/airalarm{ + pixel_y = 23 }, +/obj/item/weapon/gun/energy/ionrifle, +/obj/item/clothing/suit/armor/laserproof, /turf/open/floor/plasteel{ icon_state = "vault"; - dir = 1 + dir = 8 }, /area/ai_monitored/security/armory) "abR" = ( @@ -998,16 +992,9 @@ }, /area/security/prison) "aci" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/closet/secure_closet/lethalshots, +/obj/vehicle/secway, /turf/open/floor/plasteel{ - icon_state = "vault"; - dir = 1 + icon_state = "dark" }, /area/ai_monitored/security/armory) "acj" = ( @@ -1044,7 +1031,7 @@ d2 = 2 }, /turf/open/floor/plasteel{ - dir = 5; + dir = 1; icon_state = "warning" }, /area/ai_monitored/security/armory) @@ -1105,14 +1092,13 @@ /turf/open/floor/carpet, /area/security/hos) "acv" = ( -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 +/obj/structure/closet/secure_closet{ + anchored = 1; + name = "Contraband Locker"; + req_access_txt = "3" }, -/obj/machinery/suit_storage_unit/security, /turf/open/floor/plasteel{ - icon_state = "vault"; - dir = 1 + icon_state = "dark" }, /area/ai_monitored/security/armory) "acw" = ( @@ -1292,18 +1278,24 @@ /area/security/prison) "acL" = ( /turf/open/floor/plasteel{ - dir = 8; + dir = 10; icon_state = "warning" }, /area/ai_monitored/security/armory) "acM" = ( /obj/structure/rack, -/obj/machinery/atmospherics/components/unary/vent_scrubber{ +/obj/item/weapon/gun/energy/gun{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/weapon/gun/energy/gun, +/obj/item/weapon/gun/energy/gun{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/machinery/atmospherics/components/unary/vent_pump{ on = 1 }, -/obj/item/weapon/storage/box/teargas, -/obj/item/weapon/storage/box/handcuffs, -/obj/item/weapon/storage/box/flashbangs, /turf/open/floor/plasteel{ dir = 2; icon_state = "bot" @@ -1503,10 +1495,7 @@ d2 = 2; icon_state = "1-2" }, -/turf/open/floor/plasteel{ - dir = 4; - icon_state = "warning" - }, +/turf/open/floor/plasteel, /area/ai_monitored/security/armory) "adh" = ( /obj/machinery/disposal/bin, @@ -1514,15 +1503,23 @@ /turf/open/floor/carpet, /area/security/hos) "adi" = ( -/obj/machinery/suit_storage_unit/security, +/obj/machinery/flasher/portable, /turf/open/floor/plasteel{ icon_state = "vault"; - dir = 1 + dir = 8 }, /area/ai_monitored/security/armory) "adj" = ( /obj/structure/rack, -/obj/item/weapon/gun/energy/ionrifle, +/obj/item/weapon/gun/energy/gun/advtaser{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/weapon/gun/energy/gun/advtaser, +/obj/item/weapon/gun/energy/gun/advtaser{ + pixel_x = 3; + pixel_y = -3 + }, /turf/open/floor/plasteel{ dir = 2; icon_state = "bot" @@ -1556,7 +1553,10 @@ pixel_y = -26; req_access_txt = "3" }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel{ + icon_state = "delivery"; + name = "floor" + }, /area/ai_monitored/security/armory) "adm" = ( /obj/structure/grille, @@ -2203,34 +2203,30 @@ /area/security/prison) "aes" = ( /obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" + d1 = 4; + d2 = 8; + icon_state = "4-8" }, +/obj/machinery/suit_storage_unit/security, /turf/open/floor/plasteel{ - icon_state = "warningcorner"; - dir = 2 + icon_state = "red" }, /area/ai_monitored/security/armory) "aet" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - on = 1 - }, /turf/open/floor/plasteel{ icon_state = "warningcorner"; dir = 1 }, /area/ai_monitored/security/armory) "aeu" = ( -/obj/vehicle/secway, /obj/structure/cable{ d1 = 1; d2 = 8; icon_state = "1-8" }, +/obj/machinery/suit_storage_unit/security, /turf/open/floor/plasteel{ - dir = 6; - icon_state = "warning" + icon_state = "red" }, /area/ai_monitored/security/armory) "aev" = ( @@ -2560,23 +2556,11 @@ /obj/structure/rack, /obj/item/clothing/mask/gas/sechailer{ pixel_x = -3; - pixel_y = -3 + pixel_y = 3 }, /obj/item/clothing/mask/gas/sechailer, /obj/item/clothing/mask/gas/sechailer{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/item/clothing/mask/gas/sechailer{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/item/clothing/mask/gas/sechailer{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/item/clothing/mask/gas/sechailer{ - pixel_x = -3; + pixel_x = 3; pixel_y = -3 }, /turf/open/floor/plasteel{ @@ -2584,67 +2568,49 @@ }, /area/security/warden) "aeX" = ( -/obj/structure/rack, -/obj/item/weapon/gun/energy/gun{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/weapon/gun/energy/gun, -/obj/item/weapon/gun/energy/gun{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 8 +/obj/structure/grille, +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 }, +/obj/structure/window/reinforced/fulltile, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 5 }, -/turf/open/floor/plasteel{ - icon_state = "vault"; - dir = 1 - }, +/turf/open/floor/plating, /area/ai_monitored/security/armory) "aeY" = ( -/obj/structure/rack, -/obj/item/weapon/gun/energy/gun/advtaser{ - pixel_x = -3; - pixel_y = 3 +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8"; + pixel_y = 0 }, -/obj/item/weapon/gun/energy/gun/advtaser, -/obj/item/weapon/gun/energy/gun/advtaser{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 4 +/obj/machinery/door/window/southleft{ + name = "Armory"; + req_access_txt = "3" }, +/obj/machinery/door/firedoor, /turf/open/floor/plasteel{ - icon_state = "vault"; - dir = 1 + dir = 10; + icon_state = "warning" }, /area/ai_monitored/security/armory) "aeZ" = ( -/obj/structure/rack, -/obj/item/weapon/gun/energy/laser{ - pixel_x = -3; - pixel_y = 3 +/obj/structure/grille, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" }, -/obj/item/weapon/gun/energy/laser, -/obj/item/weapon/gun/energy/laser{ - pixel_x = 3; - pixel_y = -3 +/obj/structure/cable{ + icon_state = "0-4"; + d2 = 4 }, -/obj/structure/window/reinforced, +/obj/structure/window/reinforced/fulltile, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 10 }, -/turf/open/floor/plasteel{ - icon_state = "vault"; - dir = 1 - }, +/turf/open/floor/plating, /area/ai_monitored/security/armory) "afa" = ( /obj/machinery/door/window/southleft{ @@ -2666,6 +2632,12 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 10 }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8"; + tag = "" + }, /turf/open/floor/plasteel{ dir = 6; icon_state = "warning" @@ -2817,6 +2789,15 @@ possible_destinations = "pod_asteroid3"; shuttleId = "pod3" }, +/obj/structure/chair{ + dir = 4 + }, +/obj/machinery/status_display{ + density = 0; + layer = 3; + pixel_x = 0; + pixel_y = 32 + }, /turf/open/floor/plasteel/shuttle, /area/shuttle/pod_3) "afr" = ( @@ -2827,6 +2808,9 @@ pixel_x = 6; pixel_y = -32 }, +/obj/structure/chair{ + dir = 4 + }, /turf/open/floor/plasteel/shuttle, /area/shuttle/pod_3) "afs" = ( @@ -3287,16 +3271,36 @@ }, /area/security/warden) "agq" = ( +/obj/machinery/door/firedoor, /obj/machinery/door/window/southleft{ + base_state = "right"; + icon_state = "right"; name = "Armory"; req_access_txt = "3" }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8"; + tag = "" }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/light{ + dir = 4; + icon_state = "tube1" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel{ - dir = 10; + dir = 2; icon_state = "warning" }, /area/ai_monitored/security/armory) @@ -3594,6 +3598,12 @@ /area/security/warden) "agV" = ( /obj/machinery/hologram/holopad, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, /turf/open/floor/plasteel{ icon_state = "showroomfloor" }, @@ -3610,11 +3620,6 @@ "agX" = ( /obj/structure/table, /obj/machinery/recharger, -/obj/machinery/atmospherics/components/unary/vent_scrubber{ - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, /turf/open/floor/plasteel{ icon_state = "showroomfloor" }, @@ -4354,6 +4359,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, +/obj/item/weapon/book/manual/wiki/security_space_law, /turf/open/floor/plasteel{ icon_state = "showroomfloor" }, @@ -4713,6 +4719,14 @@ name = "Reception Desk"; req_access_txt = "63" }, +/obj/item/weapon/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/weapon/pen{ + pixel_x = 4; + pixel_y = 4 + }, /turf/open/floor/plasteel{ icon_state = "showroomfloor" }, @@ -5106,7 +5120,7 @@ /turf/open/floor/plasteel, /area/security/brig) "ajC" = ( -/obj/effect/landmark/event_spawn, +/obj/item/weapon/storage/toolbox/drone, /turf/open/floor/plasteel{ dir = 8; icon_state = "warning" @@ -6070,7 +6084,7 @@ /area/security/processing) "alt" = ( /obj/structure/reagent_dispensers/peppertank, -/turf/closed/wall, +/turf/closed/wall/r_wall, /area/ai_monitored/security/armory) "alu" = ( /obj/machinery/nuclearbomb/selfdestruct{ @@ -6364,9 +6378,12 @@ /turf/open/floor/plating, /area/maintenance/fpmaint2) "alX" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/maintenance/fpmaint2) +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/portable_atmospherics/canister/bz, +/turf/open/floor/plasteel, +/area/atmos) "alY" = ( /obj/machinery/door/airlock/shuttle{ name = "Labor Shuttle Airlock"; @@ -6656,8 +6673,11 @@ /turf/open/floor/plating, /area/maintenance/auxsolarport) "amB" = ( -/turf/open/floor/plating, -/area/security/prison) +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel/shuttle, +/area/shuttle/escape) "amC" = ( /turf/open/floor/plating, /area/maintenance/fpmaint2) @@ -6765,7 +6785,6 @@ pixel_x = -3; pixel_y = -2 }, -/obj/item/weapon/storage/firstaid/regular, /turf/open/floor/plasteel{ icon_state = "showroomfloor" }, @@ -7059,8 +7078,10 @@ /obj/structure/chair{ dir = 4 }, -/turf/open/floor/plasteel/shuttle, -/area/shuttle/labor) +/turf/open/floor/plasteel/shuttle{ + icon_state = "shuttlefloor3" + }, +/area/shuttle/escape) "anr" = ( /obj/structure/chair{ dir = 8 @@ -8712,11 +8733,11 @@ /turf/open/floor/wood, /area/lawoffice) "arc" = ( -/obj/structure/chair{ - dir = 4 +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + on = 1 }, -/turf/open/floor/wood, -/area/lawoffice) +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) "ard" = ( /obj/structure/grille, /obj/machinery/door/poddoor/preopen{ @@ -10698,14 +10719,18 @@ }, /area/crew_quarters/fitness) "avB" = ( -/obj/structure/chair{ - dir = 4 +/obj/structure/grille, +/obj/structure/cable{ + icon_state = "0-2"; + d2 = 2 }, -/turf/open/floor/plasteel{ - icon_state = "red"; - dir = 4 +/obj/structure/window/reinforced/fulltile, +/obj/structure/cable{ + d2 = 8; + icon_state = "0-8" }, -/area/crew_quarters/fitness) +/turf/open/floor/plating, +/area/ai_monitored/security/armory) "avC" = ( /obj/structure/chair{ dir = 8 @@ -11257,10 +11282,23 @@ /turf/open/floor/plating, /area/maintenance/fsmaint2) "awN" = ( -/turf/open/floor/plasteel{ - icon_state = "floorgrime" +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" }, -/area/security/prison) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/security/warden) "awO" = ( /obj/structure/cable{ d1 = 4; @@ -12466,10 +12504,7 @@ name = "\improper Garden" }) "azr" = ( -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /turf/open/floor/plating, /area/maintenance/fsmaint2) "azs" = ( @@ -14002,10 +14037,7 @@ /turf/open/floor/plating, /area/maintenance/fsmaint2) "aCA" = ( -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /obj/structure/cable{ d1 = 1; d2 = 8; @@ -14640,7 +14672,14 @@ /obj/structure/mirror{ pixel_x = -28 }, -/obj/item/weapon/lipstick/random, +/obj/item/weapon/lipstick/random{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/weapon/lipstick/random{ + pixel_x = -2; + pixel_y = -2 + }, /turf/open/floor/plasteel{ icon_state = "whitehall"; dir = 4 @@ -15937,10 +15976,10 @@ /turf/closed/wall, /area/crew_quarters/theatre) "aGw" = ( -/obj/structure/closet, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, +/obj/structure/closet/secure_closet/freezer/cream_pie, /turf/open/floor/plasteel{ icon_state = "redbluefull" }, @@ -16043,7 +16082,9 @@ /obj/structure/mirror{ pixel_x = -28 }, -/obj/item/weapon/lipstick/random, +/obj/item/device/flashlight/lamp/bananalamp{ + pixel_y = 3 + }, /turf/open/floor/plasteel{ icon_state = "redbluefull" }, @@ -16464,14 +16505,20 @@ }, /area/chapel/main) "aHp" = ( -/obj/structure/chair{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/turf/open/floor/plasteel{ - dir = 1; - icon_state = "chapel" +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2"; + pixel_y = 0 }, -/area/chapel/main) +/obj/structure/filingcabinet/chestdrawer, +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/security/warden) "aHq" = ( /obj/structure/grille, /obj/structure/window/reinforced/fulltile, @@ -16645,7 +16692,7 @@ /turf/open/floor/plasteel, /area/gateway) "aHK" = ( -/obj/structure/closet, +/obj/structure/closet/secure_closet/freezer/cream_pie, /turf/open/floor/plasteel{ icon_state = "redbluefull" }, @@ -16797,7 +16844,14 @@ icon_state = "alarm0"; pixel_x = -22 }, -/obj/item/weapon/storage/crayons, +/obj/item/weapon/storage/crayons{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/weapon/reagent_containers/food/snacks/pie/cream{ + pixel_x = -3; + pixel_y = -3 + }, /turf/open/floor/plasteel{ icon_state = "redbluefull" }, @@ -17101,14 +17155,11 @@ }, /area/chapel/main) "aIF" = ( -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/plasteel{ - dir = 8; - icon_state = "chapel" - }, -/area/chapel/main) +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/obj/structure/cable, +/turf/open/floor/plating, +/area/security/warden) "aIG" = ( /obj/structure/chair{ dir = 1 @@ -29607,8 +29658,9 @@ /turf/open/floor/plating, /area/maintenance/disposal) "bkA" = ( -/turf/open/floor/plating, -/area/maintenance/disposal) +/obj/effect/landmark/event_spawn, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) "bkB" = ( /obj/machinery/button/door{ id = "Disposal Exit"; @@ -30377,8 +30429,14 @@ }, /area/maintenance/disposal) "blT" = ( -/turf/open/floor/plating, -/area/maintenance/fsmaint2) +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) "blU" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/wood, @@ -40651,14 +40709,11 @@ /turf/open/floor/plating, /area/maintenance/asmaint) "bFn" = ( -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, /obj/structure/disposalpipe/segment{ dir = 1; icon_state = "pipe-c" }, +/obj/structure/grille/broken, /turf/open/floor/plating, /area/maintenance/asmaint) "bFo" = ( @@ -40862,6 +40917,7 @@ /obj/machinery/light/small{ dir = 8 }, +/obj/machinery/portable_atmospherics/canister/bz, /turf/open/floor/plasteel{ icon_state = "floorgrime" }, @@ -41604,6 +41660,7 @@ dir = 4; network = list("SS13","RD") }, +/obj/machinery/portable_atmospherics/canister/bz, /turf/open/floor/plasteel{ icon_state = "floorgrime" }, @@ -42012,10 +42069,7 @@ d2 = 2; icon_state = "1-2" }, -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /turf/open/floor/plating, /area/maintenance/asmaint) "bHV" = ( @@ -45106,6 +45160,7 @@ name = "Station Intercom (General)"; pixel_x = -30 }, +/obj/machinery/portable_atmospherics/canister/bz, /turf/open/floor/plasteel, /area/atmos) "bNQ" = ( @@ -46140,10 +46195,7 @@ /area/maintenance/aft) "bPY" = ( /obj/structure/girder, -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /turf/open/floor/plating, /area/maintenance/fsmaint2) "bPZ" = ( @@ -47176,10 +47228,7 @@ /turf/open/floor/wood, /area/maintenance/aft) "bSp" = ( -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /turf/open/floor/plating, /area/maintenance/aft) "bSq" = ( @@ -53952,10 +54001,7 @@ /area/maintenance/asmaint) "cgf" = ( /obj/structure/disposalpipe/segment, -/obj/structure/grille{ - density = 0; - icon_state = "brokengrille" - }, +/obj/structure/grille/broken, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -56864,13 +56910,16 @@ /turf/open/floor/plating, /area/maintenance/asmaint) "cml" = ( -/obj/structure/chair{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" }, -/turf/open/floor/plasteel/shuttle{ - icon_state = "shuttlefloor4" +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" }, -/area/shuttle/syndicate) +/area/security/warden) "cmm" = ( /obj/structure/chair{ dir = 8 @@ -58356,18 +58405,24 @@ }, /area/shuttle/syndicate) "coS" = ( -/obj/docking_port/stationary{ - dheight = 9; - dir = 2; - dwidth = 5; - height = 24; - id = "syndicate_nw"; - name = "south maintenance airlock"; - turf_type = /turf/open/space; - width = 18 +/obj/structure/rack, +/obj/item/weapon/gun/energy/laser{ + pixel_x = -3; + pixel_y = 3 }, -/turf/open/space, -/area/space) +/obj/item/weapon/gun/energy/laser, +/obj/item/weapon/gun/energy/laser{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel{ + dir = 2; + icon_state = "bot" + }, +/area/ai_monitored/security/armory) "coT" = ( /obj/item/pipe{ dir = 4; @@ -58499,7 +58554,7 @@ /obj/structure/table, /turf/open/floor/plasteel{ icon_state = "vault"; - dir = 1 + dir = 8 }, /area/ai_monitored/security/armory) "cph" = ( @@ -58711,8 +58766,11 @@ d2 = 2; icon_state = "1-2" }, -/turf/open/floor/plating, -/area/maintenance/fsmaint2) +/obj/structure/chair/office/dark{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) "cpB" = ( /obj/structure/cable/yellow{ d1 = 4; @@ -59260,11 +59318,31 @@ /turf/open/floor/plating, /area/engine/engineering) "cqG" = ( -/turf/open/floor/plating{ - icon_state = "warnplate"; - dir = 4 +/obj/structure/rack, +/obj/item/weapon/storage/box/rubbershot{ + pixel_x = -3; + pixel_y = 3 }, -/area/engine/engineering) +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/item/weapon/storage/box/rubbershot{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/weapon/storage/box/rubbershot, +/obj/item/weapon/storage/box/rubbershot, +/obj/item/weapon/storage/box/rubbershot{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/weapon/storage/box/rubbershot{ + pixel_x = 3; + pixel_y = -3 + }, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/ai_monitored/security/armory) "cqH" = ( /obj/item/weapon/screwdriver, /turf/open/floor/plating, @@ -62486,11 +62564,21 @@ /turf/open/floor/plasteel/shuttle, /area/shuttle/escape) "cwM" = ( -/obj/structure/chair{ - dir = 4 +/obj/structure/rack, +/obj/item/weapon/storage/box/teargas{ + pixel_x = -3; + pixel_y = 3 }, -/turf/open/floor/plasteel/shuttle, -/area/shuttle/escape) +/obj/item/weapon/storage/box/handcuffs, +/obj/item/weapon/storage/box/flashbangs{ + pixel_x = 3; + pixel_y = -3 + }, +/turf/open/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/ai_monitored/security/armory) "cwN" = ( /obj/machinery/computer/security, /turf/open/floor/plasteel/shuttle{ @@ -62653,13 +62741,21 @@ }, /area/shuttle/escape) "cxk" = ( -/obj/structure/chair{ - dir = 4 +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" }, -/turf/open/floor/plasteel/shuttle{ - icon_state = "shuttlefloor3" +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" }, -/area/shuttle/escape) +/turf/open/floor/plasteel{ + icon_state = "showroomfloor" + }, +/area/security/warden) "cxl" = ( /turf/closed/wall/shuttle{ icon_state = "swall7"; @@ -62713,6 +62809,9 @@ }, /area/shuttle/escape) "cxr" = ( +/obj/structure/chair{ + dir = 4 + }, /obj/structure/window/reinforced{ dir = 8 }, @@ -62771,11 +62870,11 @@ /turf/open/floor/plasteel/shuttle, /area/shuttle/transport) "cxA" = ( -/obj/structure/chair{ - dir = 4 +/turf/open/floor/plasteel{ + dir = 8; + icon_state = "warning" }, -/turf/open/floor/plasteel/shuttle, -/area/shuttle/transport) +/area/ai_monitored/security/armory) "cxB" = ( /obj/structure/chair, /turf/open/floor/plasteel/shuttle, @@ -63609,6 +63708,15 @@ possible_destinations = "pod_asteroid4"; shuttleId = "pod4" }, +/obj/structure/chair{ + dir = 4 + }, +/obj/machinery/status_display{ + density = 0; + layer = 3; + pixel_x = 0; + pixel_y = 32 + }, /turf/open/floor/plasteel/shuttle, /area/shuttle/pod_4) "czM" = ( @@ -63619,6 +63727,9 @@ pixel_x = 6; pixel_y = -32 }, +/obj/structure/chair{ + dir = 4 + }, /turf/open/floor/plasteel/shuttle, /area/shuttle/pod_4) "czN" = ( @@ -93089,8 +93200,8 @@ abm cpg acv adi -adq -aez +adi +aaZ aeW agQ ahv @@ -93346,8 +93457,8 @@ abH acl ajC acL -adL -aez +adi +aaZ agp agT ahx @@ -93601,9 +93712,9 @@ aaa aaZ abn ack -acF -acF +adk adK +cqG aeX ago agS @@ -93859,8 +93970,8 @@ aaZ abJ ack acM -adj adQ +cwM aeZ agr agU @@ -94115,15 +94226,15 @@ aaa aaZ abI ack -acF -acF -adQ +coS +aet +cxA aeY -amN agt -agQ +agt +ahz aie -aiL +aiN ajc ajI akp @@ -94372,15 +94483,15 @@ aaa aaZ abQ ack -acN -adk -aet +adj +arc +blT agq -agt +cml agV -ahz -aih -aiN +cxk +aig +aiM ajc ajI akp @@ -94629,15 +94740,15 @@ aaa aaZ abN ack -acF +bkA acF aes -afa -ags -ags -ahD -aig -aiM +avB +amN +agt +awN +aHp +aIF ajc ajI akp @@ -94886,7 +94997,7 @@ aaf aaZ aci acm -adg +cpA adg aeu alt @@ -94965,7 +95076,7 @@ bJs bKy bLM bLM -bNQ +alX bOV bQk bRt @@ -115747,11 +115858,11 @@ cxd cxe cwU cwL -cxa -cxa -cxa -cxa -cxa +anq +anq +anq +anq +anq cwL cwU cxQ @@ -117029,7 +117140,7 @@ cwL cwX cwL cwL -cxa +anq cxj cwL cxq @@ -117281,8 +117392,8 @@ aaa aaa crx cwG -cwL -cwL +amB +amB cwW cxa cwL diff --git a/_maps/map_files/generic/z2.dmm b/_maps/map_files/generic/z2.dmm index fda763709db..a2953331701 100644 --- a/_maps/map_files/generic/z2.dmm +++ b/_maps/map_files/generic/z2.dmm @@ -2716,7 +2716,7 @@ /area/centcom/evac) "io" = ( /obj/structure/table/reinforced, -/obj/item/toy/AI, +/obj/item/toy/talking/AI, /obj/structure/window/reinforced{ dir = 4 }, @@ -2954,10 +2954,8 @@ color = "#008000"; icon_state = "small" }, -/obj/structure/grille{ - color = "#008000"; - density = 0; - icon_state = "brokengrille" +/obj/structure/grille/broken{ + color = "#008000" }, /turf/open/floor/plating/airless, /area/wizard_station) @@ -4118,10 +4116,8 @@ /turf/open/floor/plasteel/cult, /area/wizard_station) "mB" = ( -/obj/structure/grille{ - color = "#008000"; - density = 0; - icon_state = "brokengrille" +/obj/structure/grille/broken{ + color = "#008000" }, /turf/open/floor/plating, /area/wizard_station) @@ -4216,10 +4212,8 @@ color = "#008000"; icon_state = "medium" }, -/obj/structure/grille{ - color = "#008000"; - density = 0; - icon_state = "brokengrille" +/obj/structure/grille/broken{ + color = "#008000" }, /turf/open/floor/plating, /area/wizard_station) diff --git a/_maps/map_files/generic/z3.dmm b/_maps/map_files/generic/z3.dmm index 140b55a7d2b..471aeaadf7e 100644 --- a/_maps/map_files/generic/z3.dmm +++ b/_maps/map_files/generic/z3.dmm @@ -1,193 +1,193 @@ "aa" = (/turf/open/space,/area/space) "ab" = (/obj/docking_port/stationary{dheight = 0; dir = 2; dwidth = 11; height = 22; id = "whiteship_away"; name = "Deep Space"; width = 35},/turf/open/space,/area/space) -"aN" = (/obj/structure/lattice,/turf/open/space,/area/space) -"bj" = (/obj/effect/spawner/lootdrop/crate_spawner,/turf/open/floor/plasteel/airless,/area/tcommsat/chamber) -"bk" = (/obj/effect/spawner/lootdrop/crate_spawner,/turf/open/floor/plating/airless,/area/AIsattele) -"bB" = (/obj/item/trash/cheesie,/turf/open/space,/area/space) -"bK" = (/turf/open/floor/plating/airless,/area/space) -"bL" = (/obj/structure/lattice,/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/open/space,/area/space) -"bM" = (/obj/structure/lattice,/obj/structure/grille,/turf/open/space,/area/space) -"bN" = (/obj/structure/grille,/turf/open/floor/plating/airless,/area/space) -"bO" = (/turf/closed/wall/r_wall,/area/space) -"bP" = (/obj/structure/girder,/turf/open/floor/plating/airless,/area/space) -"bQ" = (/turf/closed/wall/r_wall,/area/tcommsat/chamber) -"bR" = (/obj/structure/girder,/turf/open/floor/plating/airless,/area/tcommsat/chamber) -"bS" = (/turf/open/floor/plating/airless,/area/tcommsat/chamber) -"bT" = (/obj/structure/window/reinforced{dir = 4},/turf/open/space,/area/space) -"bU" = (/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating/airless,/area/tcommsat/chamber) -"bV" = (/obj/machinery/power/apc{cell_type = 2500; dir = 1; name = "Worn-out APC"; pixel_x = 1; pixel_y = 26},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/open/floor/plating/airless,/area/tcommsat/chamber) -"bW" = (/obj/machinery/light/small{dir = 1},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/open/floor/plating/airless,/area/tcommsat/chamber) -"bX" = (/obj/item/weapon/stock_parts/cell,/turf/open/floor/plating/airless,/area/tcommsat/chamber) -"bY" = (/obj/machinery/portable_atmospherics/canister/air,/turf/open/floor/plating/airless,/area/tcommsat/chamber) -"bZ" = (/obj/item/weapon/coin/clown,/turf/open/floor/engine,/area/tcommsat/chamber) -"ca" = (/obj/structure/bed,/turf/open/floor/plasteel/airless,/area/tcommsat/chamber) -"cb" = (/obj/machinery/light/small{dir = 1},/turf/open/floor/plasteel/airless,/area/tcommsat/chamber) -"cc" = (/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/tcommsat/chamber) -"cd" = (/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/tcommsat/chamber) -"ce" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 4},/turf/open/space,/area/space) -"cf" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/open/floor/plating/airless,/area/tcommsat/chamber) -"cg" = (/obj/item/weapon/wrench,/turf/open/floor/plating/airless,/area/tcommsat/chamber) -"ch" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/portable_atmospherics/canister/air,/turf/open/floor/plating/airless,/area/tcommsat/chamber) -"ci" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 8},/turf/open/space,/area/space) -"cj" = (/turf/open/floor/plasteel/airless,/area/tcommsat/chamber) -"ck" = (/obj/structure/table,/obj/item/weapon/paper,/turf/open/floor/plasteel/airless,/area/tcommsat/chamber) -"cl" = (/obj/structure/table,/obj/item/weapon/paper_bin,/obj/item/weapon/pen/blue,/obj/machinery/light/small{dir = 1},/turf/open/floor/plasteel/airless,/area/tcommsat/chamber) -"cm" = (/obj/structure/frame/computer,/turf/open/floor/plasteel/airless,/area/tcommsat/chamber) -"cn" = (/obj/structure/table,/turf/open/floor/plasteel/airless,/area/tcommsat/chamber) -"co" = (/obj/item/weapon/reagent_containers/food/snacks/meat/slab/synthmeat{name = "Cuban Pete-Meat"},/turf/open/floor/engine,/area/tcommsat/chamber) -"cp" = (/obj/structure/grille,/turf/open/floor/plasteel/airless,/area/tcommsat/chamber) -"cq" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/open/floor/plasteel/airless,/area/tcommsat/chamber) -"cr" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating/airless,/area/tcommsat/chamber) -"cs" = (/obj/structure/window/reinforced,/turf/open/floor/plating/airless,/area/tcommsat/chamber) -"ct" = (/obj/item/stack/cable_coil/cut{amount = 1},/turf/open/floor/plating/airless,/area/tcommsat/chamber) -"cu" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/closet,/turf/open/floor/plating/airless,/area/tcommsat/chamber) -"cv" = (/obj/structure/window/reinforced{dir = 8},/turf/open/space,/area/space) -"cw" = (/obj/item/weapon/folder/yellow,/turf/open/floor/plasteel/airless,/area/tcommsat/chamber) -"cx" = (/obj/structure/bed,/obj/effect/decal/remains/human,/turf/open/floor/plasteel/airless,/area/tcommsat/chamber) -"cy" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/lattice,/turf/open/space,/area/space) -"cz" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/lattice,/turf/open/space,/area/space) -"cA" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plating/airless,/area/tcommsat/chamber) -"cB" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/open/space,/area/space) -"cC" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/open/space,/area/space) -"cD" = (/obj/structure/window/reinforced,/turf/open/space,/area/space) -"cE" = (/obj/structure/sign/securearea,/turf/closed/wall/r_wall,/area/tcommsat/chamber) -"cF" = (/obj/machinery/light/small{dir = 8},/turf/open/floor/plasteel/airless,/area/tcommsat/chamber) -"cG" = (/obj/item/weapon/paper/crumpled,/turf/open/floor/plasteel/airless,/area/tcommsat/chamber) -"cH" = (/obj/item/weapon/reagent_containers/food/snacks/meat/slab/synthmeat{name = "Cuban Pete-Meat"},/obj/item/stack/spacecash,/turf/open/floor/engine,/area/tcommsat/chamber) -"cI" = (/obj/structure/chair{dir = 4},/turf/open/floor/plasteel/airless,/area/tcommsat/chamber) -"cJ" = (/obj/structure/table,/obj/item/weapon/storage/fancy/cigarettes,/turf/open/floor/plasteel/airless,/area/tcommsat/chamber) -"cK" = (/obj/structure/chair{dir = 8},/turf/open/floor/plasteel/airless,/area/tcommsat/chamber) -"cL" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plasteel/airless{icon_state = "dark"},/area/tcommsat/chamber) -"cM" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plasteel/airless{icon_state = "dark"},/area/tcommsat/chamber) -"cN" = (/obj/structure/window/reinforced,/turf/open/floor/plasteel/airless{icon_state = "dark"},/area/tcommsat/chamber) -"cO" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/item/weapon/electronics/airlock,/turf/open/floor/plasteel/airless{icon_state = "dark"},/area/tcommsat/chamber) -"cP" = (/obj/structure/door_assembly/door_assembly_hatch,/turf/open/floor/plasteel/airless,/area/tcommsat/chamber) -"cQ" = (/obj/item/weapon/cigbutt,/turf/open/floor/plasteel/airless,/area/tcommsat/chamber) -"cR" = (/obj/machinery/vending/snack,/turf/open/floor/plasteel/airless,/area/tcommsat/chamber) -"cS" = (/obj/machinery/vending/cola,/turf/open/floor/plasteel/airless,/area/tcommsat/chamber) -"cT" = (/obj/structure/chair{dir = 1},/turf/open/floor/plasteel/airless,/area/tcommsat/chamber) -"cU" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 4},/turf/open/floor/plasteel/airless,/area/tcommsat/chamber) -"cV" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/closed/wall/r_wall,/area/tcommsat/chamber) -"cW" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/closed/wall/r_wall,/area/space) -"cX" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/open/floor/plating/airless,/area/space) -"cY" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/open/floor/plating/airless,/area/space) -"cZ" = (/obj/structure/disposaloutlet{dir = 4},/obj/structure/disposalpipe/trunk{dir = 8},/turf/open/floor/plating/airless,/area/space) -"da" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plasteel/airless{icon_state = "dark"},/area/tcommsat/chamber) -"db" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/open/space,/area/space) -"dc" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/lattice,/turf/open/space,/area/space) -"dd" = (/obj/structure/window/reinforced{dir = 1},/turf/open/space,/area/space) -"de" = (/obj/structure/table,/obj/item/device/radio/off,/turf/open/floor/plasteel/airless,/area/tcommsat/chamber) -"df" = (/obj/structure/chair,/turf/open/floor/plasteel/airless,/area/tcommsat/chamber) -"dg" = (/obj/machinery/door/airlock/maintenance_hatch,/turf/open/floor/plasteel/airless{icon_state = "dark"},/area/tcommsat/chamber) -"dh" = (/turf/open/floor/plasteel/airless{icon_state = "dark"},/area/tcommsat/chamber) -"di" = (/obj/machinery/door/airlock/hatch,/turf/open/floor/plasteel/airless{icon_state = "dark"},/area/tcommsat/chamber) -"dk" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/lattice,/turf/open/space,/area/space) -"dl" = (/obj/structure/window/reinforced{dir = 8},/obj/item/weapon/shard{icon_state = "medium"},/turf/open/floor/plasteel/airless{icon_state = "dark"},/area/tcommsat/chamber) -"dm" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating/airless,/area/tcommsat/chamber) -"dn" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plating/airless,/area/tcommsat/chamber) -"do" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plating/airless,/area/tcommsat/chamber) -"dp" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plating/airless,/area/tcommsat/chamber) -"dq" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plasteel/airless{icon_state = "dark"},/area/tcommsat/chamber) -"dr" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/lattice,/turf/open/space,/area/space) -"ds" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/item/stack/rods,/turf/open/floor/plasteel/airless{icon_state = "dark"},/area/tcommsat/chamber) -"dt" = (/obj/item/stack/rods,/obj/item/weapon/shard{icon_state = "medium"},/turf/open/floor/plating/airless,/area/tcommsat/chamber) -"du" = (/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plasteel/airless{icon_state = "dark"},/area/tcommsat/chamber) -"dv" = (/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plasteel/airless{icon_state = "dark"},/area/tcommsat/chamber) -"dw" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating,/area/tcommsat/chamber) -"dx" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/open/floor/plating,/area/tcommsat/chamber) -"dy" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/open/floor/plating,/area/tcommsat/chamber) -"dz" = (/obj/effect/decal/cleanable/blood,/obj/item/weapon/scalpel{pixel_y = 12},/turf/open/floor/plasteel/airless{icon_state = "dark"},/area/tcommsat/chamber) -"dA" = (/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/shard{icon_state = "medium"},/turf/open/floor/plasteel/airless{icon_state = "dark"},/area/tcommsat/chamber) -"dB" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating,/area/tcommsat/chamber) -"dC" = (/obj/structure/rack,/obj/item/weapon/circuitboard/computer/teleporter,/turf/open/floor/plasteel/airless,/area/tcommsat/chamber) -"dD" = (/obj/item/device/radio/off,/turf/open/floor/plasteel/airless{icon_state = "dark"},/area/tcommsat/chamber) -"dE" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/open/floor/plating,/area/tcommsat/chamber) -"dF" = (/obj/effect/decal/cleanable/oil,/turf/open/floor/plating/airless,/area/tcommsat/chamber) -"dG" = (/obj/effect/decal/cleanable/blood,/obj/structure/chair,/obj/item/clothing/under/rank/centcom_officer,/obj/item/weapon/restraints/handcuffs,/obj/effect/decal/remains/human,/turf/open/floor/plating/airless,/area/tcommsat/chamber) -"dH" = (/obj/structure/table,/obj/item/device/flashlight/lamp,/turf/open/floor/plating/airless,/area/tcommsat/chamber) -"dI" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/open/floor/plasteel/airless{icon_state = "dark"},/area/tcommsat/chamber) -"dJ" = (/obj/structure/door_assembly/door_assembly_mhatch,/turf/open/floor/plasteel/airless{icon_state = "dark"},/area/tcommsat/chamber) -"dK" = (/obj/machinery/light/small{dir = 4},/turf/open/floor/plasteel/airless,/area/tcommsat/chamber) -"dL" = (/obj/item/weapon/cigbutt,/turf/open/floor/plating/airless,/area/tcommsat/chamber) -"dM" = (/obj/effect/decal/cleanable/blood,/obj/item/device/assembly/signaler,/turf/open/floor/plasteel/airless{icon_state = "dark"},/area/tcommsat/chamber) -"dN" = (/obj/structure/table,/obj/item/weapon/reagent_containers/syringe/lethal/choral,/obj/item/weapon/reagent_containers/syringe/lethal{pixel_y = 4},/turf/open/floor/plasteel/airless{icon_state = "dark"},/area/tcommsat/chamber) -"dO" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plating,/area/tcommsat/chamber) -"dP" = (/obj/item/weapon/storage/toolbox/syndicate,/turf/open/floor/plasteel/airless,/area/tcommsat/chamber) -"dQ" = (/obj/structure/table,/obj/item/device/electropack,/turf/open/floor/plating/airless,/area/tcommsat/chamber) -"dR" = (/obj/structure/table,/obj/item/weapon/hemostat,/turf/open/floor/plasteel/airless{icon_state = "dark"},/area/tcommsat/chamber) -"dS" = (/obj/structure/table,/obj/item/weapon/circular_saw,/turf/open/floor/plasteel/airless{icon_state = "dark"},/area/tcommsat/chamber) -"dT" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/open/floor/plating,/area/tcommsat/chamber) -"dU" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/item/stack/rods,/turf/open/floor/plasteel/airless{icon_state = "dark"},/area/tcommsat/chamber) -"dV" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/open/space,/area/space) -"dW" = (/obj/structure/window/reinforced,/obj/structure/lattice,/turf/open/space,/area/space) -"dX" = (/turf/open/floor/plasteel/airless{dir = 9; icon_state = "warning"},/area/tcommsat/chamber) -"dY" = (/turf/open/floor/plasteel/airless{icon_state = "warningcorner"; dir = 4},/area/tcommsat/chamber) -"dZ" = (/turf/open/floor/plasteel/airless{icon_state = "warning"; dir = 1},/area/tcommsat/chamber) -"ea" = (/turf/open/floor/plasteel/airless{dir = 5; icon_state = "warning"},/area/tcommsat/chamber) -"eb" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/open/space,/area/space) -"ec" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plasteel/airless{icon_state = "dark"},/area/tcommsat/chamber) -"ed" = (/obj/item/weapon/paper/crumpled,/turf/open/floor/plasteel/airless{dir = 8; icon_state = "warning"},/area/tcommsat/chamber) -"ee" = (/obj/item/stack/rods,/turf/open/floor/plasteel/airless,/area/tcommsat/chamber) -"ef" = (/turf/open/floor/plasteel/airless{dir = 4; icon_state = "warning"},/area/tcommsat/chamber) -"eg" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plasteel/airless{icon_state = "dark"},/area/tcommsat/chamber) -"eh" = (/turf/open/floor/plasteel/airless{dir = 10; icon_state = "warning"},/area/tcommsat/chamber) -"ei" = (/obj/machinery/light/small,/obj/item/weapon/paper,/turf/open/floor/plasteel/airless{icon_state = "warningcorner"; dir = 1},/area/tcommsat/chamber) -"ej" = (/turf/open/floor/plasteel/airless{dir = 6; icon_state = "warning"},/area/tcommsat/chamber) -"ek" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/open/space,/area/space) -"el" = (/obj/structure/lattice,/obj/item/stack/rods,/obj/item/weapon/shard{icon_state = "medium"},/turf/open/space,/area/space) -"em" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/open/floor/plating/airless,/area/tcommsat/chamber) -"en" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/open/floor/plating,/area/tcommsat/chamber) -"eo" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/open/space,/area/space) -"ep" = (/obj/machinery/door/airlock/hatch,/turf/open/floor/plasteel,/area/tcommsat/chamber) -"eq" = (/turf/open/floor/plasteel{dir = 9; icon_state = "warning"},/area/tcommsat/chamber) -"er" = (/turf/open/floor/plasteel{dir = 1; icon_state = "warning"},/area/tcommsat/chamber) -"es" = (/turf/open/floor/plasteel{dir = 5; icon_state = "warning"},/area/tcommsat/chamber) -"et" = (/turf/open/floor/plasteel{icon_state = "warningcorner"; dir = 4},/area/tcommsat/chamber) -"eu" = (/turf/open/floor/plasteel,/area/tcommsat/chamber) -"ev" = (/turf/open/floor/plasteel{icon_state = "warningcorner"; dir = 8},/area/tcommsat/chamber) -"ew" = (/obj/machinery/light/small{dir = 8},/turf/open/floor/plasteel,/area/tcommsat/chamber) -"ex" = (/obj/structure/sign/vacuum,/turf/closed/wall/r_wall,/area/tcommsat/chamber) -"ey" = (/obj/structure/closet/emcloset,/turf/open/floor/plasteel{dir = 9; icon_state = "warning"},/area/tcommsat/chamber) -"ez" = (/obj/item/weapon/paper/crumpled,/turf/open/floor/plasteel,/area/tcommsat/chamber) -"eA" = (/obj/structure/closet/malf/suits,/turf/open/floor/plasteel,/area/tcommsat/chamber) -"eB" = (/obj/structure/door_assembly/door_assembly_ext,/turf/open/floor/plating/airless,/area/tcommsat/chamber) -"eC" = (/obj/machinery/door/airlock/external,/turf/open/floor/plating,/area/tcommsat/chamber) -"eD" = (/turf/open/floor/plasteel{dir = 8; icon_state = "warning"},/area/tcommsat/chamber) -"eE" = (/obj/item/weapon/crowbar,/turf/open/floor/plating/airless,/area/space) -"eF" = (/obj/structure/closet/crate,/obj/item/clothing/glasses/night,/turf/open/floor/plasteel{dir = 10; icon_state = "warning"},/area/tcommsat/chamber) -"eG" = (/turf/open/floor/plasteel{icon_state = "warningcorner"; dir = 1},/area/tcommsat/chamber) -"eH" = (/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/turf/open/floor/plasteel{dir = 10; icon_state = "warning"},/area/tcommsat/chamber) -"eI" = (/turf/open/floor/plasteel{dir = 2; icon_state = "warning"},/area/tcommsat/chamber) -"eJ" = (/obj/machinery/light/small{dir = 4},/turf/open/floor/plasteel{dir = 6; icon_state = "warning"},/area/tcommsat/chamber) -"eL" = (/obj/structure/frame/computer,/turf/open/floor/plating,/area/tcommsat/chamber) -"eM" = (/obj/machinery/teleport/station,/turf/open/floor/plating,/area/tcommsat/chamber) -"eN" = (/obj/machinery/teleport/hub,/turf/open/floor/plating,/area/tcommsat/chamber) -"eO" = (/turf/closed/wall/r_wall,/area/AIsattele) -"eP" = (/obj/structure/frame/computer,/turf/open/floor/plating/airless,/area/AIsattele) -"eQ" = (/obj/machinery/teleport/station,/turf/open/floor/plating/airless,/area/AIsattele) -"eR" = (/obj/machinery/teleport/hub,/turf/open/floor/plating/airless,/area/AIsattele) -"eS" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/open/floor/plating/airless,/area/AIsattele) -"eT" = (/turf/open/floor/plating/airless,/area/AIsattele) -"eU" = (/obj/structure/rack,/obj/item/clothing/gloves/color/yellow,/turf/open/floor/plating/airless,/area/AIsattele) -"eV" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plating/airless,/area/AIsattele) -"eW" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/turf/open/floor/plating/airless,/area/AIsattele) -"eX" = (/obj/item/weapon/stock_parts/cell,/turf/open/floor/plating/airless,/area/AIsattele) -"eY" = (/obj/effect/decal/cleanable/dirt,/turf/open/floor/plating/airless,/area/AIsattele) -"eZ" = (/obj/effect/decal/cleanable/robot_debris/old,/turf/open/floor/plating/airless,/area/AIsattele) -"fa" = (/obj/machinery/door/airlock/external,/turf/open/floor/plating/airless,/area/AIsattele) -"fb" = (/obj/effect/decal/cleanable/dirt,/obj/item/device/flashlight,/turf/open/floor/plating/airless,/area/AIsattele) -"fc" = (/obj/effect/decal/cleanable/dirt,/obj/item/device/radio/beacon,/turf/open/floor/plating/airless,/area/AIsattele) -"fd" = (/obj/machinery/portable_atmospherics/canister/air,/turf/open/floor/plating/airless,/area/AIsattele) -"fe" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plating/airless,/area/AIsattele) -"ff" = (/obj/effect/decal/cleanable/blood/old,/turf/open/floor/plating/airless,/area/AIsattele) -"fg" = (/obj/effect/decal/cleanable/oil,/turf/open/floor/plating/airless,/area/AIsattele) -"fh" = (/obj/item/weapon/shard,/obj/item/weapon/electronics/apc,/turf/open/floor/plating/airless,/area/AIsattele) -"fi" = (/obj/structure/closet,/turf/open/floor/plating/airless,/area/AIsattele) -"fj" = (/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/turf/open/floor/plating/airless,/area/AIsattele) -"fk" = (/obj/structure/closet/crate,/obj/item/device/aicard,/obj/item/device/multitool,/obj/item/weapon/weldingtool,/obj/item/weapon/wrench,/obj/item/weapon/circuitboard/computer/teleporter,/turf/open/floor/plating/airless,/area/AIsattele) -"fl" = (/obj/structure/reagent_dispensers/fueltank,/turf/open/floor/plating/airless,/area/AIsattele) -"fm" = (/obj/structure/lattice,/turf/open/space,/area/AIsattele) -"fn" = (/obj/structure/girder,/turf/open/floor/plating/airless,/area/AIsattele) +"ac" = (/obj/item/trash/cheesie,/turf/open/space,/area/space) +"ad" = (/obj/structure/lattice,/turf/open/space,/area/space) +"ae" = (/turf/open/floor/plating/airless,/area/space) +"af" = (/obj/structure/lattice,/obj/structure/grille/broken,/turf/open/space,/area/space) +"ag" = (/obj/structure/lattice,/obj/structure/grille,/turf/open/space,/area/space) +"ah" = (/obj/structure/grille,/turf/open/floor/plating/airless,/area/space) +"ai" = (/turf/closed/wall/r_wall,/area/space) +"aj" = (/obj/structure/girder,/turf/open/floor/plating/airless,/area/space) +"ak" = (/turf/closed/wall/r_wall,/area/tcommsat/chamber) +"al" = (/obj/structure/girder,/turf/open/floor/plating/airless,/area/tcommsat/chamber) +"am" = (/turf/open/floor/plating/airless,/area/tcommsat/chamber) +"an" = (/obj/structure/window/reinforced{dir = 4},/turf/open/space,/area/space) +"ao" = (/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating/airless,/area/tcommsat/chamber) +"ap" = (/obj/machinery/power/apc{cell_type = 2500; dir = 1; name = "Worn-out APC"; pixel_x = 1; pixel_y = 26},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/open/floor/plating/airless,/area/tcommsat/chamber) +"aq" = (/obj/machinery/light/small{dir = 1},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/open/floor/plating/airless,/area/tcommsat/chamber) +"ar" = (/obj/item/weapon/stock_parts/cell,/turf/open/floor/plating/airless,/area/tcommsat/chamber) +"as" = (/obj/machinery/portable_atmospherics/canister/air,/turf/open/floor/plating/airless,/area/tcommsat/chamber) +"at" = (/obj/item/weapon/coin/clown,/turf/open/floor/engine,/area/tcommsat/chamber) +"au" = (/obj/structure/bed,/turf/open/floor/plasteel/airless,/area/tcommsat/chamber) +"av" = (/obj/machinery/light/small{dir = 1},/turf/open/floor/plasteel/airless,/area/tcommsat/chamber) +"aw" = (/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/tcommsat/chamber) +"ax" = (/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/tcommsat/chamber) +"ay" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 4},/turf/open/space,/area/space) +"az" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/open/floor/plating/airless,/area/tcommsat/chamber) +"aA" = (/obj/item/weapon/wrench,/turf/open/floor/plating/airless,/area/tcommsat/chamber) +"aB" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/portable_atmospherics/canister/air,/turf/open/floor/plating/airless,/area/tcommsat/chamber) +"aC" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 8},/turf/open/space,/area/space) +"aD" = (/obj/effect/spawner/lootdrop/crate_spawner,/turf/open/floor/plasteel/airless,/area/tcommsat/chamber) +"aE" = (/turf/open/floor/plasteel/airless,/area/tcommsat/chamber) +"aF" = (/obj/structure/table,/obj/item/weapon/paper,/turf/open/floor/plasteel/airless,/area/tcommsat/chamber) +"aG" = (/obj/structure/table,/obj/item/weapon/paper_bin,/obj/item/weapon/pen/blue,/obj/machinery/light/small{dir = 1},/turf/open/floor/plasteel/airless,/area/tcommsat/chamber) +"aH" = (/obj/structure/frame/computer,/turf/open/floor/plasteel/airless,/area/tcommsat/chamber) +"aI" = (/obj/structure/table,/turf/open/floor/plasteel/airless,/area/tcommsat/chamber) +"aJ" = (/obj/item/weapon/reagent_containers/food/snacks/meat/slab/synthmeat{name = "Cuban Pete-Meat"},/turf/open/floor/engine,/area/tcommsat/chamber) +"aK" = (/obj/structure/grille,/turf/open/floor/plasteel/airless,/area/tcommsat/chamber) +"aL" = (/obj/structure/grille/broken,/turf/open/floor/plasteel/airless,/area/tcommsat/chamber) +"aM" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating/airless,/area/tcommsat/chamber) +"aN" = (/obj/structure/window/reinforced,/turf/open/floor/plating/airless,/area/tcommsat/chamber) +"aO" = (/obj/item/stack/cable_coil/cut{amount = 1},/turf/open/floor/plating/airless,/area/tcommsat/chamber) +"aP" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/closet,/turf/open/floor/plating/airless,/area/tcommsat/chamber) +"aQ" = (/obj/structure/window/reinforced{dir = 8},/turf/open/space,/area/space) +"aR" = (/obj/item/weapon/folder/yellow,/turf/open/floor/plasteel/airless,/area/tcommsat/chamber) +"aS" = (/obj/structure/bed,/obj/effect/decal/remains/human,/turf/open/floor/plasteel/airless,/area/tcommsat/chamber) +"aT" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/lattice,/turf/open/space,/area/space) +"aU" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/lattice,/turf/open/space,/area/space) +"aV" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plating/airless,/area/tcommsat/chamber) +"aW" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/open/space,/area/space) +"aX" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/open/space,/area/space) +"aY" = (/obj/structure/window/reinforced,/turf/open/space,/area/space) +"aZ" = (/obj/structure/sign/securearea,/turf/closed/wall/r_wall,/area/tcommsat/chamber) +"ba" = (/obj/machinery/light/small{dir = 8},/turf/open/floor/plasteel/airless,/area/tcommsat/chamber) +"bb" = (/obj/item/weapon/paper/crumpled,/turf/open/floor/plasteel/airless,/area/tcommsat/chamber) +"bc" = (/obj/item/weapon/reagent_containers/food/snacks/meat/slab/synthmeat{name = "Cuban Pete-Meat"},/obj/item/stack/spacecash,/turf/open/floor/engine,/area/tcommsat/chamber) +"bd" = (/obj/structure/chair{dir = 4},/turf/open/floor/plasteel/airless,/area/tcommsat/chamber) +"be" = (/obj/structure/table,/obj/item/weapon/storage/fancy/cigarettes,/turf/open/floor/plasteel/airless,/area/tcommsat/chamber) +"bf" = (/obj/structure/chair{dir = 8},/turf/open/floor/plasteel/airless,/area/tcommsat/chamber) +"bg" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plasteel/airless{icon_state = "dark"},/area/tcommsat/chamber) +"bh" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plasteel/airless{icon_state = "dark"},/area/tcommsat/chamber) +"bi" = (/obj/structure/window/reinforced,/turf/open/floor/plasteel/airless{icon_state = "dark"},/area/tcommsat/chamber) +"bj" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/item/weapon/electronics/airlock,/turf/open/floor/plasteel/airless{icon_state = "dark"},/area/tcommsat/chamber) +"bk" = (/obj/structure/door_assembly/door_assembly_hatch,/turf/open/floor/plasteel/airless,/area/tcommsat/chamber) +"bl" = (/obj/item/weapon/cigbutt,/turf/open/floor/plasteel/airless,/area/tcommsat/chamber) +"bm" = (/obj/machinery/vending/snack,/turf/open/floor/plasteel/airless,/area/tcommsat/chamber) +"bn" = (/obj/machinery/vending/cola,/turf/open/floor/plasteel/airless,/area/tcommsat/chamber) +"bo" = (/obj/structure/chair{dir = 1},/turf/open/floor/plasteel/airless,/area/tcommsat/chamber) +"bp" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 4},/turf/open/floor/plasteel/airless,/area/tcommsat/chamber) +"bq" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/closed/wall/r_wall,/area/tcommsat/chamber) +"br" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/closed/wall/r_wall,/area/space) +"bs" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/grille/broken,/turf/open/floor/plating/airless,/area/space) +"bt" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/open/floor/plating/airless,/area/space) +"bu" = (/obj/structure/disposaloutlet{dir = 4},/obj/structure/disposalpipe/trunk{dir = 8},/turf/open/floor/plating/airless,/area/space) +"bv" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plasteel/airless{icon_state = "dark"},/area/tcommsat/chamber) +"bw" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/open/space,/area/space) +"bx" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/lattice,/turf/open/space,/area/space) +"by" = (/obj/structure/window/reinforced{dir = 1},/turf/open/space,/area/space) +"bz" = (/obj/structure/table,/obj/item/device/radio/off,/turf/open/floor/plasteel/airless,/area/tcommsat/chamber) +"bA" = (/obj/structure/chair,/turf/open/floor/plasteel/airless,/area/tcommsat/chamber) +"bB" = (/obj/machinery/door/airlock/maintenance_hatch,/turf/open/floor/plasteel/airless{icon_state = "dark"},/area/tcommsat/chamber) +"bC" = (/turf/open/floor/plasteel/airless{icon_state = "dark"},/area/tcommsat/chamber) +"bD" = (/obj/machinery/door/airlock/hatch,/turf/open/floor/plasteel/airless{icon_state = "dark"},/area/tcommsat/chamber) +"bE" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/lattice,/turf/open/space,/area/space) +"bF" = (/obj/structure/window/reinforced{dir = 8},/obj/item/weapon/shard{icon_state = "medium"},/turf/open/floor/plasteel/airless{icon_state = "dark"},/area/tcommsat/chamber) +"bG" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating/airless,/area/tcommsat/chamber) +"bH" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plating/airless,/area/tcommsat/chamber) +"bI" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plating/airless,/area/tcommsat/chamber) +"bJ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plating/airless,/area/tcommsat/chamber) +"bK" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plasteel/airless{icon_state = "dark"},/area/tcommsat/chamber) +"bL" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/lattice,/turf/open/space,/area/space) +"bM" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/item/stack/rods,/turf/open/floor/plasteel/airless{icon_state = "dark"},/area/tcommsat/chamber) +"bN" = (/obj/item/stack/rods,/obj/item/weapon/shard{icon_state = "medium"},/turf/open/floor/plating/airless,/area/tcommsat/chamber) +"bO" = (/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plasteel/airless{icon_state = "dark"},/area/tcommsat/chamber) +"bP" = (/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plasteel/airless{icon_state = "dark"},/area/tcommsat/chamber) +"bQ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating,/area/tcommsat/chamber) +"bR" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/open/floor/plating,/area/tcommsat/chamber) +"bS" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/open/floor/plating,/area/tcommsat/chamber) +"bT" = (/obj/effect/decal/cleanable/blood,/obj/item/weapon/scalpel{pixel_y = 12},/turf/open/floor/plasteel/airless{icon_state = "dark"},/area/tcommsat/chamber) +"bU" = (/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/shard{icon_state = "medium"},/turf/open/floor/plasteel/airless{icon_state = "dark"},/area/tcommsat/chamber) +"bV" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating,/area/tcommsat/chamber) +"bW" = (/obj/structure/rack,/obj/item/weapon/circuitboard/computer/teleporter,/turf/open/floor/plasteel/airless,/area/tcommsat/chamber) +"bX" = (/obj/item/device/radio/off,/turf/open/floor/plasteel/airless{icon_state = "dark"},/area/tcommsat/chamber) +"bY" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/open/floor/plating,/area/tcommsat/chamber) +"bZ" = (/obj/effect/decal/cleanable/oil,/turf/open/floor/plating/airless,/area/tcommsat/chamber) +"ca" = (/obj/effect/decal/cleanable/blood,/obj/structure/chair,/obj/item/clothing/under/rank/centcom_officer,/obj/item/weapon/restraints/handcuffs,/obj/effect/decal/remains/human,/turf/open/floor/plating/airless,/area/tcommsat/chamber) +"cb" = (/obj/structure/table,/obj/item/device/flashlight/lamp,/turf/open/floor/plating/airless,/area/tcommsat/chamber) +"cc" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/open/floor/plasteel/airless{icon_state = "dark"},/area/tcommsat/chamber) +"cd" = (/obj/structure/door_assembly/door_assembly_mhatch,/turf/open/floor/plasteel/airless{icon_state = "dark"},/area/tcommsat/chamber) +"ce" = (/obj/machinery/light/small{dir = 4},/turf/open/floor/plasteel/airless,/area/tcommsat/chamber) +"cf" = (/obj/item/weapon/cigbutt,/turf/open/floor/plating/airless,/area/tcommsat/chamber) +"cg" = (/obj/effect/decal/cleanable/blood,/obj/item/device/assembly/signaler,/turf/open/floor/plasteel/airless{icon_state = "dark"},/area/tcommsat/chamber) +"ch" = (/obj/structure/table,/obj/item/weapon/reagent_containers/syringe/lethal/choral,/obj/item/weapon/reagent_containers/syringe/lethal{pixel_y = 4},/turf/open/floor/plasteel/airless{icon_state = "dark"},/area/tcommsat/chamber) +"ci" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plating,/area/tcommsat/chamber) +"cj" = (/obj/item/weapon/storage/toolbox/syndicate,/turf/open/floor/plasteel/airless,/area/tcommsat/chamber) +"ck" = (/obj/structure/table,/obj/item/device/electropack,/turf/open/floor/plating/airless,/area/tcommsat/chamber) +"cl" = (/obj/structure/table,/obj/item/weapon/hemostat,/turf/open/floor/plasteel/airless{icon_state = "dark"},/area/tcommsat/chamber) +"cm" = (/obj/structure/table,/obj/item/weapon/circular_saw,/turf/open/floor/plasteel/airless{icon_state = "dark"},/area/tcommsat/chamber) +"cn" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/open/floor/plating,/area/tcommsat/chamber) +"co" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/item/stack/rods,/turf/open/floor/plasteel/airless{icon_state = "dark"},/area/tcommsat/chamber) +"cp" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/open/space,/area/space) +"cq" = (/obj/structure/window/reinforced,/obj/structure/lattice,/turf/open/space,/area/space) +"cr" = (/turf/open/floor/plasteel/airless{dir = 9; icon_state = "warning"},/area/tcommsat/chamber) +"cs" = (/turf/open/floor/plasteel/airless{icon_state = "warningcorner"; dir = 4},/area/tcommsat/chamber) +"ct" = (/turf/open/floor/plasteel/airless{icon_state = "warning"; dir = 1},/area/tcommsat/chamber) +"cu" = (/turf/open/floor/plasteel/airless{dir = 5; icon_state = "warning"},/area/tcommsat/chamber) +"cv" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/open/space,/area/space) +"cw" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plasteel/airless{icon_state = "dark"},/area/tcommsat/chamber) +"cx" = (/obj/item/weapon/paper/crumpled,/turf/open/floor/plasteel/airless{dir = 8; icon_state = "warning"},/area/tcommsat/chamber) +"cy" = (/obj/item/stack/rods,/turf/open/floor/plasteel/airless,/area/tcommsat/chamber) +"cz" = (/turf/open/floor/plasteel/airless{dir = 4; icon_state = "warning"},/area/tcommsat/chamber) +"cA" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plasteel/airless{icon_state = "dark"},/area/tcommsat/chamber) +"cB" = (/turf/open/floor/plasteel/airless{dir = 10; icon_state = "warning"},/area/tcommsat/chamber) +"cC" = (/obj/machinery/light/small,/obj/item/weapon/paper,/turf/open/floor/plasteel/airless{icon_state = "warningcorner"; dir = 1},/area/tcommsat/chamber) +"cD" = (/turf/open/floor/plasteel/airless{dir = 6; icon_state = "warning"},/area/tcommsat/chamber) +"cE" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/open/space,/area/space) +"cF" = (/obj/structure/lattice,/obj/item/stack/rods,/obj/item/weapon/shard{icon_state = "medium"},/turf/open/space,/area/space) +"cG" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/open/floor/plating/airless,/area/tcommsat/chamber) +"cH" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/open/floor/plating,/area/tcommsat/chamber) +"cI" = (/obj/structure/grille/broken,/turf/open/space,/area/space) +"cJ" = (/obj/machinery/door/airlock/hatch,/turf/open/floor/plasteel,/area/tcommsat/chamber) +"cK" = (/turf/open/floor/plasteel{dir = 9; icon_state = "warning"},/area/tcommsat/chamber) +"cL" = (/turf/open/floor/plasteel{dir = 1; icon_state = "warning"},/area/tcommsat/chamber) +"cM" = (/turf/open/floor/plasteel{dir = 5; icon_state = "warning"},/area/tcommsat/chamber) +"cN" = (/turf/open/floor/plasteel{icon_state = "warningcorner"; dir = 4},/area/tcommsat/chamber) +"cO" = (/turf/open/floor/plasteel,/area/tcommsat/chamber) +"cP" = (/turf/open/floor/plasteel{icon_state = "warningcorner"; dir = 8},/area/tcommsat/chamber) +"cQ" = (/obj/machinery/light/small{dir = 8},/turf/open/floor/plasteel,/area/tcommsat/chamber) +"cR" = (/obj/structure/sign/vacuum,/turf/closed/wall/r_wall,/area/tcommsat/chamber) +"cS" = (/obj/structure/closet/emcloset,/turf/open/floor/plasteel{dir = 9; icon_state = "warning"},/area/tcommsat/chamber) +"cT" = (/obj/item/weapon/paper/crumpled,/turf/open/floor/plasteel,/area/tcommsat/chamber) +"cU" = (/obj/structure/closet/malf/suits,/turf/open/floor/plasteel,/area/tcommsat/chamber) +"cV" = (/obj/structure/door_assembly/door_assembly_ext,/turf/open/floor/plating/airless,/area/tcommsat/chamber) +"cW" = (/obj/machinery/door/airlock/external,/turf/open/floor/plating,/area/tcommsat/chamber) +"cX" = (/turf/open/floor/plasteel{dir = 8; icon_state = "warning"},/area/tcommsat/chamber) +"cY" = (/obj/item/weapon/crowbar,/turf/open/floor/plating/airless,/area/space) +"cZ" = (/obj/structure/closet/crate,/obj/item/clothing/glasses/night,/turf/open/floor/plasteel{dir = 10; icon_state = "warning"},/area/tcommsat/chamber) +"da" = (/turf/open/floor/plasteel{icon_state = "warningcorner"; dir = 1},/area/tcommsat/chamber) +"db" = (/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/turf/open/floor/plasteel{dir = 10; icon_state = "warning"},/area/tcommsat/chamber) +"dc" = (/turf/open/floor/plasteel{dir = 2; icon_state = "warning"},/area/tcommsat/chamber) +"dd" = (/obj/machinery/light/small{dir = 4},/turf/open/floor/plasteel{dir = 6; icon_state = "warning"},/area/tcommsat/chamber) +"de" = (/obj/structure/frame/computer,/turf/open/floor/plating,/area/tcommsat/chamber) +"df" = (/obj/machinery/teleport/station,/turf/open/floor/plating,/area/tcommsat/chamber) +"dg" = (/obj/machinery/teleport/hub,/turf/open/floor/plating,/area/tcommsat/chamber) +"dh" = (/turf/closed/wall/r_wall,/area/AIsattele) +"di" = (/obj/structure/frame/computer,/turf/open/floor/plating/airless,/area/AIsattele) +"dj" = (/obj/machinery/teleport/station,/turf/open/floor/plating/airless,/area/AIsattele) +"dk" = (/obj/machinery/teleport/hub,/turf/open/floor/plating/airless,/area/AIsattele) +"dl" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/open/floor/plating/airless,/area/AIsattele) +"dm" = (/turf/open/floor/plating/airless,/area/AIsattele) +"dn" = (/obj/structure/rack,/obj/item/clothing/gloves/color/yellow,/turf/open/floor/plating/airless,/area/AIsattele) +"do" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plating/airless,/area/AIsattele) +"dp" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/grille,/turf/open/floor/plating/airless,/area/AIsattele) +"dq" = (/obj/item/weapon/stock_parts/cell,/turf/open/floor/plating/airless,/area/AIsattele) +"dr" = (/obj/effect/decal/cleanable/dirt,/turf/open/floor/plating/airless,/area/AIsattele) +"ds" = (/obj/effect/decal/cleanable/robot_debris/old,/turf/open/floor/plating/airless,/area/AIsattele) +"dt" = (/obj/effect/spawner/lootdrop/crate_spawner,/turf/open/floor/plating/airless,/area/AIsattele) +"du" = (/obj/machinery/door/airlock/external,/turf/open/floor/plating/airless,/area/AIsattele) +"dv" = (/obj/effect/decal/cleanable/dirt,/obj/item/device/flashlight,/turf/open/floor/plating/airless,/area/AIsattele) +"dw" = (/obj/effect/decal/cleanable/dirt,/obj/item/device/radio/beacon,/turf/open/floor/plating/airless,/area/AIsattele) +"dx" = (/obj/machinery/portable_atmospherics/canister/air,/turf/open/floor/plating/airless,/area/AIsattele) +"dy" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plating/airless,/area/AIsattele) +"dz" = (/obj/effect/decal/cleanable/blood/old,/turf/open/floor/plating/airless,/area/AIsattele) +"dA" = (/obj/effect/decal/cleanable/oil,/turf/open/floor/plating/airless,/area/AIsattele) +"dB" = (/obj/item/weapon/shard,/obj/item/weapon/electronics/apc,/turf/open/floor/plating/airless,/area/AIsattele) +"dC" = (/obj/structure/closet,/turf/open/floor/plating/airless,/area/AIsattele) +"dD" = (/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/turf/open/floor/plating/airless,/area/AIsattele) +"dE" = (/obj/structure/closet/crate,/obj/item/device/aicard,/obj/item/device/multitool,/obj/item/weapon/weldingtool,/obj/item/weapon/wrench,/obj/item/weapon/circuitboard/computer/teleporter,/turf/open/floor/plating/airless,/area/AIsattele) +"dF" = (/obj/structure/reagent_dispensers/fueltank,/turf/open/floor/plating/airless,/area/AIsattele) +"dG" = (/obj/structure/lattice,/turf/open/space,/area/AIsattele) +"dH" = (/obj/structure/girder,/turf/open/floor/plating/airless,/area/AIsattele) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -231,7 +231,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -289,63 +289,63 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNaaaaaaaaaNaNaaaaaNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNaNaaaaaaaNaNaaaaaNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNbKaNaaaaaabKaNaaaaaNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNaaaNbKaaaaaaaabKbKaNaaaNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNaaaNbKaaaaaaaaaNbKaNaaaNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabLaaaaaNaaaaaaaaaNaNaNaabLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMaNaNbKbKbKbKbKbKbKaNaNbMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNaaaabMaaaaaNaaaabKaaaaaNaaaabMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMbLbLaaaaaNbLbMbMbMbMbMbMbMbNbMbLbMbMbMbMbMbMbLaNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMbMbObPbPbKbPbObObObObObObObObObObObObObObObObObObPbKaNaNaaaNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabLbMbObObObObObQbQbQbQbQbObObObObObObObObObQbQbQbQbRbSaNaNaNaNaNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMbObObOaNaabTbUbVbWbXbYbQbQbQbQbQbQbQbQbQbZbQcacbcccdbSbSaNbKbPbLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMbObOaNaNaNcebUbScfcgchcibQbjcjckclcmcnbQcobQcpcqcjcccdcdbSbPbObMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMbObOaaaNaabTcrcsctcscucvbQcjcwcjcjcjcmbQcobQcxcpcjcjccccbQbObObMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabLbObOaaaNaaaacyczcAcBcCcDcEcFcjcGcjcjcmbQcHbQcpcpcjcIcJcKbQbObObMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMbObOaaaNaabTcLcMcNcMcNcOcPcjcjcQcjcjbQbQbQbQcRcScjcQcTcUcVcWcWcXcYcZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNaNbLbMbMbMbObOaaaNaabTdadbdcddddddbQcjdedfcjcjdgdhbQbQbQbQdibQbQbQbQbObObMbMbLaNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNbMbObOaNaNaNdkdlcibQbQbQbQbQdmdndododpbQdgbQbQbQdkdqdraNaNaNbObObMbMbMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNaNbKbKbKbKbKaNaNaabMbObOaaaNaabTdsdrbQbSbSbSbSbSdtbSbSbSbSdhdhbSbQdkdqaaaaaNaabObObMbMaaaNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNaNaNaNaNaNaNaNbKbKbKbKaabMbObOaaaNaabTdudrbQbSbSdhdhbSdhdhdhdhdhdhbSbSbQdkdvcvdwdxdybQbObObMaNbKaNaNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNaNaNaNbKbKbKaabMbObOaaaNaaaadadrbQbSdhdhdhdhdhbSdhdzdhdhdhbSbQdkdAcvdBcjcjdCbQbObMaaaNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabKaabMbObOaaaNaabTdqcvbQbSdhdhdhdhdhbSdhdDdhdhdhbSbQdkdqcDdEcjcjcnbQbObMaaaNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabKbKbNbObOaNaNaNdkdacibQbSdhdhdhbSdFdGbSdHdhdhdhbSbQdkdudIdJcjcjdKbQbObNbKaNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabKaabMbObOaaaNaabTdacvbQbSdhdhbSdhdhdLdMdNdhdhdhbSbQbTdqdddOcjdPcjbQbObMaaaNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNaNaNbKbKbKaabMbObOaaaNaaaadqaabQbSdhdhdhdhdhdQdRdSdhdhbSbSbQaadqcvdBcjcjcnbQbObMaabKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNaNaNbKbKbKbKaabMbObOaaaNaabTdacvbQbSdhbSdhdhdhdhdhdhdhdhdhbSbQbTdqcvdTdxdybQbObObMaNbKaNaNaNaNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNaNaNaNaNaNaNaNaNaabMbObOaaaNaaaadUcvbQbSbSbSbSbSbSbSbSbSbSbSbSbSbQbTdvcvaaaNaabObObMbMaaaNaNaNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMbMbObOaNaNaNdkdAcibQbQbQbQbQbQbQbQbQbQbQbQbQbQbQdkdqciaNaNaNbObPbMbMbMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNaNaNaNaNbLbMbMbPbOaaaaaabTdqdVdWcDaabQdXdYccdZdYcdeabQcDcDcDebdqcvaaaNaabPaNbMbMbMbLaNaNaNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabLbKbPaaaaaabTeccNcMcMcMdiedcjcjcjcjeeefdicMcNcMcMegcvaaaNaabKaNbLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNbKaNaaaaaaaadddddcddddbQeheicccccjccejbQddddddekddaaaaaNaaaNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNaNaaaaaaaaaaaaaNaabQbQbQbQbQcdbRbQbQbQbQaaaaaaaaaaaaaNaaaaaaaaaNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNaaaaaaaaaNaNaNaNelemcccjbQcjcccjbQcjcmenaNaNaNaNaaaaaaaaaaaaaaaNeoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabObQcjcjcjcjcjcjcbcjcjbQbOaaaaaaaaaaaaaaaaaaaNbKbMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNbKbPbObObObObObQbQbQbQbQepbQbQbQbQbQbObObPbKaNaNaaaaaaaabKbPbMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNbKbPbObObObObObObObObObQeqeresbQbObObObKaNaNaNaaaaaaaNaNaNbPbObLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabLbMbLbMbMbMbMbMbMbMbQbQeteuevbQbQbMbMbMbLaaaaaaaaaaaaaNbObObObMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabLbKbKbMbMbQbQeweueueueubQbQbMbMaaaaaaaaaNbKbKbPbObObMbMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabKbKbKbQbQexeyeueueueuezeAbQbMbLaaaaaaaaaaaNaNbKbObMbMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabKbKbKeBbSeCeDeueueueueueubQbMbMaaaaaaaaaaaNbLbMbMbMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeEbKbKbQbQexeFeGeueueueueAbQbMbMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNbKbKbMbMbQbQeHeIeIeIeJbQbQbMbMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNbLbLbMbMbMbQbQeLeMeNbQbQbMbMbMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabLbMbMbMbQbQbQbQbQbMbMbMbLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMbMaabMbMbMbNbMbMbMaabMbMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMaaaaaNaaaabKaaaaaNaaaaaNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabMaaaNbKaNbKbKbKaNaNaNaabMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNaaaaaNaaaaaaaaaNaNaNaaaNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNaaaaaNaaaaaaaaaNaNaaaaaNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNaaaabKaaaaaaaaaaaNaaaaaNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabKaaaaaaaaaaaNaaaaaNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNaaaaaaaaaaaaaaaaaNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaadadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadaaaaaaadadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaeadaaaaaaaeadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaadaeaaaaaaaaaeaeadaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaadaeaaaaaaaaadaeadaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaadaaaaaaaaadadadaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagadadaeaeaeaeaeaeaeadadagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaagaaaaadaaaaaeaaaaadaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagafafaaaaadafagagagagagagagahagafagagagagagagafadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagaiajajaeajaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiajaeadadaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafagaiaiaiaiaiakakakakakaiaiaiaiaiaiaiaiaiakakakakalamadadadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaiaiaiadaaanaoapaqarasakakakakakakakakakatakauavawaxamamadaeajafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaiaiadadadayaoamazaAaBaCakaDaEaFaGaHaIakaJakaKaLaEawaxaxamajaiagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaiaiaaadaaanaMaNaOaNaPaQakaEaRaEaEaEaHakaJakaSaKaEaEawawakaiaiagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaiaiaaadaaaaaTaUaVaWaXaYaZbaaEbbaEaEaHakbcakaKaKaEbdbebfakaiaiagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaiaiaaadaaanbgbhbibhbibjbkaEaEblaEaEakakakakbmbnaEblbobpbqbrbrbsbtbuaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadafagagagaiaiaaadaaanbvbwbxbybybyakaEbzbAaEaEbBbCakakakakbDakakakakaiaiagagafadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadagaiaiadadadbEbFaCakakakakakbGbHbIbIbJakbBakakakbEbKbLadadadaiaiagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadaeaeaeaeaeadadaaagaiaiaaadaaanbMbLakamamamamambNamamamambCbCamakbEbKaaaaadaaaiaiagagaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadadadadaeaeaeaeaaagaiaiaaadaaanbObLakamambCbCambCbCbCbCbCbCamamakbEbPaQbQbRbSakaiaiagadaeadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadaeaeaeaaagaiaiaaadaaaabvbLakambCbCbCbCbCambCbTbCbCbCamakbEbUaQbVaEaEbWakaiagaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaagaiaiaaadaaanbKaQakambCbCbCbCbCambCbXbCbCbCamakbEbKaYbYaEaEaIakaiagaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeahaiaiadadadbEbvaCakambCbCbCambZcaamcbbCbCbCamakbEbOcccdaEaEceakaiahaeadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaagaiaiaaadaaanbvaQakambCbCambCbCcfcgchbCbCbCamakanbKbyciaEcjaEakaiagaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadaeaeaeaaagaiaiaaadaaaabKaaakambCbCbCbCbCckclcmbCbCamamakaabKaQbVaEaEaIakaiagaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadaeaeaeaeaaagaiaiaaadaaanbvaQakambCambCbCbCbCbCbCbCbCbCamakanbKaQcnbRbSakaiaiagadaeadadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadadadadadaaagaiaiaaadaaaacoaQakamamamamamamamamamamamamamakanbPaQaaadaaaiaiagagaaadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagaiaiadadadbEbUaCakakakakakakakakakakakakakakakbEbKaCadadadaiajagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadafagagajaiaaaaaaanbKcpcqaYaaakcrcsawctcsaxcuakaYaYaYcvbKaQaaadaaajadagagagafadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaeajaaaaaaancwbibhbhbhbDcxaEaEaEaEcyczbDbhbibhbhcAaQaaadaaaeadafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaeadaaaaaaaabybybxbybyakcBcCawawaEawcDakbybybycEbyaaaaadaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadaaaaaaaaaaaaadaaakakakakakaxalakakakakaaaaaaaaaaaaadaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaadadadadcFcGawaEakaEawaEakaEaHcHadadadadaaaaaaaaaaaaaaadcIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiakaEaEaEaEaEaEavaEaEakaiaaaaaaaaaaaaaaaaaaadaeagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaeajaiaiaiaiaiakakakakakcJakakakakakaiaiajaeadadaaaaaaaaaeajagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaeajaiaiaiaiaiaiaiaiaiakcKcLcMakaiaiaiaeadadadaaaaaaadadadajaiafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafagafagagagagagagagakakcNcOcPakakagagagafaaaaaaaaaaaaadaiaiaiagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaeaeagagakakcQcOcOcOcOakakagagaaaaaaaaadaeaeajaiaiagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeakakcRcScOcOcOcOcTcUakagafaaaaaaaaaaadadaeaiagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaecVamcWcXcOcOcOcOcOcOakagagaaaaaaaaaaadafagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacYaeaeakakcRcZdacOcOcOcOcUakagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaeaeagagakakdbdcdcdcddakakagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadafafagagagakakdedfdgakakagagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafagagagakakakakakagagagafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagagaaagagagahagagagaaagagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaadaaaaaeaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaadaeadaeaeaeadadadaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaadadadaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaadaaaaaaaaadadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaeaaaaaaaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaadaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -374,18 +374,18 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeOeOeOeOeOaNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNaNeOeOePeQeReOeOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNaNaNeOeOeSeTeTeTeUeOeOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeVeWeOeTeXeYeTeZeYbkeOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNaNfaeTfaeTfbeZfceTeTfdeOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeVfeeOfdffeTfgeTfhfieOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNaNaNeOeOeTeTeYeTfjeOeOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNaNeOeOfkeTfleOeOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeOeOfmeTfnaNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNaNaNaaaNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNaNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadhdhdhdhdhadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaddhdhdidjdkdhdhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadaddhdhdldmdmdmdndhdhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadodpdhdmdqdrdmdsdrdtdhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaddudmdudmdvdsdwdmdmdxdhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadodydhdxdzdmdAdmdBdCdhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadaddhdhdmdmdrdmdDdhdhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaddhdhdEdmdFdhdhaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadhdhdGdmdHadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -446,4 +446,3 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa "} - diff --git a/_maps/map_files/generic/z4.dmm b/_maps/map_files/generic/z4.dmm index 9ebfeee4a01..fda0d05245b 100644 --- a/_maps/map_files/generic/z4.dmm +++ b/_maps/map_files/generic/z4.dmm @@ -25,7 +25,7 @@ "ay" = (/obj/machinery/newscaster{pixel_y = 32},/turf/open/floor/plasteel{icon_state = "cafeteria"},/area/djstation) "az" = (/obj/structure/table,/obj/machinery/cell_charger,/turf/open/floor/plasteel{icon_state = "bar"},/area/djstation) "aA" = (/turf/open/floor/plasteel{icon_state = "bar"},/area/djstation) -"aB" = (/turf/open/floor/plasteel{icon_state = "grimy"},/area/djstation) +"aB" = (/obj/effect/spawner/lootdrop/crate_spawner,/turf/open/floor/plasteel{icon_state = "grimy"},/area/djstation) "aC" = (/obj/machinery/light_switch{pixel_y = 28},/turf/open/floor/plasteel{icon_state = "grimy"},/area/djstation) "aD" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/turf/open/floor/plasteel{icon_state = "grimy"},/area/djstation) "aE" = (/obj/structure/table,/obj/item/device/flashlight/lamp,/turf/open/floor/plasteel{icon_state = "grimy"},/area/djstation) @@ -34,814 +34,813 @@ "aH" = (/obj/structure/table,/obj/item/device/radio/intercom{broadcasting = 0; dir = 8; freerange = 1; listening = 1; name = "Pirate Radio Listening Channel"; pixel_x = 0},/turf/open/floor/plasteel{icon_state = "cafeteria"},/area/djstation) "aI" = (/obj/structure/chair/office/light,/turf/open/floor/plasteel{icon_state = "cafeteria"},/area/djstation) "aJ" = (/obj/machinery/door/airlock/glass{name = "Rest Room"},/turf/open/floor/plasteel{icon_state = "cafeteria"},/area/djstation) -"aK" = (/obj/machinery/sleeper{icon_state = "sleeper-open"; dir = 8},/turf/open/floor/plasteel{icon_state = "grimy"},/area/djstation) -"aL" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk,/turf/open/floor/plasteel{icon_state = "bar"},/area/djstation) -"aM" = (/obj/machinery/light/small,/turf/open/floor/plasteel{icon_state = "bar"},/area/djstation) -"aN" = (/obj/structure/chair{dir = 1},/turf/open/floor/plasteel{icon_state = "bar"},/area/djstation) -"aO" = (/obj/structure/table,/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plasteel{icon_state = "cafeteria"},/area/djstation) -"aP" = (/obj/structure/table,/obj/item/device/radio/intercom{broadcasting = 1; dir = 8; freerange = 1; listening = 0; name = "Pirate Radio Broadcast Channel"; pixel_x = 0},/turf/open/floor/plasteel{icon_state = "cafeteria"},/area/djstation) -"aQ" = (/obj/structure/table,/obj/item/weapon/paper/djstation,/turf/open/floor/plasteel{icon_state = "cafeteria"},/area/djstation) -"aR" = (/obj/structure/frame/computer{anchored = 1},/turf/open/floor/plasteel{icon_state = "grimy"},/area/djstation) -"aS" = (/obj/structure/chair{dir = 8},/turf/open/floor/plasteel{icon_state = "grimy"},/area/djstation) -"aT" = (/obj/machinery/light/small,/turf/open/floor/plasteel{icon_state = "grimy"},/area/djstation) -"aU" = (/obj/structure/closet,/turf/open/floor/plasteel{icon_state = "grimy"},/area/djstation) -"aV" = (/obj/structure/disposalpipe/segment,/turf/closed/wall,/area/djstation) -"aW" = (/obj/machinery/door/airlock/hatch{name = "Washroom"},/turf/open/floor/plasteel{icon_state = "freezerfloor"},/area/djstation) -"aX" = (/obj/machinery/light{dir = 4},/turf/open/floor/plasteel{icon_state = "cafeteria"},/area/djstation) -"aY" = (/obj/structure/disposalpipe/segment,/turf/open/floor/plating/airless,/area/space) -"aZ" = (/turf/open/floor/plasteel{icon_state = "freezerfloor"},/area/djstation) -"ba" = (/obj/structure/chair{dir = 4},/turf/open/floor/plasteel{icon_state = "cafeteria"},/area/djstation) -"bb" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/space_heater,/turf/open/floor/plasteel{icon_state = "cafeteria"},/area/djstation) -"bc" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/rack{dir = 4},/obj/item/clothing/under/soviet,/obj/item/clothing/head/ushanka,/turf/open/floor/plasteel{icon_state = "cafeteria"},/area/djstation) -"bd" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/light/small,/turf/open/floor/plasteel{icon_state = "freezerfloor"},/area/djstation) -"be" = (/obj/structure/toilet{pixel_y = 8},/turf/open/floor/plasteel{icon_state = "freezerfloor"},/area/djstation) -"bf" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/turf/open/floor/plasteel{icon_state = "cafeteria"},/area/djstation) -"bg" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = -32},/turf/open/floor/plasteel{icon_state = "cafeteria"},/area/djstation) -"bh" = (/obj/machinery/door/airlock/external{name = "Ruskie DJ Station"; req_access = null; req_access_txt = "0"},/turf/open/floor/plating,/area/djstation) -"bi" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/structure/disposaloutlet,/turf/open/floor/plating/airless,/area/space) -"bj" = (/turf/open/floor/plating/airless,/area/space) -"bk" = (/turf/open/floor/plasteel/airless,/area/space) -"bl" = (/turf/closed/wall/r_wall,/area/space) -"bm" = (/obj/structure/girder/reinforced,/turf/open/floor/plating/airless,/area/space) -"bn" = (/turf/closed/wall/r_wall,/area/derelict/solar_control) -"bo" = (/obj/machinery/power/tracker,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/open/floor/plasteel/airless,/area/solar/derelict_starboard) -"bp" = (/turf/closed/wall,/area/derelict/solar_control) -"bq" = (/turf/open/floor/plasteel,/area/derelict/solar_control) -"br" = (/obj/structure/lattice/catwalk,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/space,/area/solar/derelict_starboard) -"bs" = (/turf/open/floor/plating/airless,/turf/open/floor/plating/airless{icon_state = "platingdmg2"},/area/solar/derelict_starboard) -"bt" = (/obj/machinery/power/solar{id = "derelictsolar"; name = "Derelict Solar Array"},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/open/floor/plasteel/airless,/area/solar/derelict_starboard) -"bu" = (/obj/machinery/door/airlock/external{name = "Air Bridge Access"},/turf/open/floor/plating,/area/derelict/solar_control) -"bv" = (/obj/machinery/door/airlock/external{name = "External Engineering"},/turf/open/floor/plating,/area/derelict/solar_control) -"bw" = (/turf/closed/wall,/area/space) -"bx" = (/obj/machinery/light/small{dir = 4},/turf/open/floor/plasteel,/area/derelict/solar_control) -"by" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/open/floor/plasteel/airless{icon_state = "damaged5"},/area/solar/derelict_starboard) -"bz" = (/obj/structure/lattice/catwalk,/turf/open/space,/area/solar/derelict_starboard) -"bA" = (/obj/structure/lattice/catwalk,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/open/space,/area/solar/derelict_starboard) -"bB" = (/obj/structure/lattice/catwalk,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/open/space,/area/solar/derelict_starboard) -"bC" = (/obj/machinery/power/smes,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/open/floor/plasteel,/area/derelict/solar_control) -"bD" = (/obj/structure/lattice/catwalk,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/space,/area/solar/derelict_starboard) -"bE" = (/obj/structure/lattice/catwalk,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/open/space,/area/solar/derelict_starboard) -"bF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating,/area/derelict/solar_control) -"bG" = (/obj/structure/lattice/catwalk,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/open/space,/area/solar/derelict_starboard) -"bH" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel,/area/derelict/solar_control) -"bI" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/open/floor/plasteel,/area/derelict/solar_control) -"bJ" = (/obj/structure/lattice/catwalk,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/open/space,/area/solar/derelict_starboard) -"bK" = (/obj/machinery/power/solar{id = "derelictsolar"; name = "Derelict Solar Array"},/obj/structure/cable,/turf/open/floor/plasteel/airless,/area/solar/derelict_starboard) -"bL" = (/obj/structure/lattice/catwalk,/obj/structure/cable,/turf/open/space,/area/solar/derelict_starboard) -"bM" = (/obj/structure/lattice/catwalk,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/open/space,/area/solar/derelict_starboard) -"bN" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plating,/area/derelict/solar_control) -"bO" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel,/area/derelict/solar_control) -"bP" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/open/floor/plasteel,/area/derelict/solar_control) -"bQ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plating,/area/derelict/solar_control) -"bR" = (/obj/machinery/door/airlock/external{name = "External Engineering"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/open/floor/plating,/area/derelict/solar_control) -"bS" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/open/floor/plating,/area/derelict/solar_control) -"bT" = (/obj/structure/window/reinforced,/turf/open/floor/plasteel,/area/derelict/solar_control) -"bU" = (/turf/open/floor/plating,/area/space) -"bV" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/open/floor/plasteel,/area/derelict/solar_control) -"bW" = (/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plasteel,/area/derelict/solar_control) -"bX" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/open/floor/plasteel,/area/derelict/solar_control) -"bY" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/solar_control{id = "derelictsolar"; name = "Primary Solar Control"; track = 0},/obj/structure/cable,/turf/open/floor/plasteel,/area/derelict/solar_control) -"bZ" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel,/area/derelict/solar_control) -"ca" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/open/floor/plasteel,/area/derelict/solar_control) -"cb" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/light/small{dir = 4},/turf/open/floor/plasteel,/area/derelict/solar_control) -"cc" = (/obj/machinery/light/small{dir = 8},/turf/open/floor/plasteel,/area/derelict/bridge/ai_upload) -"cd" = (/turf/closed/wall/r_wall,/area/derelict/gravity_generator) -"ce" = (/turf/closed/wall,/area/derelict/bridge/access) -"cf" = (/obj/machinery/door/airlock/external{name = "Air Bridge Access"},/turf/open/floor/plasteel,/area/derelict/bridge/ai_upload) -"cg" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/open/floor/plasteel,/area/derelict/solar_control) -"ch" = (/turf/open/floor/plasteel,/area/derelict/bridge/access) -"ci" = (/obj/structure/rack,/obj/item/weapon/melee/classic_baton,/turf/open/floor/plasteel,/area/derelict/bridge/access) -"cj" = (/obj/structure/closet,/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plasteel,/area/derelict/solar_control) -"ck" = (/obj/structure/rack,/obj/item/clothing/head/helmet/swat,/turf/open/floor/plasteel,/area/derelict/bridge/access) -"cl" = (/obj/item/weapon/stock_parts/matter_bin,/turf/open/floor/plasteel{icon_state = "damaged4"},/area/derelict/solar_control) -"cm" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel,/area/derelict/bridge/access) -"cn" = (/obj/machinery/door/window,/turf/open/floor/plasteel,/area/derelict/solar_control) -"co" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel,/area/derelict/bridge/access) -"cp" = (/turf/open/floor/plasteel,/area/derelict/bridge/ai_upload) -"cq" = (/obj/machinery/power/apc{dir = 8; environ = 0; equipment = 0; lighting = 0; locked = 0; name = "Starboard Solar APC"; pixel_x = -24; pixel_y = 0},/obj/structure/cable,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/open/floor/plasteel,/area/derelict/solar_control) -"cr" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/solar{id = "derelictsolar"; name = "Derelict Solar Array"},/turf/open/floor/plating/airless{icon_state = "platingdmg3"},/area/solar/derelict_aft) -"cs" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/open/floor/plating,/area/derelict/solar_control) -"ct" = (/obj/structure/cable,/obj/machinery/power/apc{dir = 0; name = "Worn-out APC"; pixel_y = -24},/turf/open/floor/plasteel,/area/derelict/bridge/access) -"cu" = (/turf/open/floor/plating,/area/derelict/bridge/access) -"cv" = (/obj/item/weapon/ore/iron,/obj/item/weapon/ore/iron,/obj/item/weapon/ore/iron,/turf/open/space,/area/space) -"cw" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plating,/area/derelict/bridge/access) +"aK" = (/turf/open/floor/plasteel{icon_state = "grimy"},/area/djstation) +"aL" = (/obj/machinery/sleeper{icon_state = "sleeper-open"; dir = 8},/turf/open/floor/plasteel{icon_state = "grimy"},/area/djstation) +"aM" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk,/turf/open/floor/plasteel{icon_state = "bar"},/area/djstation) +"aN" = (/obj/machinery/light/small,/turf/open/floor/plasteel{icon_state = "bar"},/area/djstation) +"aO" = (/obj/structure/chair{dir = 1},/turf/open/floor/plasteel{icon_state = "bar"},/area/djstation) +"aP" = (/obj/structure/table,/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plasteel{icon_state = "cafeteria"},/area/djstation) +"aQ" = (/obj/structure/table,/obj/item/device/radio/intercom{broadcasting = 1; dir = 8; freerange = 1; listening = 0; name = "Pirate Radio Broadcast Channel"; pixel_x = 0},/turf/open/floor/plasteel{icon_state = "cafeteria"},/area/djstation) +"aR" = (/obj/structure/table,/obj/item/weapon/paper/djstation,/turf/open/floor/plasteel{icon_state = "cafeteria"},/area/djstation) +"aS" = (/obj/structure/frame/computer{anchored = 1},/turf/open/floor/plasteel{icon_state = "grimy"},/area/djstation) +"aT" = (/obj/structure/chair{dir = 8},/turf/open/floor/plasteel{icon_state = "grimy"},/area/djstation) +"aU" = (/obj/machinery/light/small,/turf/open/floor/plasteel{icon_state = "grimy"},/area/djstation) +"aV" = (/obj/structure/closet,/turf/open/floor/plasteel{icon_state = "grimy"},/area/djstation) +"aW" = (/obj/structure/disposalpipe/segment,/turf/closed/wall,/area/djstation) +"aX" = (/obj/machinery/door/airlock/hatch{name = "Washroom"},/turf/open/floor/plasteel{icon_state = "freezerfloor"},/area/djstation) +"aY" = (/obj/machinery/light{dir = 4},/turf/open/floor/plasteel{icon_state = "cafeteria"},/area/djstation) +"aZ" = (/obj/structure/disposalpipe/segment,/turf/open/floor/plating/airless,/area/space) +"ba" = (/turf/open/floor/plasteel{icon_state = "freezerfloor"},/area/djstation) +"bb" = (/obj/structure/chair{dir = 4},/turf/open/floor/plasteel{icon_state = "cafeteria"},/area/djstation) +"bc" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/space_heater,/turf/open/floor/plasteel{icon_state = "cafeteria"},/area/djstation) +"bd" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/rack{dir = 4},/obj/item/clothing/under/soviet,/obj/item/clothing/head/ushanka,/turf/open/floor/plasteel{icon_state = "cafeteria"},/area/djstation) +"be" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/machinery/light/small,/turf/open/floor/plasteel{icon_state = "freezerfloor"},/area/djstation) +"bf" = (/obj/structure/toilet{pixel_y = 8},/turf/open/floor/plasteel{icon_state = "freezerfloor"},/area/djstation) +"bg" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/turf/open/floor/plasteel{icon_state = "cafeteria"},/area/djstation) +"bh" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = -32},/turf/open/floor/plasteel{icon_state = "cafeteria"},/area/djstation) +"bi" = (/obj/machinery/power/tracker,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/open/floor/plasteel/airless,/area/solar/derelict_starboard) +"bj" = (/obj/machinery/door/airlock/external{name = "Ruskie DJ Station"; req_access = null; req_access_txt = "0"},/turf/open/floor/plating,/area/djstation) +"bk" = (/obj/structure/lattice/catwalk,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/space,/area/solar/derelict_starboard) +"bl" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/structure/disposaloutlet,/turf/open/floor/plating/airless,/area/space) +"bm" = (/turf/open/floor/plating/airless,/turf/open/floor/plating/airless{icon_state = "platingdmg2"},/area/solar/derelict_starboard) +"bn" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/open/floor/plasteel/airless{icon_state = "damaged5"},/area/solar/derelict_starboard) +"bo" = (/obj/machinery/power/solar{id = "derelictsolar"; name = "Derelict Solar Array"},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/open/floor/plasteel/airless,/area/solar/derelict_starboard) +"bp" = (/obj/structure/lattice/catwalk,/turf/open/space,/area/solar/derelict_starboard) +"bq" = (/obj/structure/lattice/catwalk,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/open/space,/area/solar/derelict_starboard) +"br" = (/obj/structure/lattice/catwalk,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/space,/area/solar/derelict_starboard) +"bs" = (/obj/structure/lattice/catwalk,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/open/space,/area/solar/derelict_starboard) +"bt" = (/obj/structure/lattice/catwalk,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/open/space,/area/solar/derelict_starboard) +"bu" = (/obj/structure/lattice/catwalk,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/open/space,/area/solar/derelict_starboard) +"bv" = (/obj/structure/lattice/catwalk,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/open/space,/area/solar/derelict_starboard) +"bw" = (/obj/machinery/power/solar{id = "derelictsolar"; name = "Derelict Solar Array"},/obj/structure/cable,/turf/open/floor/plasteel/airless,/area/solar/derelict_starboard) +"bx" = (/obj/structure/lattice/catwalk,/obj/structure/cable,/turf/open/space,/area/solar/derelict_starboard) +"by" = (/obj/structure/lattice/catwalk,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/open/space,/area/solar/derelict_starboard) +"bz" = (/turf/closed/wall,/area/derelict/solar_control) +"bA" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plating,/area/derelict/solar_control) +"bB" = (/obj/machinery/door/airlock/external{name = "External Engineering"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/open/floor/plating,/area/derelict/solar_control) +"bC" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plating,/area/derelict/solar_control) +"bD" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/open/floor/plating,/area/derelict/solar_control) +"bE" = (/turf/closed/wall/r_wall,/area/derelict/bridge/ai_upload) +"bF" = (/turf/open/floor/plating/airless,/area/space) +"bG" = (/turf/open/floor/plasteel,/area/derelict/solar_control) +"bH" = (/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plasteel,/area/derelict/solar_control) +"bI" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/open/floor/plasteel,/area/derelict/solar_control) +"bJ" = (/obj/machinery/power/smes,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/open/floor/plasteel,/area/derelict/solar_control) +"bK" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/solar_control{id = "derelictsolar"; name = "Primary Solar Control"; track = 0},/obj/structure/cable,/turf/open/floor/plasteel,/area/derelict/solar_control) +"bL" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/open/floor/plating,/area/derelict/solar_control) +"bM" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel,/area/derelict/solar_control) +"bN" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/open/floor/plasteel,/area/derelict/solar_control) +"bO" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/open/floor/plasteel,/area/derelict/solar_control) +"bP" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/light/small{dir = 4},/turf/open/floor/plasteel,/area/derelict/solar_control) +"bQ" = (/obj/machinery/light/small{dir = 8},/turf/open/floor/plasteel,/area/derelict/bridge/ai_upload) +"bR" = (/obj/machinery/door/airlock/external{name = "Air Bridge Access"},/turf/open/floor/plasteel,/area/derelict/bridge/ai_upload) +"bS" = (/obj/machinery/door/airlock/external{name = "Air Bridge Access"},/turf/open/floor/plating,/area/derelict/solar_control) +"bT" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel,/area/derelict/solar_control) +"bU" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/open/floor/plasteel,/area/derelict/solar_control) +"bV" = (/obj/structure/window/reinforced,/turf/open/floor/plasteel,/area/derelict/solar_control) +"bW" = (/obj/machinery/door/window,/turf/open/floor/plasteel,/area/derelict/solar_control) +"bX" = (/turf/open/floor/plasteel,/area/derelict/bridge/ai_upload) +"bY" = (/turf/closed/wall/r_wall,/area/derelict/solar_control) +"bZ" = (/obj/machinery/power/apc{dir = 8; environ = 0; equipment = 0; lighting = 0; locked = 0; name = "Starboard Solar APC"; pixel_x = -24; pixel_y = 0},/obj/structure/cable,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/open/floor/plasteel,/area/derelict/solar_control) +"ca" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/open/floor/plasteel,/area/derelict/solar_control) +"cb" = (/obj/machinery/door/airlock/external{name = "External Engineering"},/turf/open/floor/plating,/area/derelict/solar_control) +"cc" = (/obj/machinery/door/airlock/highsecurity,/turf/open/floor/plasteel,/area/derelict/bridge/ai_upload) +"cd" = (/obj/structure/frame/computer,/turf/open/floor/plasteel,/area/derelict/bridge/ai_upload) +"ce" = (/turf/closed/wall/r_wall,/area/space) +"cf" = (/obj/machinery/computer/monitor,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/open/floor/plasteel,/area/derelict/solar_control) +"cg" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light/small,/turf/open/floor/plasteel,/area/derelict/solar_control) +"ch" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel,/area/derelict/solar_control) +"ci" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating,/area/derelict/solar_control) +"cj" = (/obj/structure/grille/broken,/turf/open/floor/plating/airless,/area/space) +"ck" = (/obj/machinery/light/small,/turf/open/floor/plasteel,/area/derelict/bridge/ai_upload) +"cl" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/porta_turret_cover,/turf/open/floor/plasteel,/area/derelict/bridge/ai_upload) +"cm" = (/obj/machinery/porta_turret_cover,/turf/open/floor/plasteel,/area/derelict/bridge/ai_upload) +"cn" = (/obj/machinery/door/airlock/engineering{name = "Starboard Solar Access"; req_access_txt = "10"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel,/area/derelict/solar_control) +"co" = (/obj/structure/grille,/turf/open/space,/area/space) +"cp" = (/obj/structure/grille,/turf/open/floor/plating/airless,/area/derelict/bridge/ai_upload) +"cq" = (/obj/structure/closet,/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plasteel,/area/derelict/solar_control) +"cr" = (/turf/closed/wall,/area/derelict/bridge/ai_upload) +"cs" = (/obj/machinery/door/window,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel,/area/derelict/solar_control) +"ct" = (/obj/machinery/computer/atmos_alert,/turf/open/floor/plasteel,/area/derelict/bridge/ai_upload) +"cu" = (/obj/machinery/light/small{dir = 1},/turf/open/floor/plasteel,/area/derelict/bridge/ai_upload) +"cv" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"},/turf/open/floor/plasteel,/area/derelict/bridge/ai_upload) +"cw" = (/obj/machinery/light/small{dir = 8},/turf/open/floor/plasteel,/area/derelict/solar_control) "cx" = (/obj/item/stack/cable_coil/cut{amount = 2; dir = 2; icon_state = "coil_red2"},/turf/open/floor/plasteel,/area/derelict/solar_control) -"cy" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plating,/area/derelict/bridge/access) -"cz" = (/turf/open/floor/plasteel{icon_state = "damaged5"},/area/derelict/solar_control) -"cA" = (/turf/open/floor/plating/airless,/turf/open/floor/plating/airless{icon_state = "platingdmg2"},/area/solar/derelict_aft) -"cB" = (/obj/item/stack/cable_coil/cut,/turf/open/floor/plating/airless,/area/space) -"cC" = (/turf/open/floor/plasteel/airless{icon_state = "solarpanel"},/area/space) -"cD" = (/obj/item/stack/cable_coil/cut,/turf/open/space,/area/space) -"cE" = (/obj/machinery/light/small{dir = 8},/turf/open/floor/plasteel,/area/derelict/bridge/access) -"cF" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plating,/area/derelict/bridge/access) -"cG" = (/turf/open/floor/plating/airless{icon_state = "platingdmg1"},/area/solar/derelict_aft) -"cH" = (/obj/item/stack/cable_coil/cut{amount = 2; dir = 2; icon_state = "coil_red2"},/turf/open/floor/plasteel{icon_state = "damaged3"},/area/derelict/solar_control) -"cI" = (/turf/closed/wall/r_wall,/area/derelict/singularity_engine) -"cJ" = (/obj/structure/window/reinforced,/turf/open/floor/plasteel,/area/derelict/bridge/access) -"cK" = (/obj/machinery/door/window,/turf/open/floor/plasteel,/area/derelict/bridge/access) -"cL" = (/turf/open/floor/plasteel{icon_state = "damaged2"},/area/derelict/solar_control) -"cM" = (/turf/closed/wall,/area/derelict/bridge) -"cN" = (/obj/structure/sign/electricshock,/turf/closed/wall/r_wall,/area/derelict/singularity_engine) -"cO" = (/obj/structure/sign/securearea,/turf/closed/wall/r_wall,/area/derelict/singularity_engine) -"cP" = (/obj/machinery/light/small{dir = 1},/turf/open/floor/plasteel/airless{icon_state = "damaged5"},/area/derelict/gravity_generator) -"cQ" = (/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/gravity_generator) -"cR" = (/obj/structure/window/fulltile,/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) -"cS" = (/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plasteel,/area/derelict/bridge/access) -"cT" = (/obj/structure/frame/computer,/turf/open/floor/plasteel,/area/derelict/bridge) -"cU" = (/obj/structure/frame/computer,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/open/floor/plasteel,/area/derelict/bridge) -"cV" = (/obj/structure/table,/turf/open/floor/plasteel,/area/derelict/bridge) -"cW" = (/obj/machinery/computer/security,/turf/open/floor/plasteel,/area/derelict/bridge) -"cX" = (/obj/structure/table,/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = -7},/turf/open/floor/plasteel,/area/derelict/bridge) -"cY" = (/obj/structure/table,/obj/machinery/light/small{dir = 1},/turf/open/floor/plasteel,/area/derelict/bridge) -"cZ" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/turf/open/floor/plasteel,/area/derelict/bridge) -"da" = (/obj/item/weapon/grenade/empgrenade,/obj/structure/table,/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plasteel,/area/derelict/bridge) -"db" = (/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/singularity_engine) -"dc" = (/turf/open/floor/plasteel/airless{icon_state = "damaged4"},/area/derelict/singularity_engine) -"dd" = (/turf/open/floor/plasteel/airless{icon_state = "damaged5"},/area/derelict/singularity_engine) -"de" = (/turf/open/floor/plasteel/airless{icon_state = "damaged4"},/area/derelict/gravity_generator) -"df" = (/turf/open/floor/plating/airless,/area/derelict/singularity_engine) -"dg" = (/turf/closed/wall,/area/derelict/singularity_engine) -"dh" = (/obj/item/weapon/reagent_containers/food/drinks/beer,/turf/open/floor/plasteel,/area/derelict/bridge) -"di" = (/turf/open/floor/plasteel,/area/derelict/bridge) -"dj" = (/turf/open/floor/plating,/area/derelict/bridge) -"dk" = (/obj/structure/table,/obj/item/weapon/paper/crumpled,/turf/open/floor/plasteel,/area/derelict/bridge) -"dl" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plasteel,/area/derelict/bridge) -"dm" = (/obj/structure/window/reinforced,/obj/machinery/portable_atmospherics/canister/toxins,/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/singularity_engine) -"dn" = (/obj/structure/window/reinforced,/turf/open/floor/plasteel/airless{icon_state = "damaged5"},/area/derelict/singularity_engine) -"do" = (/obj/structure/window/reinforced,/turf/open/floor/plasteel/airless{icon_state = "damaged4"},/area/derelict/singularity_engine) -"dp" = (/obj/structure/window/reinforced,/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/singularity_engine) -"dq" = (/obj/machinery/light/small{dir = 8},/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/singularity_engine) -"dr" = (/obj/machinery/power/emitter{dir = 1; icon_state = "emitter"},/turf/open/floor/plating/airless,/area/derelict/singularity_engine) -"ds" = (/obj/machinery/field/generator,/turf/open/floor/plating/airless,/area/derelict/singularity_engine) -"dt" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/window/reinforced,/turf/open/floor/plasteel,/area/derelict/bridge/access) -"du" = (/obj/structure/window/reinforced/fulltile,/turf/open/floor/plasteel,/area/derelict/bridge/access) -"dv" = (/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plasteel,/area/derelict/bridge) -"dw" = (/obj/item/stack/rods,/turf/open/floor/plating/airless,/area/space) -"dx" = (/obj/structure/grille,/obj/structure/window/reinforced,/turf/open/floor/plating/airless,/area/derelict/singularity_engine) -"dy" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plating/airless,/area/derelict/singularity_engine) -"dz" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating/airless,/area/derelict/singularity_engine) -"dA" = (/turf/open/floor/plasteel/airless{icon_state = "damaged5"},/area/derelict/gravity_generator) -"dB" = (/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/singularity_engine) -"dC" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/open/floor/plasteel,/area/derelict/bridge/access) -"dD" = (/obj/machinery/door/window/eastleft{name = "Heads of Staff"; req_access_txt = "19"},/turf/open/floor/plasteel,/area/derelict/bridge/access) -"dE" = (/obj/structure/table,/obj/item/device/paicard,/turf/open/floor/plasteel,/area/derelict/bridge) -"dF" = (/obj/structure/chair/stool,/turf/open/floor/plasteel,/area/derelict/bridge) -"dG" = (/obj/structure/table,/obj/item/weapon/stock_parts/cell,/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plasteel,/area/derelict/bridge) -"dH" = (/obj/item/weapon/storage/toolbox/syndicate,/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/singularity_engine) -"dI" = (/obj/item/stack/cable_coil/cut,/turf/open/floor/plasteel/airless{icon_state = "damaged4"},/area/derelict/singularity_engine) -"dJ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/open/floor/plasteel,/area/derelict/bridge/access) -"dK" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/open/floor/plasteel,/area/derelict/bridge/access) -"dL" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/open/floor/plating,/area/derelict/bridge/access) -"dM" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/open/floor/plasteel,/area/derelict/bridge/access) -"dN" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/open/floor/plasteel,/area/derelict/bridge) -"dO" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel,/area/derelict/bridge) -"dP" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/open/floor/plasteel,/area/derelict/bridge) -"dQ" = (/obj/item/weapon/paper{info = "Objective #1: Destroy the station with a nuclear device."; name = "Objectives of a Nuclear Operative"},/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/singularity_engine) -"dR" = (/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plating,/area/derelict/bridge/access) -"dS" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/open/floor/plasteel,/area/derelict/bridge) -"dT" = (/obj/structure/chair,/turf/open/floor/plasteel,/area/derelict/bridge) -"dU" = (/obj/structure/table,/obj/item/weapon/screwdriver,/turf/open/floor/plasteel,/area/derelict/bridge) -"dV" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/beer,/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plasteel,/area/derelict/bridge) -"dW" = (/obj/item/stack/rods,/turf/open/space,/area/space) -"dX" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating/airless,/area/derelict/singularity_engine) -"dY" = (/obj/item/weapon/shard,/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/effect/decal/remains/human{desc = "This guy seemed to have died in terrible way! Half his remains are dust."; icon_state = "remains"; name = "Syndicate agent remains"},/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/singularity_engine) -"dZ" = (/obj/item/clothing/suit/space/syndicate/black/engie,/turf/open/floor/plating/airless,/area/derelict/singularity_engine) -"ea" = (/obj/item/stack/rods,/turf/open/floor/plating/airless,/area/derelict/singularity_engine) -"eb" = (/obj/item/weapon/shard,/turf/open/floor/plasteel/airless{icon_state = "damaged5"},/area/derelict/singularity_engine) -"ec" = (/obj/structure/grille,/turf/open/floor/plating/airless,/area/derelict/singularity_engine) -"ed" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plating/airless,/area/derelict/singularity_engine) -"ee" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plating/airless,/area/derelict/singularity_engine) -"ef" = (/obj/structure/table,/obj/item/weapon/rack_parts,/turf/open/floor/plasteel,/area/derelict/bridge) -"eg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/open/floor/plasteel,/area/derelict/bridge/access) -"eh" = (/obj/structure/window/fulltile,/turf/open/floor/plasteel,/area/derelict/bridge) -"ei" = (/obj/structure/table,/obj/machinery/power/apc{dir = 0; name = "Worn-out APC"; pixel_y = -24},/obj/structure/cable,/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plasteel,/area/derelict/bridge) -"ej" = (/obj/structure/table,/obj/machinery/light/small,/turf/open/floor/plasteel,/area/derelict/bridge) -"ek" = (/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/singularity_engine) -"el" = (/obj/item/clothing/head/helmet/space/syndicate/black/engie,/turf/open/floor/plating/airless,/area/derelict/singularity_engine) -"em" = (/obj/item/weapon/shard{icon_state = "small"},/turf/open/floor/plating/airless,/area/derelict/singularity_engine) -"en" = (/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plating/airless,/area/derelict/singularity_engine) -"eo" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plating/airless,/area/derelict/singularity_engine) -"ep" = (/obj/machinery/door/window,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel,/area/derelict/bridge/access) -"eq" = (/turf/closed/wall/r_wall,/area/derelict/bridge) -"er" = (/obj/machinery/door/window{dir = 2; name = "Captain's Quarters"; req_access_txt = "20"},/obj/structure/grille,/turf/open/floor/plating/airless,/area/derelict/bridge) -"es" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating/airless,/area/derelict/singularity_engine) -"et" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/light/small{dir = 8},/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/singularity_engine) -"eu" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/light/small{dir = 4},/turf/open/floor/plating/airless,/area/derelict/singularity_engine) -"ev" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plating/airless,/area/derelict/singularity_engine) -"ew" = (/obj/item/stack/cable_coil/cut,/turf/open/floor/plasteel/airless{icon_state = "damaged5"},/area/derelict/singularity_engine) -"ex" = (/turf/open/floor/plasteel/airless,/area/derelict/bridge/access) -"ey" = (/obj/machinery/porta_turret_cover,/turf/open/floor/plasteel,/area/derelict/bridge/ai_upload) -"ez" = (/obj/machinery/door/airlock/command{name = "E.V.A."; req_access = null; req_access_txt = "18"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel,/area/derelict/bridge/access) -"eA" = (/obj/structure/closet,/obj/effect/spawner/lootdrop/maintenance{lootcount = 3; name = "3maintenance loot spawner"},/turf/open/floor/plasteel,/area/derelict/solar_control) -"eB" = (/obj/structure/table,/obj/item/weapon/stock_parts/cell{charge = 100; maxcharge = 15000},/turf/open/floor/plasteel/airless,/area/derelict/bridge/access) -"eC" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel/airless,/area/derelict/bridge/access) -"eD" = (/obj/structure/girder,/turf/open/floor/plating/airless,/area/space) -"eE" = (/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plating/airless,/area/derelict/singularity_engine) -"eF" = (/obj/machinery/door/airlock/highsecurity,/turf/open/floor/plasteel,/area/derelict/bridge/ai_upload) -"eG" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/open/floor/plasteel/airless,/area/derelict/bridge/access) -"eH" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/open/floor/plating/airless,/area/derelict/bridge/access) -"eI" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/open/floor/plasteel/airless,/area/derelict/bridge/access) -"eJ" = (/obj/machinery/light/small{dir = 4},/turf/open/floor/plasteel/airless,/area/derelict/bridge/access) -"eK" = (/obj/item/stack/cable_coil/cut,/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/singularity_engine) -"eL" = (/obj/item/stack/cable_coil/cut,/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/singularity_engine) -"eM" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/singularity_engine) -"eN" = (/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/singularity_engine) -"eO" = (/obj/structure/frame/computer,/turf/open/floor/plasteel,/area/derelict/bridge/ai_upload) -"eP" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light/small,/turf/open/floor/plasteel,/area/derelict/solar_control) -"eQ" = (/obj/structure/closet,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/open/floor/plasteel,/area/derelict/solar_control) -"eR" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/open/floor/plating/airless,/area/derelict/singularity_engine) -"eS" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/open/floor/plasteel/airless{icon_state = "damaged5"},/area/derelict/singularity_engine) -"eT" = (/obj/structure/grille,/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/singularity_engine) -"eU" = (/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plasteel/airless{icon_state = "damaged4"},/area/derelict/singularity_engine) -"eV" = (/obj/machinery/door/airlock/maintenance{name = "Tech Storage"; req_access_txt = "23"},/turf/open/floor/plasteel/airless,/area/derelict/bridge/access) -"eW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/open/floor/plating/airless,/area/derelict/bridge/access) -"eX" = (/obj/structure/cable,/obj/machinery/power/apc{dir = 0; name = "Worn-out APC"; pixel_y = -24},/turf/open/floor/plasteel/airless,/area/derelict/bridge/access) -"eY" = (/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/singularity_engine) -"eZ" = (/obj/item/weapon/screwdriver,/turf/open/floor/plating/airless,/area/derelict/singularity_engine) -"fa" = (/obj/item/stack/rods,/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/singularity_engine) -"fb" = (/obj/item/weapon/shard{icon_state = "medium"},/obj/item/stack/cable_coil/cut,/turf/open/floor/plating/airless,/area/derelict/singularity_engine) -"fc" = (/obj/item/weapon/stock_parts/console_screen,/turf/open/space,/area/derelict/bridge/ai_upload) -"fd" = (/turf/closed/wall,/area/derelict/hallway/primary) -"fe" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/open/floor/plating,/area/derelict/bridge/access) -"ff" = (/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/hallway/primary) -"fg" = (/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) -"fh" = (/obj/item/weapon/ore/slag,/turf/open/floor/plating/airless,/area/derelict/singularity_engine) -"fi" = (/obj/item/weapon/shard,/turf/open/floor/plating/airless,/area/derelict/singularity_engine) -"fj" = (/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating/airless,/area/derelict/singularity_engine) -"fk" = (/turf/closed/wall/r_wall,/area/derelict/hallway/primary) -"fl" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plating/airless,/area/derelict/hallway/primary) -"fm" = (/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/hallway/primary) -"fn" = (/obj/structure/window/fulltile,/turf/open/floor/plating/airless,/area/space) -"fo" = (/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/singularity_engine) -"fp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/item/weapon/shard{icon_state = "medium"},/turf/open/floor/plating/airless,/area/derelict/singularity_engine) -"fq" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating/airless,/area/derelict/singularity_engine) -"fr" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/open/floor/plating/airless,/area/derelict/hallway/primary) -"fs" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plating/airless,/area/derelict/hallway/primary) -"ft" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/open/floor/plasteel,/area/derelict/bridge/access) -"fu" = (/turf/open/floor/plasteel/airless{icon_state = "floorscorched2"},/area/derelict/hallway/primary) -"fv" = (/obj/machinery/light/small,/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) -"fw" = (/obj/machinery/computer/monitor,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/open/floor/plasteel,/area/derelict/solar_control) -"fx" = (/turf/open/floor/plasteel/airless{icon_state = "floorscorched2"},/area/space) -"fy" = (/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/space) -"fz" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating/airless,/area/derelict/singularity_engine) -"fA" = (/obj/machinery/door/window,/turf/open/floor/plating/airless,/area/derelict/hallway/primary) -"fB" = (/turf/open/floor/plasteel/airless{icon_state = "floorscorched1"},/area/space) -"fC" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/singularity_engine) -"fD" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/open/floor/plating/airless,/area/derelict/singularity_engine) -"fE" = (/obj/machinery/light/small{dir = 4},/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/singularity_engine) -"fF" = (/turf/open/floor/plating/airless,/area/derelict/hallway/primary) -"fG" = (/obj/item/weapon/crowbar,/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) -"fH" = (/obj/structure/grille,/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) -"fI" = (/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/space) -"fJ" = (/obj/item/weapon/shard{icon_state = "small"},/obj/item/weapon/shard{icon_state = "medium"},/turf/open/floor/plating/airless,/area/derelict/singularity_engine) -"fK" = (/obj/structure/window/reinforced,/turf/open/floor/plating/airless,/area/derelict/singularity_engine) -"fL" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating/airless,/area/derelict/singularity_engine) -"fM" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/open/floor/plating/airless,/area/derelict/hallway/primary) -"fN" = (/turf/closed/wall/r_wall,/area/derelict/arrival) -"fO" = (/turf/closed/wall,/area/derelict/arrival) -"fP" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating/airless,/area/derelict/singularity_engine) -"fQ" = (/obj/machinery/light/small,/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/hallway/primary) -"fR" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/window/fulltile,/turf/open/floor/plating/airless,/area/space) -"fS" = (/obj/structure/table,/turf/open/floor/plasteel,/area/derelict/arrival) -"fT" = (/obj/structure/chair,/turf/open/floor/plasteel,/area/derelict/arrival) -"fU" = (/turf/open/floor/plasteel,/area/derelict/arrival) -"fV" = (/obj/machinery/light/small{dir = 1},/turf/open/floor/plasteel,/area/derelict/arrival) -"fW" = (/obj/structure/chair{dir = 8},/obj/item/weapon/pen,/turf/open/floor/plasteel,/area/derelict/arrival) -"fX" = (/obj/structure/chair{dir = 8},/turf/open/floor/plasteel,/area/derelict/arrival) -"fY" = (/turf/closed/wall,/area/derelict/medical/chapel) -"fZ" = (/obj/item/weapon/shard,/turf/open/space,/area/space) -"ga" = (/obj/structure/grille,/turf/open/space,/area/derelict/singularity_engine) -"gb" = (/obj/item/weapon/shard,/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/singularity_engine) -"gc" = (/obj/structure/lattice,/obj/structure/window/fulltile,/turf/open/space,/area/space) -"gd" = (/turf/open/floor/plasteel/airless{icon_state = "floorscorched2"},/area/derelict/arrival) -"ge" = (/turf/open/floor/plating/airless,/area/derelict/arrival) -"gf" = (/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/arrival) -"gg" = (/turf/open/floor/plasteel{icon_state = "dark"},/area/derelict/medical/chapel) -"gh" = (/obj/machinery/light/small{dir = 1},/turf/open/floor/plasteel{icon_state = "dark"},/area/derelict/medical/chapel) -"gi" = (/obj/structure/closet/coffin,/turf/open/floor/plasteel{icon_state = "dark"},/area/derelict/medical/chapel) -"gj" = (/turf/closed/wall,/area/derelict/medical) -"gk" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plating/airless,/area/derelict/medical) -"gl" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plating/airless,/area/derelict/medical) -"gm" = (/obj/item/weapon/shard,/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/open/floor/plating/airless,/area/derelict/medical) -"gn" = (/turf/open/floor/plating/airless,/area/derelict/medical) -"go" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/open/floor/plating/airless,/area/derelict/medical) -"gp" = (/obj/machinery/door/airlock/external{name = "External Engineering"},/turf/open/floor/plating/airless,/area/space) -"gq" = (/obj/structure/grille,/turf/open/space,/area/space) -"gr" = (/turf/open/floor/plasteel/airless{icon_state = "damaged4"},/area/derelict/hallway/primary) -"gs" = (/obj/machinery/door/window{dir = 8},/turf/open/floor/plasteel,/area/derelict/arrival) -"gt" = (/turf/open/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) -"gu" = (/obj/item/weapon/firstaid_arm_assembly,/turf/open/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) -"gv" = (/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/medical) -"gw" = (/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/medical) -"gx" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/open/floor/plating/airless,/area/space) -"gy" = (/obj/machinery/light/small,/turf/open/floor/plasteel/airless{icon_state = "damaged4"},/area/derelict/singularity_engine) -"gz" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/open/floor/plating/airless,/area/derelict/hallway/primary) -"gA" = (/obj/structure/window/fulltile,/turf/open/floor/plating/airless,/area/derelict/arrival) -"gB" = (/obj/structure/girder,/turf/open/floor/plating/airless,/area/derelict/arrival) -"gC" = (/obj/structure/window/fulltile,/turf/open/floor/plating/airless,/area/derelict/hallway/secondary) -"gD" = (/turf/open/floor/plating,/area/derelict/arrival) -"gE" = (/obj/machinery/door/airlock/medical{name = "Morgue"; req_access_txt = "6"},/turf/open/floor/plasteel{icon_state = "dark"},/area/derelict/medical/chapel) -"gF" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/open/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) -"gG" = (/obj/item/stack/medical/bruise_pack,/turf/open/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) -"gH" = (/turf/open/floor/plasteel/airless{icon_state = "damaged5"},/area/space) -"gI" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plasteel,/area/derelict/arrival) -"gJ" = (/obj/machinery/light/small{dir = 4},/turf/open/floor/plasteel,/area/derelict/arrival) -"gK" = (/obj/machinery/light/small,/turf/open/floor/plasteel{icon_state = "dark"},/area/derelict/medical/chapel) -"gL" = (/obj/item/weapon/storage/box/lights/mixed,/turf/open/floor/plating/airless,/area/derelict/singularity_engine) -"gM" = (/turf/open/floor/plasteel/airless{icon_state = "damaged4"},/area/space) -"gN" = (/obj/structure/chair{dir = 1},/turf/open/floor/plasteel,/area/derelict/arrival) -"gO" = (/obj/structure/chair{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plasteel,/area/derelict/arrival) -"gP" = (/obj/machinery/door/morgue{name = "coffin storage"; req_access_txt = "22"},/turf/open/floor/plasteel{icon_state = "dark"},/area/derelict/medical/chapel) -"gQ" = (/obj/structure/bodycontainer/morgue,/turf/open/floor/plasteel{icon_state = "dark"},/area/derelict/medical/chapel) -"gR" = (/obj/item/drone_shell,/turf/open/floor/plasteel/airless,/area/derelict/bridge/access) -"gS" = (/obj/structure/window/reinforced,/turf/open/floor/plating/airless,/area/space) -"gT" = (/obj/structure/window/reinforced,/turf/open/floor/plasteel/airless{icon_state = "white"},/area/space) -"gU" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/hallway/primary) -"gV" = (/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plasteel,/area/derelict/arrival) -"gW" = (/obj/structure/table,/obj/machinery/light/small{dir = 1},/obj/item/weapon/electronics/airlock,/turf/open/floor/plasteel/airless,/area/derelict/bridge/access) -"gX" = (/obj/structure/rack,/obj/item/weapon/circuitboard/machine/autolathe,/obj/item/weapon/circuitboard/machine/protolathe{pixel_x = -5; pixel_y = -3},/turf/open/floor/plasteel,/area/derelict/bridge/ai_upload) -"gY" = (/turf/open/floor/plasteel{dir = 4; icon_state = "chapel"},/area/derelict/medical/chapel) -"gZ" = (/turf/open/floor/plasteel{dir = 1; icon_state = "chapel"},/area/derelict/medical/chapel) -"ha" = (/obj/item/weapon/shard{icon_state = "small"},/turf/open/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) -"hb" = (/obj/item/stack/medical/bruise_pack,/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/medical) -"hc" = (/obj/item/stack/medical/ointment,/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/medical) -"hd" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/open/floor/plating/airless,/area/derelict/medical) -"he" = (/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plating/airless,/area/space) -"hf" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/open/space,/area/space) -"hg" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 8},/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plasteel{dir = 8; icon_state = "chapel"},/area/derelict/medical/chapel) -"hh" = (/turf/open/floor/plasteel{icon_state = "chapel"},/area/derelict/medical/chapel) -"hi" = (/turf/open/floor/plasteel{dir = 8; icon_state = "chapel"},/area/derelict/medical/chapel) -"hj" = (/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) -"hk" = (/obj/item/weapon/cigbutt,/turf/open/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) -"hl" = (/obj/machinery/door/airlock/glass{name = "Med-Sci"; req_access_txt = "9"},/turf/open/floor/plating/airless,/area/derelict/medical) -"hm" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) -"hn" = (/obj/structure/closet/emcloset,/turf/open/floor/plasteel,/area/derelict/arrival) -"ho" = (/obj/structure/window/reinforced,/turf/open/space,/area/space) -"hp" = (/obj/item/stack/cable_coil/cut{amount = 2; dir = 2; icon_state = "coil_red2"},/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/hallway/primary) -"hq" = (/obj/structure/rack,/obj/item/weapon/circuitboard/machine/circuit_imprinter,/turf/open/floor/plasteel,/area/derelict/bridge/ai_upload) -"hr" = (/obj/structure/window/reinforced,/turf/open/floor/plasteel{dir = 4; icon_state = "chapel"},/area/derelict/medical/chapel) -"hs" = (/obj/structure/window/reinforced,/turf/open/floor/plasteel{dir = 1; icon_state = "chapel"},/area/derelict/medical/chapel) -"ht" = (/obj/item/stack/cable_coil/cut{amount = 2; dir = 2; icon_state = "coil_red2"},/turf/open/floor/plating/airless,/area/derelict/hallway/primary) -"hu" = (/obj/item/drone_shell,/turf/open/floor/plating/airless,/area/derelict/singularity_engine) -"hv" = (/obj/item/stack/cable_coil/cut{amount = 2; dir = 2; icon_state = "coil_red2"},/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/hallway/primary) -"hw" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) -"hx" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/open/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) -"hy" = (/obj/item/stack/cable_coil/cut{amount = 2; dir = 2; icon_state = "coil_red2"},/turf/open/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) -"hz" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) -"hA" = (/obj/item/stack/cable_coil/cut{amount = 2; dir = 2; icon_state = "coil_red2"},/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/medical) -"hB" = (/obj/structure/frame/computer,/obj/item/weapon/circuitboard/computer/rdconsole,/turf/open/floor/plasteel/airless,/area/derelict/bridge/ai_upload) -"hC" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plating/airless,/area/space) -"hD" = (/obj/item/weapon/shard,/turf/open/floor/plating/airless,/area/space) -"hE" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/open/floor/plating/airless,/area/space) -"hF" = (/turf/open/floor/plasteel/airless{icon_state = "white"},/area/space) -"hG" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) -"hH" = (/obj/machinery/light/small{dir = 4},/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) -"hI" = (/obj/item/weapon/pen,/turf/open/floor/plasteel,/area/derelict/arrival) -"hJ" = (/obj/machinery/power/apc{dir = 4; name = "Worn-out APC"; pixel_x = 24; pixel_y = 0},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/open/floor/plasteel/airless,/area/derelict/medical/chapel) -"hK" = (/turf/open/floor/plating,/area/derelict/medical/chapel) -"hL" = (/obj/machinery/mass_driver{dir = 8; icon_state = "mass_driver"; id = "derelict_gun"},/obj/machinery/door/window{dir = 4; req_access_txt = "25"},/obj/structure/closet/coffin,/turf/open/floor/plating,/area/derelict/medical/chapel) -"hM" = (/obj/machinery/door/window{dir = 8},/turf/open/floor/plasteel/airless,/area/derelict/medical/chapel) -"hN" = (/turf/open/floor/plasteel/airless,/area/derelict/medical/chapel) -"hO" = (/obj/machinery/light/small{dir = 1},/turf/open/floor/plasteel/airless,/area/derelict/medical/chapel) -"hP" = (/obj/item/stack/cable_coil/cut{amount = 2; dir = 2; icon_state = "coil_red2"},/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/medical) -"hQ" = (/obj/machinery/door/window,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel/airless,/area/derelict/medical/chapel) -"hR" = (/obj/machinery/power/apc{dir = 0; name = "Worn-out APC"; pixel_y = -24},/obj/structure/cable,/turf/open/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) -"hS" = (/obj/item/stack/medical/ointment,/turf/open/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) -"hT" = (/obj/machinery/light/small,/turf/open/floor/plasteel,/area/derelict/bridge/ai_upload) -"hU" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/porta_turret_cover,/turf/open/floor/plasteel,/area/derelict/bridge/ai_upload) -"hV" = (/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating/airless,/area/space) -"hW" = (/obj/structure/window/fulltile,/turf/open/space,/area/space) -"hY" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/open/floor/plasteel,/area/derelict/arrival) -"hZ" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/open/floor/plasteel,/area/derelict/arrival) -"ia" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plating,/area/derelict/arrival) -"ib" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plating,/area/derelict/arrival) -"ic" = (/obj/structure/window/reinforced{dir = 1},/turf/open/space,/area/space) -"id" = (/obj/structure/rack,/obj/item/weapon/circuitboard/machine/smes,/turf/open/floor/plasteel,/area/derelict/bridge/ai_upload) -"ie" = (/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plasteel/airless{icon_state = "damaged4"},/area/space) -"if" = (/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plasteel{dir = 4; icon_state = "chapel"},/area/derelict/medical/chapel) -"ig" = (/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plasteel{dir = 1; icon_state = "chapel"},/area/derelict/medical/chapel) -"ih" = (/obj/item/stack/cable_coil/cut{amount = 2; dir = 2; icon_state = "coil_red2"},/turf/open/floor/plating/airless,/area/space) -"ii" = (/obj/machinery/door/window/southleft,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) -"ij" = (/obj/machinery/door/window/southright,/turf/open/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) -"ik" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) -"il" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) -"im" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/hallway/primary) -"in" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/research{name = "Toxins Research"; req_access_txt = "7"},/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) -"io" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plating/airless,/area/space) -"ip" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel/airless{icon_state = "floorscorched1"},/area/derelict/hallway/primary) -"ir" = (/obj/structure/lattice,/obj/structure/grille,/turf/open/space,/area/space) -"is" = (/obj/machinery/door/airlock/external{name = "Arrivals Docking Bay 1"},/turf/open/floor/plating,/area/derelict/arrival) -"it" = (/obj/machinery/light/small{dir = 1},/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) -"iu" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/open/floor/plasteel/airless,/area/space) -"iv" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel/airless,/area/space) -"ix" = (/obj/item/weapon/stock_parts/manipulator,/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/gravity_generator) -"iy" = (/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel/airless,/area/space) -"iA" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/research{name = "Toxins Research"; req_access_txt = "7"},/turf/open/floor/plasteel/airless,/area/derelict/arrival) -"iB" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel,/area/derelict/arrival) -"iC" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plating,/area/derelict/arrival) -"iD" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/open/floor/plasteel,/area/derelict/arrival) -"iE" = (/obj/machinery/light/small,/turf/open/floor/plasteel{dir = 4; icon_state = "chapel"},/area/derelict/medical/chapel) -"iF" = (/obj/machinery/light/small{dir = 8},/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) -"iG" = (/obj/item/stack/cable_coil/cut{amount = 2; dir = 2; icon_state = "coil_red2"},/turf/open/floor/plasteel/airless{icon_state = "floorscorched1"},/area/derelict/hallway/primary) -"iH" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/open/floor/plasteel/airless{icon_state = "floorscorched1"},/area/derelict/hallway/primary) -"iI" = (/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) -"iN" = (/obj/structure/cable,/obj/machinery/power/apc{dir = 0; name = "Worn-out APC"; pixel_y = -24},/turf/open/floor/plasteel,/area/derelict/arrival) -"iO" = (/obj/machinery/portable_atmospherics/scrubber,/turf/open/floor/plasteel,/area/derelict/arrival) -"iP" = (/obj/structure/table,/obj/machinery/computer/pod/old{name = "ProComp IIe"; pixel_y = 7; id = "derelict_gun"},/turf/open/floor/plasteel{icon_state = "chapel"},/area/derelict/medical/chapel) -"iQ" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"},/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) -"iR" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) -"iS" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) -"iT" = (/obj/structure/girder,/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) -"iU" = (/obj/machinery/portable_atmospherics/pump,/turf/open/floor/plasteel,/area/derelict/arrival) -"iV" = (/obj/machinery/door/window,/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) -"iW" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) -"iX" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) -"iY" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) -"iZ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/open/floor/plating/airless,/area/derelict/hallway/primary) -"ja" = (/obj/machinery/door/airlock/engineering{name = "Starboard Solar Access"; req_access_txt = "10"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel,/area/derelict/solar_control) -"jd" = (/obj/structure/bed,/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) -"je" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plating/airless,/area/derelict/hallway/primary) -"jf" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plating/airless,/area/derelict/hallway/primary) -"jg" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating/airless,/area/derelict/hallway/primary) -"jh" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) -"ji" = (/obj/item/weapon/cigbutt,/turf/open/space,/area/space) -"jk" = (/obj/machinery/light{dir = 1},/turf/open/floor/plasteel,/area/derelict/arrival) -"jl" = (/obj/structure/table,/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) -"jm" = (/obj/structure/table,/obj/item/weapon/stock_parts/cell,/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) -"jn" = (/obj/machinery/vending/sovietsoda,/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) -"jo" = (/obj/structure/cable,/obj/machinery/power/apc{dir = 0; name = "Worn-out APC"; pixel_y = -24},/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) -"jp" = (/obj/structure/rack,/obj/machinery/light/small{dir = 1},/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plasteel,/area/derelict/bridge/access) -"jq" = (/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plasteel/airless,/area/space) -"jr" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel/airless,/area/space) -"js" = (/obj/structure/lattice,/obj/item/stack/cable_coil/cut,/turf/open/space,/area/space) -"jt" = (/obj/structure/girder,/turf/open/floor/plating,/area/derelict/arrival) -"ju" = (/obj/structure/chair/stool,/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) -"jv" = (/obj/machinery/door/airlock/maintenance{name = "Atmospherics Access"; req_access_txt = "24"},/turf/open/floor/plating/airless,/area/derelict/hallway/primary) -"jw" = (/obj/structure/rack,/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plasteel,/area/derelict/bridge/access) -"jy" = (/obj/structure/grille,/turf/open/floor/plating,/area/derelict/arrival) -"jz" = (/obj/structure/rack,/obj/item/weapon/stock_parts/capacitor,/obj/item/weapon/stock_parts/manipulator,/turf/open/floor/plasteel,/area/derelict/bridge/access) -"jA" = (/turf/open/floor/plasteel/airless{icon_state = "floorscorched1"},/area/derelict/hallway/primary) -"jB" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/window/reinforced,/turf/open/floor/plasteel/airless,/area/space) -"jC" = (/obj/structure/window/reinforced,/turf/open/floor/plasteel/airless,/area/space) -"jD" = (/obj/structure/grille,/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating/airless,/area/space) -"jE" = (/obj/structure/bed,/turf/open/floor/plasteel/airless,/area/space) -"jF" = (/obj/docking_port/stationary{dheight = 0; dir = 2; dwidth = 11; height = 22; id = "whiteship_z4"; name = "KSS13: Derelict"; width = 35},/turf/open/space,/area/space) -"jG" = (/turf/open/floor/plasteel/airless{icon_state = "floorgrime"},/area/derelict/hallway/primary) -"jH" = (/turf/open/floor/plasteel/airless{icon_state = "damaged5"},/area/derelict/hallway/primary) -"jI" = (/obj/structure/table,/obj/item/device/healthanalyzer,/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) -"jJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating/airless,/area/space) -"jK" = (/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plasteel/airless{icon_state = "solarpanel"},/area/space) -"jL" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating/airless,/area/space) -"jM" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/open/floor/plating,/area/derelict/arrival) -"jN" = (/obj/machinery/door/airlock/external{name = "Escape Airlock"},/turf/open/floor/plating,/area/derelict/arrival) -"jO" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) -"jP" = (/turf/closed/wall,/area/derelict/hallway/secondary) -"jQ" = (/obj/structure/girder,/turf/open/floor/plating/airless,/area/derelict/hallway/secondary) -"jR" = (/turf/closed/wall/r_wall,/area/derelict/hallway/secondary) -"jS" = (/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plating/airless,/area/space) -"jT" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) -"jU" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) -"jV" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) -"jW" = (/obj/machinery/door/airlock/security{name = "Security"; req_access = null; req_access_txt = "1"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) -"jX" = (/obj/structure/grille,/obj/item/weapon/shard,/obj/item/weapon/shard{icon_state = "medium"},/turf/open/floor/plating/airless,/area/space) -"jY" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/open/floor/plating/airless,/area/space) -"jZ" = (/obj/structure/girder,/turf/open/floor/plating/airless,/area/derelict/hallway/primary) -"ka" = (/obj/structure/window/reinforced{dir = 8},/obj/item/stack/cable_coil/cut{amount = 2; dir = 2; icon_state = "coil_red2"},/turf/open/floor/plasteel/airless,/area/space) -"kb" = (/obj/item/weapon/shard{icon_state = "small"},/turf/open/space,/area/space) -"kd" = (/obj/item/stack/cable_coil/cut{amount = 2; dir = 2; icon_state = "coil_red2"},/turf/open/floor/plasteel/airless,/area/space) -"ke" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating/airless,/area/derelict/hallway/secondary) -"kf" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel/airless,/area/derelict/hallway/secondary) -"kg" = (/obj/item/stack/cable_coil/cut,/turf/open/floor/plating/airless,/area/derelict/hallway/primary) -"kh" = (/turf/open/floor/plasteel/airless,/area/derelict/hallway/secondary) -"ki" = (/obj/machinery/light/small{dir = 4},/turf/open/floor/plasteel/airless,/area/derelict/hallway/secondary) -"kj" = (/obj/machinery/door/airlock/maintenance{name = "Aux Storage"; req_access_txt = "23"},/turf/open/floor/plating/airless,/area/derelict/hallway/secondary) -"kk" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable,/obj/machinery/power/apc{dir = 8; name = "Worn-out APC"; pixel_x = -24; pixel_y = 0},/turf/open/floor/plasteel/airless,/area/derelict/hallway/secondary) -"kl" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating/airless,/area/derelict/hallway/secondary) -"km" = (/turf/open/floor/plating/airless,/area/derelict/hallway/secondary) -"kn" = (/obj/machinery/light/small{dir = 1},/turf/open/floor/plasteel/airless,/area/derelict/hallway/secondary) -"kp" = (/obj/item/stack/rods,/turf/open/floor/plasteel/airless,/area/derelict/hallway/secondary) -"kq" = (/obj/structure/door_assembly/door_assembly_mai{name = "airlock assembly"},/turf/open/floor/plasteel/airless,/area/derelict/hallway/secondary) -"kr" = (/obj/structure/grille,/turf/open/floor/plating/airless,/area/derelict/bridge/ai_upload) -"ks" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/frame/machine,/obj/item/weapon/stock_parts/console_screen,/turf/open/floor/plating/airless,/area/derelict/gravity_generator) -"kt" = (/obj/item/weapon/wirecutters,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/open/floor/plasteel/airless,/area/derelict/hallway/secondary) -"ku" = (/obj/structure/reagent_dispensers/fueltank,/turf/open/floor/plasteel/airless,/area/derelict/se_solar) -"kv" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/item/drone_shell,/turf/open/floor/plasteel/airless,/area/derelict/se_solar) -"kw" = (/obj/effect/spawner/lootdrop/crate_spawner,/turf/open/floor/plasteel{icon_state = "grimy"},/area/djstation) -"kx" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel/airless,/area/derelict/hallway/secondary) -"ky" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/open/floor/plasteel/airless,/area/derelict/hallway/secondary) -"kz" = (/turf/open/floor/plasteel/airless{icon_state = "derelict1"},/area/derelict/hallway/secondary) -"kA" = (/turf/open/floor/plasteel/airless{icon_state = "derelict2"},/area/derelict/hallway/secondary) -"kB" = (/turf/open/floor/plasteel/airless{icon_state = "derelict3"},/area/derelict/hallway/secondary) -"kC" = (/turf/open/floor/plasteel/airless{icon_state = "derelict4"},/area/derelict/hallway/secondary) -"kD" = (/turf/open/floor/plasteel/airless{icon_state = "derelict5"},/area/derelict/hallway/secondary) -"kE" = (/turf/open/floor/plasteel/airless{icon_state = "derelict6"},/area/derelict/hallway/secondary) -"kF" = (/turf/open/floor/plasteel/airless{icon_state = "derelict7"},/area/derelict/hallway/secondary) -"kG" = (/turf/open/floor/plasteel/airless{icon_state = "derelict8"},/area/derelict/hallway/secondary) -"kH" = (/obj/structure/lattice,/turf/open/space,/area/derelict/hallway/secondary) -"kI" = (/obj/structure/grille,/obj/structure/window/reinforced,/turf/open/floor/plating/airless,/area/derelict/hallway/secondary) -"kJ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plating/airless,/area/derelict/hallway/secondary) -"kK" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating/airless,/area/derelict/hallway/secondary) -"kL" = (/turf/closed/wall/r_wall,/area/derelict/bridge/ai_upload) -"kM" = (/obj/effect/spawner/lootdrop/crate_spawner,/turf/open/floor/plasteel/airless,/area/derelict/bridge/access) -"kN" = (/obj/machinery/door/airlock/external{name = "Escape Airlock"},/turf/open/floor/plating/airless,/area/derelict/hallway/secondary) -"kO" = (/obj/machinery/light/small{dir = 4},/obj/item/weapon/stock_parts/matter_bin{pixel_x = -10; pixel_y = 5},/obj/item/weapon/stock_parts/matter_bin{pixel_x = 5; pixel_y = 5},/obj/item/weapon/stock_parts/matter_bin,/turf/open/floor/plating/airless,/area/derelict/gravity_generator) -"kR" = (/turf/closed/wall,/area/derelict/bridge/ai_upload) -"kS" = (/obj/structure/closet/emcloset,/turf/open/floor/plasteel/airless,/area/derelict/hallway/secondary) -"kT" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plating/airless,/area/derelict/hallway/secondary) -"kU" = (/obj/machinery/door/window,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel,/area/derelict/solar_control) -"kV" = (/turf/open/floor/plating/airless,/area/derelict/bridge/access) -"kW" = (/obj/machinery/light/small{dir = 4},/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/space) -"kX" = (/obj/machinery/light/small{dir = 8},/turf/open/floor/plasteel/airless,/area/derelict/bridge/ai_upload) -"kY" = (/obj/structure/grille,/turf/open/floor/plating/airless,/area/derelict/hallway/secondary) -"kZ" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"},/turf/open/floor/plasteel/airless,/area/derelict/bridge/ai_upload) -"la" = (/obj/machinery/computer/atmos_alert,/turf/open/floor/plasteel,/area/derelict/bridge/ai_upload) -"lb" = (/turf/open/floor/plasteel/airless{icon_state = "damaged4"},/area/derelict/bridge/ai_upload) -"lc" = (/turf/open/floor/plasteel/airless,/area/derelict/bridge/ai_upload) -"ld" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"},/turf/open/floor/plasteel,/area/derelict/bridge/ai_upload) -"le" = (/turf/open/floor/plating/airless,/area/derelict/bridge/ai_upload) -"lf" = (/obj/machinery/light/small{dir = 1},/turf/open/floor/plasteel,/area/derelict/bridge/ai_upload) -"lg" = (/obj/machinery/light/small{dir = 8},/turf/open/floor/plasteel,/area/derelict/solar_control) -"lh" = (/turf/open/floor/plasteel{icon_state = "damaged1"},/area/derelict/solar_control) -"li" = (/turf/open/floor/plasteel/airless{icon_state = "bcircuit"},/area/derelict/bridge/ai_upload) -"lj" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/open/floor/plasteel/airless{icon_state = "bcircuit"},/area/derelict/bridge/ai_upload) -"lk" = (/obj/item/stack/rods,/turf/open/floor/plating/airless,/area/derelict/hallway/secondary) -"ll" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"},/turf/open/floor/plasteel/airless,/area/space) -"lm" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/open/floor/plasteel/airless{icon_state = "bcircuit"},/area/derelict/bridge/ai_upload) -"ln" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plating/airless,/area/derelict/gravity_generator) -"lo" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/item/wallframe/apc,/turf/open/floor/plating/airless,/area/derelict/gravity_generator) -"lp" = (/obj/machinery/door/window,/turf/open/floor/plasteel,/area/derelict/bridge/ai_upload) -"lq" = (/obj/item/weapon/ore/slag,/turf/open/floor/plasteel/airless{icon_state = "damaged4"},/area/derelict/gravity_generator) -"lr" = (/obj/structure/rack,/obj/item/weapon/circuitboard/machine/smes,/turf/open/floor/plasteel,/area/derelict/bridge/access) -"ls" = (/obj/item/weapon/stock_parts/matter_bin,/turf/open/space,/area/space) -"lt" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/solar{id = "derelictsolar"; name = "Derelict Solar Array"},/turf/open/floor/plasteel/airless,/area/solar/derelict_aft) -"lu" = (/obj/effect/spawner/lootdrop/maintenance,/turf/open/space,/area/space) -"lv" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/open/floor/plating/airless,/area/derelict/gravity_generator) -"lw" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plating/airless,/area/derelict/gravity_generator) -"lx" = (/obj/machinery/gravity_generator/main/station{on = 0},/turf/open/floor/plasteel/airless,/area/derelict/gravity_generator) -"ly" = (/obj/item/weapon/screwdriver,/turf/open/floor/plasteel/airless{icon_state = "damaged5"},/area/derelict/gravity_generator) -"lz" = (/obj/structure/table,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/open/floor/plasteel,/area/derelict/bridge) -"lA" = (/obj/item/weapon/ore/slag,/turf/open/space,/area/space) -"lB" = (/obj/structure/cable,/obj/machinery/power/solar{id = "derelictsolar"; name = "Derelict Solar Array"},/turf/open/floor/plasteel/airless,/area/solar/derelict_aft) -"lC" = (/turf/open/floor/plasteel/airless,/area/derelict/gravity_generator) -"lD" = (/obj/item/stack/cable_coil/cut,/turf/open/floor/plasteel/airless{icon_state = "damaged4"},/area/derelict/gravity_generator) -"lE" = (/turf/closed/wall/r_wall,/area/derelict/teleporter) -"lF" = (/turf/open/floor/plating/airless,/area/derelict/teleporter) -"lG" = (/turf/open/floor/plasteel/airless,/area/derelict/teleporter) -"lH" = (/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/teleporter) -"lI" = (/obj/machinery/light_construct/small{dir = 1},/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/teleporter) -"lJ" = (/obj/machinery/computer/teleporter,/turf/open/floor/plasteel/airless,/area/derelict/teleporter) -"lK" = (/obj/machinery/teleport/station,/turf/open/floor/plasteel/airless,/area/derelict/teleporter) -"lL" = (/obj/machinery/teleport/hub,/turf/open/floor/plasteel/airless,/area/derelict/teleporter) -"lM" = (/obj/machinery/light_construct/small{dir = 4},/turf/open/floor/plating/airless,/area/derelict/teleporter) -"lN" = (/obj/structure/table,/obj/item/weapon/stock_parts/cell{charge = 100; maxcharge = 15000},/turf/open/floor/plasteel/airless,/area/derelict/teleporter) -"lO" = (/turf/open/floor/plasteel/airless{icon_state = "damaged4"},/area/derelict/teleporter) -"lP" = (/obj/machinery/power/apc{dir = 0; name = "Worn-out APC"; pixel_y = -24},/turf/open/floor/plasteel/airless,/area/derelict/teleporter) -"lQ" = (/turf/closed/mineral/random,/area/space) -"lR" = (/turf/open/floor/plating/asteroid/airless,/area/space) -"lS" = (/turf/closed/wall/mineral/clown,/area/space) -"lT" = (/obj/machinery/door/airlock/clown,/turf/open/floor/mineral/bananium/airless,/area/space) -"lU" = (/obj/effect/mob_spawn/human/clown,/turf/open/floor/mineral/bananium/airless,/area/space) -"lV" = (/turf/open/floor/mineral/bananium/airless,/area/space) -"lW" = (/obj/structure/closet/crate,/obj/item/weapon/ore/bananium,/obj/item/weapon/ore/bananium,/obj/item/weapon/ore/bananium,/obj/item/weapon/ore/bananium,/obj/item/weapon/ore/bananium,/turf/open/floor/mineral/bananium/airless,/area/space) -"lX" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/obj/item/weapon/ore/bananium,/turf/open/floor/mineral/bananium/airless,/area/space) -"lY" = (/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plasteel/airless{icon_state = "damaged5"},/area/derelict/singularity_engine) -"lZ" = (/obj/structure/shuttle/engine/heater{color = "#FFFF00"; dir = 4; icon_state = "heater"},/obj/structure/window/reinforced{color = "#FFFF00"; dir = 8},/turf/open/floor/plating/airless{color = "#FFFF00"},/area/space) -"ma" = (/obj/structure/shuttle/engine/propulsion{color = "#FFFF00"; dir = 8; icon_state = "propulsion_l"},/turf/open/space,/area/space) -"mb" = (/obj/item/weapon/shard{icon_state = "small"},/turf/open/floor/plating/asteroid/airless,/area/space) -"mc" = (/obj/item/weapon/ore/bananium,/turf/open/floor/mineral/bananium/airless,/area/space) -"md" = (/obj/item/weapon/shard{icon_state = "medium"},/obj/structure/chair{dir = 8},/turf/open/floor/plating/asteroid/airless,/area/space) -"me" = (/obj/effect/mob_spawn/human/clown{name = "Clown Pilot"},/turf/open/floor/mineral/bananium/airless,/area/space) -"mf" = (/obj/item/weapon/paper{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!"},/turf/open/floor/mineral/bananium/airless,/area/space) -"mg" = (/obj/structure/grille{color = "#FFFF00"},/obj/structure/window/reinforced{color = "#FFFF00"},/obj/structure/window/reinforced{color = "#FFFF00"; dir = 4},/obj/structure/window/reinforced{color = "#FFFF00"; dir = 8},/turf/open/floor/plating/airless{color = "#FFFF00"},/area/space) -"mh" = (/obj/item/weapon/shard,/obj/structure/chair{dir = 8},/turf/open/floor/mineral/bananium/airless,/area/space) -"mi" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/open/floor/mineral/bananium/airless,/area/space) -"mj" = (/obj/item/weapon/pickaxe,/turf/open/floor/mineral/bananium/airless,/area/space) -"mk" = (/obj/structure/closet/crate,/obj/item/weapon/ore/bananium,/obj/item/weapon/ore/bananium,/obj/item/weapon/ore/bananium,/obj/item/weapon/ore/bananium,/turf/open/floor/mineral/bananium/airless,/area/space) -"ml" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating/airless,/area/derelict/gravity_generator) -"mm" = (/obj/machinery/door/airlock/engineering{name = "Engineering Access"; req_access_txt = "10"},/turf/open/floor/plasteel,/area/derelict/gravity_generator) -"mn" = (/obj/machinery/light/small{dir = 8},/obj/structure/table,/obj/item/weapon/paper{info = "If the equipment breaks there should be enough spare parts in our engineering storage near the north east solar array."; name = "Equipment Inventory"},/turf/open/floor/plasteel/airless,/area/derelict/gravity_generator) -"mo" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plating/airless,/area/derelict/gravity_generator) -"mp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plating/airless,/area/derelict/gravity_generator) -"mq" = (/obj/structure/rack,/obj/item/weapon/stock_parts/cell/high,/obj/item/weapon/stock_parts/cell/high,/obj/item/weapon/stock_parts/cell/high,/obj/item/weapon/stock_parts/cell/high,/obj/item/weapon/stock_parts/cell/high,/obj/item/weapon/stock_parts/cell/high,/turf/open/floor/plating,/area/derelict/bridge/access) -"mr" = (/obj/machinery/light/small{dir = 4},/obj/structure/rack,/obj/item/stack/cable_coil/cut,/obj/item/stack/cable_coil/cut,/turf/open/floor/plasteel,/area/derelict/bridge/access) -"ms" = (/obj/machinery/door/airlock/engineering{name = "Engineering Secure Storage"; req_access_txt = "10"},/turf/open/floor/plasteel,/area/derelict/bridge/access) -"mt" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plating/airless,/area/derelict/gravity_generator) -"mu" = (/obj/structure/window/reinforced,/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plasteel/airless{icon_state = "damaged4"},/area/derelict/singularity_engine) -"mv" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/open/floor/plating/airless,/area/derelict/atmospherics) -"mw" = (/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating/airless,/area/derelict/atmospherics) -"mx" = (/turf/open/floor/plasteel,/area/derelict/gravity_generator) -"my" = (/obj/machinery/light/small{dir = 4},/turf/open/floor/plasteel,/area/derelict/gravity_generator) -"mz" = (/obj/machinery/door/airlock/engineering{name = "Engineering Access"; req_access_txt = "10"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plating/airless,/area/derelict/gravity_generator) -"mA" = (/obj/structure/sign/securearea{name = "ENGINEERING ACCESS"},/turf/closed/wall/r_wall,/area/derelict/gravity_generator) -"mB" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plating/airless,/area/derelict/singularity_engine) -"mC" = (/obj/item/stack/cable_coil/cut,/obj/machinery/light/small{dir = 1},/turf/open/floor/plating/airless,/area/derelict/singularity_engine) -"mD" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/open/floor/plasteel,/area/derelict/gravity_generator) -"mE" = (/obj/machinery/door/airlock/engineering{name = "Engineering Access"; req_access_txt = "10"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel,/area/derelict/gravity_generator) -"mF" = (/turf/closed/wall,/area/derelict/gravity_generator) -"mG" = (/obj/structure/closet/radiation,/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 32; pixel_y = 0},/turf/open/floor/plasteel,/area/derelict/gravity_generator) -"mH" = (/obj/structure/noticeboard,/turf/closed/wall/r_wall,/area/derelict/singularity_engine) -"mI" = (/obj/structure/rack,/turf/open/floor/plasteel,/area/derelict/bridge/ai_upload) -"mJ" = (/obj/structure/cable,/obj/structure/lattice/catwalk,/turf/open/space,/area/solar/derelict_aft) -"mK" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/lattice/catwalk,/turf/open/space,/area/solar/derelict_aft) -"mL" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/lattice/catwalk,/turf/open/space,/area/solar/derelict_aft) -"mM" = (/obj/structure/lattice/catwalk,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/open/space,/area/solar/derelict_aft) -"mN" = (/obj/structure/lattice/catwalk,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/open/space,/area/solar/derelict_aft) -"mO" = (/obj/structure/lattice/catwalk,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/space,/area/solar/derelict_aft) -"mP" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/lattice/catwalk,/turf/open/space,/area/solar/derelict_aft) -"mQ" = (/obj/structure/lattice/catwalk,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/open/space,/area/solar/derelict_aft) -"mR" = (/obj/structure/lattice/catwalk,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/open/space,/area/solar/derelict_aft) -"mS" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 4},/turf/open/floor/plating/airless,/area/derelict/atmospherics) -"mT" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/lattice/catwalk,/turf/open/space,/area/solar/derelict_aft) -"mU" = (/obj/structure/lattice/catwalk,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/open/space,/area/solar/derelict_aft) -"mV" = (/obj/machinery/power/tracker,/obj/structure/cable,/turf/open/floor/plasteel/airless,/area/solar/derelict_aft) -"mW" = (/obj/machinery/atmospherics/components/unary/portables_connector/visible{icon_state = "connector_map"; dir = 8},/turf/open/floor/plating/airless,/area/derelict/atmospherics) -"mX" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/open/floor/plating/airless,/area/derelict/atmospherics) -"mY" = (/obj/machinery/atmospherics/components/unary/portables_connector/visible{dir = 4},/turf/open/floor/plasteel/airless,/area/derelict/atmospherics) -"mZ" = (/obj/machinery/light{dir = 1},/turf/open/floor/plasteel/airless,/area/derelict/bridge/ai_upload) -"na" = (/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/bridge/ai_upload) -"nb" = (/obj/structure/rack,/obj/item/weapon/circuitboard/machine/microwave,/turf/open/floor/plasteel,/area/derelict/bridge/ai_upload) -"nc" = (/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/bridge/ai_upload) -"nd" = (/turf/open/space,/area/derelict/bridge/ai_upload) -"ne" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{icon_state = "intact"; dir = 5},/turf/open/floor/plating/airless,/area/derelict/atmospherics) -"nf" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/open/floor/plating/airless,/area/derelict/atmospherics) -"ng" = (/obj/machinery/light/small{dir = 8},/turf/open/floor/plating/airless,/area/derelict/atmospherics) -"nh" = (/obj/structure/lattice,/turf/open/space,/area/derelict/bridge/ai_upload) -"ni" = (/obj/structure/window/reinforced,/turf/open/floor/plasteel/airless,/area/derelict/atmospherics) -"nj" = (/turf/open/floor/plasteel/airless{icon_state = "damaged5"},/area/derelict/atmospherics) -"nk" = (/obj/machinery/power/apc{dir = 8; name = "Worn-out APC"; pixel_x = -24; pixel_y = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/open/floor/plasteel/airless,/area/derelict/bridge/ai_upload) -"nl" = (/obj/structure/frame/computer,/turf/open/floor/plasteel/airless,/area/derelict/bridge/ai_upload) -"nm" = (/obj/machinery/door/airlock/external,/turf/open/floor/plasteel,/area/derelict/solar_control) -"nn" = (/turf/open/floor/plasteel{icon_state = "damaged2"; initial_gas_mix = "TEMP=2.7"},/area/derelict/atmospherics) -"no" = (/turf/open/floor/plasteel/airless{icon_state = "damaged4"},/area/derelict/atmospherics) -"np" = (/obj/structure/rack,/obj/item/weapon/circuitboard/machine/cryo_tube,/turf/open/floor/plasteel,/area/derelict/bridge/ai_upload) -"nq" = (/obj/machinery/light,/turf/open/floor/plasteel/airless,/area/derelict/bridge/ai_upload) -"nr" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/closed/wall/r_wall,/area/derelict/bridge/ai_upload) -"ns" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/closed/wall/r_wall,/area/derelict/bridge/ai_upload) -"nt" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/closed/wall/r_wall,/area/derelict/bridge/ai_upload) -"nu" = (/obj/machinery/portable_atmospherics/canister,/turf/open/floor/plasteel/airless,/area/derelict/atmospherics) -"nv" = (/obj/structure/chair{dir = 1},/turf/open/floor/plating/airless,/area/derelict/atmospherics) -"nw" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/closed/wall/r_wall,/area/derelict/bridge/ai_upload) -"nx" = (/obj/machinery/light/small,/turf/open/floor/plasteel,/area/derelict/solar_control) -"ny" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/closed/wall,/area/derelict/bridge/access) -"nz" = (/obj/machinery/door/airlock/maintenance,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel,/area/derelict/bridge/access) -"nA" = (/obj/structure/rack,/obj/item/weapon/electronics/apc,/turf/open/floor/plasteel,/area/derelict/bridge/access) -"nB" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/closed/wall,/area/derelict/bridge/access) -"nC" = (/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/atmospherics) -"nD" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/open/floor/plasteel,/area/derelict/bridge/access) -"nE" = (/obj/machinery/door/firedoor,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel,/area/derelict/bridge/access) -"nF" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/open/floor/plasteel/airless,/area/derelict/atmospherics) -"nG" = (/obj/structure/window/reinforced,/turf/open/floor/plating/airless,/area/derelict/atmospherics) -"nH" = (/turf/open/floor/plasteel/airless{icon_state = "damaged1"},/area/derelict/atmospherics) -"nI" = (/obj/machinery/portable_atmospherics/pump,/turf/open/floor/plating/airless,/area/derelict/atmospherics) -"nJ" = (/obj/structure/table,/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plasteel,/area/derelict/bridge) -"nK" = (/obj/machinery/light/small,/turf/open/floor/plasteel/airless,/area/derelict/atmospherics) -"nL" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 4},/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plasteel,/area/derelict/bridge) -"nM" = (/obj/machinery/door/airlock/glass,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel,/area/derelict/bridge/access) -"nN" = (/obj/machinery/door/firedoor,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel,/area/derelict/bridge/access) -"nO" = (/obj/item/weapon/reagent_containers/food/drinks/beer,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/open/floor/plasteel,/area/derelict/bridge/access) -"nP" = (/obj/structure/table,/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = -7},/obj/item/weapon/stock_parts/matter_bin,/turf/open/floor/plasteel/airless,/area/derelict/bridge/access) -"nQ" = (/obj/structure/table,/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/singularity_engine) -"nR" = (/obj/structure/table,/obj/machinery/light/small{dir = 4},/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/singularity_engine) -"nS" = (/obj/structure/window/reinforced,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel,/area/derelict/bridge/access) -"nT" = (/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plating/airless,/area/space) -"nU" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/open/floor/plating,/area/derelict/bridge) -"nV" = (/obj/machinery/atmospherics/components/unary/vent_pump{on = 1},/turf/open/floor/plasteel,/area/derelict/bridge) -"nW" = (/turf/open/space,/area/derelict/bridge/access) -"nX" = (/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/turf/open/floor/plasteel/airless,/area/derelict/bridge/access) -"nY" = (/obj/machinery/atmospherics/components/unary/vent_pump{on = 1},/turf/open/floor/plating/airless,/area/derelict/singularity_engine) -"nZ" = (/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plasteel/airless,/area/space) -"oa" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/components/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/open/floor/plating/airless,/area/derelict/singularity_engine) -"ob" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/open/floor/plating/airless,/area/derelict/singularity_engine) -"oc" = (/obj/structure/frame/computer,/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/medical) -"od" = (/obj/structure/table,/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plasteel,/area/derelict/arrival) -"oe" = (/obj/machinery/light{dir = 1},/obj/item/weapon/shard{icon_state = "small"},/turf/open/floor/plating/airless,/area/derelict/medical) -"of" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/turf/open/space,/area/space) -"og" = (/obj/structure/chair{dir = 8},/turf/open/floor/plasteel{dir = 1; icon_state = "chapel"},/area/derelict/medical/chapel) -"oh" = (/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating/airless,/area/derelict/medical) -"oi" = (/obj/structure/table,/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plasteel{dir = 8; icon_state = "chapel"},/area/derelict/medical/chapel) -"oj" = (/obj/structure/chair{dir = 4},/turf/open/floor/plasteel{icon_state = "chapel"},/area/derelict/medical/chapel) -"ok" = (/obj/machinery/atmospherics/components/unary/vent_pump{on = 1},/turf/open/floor/plasteel{icon_state = "chapel"},/area/derelict/medical/chapel) -"ol" = (/obj/structure/closet,/obj/structure/window/reinforced{dir = 8},/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/medical) -"om" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 8},/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plasteel{dir = 1; icon_state = "chapel"},/area/derelict/medical/chapel) -"on" = (/obj/structure/chair,/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/medical) -"oo" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/grille,/turf/open/space,/area/space) -"op" = (/obj/machinery/atmospherics/components/unary/vent_pump{on = 1},/turf/open/floor/plasteel{icon_state = "dark"},/area/derelict/medical/chapel) -"oq" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/open/floor/plasteel{icon_state = "dark"},/area/derelict/medical/chapel) -"or" = (/obj/machinery/sleeper{icon_state = "sleeper-open"; dir = 4},/turf/open/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) -"os" = (/obj/structure/window/reinforced,/turf/open/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) -"ot" = (/obj/structure/table,/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plating/airless,/area/derelict/medical) -"ou" = (/obj/machinery/door/poddoor{id = "derelict_gun"; name = "Derelict Mass Driver"},/turf/open/floor/plating,/area/space) -"ov" = (/obj/structure/closet/l3closet,/turf/open/floor/plating/airless,/area/space) -"ow" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/turf/open/space,/area/space) -"ox" = (/obj/structure/chair{dir = 8},/turf/open/floor/plasteel{dir = 4; icon_state = "chapel"},/area/derelict/medical/chapel) -"oy" = (/obj/structure/table,/turf/open/floor/plating/airless,/area/space) -"oz" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/open/floor/plasteel{icon_state = "chapel"},/area/derelict/medical/chapel) -"oA" = (/obj/machinery/atmospherics/components/unary/vent_pump{on = 1},/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/hallway/primary) -"oB" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/bed,/turf/open/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) -"oC" = (/obj/structure/bed,/turf/open/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) -"oD" = (/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plating/airless,/area/derelict/singularity_engine) -"oE" = (/obj/machinery/door/airlock/medical{name = "Medical"},/turf/open/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) -"oF" = (/turf/closed/wall/r_wall,/area/derelict/medical/chapel) -"oG" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plasteel{dir = 1; icon_state = "chapel"},/area/derelict/medical/chapel) -"oH" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/item/weapon/reagent_containers/glass/beaker,/turf/open/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) -"oI" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plasteel{dir = 1; icon_state = "chapel"},/area/derelict/medical/chapel) -"oJ" = (/obj/structure/frame/computer,/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) -"oK" = (/obj/item/weapon/reagent_containers/glass/beaker,/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/medical) -"oL" = (/obj/structure/closet/wardrobe/genetics_white,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/open/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) -"oM" = (/obj/machinery/door/airlock/command{name = "Teleporter Room"},/turf/open/floor/plasteel/airless,/area/derelict/medical/chapel) -"oN" = (/obj/machinery/atmospherics/components/unary/vent_pump{on = 1},/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) -"oO" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) -"oP" = (/obj/structure/girder,/turf/open/floor/plasteel/airless,/area/space) -"oQ" = (/obj/machinery/vending/hydronutrients,/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) -"oR" = (/obj/structure/closet,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) -"oS" = (/obj/effect/decal/cleanable/dirt,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/open/floor/plating/airless,/area/space) -"oT" = (/obj/structure/table,/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) -"oU" = (/obj/structure/table,/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plasteel/airless,/area/space) -"oV" = (/obj/machinery/vending/hydroseeds,/turf/open/floor/plasteel/airless,/area/hallway/primary/port) -"oW" = (/turf/closed/wall,/area/derelict/atmospherics) -"oX" = (/turf/open/floor/plating/airless,/area/derelict/atmospherics) -"oY" = (/turf/closed/wall/r_wall,/area/derelict/atmospherics) -"oZ" = (/obj/structure/closet/wardrobe,/obj/effect/spawner/lootdrop/maintenance{lootcount = 3; name = "3maintenance loot spawner"},/turf/open/floor/plasteel,/area/derelict/arrival) -"pa" = (/obj/machinery/atmospherics/components/unary/portables_connector/visible{dir = 4},/turf/open/floor/plating/airless,/area/derelict/atmospherics) -"pb" = (/obj/item/weapon/stock_parts/manipulator{pixel_x = -15; pixel_y = 10},/obj/item/weapon/stock_parts/manipulator,/turf/open/floor/plating/airless,/area/derelict/hallway/primary) -"pc" = (/obj/machinery/door/airlock/maintenance{name = "Atmospherics Access"; req_access_txt = "24"},/turf/open/floor/plating/airless,/area/derelict/atmospherics) -"pd" = (/obj/structure/closet,/obj/effect/spawner/lootdrop/maintenance{lootcount = 3; name = "3maintenance loot spawner"},/turf/open/floor/plating/airless,/area/derelict/hallway/primary) -"pe" = (/obj/structure/closet/wardrobe/mixed,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/open/floor/plasteel,/area/derelict/arrival) -"pf" = (/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/space) -"pg" = (/turf/open/floor/plasteel/airless,/area/derelict/atmospherics) -"ph" = (/obj/machinery/door/window,/turf/open/floor/plasteel/airless,/area/hallway/primary/port) -"pi" = (/obj/machinery/door/window{dir = 8},/obj/item/weapon/shard{icon_state = "medium"},/turf/open/floor/plasteel/airless,/area/space) -"pj" = (/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plating/airless,/area/derelict/hallway/primary) -"pk" = (/turf/open/floor/plasteel/airless{icon_state = "floorscorched1"},/area/derelict/atmospherics) -"pl" = (/obj/machinery/door/firedoor,/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plating/airless,/area/derelict/hallway/secondary) -"pm" = (/obj/structure/closet/secure_closet{name = "clown locker"; req_access_txt = "46"},/obj/item/clothing/shoes/clown_shoes/banana_shoes,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/open/floor/mineral/bananium/airless,/area/space) -"pn" = (/obj/effect/decal/cleanable/blood/gibs/old,/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) -"po" = (/obj/machinery/atmospherics/components/unary/vent_pump{on = 1},/obj/effect/decal/cleanable/blood/splatter,/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) -"pp" = (/obj/effect/decal/cleanable/blood/splatter,/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) -"pq" = (/obj/structure/window/fulltile,/turf/open/space,/area/derelict/atmospherics) -"pr" = (/obj/structure/closet/wardrobe/orange,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/obj/item/weapon/shovel/spade,/obj/item/weapon/cultivator,/turf/open/floor/plasteel/airless,/area/space) -"ps" = (/obj/structure/frame/computer,/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plasteel/airless,/area/derelict/atmospherics) -"pt" = (/obj/machinery/light/small,/turf/open/floor/plasteel/airless{icon_state = "damaged5"},/area/derelict/atmospherics) -"pu" = (/obj/structure/lattice,/turf/open/space,/area/derelict/atmospherics) -"pv" = (/obj/machinery/atmospherics/components/unary/vent_pump{on = 1},/turf/open/floor/plating/airless,/area/derelict/hallway/primary) -"pw" = (/obj/structure/table,/obj/item/weapon/reagent_containers/glass/beaker{list_reagents = list("sacid" = 50)},/obj/item/weapon/paper/crumpled/bloody{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 _- "; name = "unifinished paper scrap"},/obj/item/weapon/pen,/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) -"px" = (/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/atmospherics) -"py" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/open/floor/plating/airless,/area/derelict/hallway/primary) -"pz" = (/obj/structure/chair/stool,/obj/effect/decal/remains/human,/obj/effect/decal/cleanable/blood/old,/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) -"pA" = (/obj/machinery/atmospherics/components/unary/tank/air,/turf/open/floor/plating/airless,/area/derelict/atmospherics) -"pB" = (/obj/item/ammo_casing/a357,/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) -"pD" = (/obj/machinery/atmospherics/pipe/manifold/cyan/hidden,/obj/machinery/meter,/turf/open/floor/plating/airless,/area/derelict/atmospherics) -"pE" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/cyan/visible{dir = 6},/turf/open/floor/plating/airless,/area/derelict/atmospherics) -"pG" = (/turf/open/space,/area/derelict/atmospherics) -"pH" = (/obj/machinery/atmospherics/pipe/simple/cyan/hidden{icon_state = "intact"; dir = 9},/turf/open/floor/plating/airless,/area/derelict/atmospherics) -"pI" = (/obj/machinery/atmospherics/components/unary/vent_pump{on = 1},/turf/open/floor/plasteel/airless,/area/derelict/hallway/secondary) -"pJ" = (/obj/machinery/power/apc{dir = 1; name = "Worn-out APC"; pixel_x = 0; pixel_y = 24},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/open/floor/plasteel/airless,/area/derelict/atmospherics) -"pK" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel/airless{icon_state = "derelict9"},/area/derelict/hallway/secondary) -"pL" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel/airless{icon_state = "derelict11"},/area/derelict/hallway/secondary) -"pM" = (/obj/machinery/light/small{dir = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel/airless{icon_state = "derelict10"},/area/derelict/hallway/secondary) -"pN" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel/airless{icon_state = "derelict13"},/area/derelict/hallway/secondary) -"pO" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel/airless{icon_state = "derelict12"},/area/derelict/hallway/secondary) -"pP" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel/airless{icon_state = "derelict15"},/area/derelict/hallway/secondary) -"pQ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel/airless{icon_state = "derelict14"},/area/derelict/hallway/secondary) -"pR" = (/obj/machinery/light/small{dir = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel/airless{icon_state = "derelict16"},/area/derelict/hallway/secondary) -"pS" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel/airless,/area/derelict/hallway/secondary) -"pT" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/open/floor/plasteel/airless,/area/derelict/hallway/secondary) -"pU" = (/turf/closed/wall/r_wall,/area/derelict/se_solar) -"pV" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/engineering{name = "Aft Solar Access"; req_access_txt = "10"},/turf/open/floor/plasteel/airless,/area/derelict/se_solar) -"pW" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/turf/open/floor/plasteel/airless,/area/derelict/se_solar) -"pX" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/closed/wall/r_wall,/area/derelict/se_solar) -"pY" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/closed/wall/r_wall,/area/derelict/se_solar) -"pZ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/door/airlock/engineering{name = "Aft Solar Access"; req_access_txt = "10"},/turf/open/floor/plasteel/airless,/area/derelict/se_solar) -"qa" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plating/airless,/area/derelict/se_solar) -"qb" = (/obj/machinery/power/smes,/obj/structure/cable,/turf/open/floor/plasteel/airless,/area/derelict/se_solar) -"qc" = (/turf/open/floor/plasteel/airless{icon_state = "damaged4"},/area/derelict/se_solar) -"qd" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel/airless,/area/derelict/se_solar) -"qe" = (/turf/open/floor/plasteel/airless,/area/derelict/se_solar) -"qf" = (/turf/open/floor/plating/airless,/area/derelict/se_solar) -"qg" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/components/binary/valve,/turf/open/floor/plating/airless,/area/derelict/atmospherics) -"qh" = (/obj/machinery/atmospherics/components/unary/vent_pump{on = 1},/turf/open/floor/plasteel/airless,/area/derelict/se_solar) -"qi" = (/obj/item/weapon/storage/toolbox/syndicate,/turf/open/floor/plasteel/airless,/area/derelict/se_solar) -"qj" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable,/obj/machinery/power/solar_control{id = "derelictsolar"; name = "Primary Solar Control"; track = 0},/turf/open/floor/plasteel/airless,/area/derelict/se_solar) -"qk" = (/obj/structure/cable,/obj/machinery/power/apc{dir = 8; environ = 0; equipment = 0; lighting = 0; locked = 0; name = "Worn-out APC"; pixel_x = -24; pixel_y = 0},/turf/open/floor/plating/airless,/area/derelict/se_solar) -"ql" = (/obj/machinery/light/small{dir = 4},/obj/item/clothing/head/helmet/space/syndicate/black/red,/turf/open/floor/plasteel/airless,/area/derelict/se_solar) -"qm" = (/obj/item/weapon/paper{desc = ""; 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."; name = "Mission Objectives"},/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/se_solar) -"qn" = (/obj/machinery/light/small,/turf/open/floor/plasteel/airless,/area/derelict/se_solar) -"qo" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"},/turf/open/floor/plasteel/airless,/area/derelict/se_solar) -"qp" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel/airless,/area/derelict/se_solar) -"qq" = (/obj/item/clothing/suit/space/syndicate/black/red,/turf/open/floor/plasteel/airless,/area/derelict/se_solar) -"qr" = (/obj/effect/decal/remains/human{desc = "This guy seemed to have died in terrible way! Half his remains are dust."; icon_state = "remains"; name = "Syndicate agent remains"},/turf/open/floor/plasteel/airless,/area/derelict/se_solar) -"qs" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/open/floor/plasteel/airless,/area/derelict/se_solar) -"qt" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/external,/turf/open/floor/plasteel/airless,/area/derelict/se_solar) -"qu" = (/obj/structure/lattice/catwalk,/turf/open/space,/area/solar/derelict_aft) -"qv" = (/obj/structure/lattice/catwalk,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/open/space,/area/solar/derelict_aft) -"qw" = (/obj/item/device/aicard,/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/bridge/ai_upload) -"qx" = (/obj/structure/rack,/obj/item/weapon/circuitboard/computer/solar_control,/turf/open/floor/plasteel,/area/derelict/bridge/ai_upload) -"qy" = (/obj/item/ammo_casing/a357{pixel_x = -5},/obj/item/ammo_casing/a357{pixel_x = 5; pixel_y = 6},/obj/item/ammo_casing/a357,/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) -"qz" = (/obj/machinery/porta_turret_cover,/turf/open/floor/plasteel/airless,/area/derelict/bridge/ai_upload) -"qA" = (/obj/structure/table,/obj/item/device/assembly/flash/handheld,/turf/open/floor/plasteel/airless,/area/derelict/bridge/access) -"qB" = (/obj/structure/table,/obj/effect/spawner/lootdrop/maintenance{lootcount = 8; name = "8maintenance loot spawner"},/turf/open/floor/plating/airless,/area/derelict/atmospherics) -"qC" = (/obj/item/weapon/storage/bag/ore,/turf/open/floor/mineral/bananium/airless,/area/space) -"qD" = (/obj/item/weapon/shovel,/turf/open/floor/mineral/bananium/airless,/area/space) +"cy" = (/turf/open/floor/plasteel{icon_state = "damaged1"},/area/derelict/solar_control) +"cz" = (/obj/machinery/door/window,/turf/open/floor/plasteel,/area/derelict/bridge/ai_upload) +"cA" = (/turf/open/floor/plasteel{icon_state = "damaged5"},/area/derelict/solar_control) +"cB" = (/obj/item/weapon/stock_parts/matter_bin,/turf/open/floor/plasteel{icon_state = "damaged4"},/area/derelict/solar_control) +"cC" = (/obj/structure/rack,/obj/item/weapon/circuitboard/machine/smes,/turf/open/floor/plasteel,/area/derelict/bridge/ai_upload) +"cD" = (/obj/structure/rack,/obj/item/weapon/circuitboard/machine/microwave,/turf/open/floor/plasteel,/area/derelict/bridge/ai_upload) +"cE" = (/obj/structure/rack,/turf/open/floor/plasteel,/area/derelict/bridge/ai_upload) +"cF" = (/turf/open/floor/plasteel/airless,/area/derelict/bridge/ai_upload) +"cG" = (/obj/structure/closet,/obj/effect/spawner/lootdrop/maintenance{lootcount = 3; name = "3maintenance loot spawner"},/turf/open/floor/plasteel,/area/derelict/solar_control) +"cH" = (/turf/open/floor/plasteel{icon_state = "damaged2"},/area/derelict/solar_control) +"cI" = (/obj/item/stack/cable_coil/cut{amount = 2; dir = 2; icon_state = "coil_red2"},/turf/open/floor/plasteel{icon_state = "damaged3"},/area/derelict/solar_control) +"cJ" = (/obj/structure/rack,/obj/item/weapon/circuitboard/machine/cryo_tube,/turf/open/floor/plasteel,/area/derelict/bridge/ai_upload) +"cK" = (/turf/open/floor/plasteel/airless{icon_state = "damaged4"},/area/derelict/bridge/ai_upload) +"cL" = (/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/bridge/ai_upload) +"cM" = (/obj/machinery/light{dir = 1},/turf/open/floor/plasteel/airless,/area/derelict/bridge/ai_upload) +"cN" = (/obj/structure/closet,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/open/floor/plasteel,/area/derelict/solar_control) +"cO" = (/obj/machinery/light/small{dir = 8},/turf/open/floor/plasteel/airless,/area/derelict/bridge/ai_upload) +"cP" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"},/turf/open/floor/plasteel/airless,/area/derelict/bridge/ai_upload) +"cQ" = (/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/bridge/ai_upload) +"cR" = (/turf/open/space,/area/derelict/bridge/ai_upload) +"cS" = (/obj/item/weapon/stock_parts/console_screen,/turf/open/space,/area/derelict/bridge/ai_upload) +"cT" = (/turf/open/floor/plasteel/airless{icon_state = "bcircuit"},/area/derelict/bridge/ai_upload) +"cU" = (/turf/open/floor/plating/airless,/area/derelict/bridge/ai_upload) +"cV" = (/obj/machinery/porta_turret_cover,/turf/open/floor/plasteel/airless,/area/derelict/bridge/ai_upload) +"cW" = (/obj/item/device/aicard,/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/bridge/ai_upload) +"cX" = (/obj/structure/lattice,/turf/open/space,/area/derelict/bridge/ai_upload) +"cY" = (/obj/machinery/light/small{dir = 4},/turf/open/floor/plasteel,/area/derelict/solar_control) +"cZ" = (/obj/structure/rack,/obj/item/weapon/circuitboard/computer/solar_control,/turf/open/floor/plasteel,/area/derelict/bridge/ai_upload) +"da" = (/obj/structure/rack,/obj/item/weapon/circuitboard/machine/autolathe,/obj/item/weapon/circuitboard/machine/protolathe{pixel_x = -5; pixel_y = -3},/turf/open/floor/plasteel,/area/derelict/bridge/ai_upload) +"db" = (/obj/structure/rack,/obj/item/weapon/circuitboard/machine/circuit_imprinter,/turf/open/floor/plasteel,/area/derelict/bridge/ai_upload) +"dc" = (/obj/machinery/power/apc{dir = 8; name = "Worn-out APC"; pixel_x = -24; pixel_y = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/open/floor/plasteel/airless,/area/derelict/bridge/ai_upload) +"dd" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/open/floor/plasteel/airless{icon_state = "bcircuit"},/area/derelict/bridge/ai_upload) +"de" = (/obj/structure/frame/computer,/obj/item/weapon/circuitboard/computer/rdconsole,/turf/open/floor/plasteel/airless,/area/derelict/bridge/ai_upload) +"df" = (/obj/structure/frame/computer,/turf/open/floor/plasteel/airless,/area/derelict/bridge/ai_upload) +"dg" = (/obj/machinery/door/airlock/external,/turf/open/floor/plasteel,/area/derelict/solar_control) +"dh" = (/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plasteel/airless{icon_state = "damaged4"},/area/space) +"di" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/open/floor/plasteel/airless{icon_state = "bcircuit"},/area/derelict/bridge/ai_upload) +"dj" = (/obj/machinery/light,/turf/open/floor/plasteel/airless,/area/derelict/bridge/ai_upload) +"dk" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/closed/wall/r_wall,/area/derelict/bridge/ai_upload) +"dl" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/closed/wall/r_wall,/area/derelict/bridge/ai_upload) +"dm" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/closed/wall/r_wall,/area/derelict/bridge/ai_upload) +"dn" = (/turf/closed/wall,/area/space) +"do" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/closed/wall/r_wall,/area/derelict/bridge/ai_upload) +"dp" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/open/floor/plasteel,/area/derelict/solar_control) +"dq" = (/turf/closed/wall/r_wall,/area/derelict/gravity_generator) +"dr" = (/obj/machinery/light/small,/turf/open/floor/plasteel,/area/derelict/solar_control) +"ds" = (/obj/item/weapon/ore/iron,/obj/item/weapon/ore/iron,/obj/item/weapon/ore/iron,/turf/open/space,/area/space) +"dt" = (/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/gravity_generator) +"du" = (/obj/machinery/light/small{dir = 1},/turf/open/floor/plasteel/airless{icon_state = "damaged5"},/area/derelict/gravity_generator) +"dv" = (/obj/item/weapon/stock_parts/manipulator,/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/gravity_generator) +"dw" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/closed/wall,/area/derelict/bridge/access) +"dx" = (/turf/closed/wall,/area/derelict/bridge/access) +"dy" = (/obj/machinery/door/airlock/maintenance,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel,/area/derelict/bridge/access) +"dz" = (/turf/open/floor/plasteel/airless{icon_state = "damaged4"},/area/derelict/gravity_generator) +"dA" = (/obj/item/weapon/ore/slag,/turf/open/floor/plasteel/airless{icon_state = "damaged4"},/area/derelict/gravity_generator) +"dB" = (/turf/open/floor/plasteel/airless{icon_state = "damaged5"},/area/derelict/gravity_generator) +"dC" = (/turf/open/floor/plasteel,/area/derelict/bridge/access) +"dD" = (/obj/structure/rack,/obj/item/weapon/melee/classic_baton,/turf/open/floor/plasteel,/area/derelict/bridge/access) +"dE" = (/obj/structure/rack,/obj/machinery/light/small{dir = 1},/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plasteel,/area/derelict/bridge/access) +"dF" = (/obj/structure/rack,/obj/item/clothing/head/helmet/swat,/turf/open/floor/plasteel,/area/derelict/bridge/access) +"dG" = (/obj/structure/rack,/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plasteel,/area/derelict/bridge/access) +"dH" = (/obj/structure/rack,/obj/item/weapon/electronics/apc,/turf/open/floor/plasteel,/area/derelict/bridge/access) +"dI" = (/obj/structure/rack,/obj/item/weapon/circuitboard/machine/smes,/turf/open/floor/plasteel,/area/derelict/bridge/access) +"dJ" = (/obj/structure/rack,/obj/item/weapon/stock_parts/capacitor,/obj/item/weapon/stock_parts/manipulator,/turf/open/floor/plasteel,/area/derelict/bridge/access) +"dK" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel,/area/derelict/bridge/access) +"dL" = (/obj/item/weapon/screwdriver,/turf/open/floor/plasteel/airless{icon_state = "damaged5"},/area/derelict/gravity_generator) +"dM" = (/obj/machinery/gravity_generator/main/station{on = 0},/turf/open/floor/plasteel/airless,/area/derelict/gravity_generator) +"dN" = (/obj/item/weapon/ore/slag,/turf/open/space,/area/space) +"dO" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/closed/wall,/area/derelict/bridge/access) +"dP" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel,/area/derelict/bridge/access) +"dQ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/open/floor/plasteel,/area/derelict/bridge/access) +"dR" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/open/floor/plasteel,/area/derelict/bridge/access) +"dS" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/open/floor/plasteel,/area/derelict/bridge/access) +"dT" = (/turf/open/floor/plasteel/airless,/area/derelict/gravity_generator) +"dU" = (/obj/item/stack/cable_coil/cut,/turf/open/floor/plasteel/airless{icon_state = "damaged4"},/area/derelict/gravity_generator) +"dV" = (/obj/structure/cable,/obj/machinery/power/apc{dir = 0; name = "Worn-out APC"; pixel_y = -24},/turf/open/floor/plasteel,/area/derelict/bridge/access) +"dW" = (/obj/structure/rack,/obj/item/weapon/stock_parts/cell/high,/obj/item/weapon/stock_parts/cell/high,/obj/item/weapon/stock_parts/cell/high,/obj/item/weapon/stock_parts/cell/high,/obj/item/weapon/stock_parts/cell/high,/obj/item/weapon/stock_parts/cell/high,/turf/open/floor/plating,/area/derelict/bridge/access) +"dX" = (/obj/machinery/light/small{dir = 4},/obj/structure/rack,/obj/item/stack/cable_coil/cut,/obj/item/stack/cable_coil/cut,/turf/open/floor/plasteel,/area/derelict/bridge/access) +"dY" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plating,/area/derelict/bridge/access) +"dZ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plating,/area/derelict/bridge/access) +"ea" = (/obj/machinery/door/airlock/command{name = "E.V.A."; req_access = null; req_access_txt = "18"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel,/area/derelict/bridge/access) +"eb" = (/obj/machinery/door/airlock/engineering{name = "Engineering Secure Storage"; req_access_txt = "10"},/turf/open/floor/plasteel,/area/derelict/bridge/access) +"ec" = (/obj/machinery/door/firedoor,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel,/area/derelict/bridge/access) +"ed" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating/airless,/area/derelict/gravity_generator) +"ee" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plating/airless,/area/derelict/gravity_generator) +"ef" = (/obj/machinery/door/airlock/engineering{name = "Engineering Access"; req_access_txt = "10"},/turf/open/floor/plasteel,/area/derelict/gravity_generator) +"eg" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plating/airless,/area/derelict/gravity_generator) +"eh" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plating/airless,/area/derelict/gravity_generator) +"ei" = (/turf/open/floor/plating,/area/derelict/bridge/access) +"ej" = (/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plasteel/airless{icon_state = "solarpanel"},/area/space) +"ek" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/item/wallframe/apc,/turf/open/floor/plating/airless,/area/derelict/gravity_generator) +"el" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plating/airless,/area/derelict/gravity_generator) +"em" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/open/floor/plating/airless,/area/derelict/gravity_generator) +"en" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/frame/machine,/obj/item/weapon/stock_parts/console_screen,/turf/open/floor/plating/airless,/area/derelict/gravity_generator) +"eo" = (/turf/open/floor/plasteel/airless{icon_state = "solarpanel"},/area/space) +"ep" = (/obj/item/stack/cable_coil/cut,/turf/open/space,/area/space) +"eq" = (/obj/machinery/light/small{dir = 8},/turf/open/floor/plasteel,/area/derelict/bridge/access) +"er" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/open/floor/plating,/area/derelict/bridge/access) +"es" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/open/floor/plasteel,/area/derelict/bridge/access) +"et" = (/obj/machinery/door/firedoor,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel,/area/derelict/bridge/access) +"eu" = (/obj/machinery/door/airlock/glass,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel,/area/derelict/bridge/access) +"ev" = (/obj/item/weapon/reagent_containers/food/drinks/beer,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/open/floor/plasteel,/area/derelict/bridge/access) +"ew" = (/turf/closed/wall/r_wall,/area/derelict/singularity_engine) +"ex" = (/obj/machinery/light/small{dir = 8},/obj/structure/table,/obj/item/weapon/paper{info = "If the equipment breaks there should be enough spare parts in our engineering storage near the north east solar array."; name = "Equipment Inventory"},/turf/open/floor/plasteel/airless,/area/derelict/gravity_generator) +"ey" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plating/airless,/area/derelict/gravity_generator) +"ez" = (/obj/machinery/light/small{dir = 4},/obj/item/weapon/stock_parts/matter_bin{pixel_x = -10; pixel_y = 5},/obj/item/weapon/stock_parts/matter_bin{pixel_x = 5; pixel_y = 5},/obj/item/weapon/stock_parts/matter_bin,/turf/open/floor/plating/airless,/area/derelict/gravity_generator) +"eA" = (/obj/item/weapon/stock_parts/matter_bin,/turf/open/space,/area/space) +"eB" = (/obj/structure/window/reinforced,/turf/open/floor/plasteel,/area/derelict/bridge/access) +"eC" = (/obj/machinery/door/window,/turf/open/floor/plasteel,/area/derelict/bridge/access) +"eD" = (/obj/structure/window/reinforced,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel,/area/derelict/bridge/access) +"eE" = (/turf/closed/wall,/area/derelict/bridge) +"eF" = (/obj/structure/sign/electricshock,/turf/closed/wall/r_wall,/area/derelict/singularity_engine) +"eG" = (/obj/structure/sign/securearea,/turf/closed/wall/r_wall,/area/derelict/singularity_engine) +"eH" = (/obj/machinery/door/airlock/engineering{name = "Engineering Access"; req_access_txt = "10"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plating/airless,/area/derelict/gravity_generator) +"eI" = (/obj/structure/sign/securearea{name = "ENGINEERING ACCESS"},/turf/closed/wall/r_wall,/area/derelict/gravity_generator) +"eJ" = (/obj/effect/spawner/lootdrop/maintenance,/turf/open/space,/area/space) +"eK" = (/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plasteel,/area/derelict/bridge/access) +"eL" = (/obj/structure/frame/computer,/turf/open/floor/plasteel,/area/derelict/bridge) +"eM" = (/obj/structure/frame/computer,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/open/floor/plasteel,/area/derelict/bridge) +"eN" = (/obj/structure/table,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/open/floor/plasteel,/area/derelict/bridge) +"eO" = (/obj/machinery/computer/security,/turf/open/floor/plasteel,/area/derelict/bridge) +"eP" = (/obj/structure/table,/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = -7},/turf/open/floor/plasteel,/area/derelict/bridge) +"eQ" = (/obj/structure/table,/obj/machinery/light/small{dir = 1},/turf/open/floor/plasteel,/area/derelict/bridge) +"eR" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/turf/open/floor/plasteel,/area/derelict/bridge) +"eS" = (/obj/item/weapon/grenade/empgrenade,/obj/structure/table,/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plasteel,/area/derelict/bridge) +"eT" = (/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/singularity_engine) +"eU" = (/turf/open/floor/plasteel/airless{icon_state = "damaged4"},/area/derelict/singularity_engine) +"eV" = (/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plasteel/airless{icon_state = "damaged5"},/area/derelict/singularity_engine) +"eW" = (/obj/item/stack/cable_coil/cut,/obj/machinery/light/small{dir = 1},/turf/open/floor/plating/airless,/area/derelict/singularity_engine) +"eX" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plating/airless,/area/derelict/singularity_engine) +"eY" = (/obj/machinery/door/airlock/engineering{name = "Engineering Access"; req_access_txt = "10"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel,/area/derelict/gravity_generator) +"eZ" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/open/floor/plasteel,/area/derelict/gravity_generator) +"fa" = (/obj/machinery/light/small{dir = 4},/turf/open/floor/plasteel,/area/derelict/gravity_generator) +"fb" = (/turf/open/floor/plating/airless,/area/derelict/singularity_engine) +"fc" = (/turf/open/floor/plasteel/airless{icon_state = "damaged5"},/area/derelict/singularity_engine) +"fd" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plating,/area/derelict/bridge/access) +"fe" = (/obj/item/weapon/reagent_containers/food/drinks/beer,/turf/open/floor/plasteel,/area/derelict/bridge) +"ff" = (/turf/open/floor/plasteel,/area/derelict/bridge) +"fg" = (/turf/open/floor/plating,/area/derelict/bridge) +"fh" = (/obj/structure/table,/obj/item/weapon/paper/crumpled,/turf/open/floor/plasteel,/area/derelict/bridge) +"fi" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plasteel,/area/derelict/bridge) +"fj" = (/obj/structure/window/reinforced,/obj/machinery/portable_atmospherics/canister/toxins,/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/singularity_engine) +"fk" = (/obj/structure/window/reinforced,/turf/open/floor/plasteel/airless{icon_state = "damaged5"},/area/derelict/singularity_engine) +"fl" = (/obj/structure/window/reinforced,/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plasteel/airless{icon_state = "damaged4"},/area/derelict/singularity_engine) +"fm" = (/obj/structure/window/reinforced,/turf/open/floor/plasteel/airless{icon_state = "damaged4"},/area/derelict/singularity_engine) +"fn" = (/obj/structure/window/reinforced,/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/singularity_engine) +"fo" = (/turf/open/floor/plasteel,/area/derelict/gravity_generator) +"fp" = (/obj/structure/closet/radiation,/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 32; pixel_y = 0},/turf/open/floor/plasteel,/area/derelict/gravity_generator) +"fq" = (/turf/closed/wall,/area/derelict/gravity_generator) +"fr" = (/obj/machinery/light/small{dir = 8},/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/singularity_engine) +"fs" = (/obj/machinery/power/emitter{dir = 1; icon_state = "emitter"},/turf/open/floor/plating/airless,/area/derelict/singularity_engine) +"ft" = (/obj/machinery/field/generator,/turf/open/floor/plating/airless,/area/derelict/singularity_engine) +"fu" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/window/reinforced,/turf/open/floor/plasteel,/area/derelict/bridge/access) +"fv" = (/obj/structure/window/reinforced/fulltile,/turf/open/floor/plasteel,/area/derelict/bridge/access) +"fw" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/open/floor/plating,/area/derelict/bridge) +"fx" = (/obj/machinery/atmospherics/components/unary/vent_pump{on = 1},/turf/open/floor/plasteel,/area/derelict/bridge) +"fy" = (/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plasteel,/area/derelict/bridge) +"fz" = (/obj/item/stack/rods,/turf/open/floor/plating/airless,/area/space) +"fA" = (/obj/structure/grille,/obj/structure/window/reinforced,/turf/open/floor/plating/airless,/area/derelict/singularity_engine) +"fB" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plating/airless,/area/derelict/singularity_engine) +"fC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating/airless,/area/derelict/singularity_engine) +"fD" = (/obj/structure/noticeboard,/turf/closed/wall/r_wall,/area/derelict/singularity_engine) +"fE" = (/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/singularity_engine) +"fF" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/open/floor/plasteel,/area/derelict/bridge/access) +"fG" = (/obj/machinery/door/window/eastleft{name = "Heads of Staff"; req_access_txt = "19"},/turf/open/floor/plasteel,/area/derelict/bridge/access) +"fH" = (/obj/structure/table,/obj/item/device/paicard,/turf/open/floor/plasteel,/area/derelict/bridge) +"fI" = (/obj/structure/chair/stool,/turf/open/floor/plasteel,/area/derelict/bridge) +"fJ" = (/obj/structure/table,/obj/item/weapon/stock_parts/cell,/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plasteel,/area/derelict/bridge) +"fK" = (/obj/item/weapon/storage/toolbox/syndicate,/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/singularity_engine) +"fL" = (/obj/item/stack/cable_coil/cut,/turf/open/floor/plasteel/airless{icon_state = "damaged4"},/area/derelict/singularity_engine) +"fM" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/open/floor/plasteel,/area/derelict/bridge/access) +"fN" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/open/floor/plating,/area/derelict/bridge/access) +"fO" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/open/floor/plasteel,/area/derelict/bridge/access) +"fP" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/open/floor/plasteel,/area/derelict/bridge) +"fQ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel,/area/derelict/bridge) +"fR" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/open/floor/plasteel,/area/derelict/bridge) +"fS" = (/obj/item/weapon/paper{info = "Objective #1: Destroy the station with a nuclear device."; name = "Objectives of a Nuclear Operative"},/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/singularity_engine) +"fT" = (/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plating,/area/derelict/bridge/access) +"fU" = (/obj/structure/table,/turf/open/floor/plasteel,/area/derelict/bridge) +"fV" = (/obj/structure/table,/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plasteel,/area/derelict/bridge) +"fW" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/open/floor/plasteel,/area/derelict/bridge) +"fX" = (/obj/structure/chair,/turf/open/floor/plasteel,/area/derelict/bridge) +"fY" = (/obj/structure/table,/obj/item/weapon/screwdriver,/turf/open/floor/plasteel,/area/derelict/bridge) +"fZ" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/beer,/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plasteel,/area/derelict/bridge) +"ga" = (/obj/item/stack/rods,/turf/open/space,/area/space) +"gb" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating/airless,/area/derelict/singularity_engine) +"gc" = (/obj/item/weapon/shard,/obj/structure/grille/broken,/obj/effect/decal/remains/human{desc = "This guy seemed to have died in terrible way! Half his remains are dust."; icon_state = "remains"; name = "Syndicate agent remains"},/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/singularity_engine) +"gd" = (/obj/item/clothing/suit/space/syndicate/black/engie,/turf/open/floor/plating/airless,/area/derelict/singularity_engine) +"ge" = (/obj/item/stack/rods,/turf/open/floor/plating/airless,/area/derelict/singularity_engine) +"gf" = (/obj/item/weapon/shard,/turf/open/floor/plasteel/airless{icon_state = "damaged5"},/area/derelict/singularity_engine) +"gg" = (/obj/structure/grille,/turf/open/floor/plating/airless,/area/derelict/singularity_engine) +"gh" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plating/airless,/area/derelict/singularity_engine) +"gi" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plating/airless,/area/derelict/singularity_engine) +"gj" = (/obj/structure/table,/obj/item/weapon/rack_parts,/turf/open/floor/plasteel,/area/derelict/bridge) +"gk" = (/obj/structure/window/fulltile,/turf/open/floor/plasteel,/area/derelict/bridge) +"gl" = (/obj/structure/table,/obj/machinery/power/apc{dir = 0; name = "Worn-out APC"; pixel_y = -24},/obj/structure/cable,/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plasteel,/area/derelict/bridge) +"gm" = (/obj/structure/table,/obj/machinery/light/small,/turf/open/floor/plasteel,/area/derelict/bridge) +"gn" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 4},/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plasteel,/area/derelict/bridge) +"go" = (/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/singularity_engine) +"gp" = (/obj/item/clothing/head/helmet/space/syndicate/black/engie,/turf/open/floor/plating/airless,/area/derelict/singularity_engine) +"gq" = (/obj/item/weapon/shard{icon_state = "small"},/turf/open/floor/plating/airless,/area/derelict/singularity_engine) +"gr" = (/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plating/airless,/area/derelict/singularity_engine) +"gs" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plating/airless,/area/derelict/singularity_engine) +"gt" = (/turf/closed/wall/r_wall,/area/derelict/bridge) +"gu" = (/obj/machinery/door/window{dir = 2; name = "Captain's Quarters"; req_access_txt = "20"},/obj/structure/grille,/turf/open/floor/plating/airless,/area/derelict/bridge) +"gv" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating/airless,/area/derelict/singularity_engine) +"gw" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/light/small{dir = 8},/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/singularity_engine) +"gx" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/light/small{dir = 4},/turf/open/floor/plating/airless,/area/derelict/singularity_engine) +"gy" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plating/airless,/area/derelict/singularity_engine) +"gz" = (/obj/item/stack/cable_coil/cut,/turf/open/floor/plasteel/airless{icon_state = "damaged5"},/area/derelict/singularity_engine) +"gA" = (/obj/effect/spawner/lootdrop/crate_spawner,/turf/open/floor/plasteel/airless,/area/derelict/bridge/access) +"gB" = (/obj/item/drone_shell,/turf/open/floor/plasteel/airless,/area/derelict/bridge/access) +"gC" = (/turf/open/floor/plasteel/airless,/area/derelict/bridge/access) +"gD" = (/obj/structure/table,/obj/item/device/assembly/flash/handheld,/turf/open/floor/plasteel/airless,/area/derelict/bridge/access) +"gE" = (/obj/structure/table,/obj/machinery/light/small{dir = 1},/obj/item/weapon/electronics/airlock,/turf/open/floor/plasteel/airless,/area/derelict/bridge/access) +"gF" = (/obj/structure/table,/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = -7},/obj/item/weapon/stock_parts/matter_bin,/turf/open/floor/plasteel/airless,/area/derelict/bridge/access) +"gG" = (/obj/structure/table,/obj/item/weapon/stock_parts/cell{charge = 100; maxcharge = 15000},/turf/open/floor/plasteel/airless,/area/derelict/bridge/access) +"gH" = (/turf/open/space,/area/derelict/bridge/access) +"gI" = (/obj/structure/girder,/turf/open/floor/plating/airless,/area/space) +"gJ" = (/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plating/airless,/area/derelict/singularity_engine) +"gK" = (/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = -1},/turf/open/floor/plasteel/airless,/area/derelict/bridge/access) +"gL" = (/obj/item/stack/cable_coil/cut,/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/singularity_engine) +"gM" = (/obj/item/stack/cable_coil/cut,/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/singularity_engine) +"gN" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/singularity_engine) +"gO" = (/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/singularity_engine) +"gP" = (/obj/machinery/door/window,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel,/area/derelict/bridge/access) +"gQ" = (/obj/structure/table,/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/singularity_engine) +"gR" = (/obj/machinery/atmospherics/components/unary/vent_pump{on = 1},/turf/open/floor/plating/airless,/area/derelict/singularity_engine) +"gS" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/open/floor/plating/airless,/area/derelict/singularity_engine) +"gT" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/open/floor/plasteel/airless{icon_state = "damaged5"},/area/derelict/singularity_engine) +"gU" = (/obj/structure/grille,/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/singularity_engine) +"gV" = (/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plasteel/airless{icon_state = "damaged4"},/area/derelict/singularity_engine) +"gW" = (/obj/machinery/door/airlock/maintenance{name = "Tech Storage"; req_access_txt = "23"},/turf/open/floor/plasteel/airless,/area/derelict/bridge/access) +"gX" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/open/floor/plating/airless,/area/derelict/bridge/access) +"gY" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel/airless,/area/derelict/bridge/access) +"gZ" = (/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/singularity_engine) +"ha" = (/obj/item/weapon/screwdriver,/turf/open/floor/plating/airless,/area/derelict/singularity_engine) +"hb" = (/obj/item/stack/rods,/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/singularity_engine) +"hc" = (/obj/item/weapon/shard{icon_state = "medium"},/obj/item/stack/cable_coil/cut,/turf/open/floor/plating/airless,/area/derelict/singularity_engine) +"hd" = (/obj/structure/table,/obj/machinery/light/small{dir = 4},/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/singularity_engine) +"he" = (/turf/closed/wall,/area/derelict/hallway/primary) +"hf" = (/obj/item/stack/cable_coil/cut{amount = 2; dir = 2; icon_state = "coil_red2"},/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/hallway/primary) +"hg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/hallway/primary) +"hh" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) +"hi" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/open/floor/plating/airless,/area/derelict/bridge/access) +"hj" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/open/floor/plasteel/airless,/area/derelict/bridge/access) +"hk" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/open/floor/plasteel/airless,/area/derelict/bridge/access) +"hl" = (/obj/machinery/light/small{dir = 4},/turf/open/floor/plasteel/airless,/area/derelict/bridge/access) +"hm" = (/obj/item/weapon/ore/slag,/turf/open/floor/plating/airless,/area/derelict/singularity_engine) +"hn" = (/obj/item/weapon/shard,/turf/open/floor/plating/airless,/area/derelict/singularity_engine) +"ho" = (/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating/airless,/area/derelict/singularity_engine) +"hp" = (/turf/closed/wall/r_wall,/area/derelict/hallway/primary) +"hq" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plating/airless,/area/derelict/hallway/primary) +"hr" = (/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/hallway/primary) +"hs" = (/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/hallway/primary) +"ht" = (/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) +"hu" = (/obj/structure/window/fulltile,/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) +"hv" = (/turf/open/floor/plating/airless,/area/derelict/bridge/access) +"hw" = (/turf/open/floor/plasteel/airless,/area/space) +"hx" = (/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/singularity_engine) +"hy" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/item/weapon/shard{icon_state = "medium"},/turf/open/floor/plating/airless,/area/derelict/singularity_engine) +"hz" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/components/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/open/floor/plating/airless,/area/derelict/singularity_engine) +"hA" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/open/floor/plating/airless,/area/derelict/singularity_engine) +"hB" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating/airless,/area/derelict/singularity_engine) +"hC" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/open/floor/plating/airless,/area/derelict/hallway/primary) +"hD" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plating/airless,/area/derelict/hallway/primary) +"hE" = (/turf/open/floor/plasteel/airless{icon_state = "floorscorched2"},/area/derelict/hallway/primary) +"hF" = (/obj/machinery/light/small,/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) +"hG" = (/obj/structure/cable,/obj/machinery/power/apc{dir = 0; name = "Worn-out APC"; pixel_y = -24},/turf/open/floor/plasteel/airless,/area/derelict/bridge/access) +"hH" = (/turf/open/floor/plasteel/airless{icon_state = "floorscorched2"},/area/space) +"hI" = (/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/space) +"hJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating/airless,/area/derelict/singularity_engine) +"hK" = (/obj/machinery/door/window,/turf/open/floor/plating/airless,/area/derelict/hallway/primary) +"hL" = (/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plating/airless,/area/space) +"hM" = (/turf/open/floor/plasteel/airless{icon_state = "floorscorched1"},/area/space) +"hN" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/singularity_engine) +"hO" = (/obj/structure/grille/broken,/turf/open/floor/plating/airless,/area/derelict/singularity_engine) +"hP" = (/obj/machinery/light/small{dir = 4},/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/singularity_engine) +"hQ" = (/turf/open/floor/plating/airless,/area/derelict/hallway/primary) +"hR" = (/obj/item/weapon/crowbar,/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) +"hS" = (/obj/structure/grille,/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) +"hT" = (/obj/structure/girder,/turf/open/floor/plating/airless,/area/derelict/hallway/primary) +"hU" = (/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/space) +"hV" = (/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plasteel/airless,/area/space) +"hW" = (/obj/item/weapon/shard{icon_state = "small"},/obj/item/weapon/shard{icon_state = "medium"},/turf/open/floor/plating/airless,/area/derelict/singularity_engine) +"hX" = (/obj/structure/window/reinforced,/turf/open/floor/plating/airless,/area/derelict/singularity_engine) +"hY" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating/airless,/area/derelict/singularity_engine) +"hZ" = (/obj/item/stack/cable_coil/cut{amount = 2; dir = 2; icon_state = "coil_red2"},/turf/open/floor/plating/airless,/area/derelict/hallway/primary) +"ia" = (/turf/closed/wall/r_wall,/area/derelict/arrival) +"ib" = (/turf/closed/wall,/area/derelict/arrival) +"ic" = (/turf/closed/wall,/area/derelict/medical/chapel) +"id" = (/turf/closed/wall,/area/derelict/singularity_engine) +"ie" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating/airless,/area/derelict/singularity_engine) +"if" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/open/floor/plating/airless,/area/derelict/hallway/primary) +"ig" = (/obj/machinery/light/small,/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/hallway/primary) +"ih" = (/obj/structure/lattice,/obj/structure/window/fulltile,/turf/open/space,/area/space) +"ii" = (/obj/structure/table,/turf/open/floor/plasteel,/area/derelict/arrival) +"ij" = (/obj/structure/chair,/turf/open/floor/plasteel,/area/derelict/arrival) +"ik" = (/turf/open/floor/plasteel,/area/derelict/arrival) +"il" = (/obj/machinery/light/small{dir = 1},/turf/open/floor/plasteel,/area/derelict/arrival) +"im" = (/obj/structure/chair{dir = 8},/obj/item/weapon/pen,/turf/open/floor/plasteel,/area/derelict/arrival) +"in" = (/obj/structure/chair{dir = 8},/turf/open/floor/plasteel,/area/derelict/arrival) +"io" = (/obj/structure/closet/coffin,/turf/open/floor/plasteel{icon_state = "dark"},/area/derelict/medical/chapel) +"ip" = (/turf/open/floor/plasteel{icon_state = "dark"},/area/derelict/medical/chapel) +"iq" = (/obj/machinery/light/small{dir = 1},/turf/open/floor/plasteel{icon_state = "dark"},/area/derelict/medical/chapel) +"ir" = (/obj/item/weapon/shard,/turf/open/space,/area/space) +"is" = (/obj/structure/grille,/turf/open/space,/area/derelict/singularity_engine) +"it" = (/obj/item/weapon/shard,/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/singularity_engine) +"iu" = (/turf/open/floor/plasteel/airless{icon_state = "floorscorched2"},/area/derelict/arrival) +"iv" = (/turf/open/floor/plating/airless,/area/derelict/arrival) +"iw" = (/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/arrival) +"ix" = (/obj/structure/table,/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plasteel,/area/derelict/arrival) +"iy" = (/obj/machinery/light/small,/turf/open/floor/plasteel{icon_state = "dark"},/area/derelict/medical/chapel) +"iz" = (/obj/machinery/door/airlock/medical{name = "Morgue"; req_access_txt = "6"},/turf/open/floor/plasteel{icon_state = "dark"},/area/derelict/medical/chapel) +"iA" = (/turf/closed/wall,/area/derelict/medical) +"iB" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plating/airless,/area/derelict/medical) +"iC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plating/airless,/area/derelict/medical) +"iD" = (/obj/item/weapon/shard,/obj/structure/grille/broken,/turf/open/floor/plating/airless,/area/derelict/medical) +"iE" = (/turf/open/floor/plating/airless,/area/derelict/medical) +"iF" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/open/floor/plating/airless,/area/derelict/medical) +"iG" = (/obj/machinery/door/airlock/external{name = "External Engineering"},/turf/open/floor/plating/airless,/area/space) +"iH" = (/turf/open/floor/plasteel/airless{icon_state = "damaged4"},/area/derelict/hallway/primary) +"iI" = (/obj/machinery/door/window{dir = 8},/turf/open/floor/plasteel,/area/derelict/arrival) +"iJ" = (/obj/structure/table,/obj/machinery/computer/pod/old{name = "ProComp IIe"; pixel_y = 7; id = "derelict_gun"},/turf/open/floor/plasteel{icon_state = "chapel"},/area/derelict/medical/chapel) +"iK" = (/obj/machinery/door/morgue{name = "coffin storage"; req_access_txt = "22"},/turf/open/floor/plasteel{icon_state = "dark"},/area/derelict/medical/chapel) +"iL" = (/obj/structure/bodycontainer/morgue,/turf/open/floor/plasteel{icon_state = "dark"},/area/derelict/medical/chapel) +"iM" = (/turf/open/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) +"iN" = (/obj/item/weapon/firstaid_arm_assembly,/turf/open/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) +"iO" = (/obj/structure/closet,/obj/structure/window/reinforced{dir = 8},/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/medical) +"iP" = (/obj/structure/frame/computer,/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/medical) +"iQ" = (/obj/machinery/light{dir = 1},/obj/item/weapon/shard{icon_state = "small"},/turf/open/floor/plating/airless,/area/derelict/medical) +"iR" = (/obj/machinery/light/small,/turf/open/floor/plasteel/airless{icon_state = "damaged4"},/area/derelict/singularity_engine) +"iS" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/open/floor/plating/airless,/area/derelict/hallway/primary) +"iT" = (/turf/open/floor/plating,/area/derelict/arrival) +"iU" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/turf/open/space,/area/space) +"iV" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 8},/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plasteel{dir = 1; icon_state = "chapel"},/area/derelict/medical/chapel) +"iW" = (/turf/open/floor/plasteel{dir = 4; icon_state = "chapel"},/area/derelict/medical/chapel) +"iX" = (/turf/open/floor/plasteel{dir = 1; icon_state = "chapel"},/area/derelict/medical/chapel) +"iY" = (/obj/structure/chair{dir = 8},/turf/open/floor/plasteel{dir = 1; icon_state = "chapel"},/area/derelict/medical/chapel) +"iZ" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/open/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) +"ja" = (/obj/item/stack/medical/bruise_pack,/turf/open/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) +"jb" = (/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/medical) +"jc" = (/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/medical) +"jd" = (/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating/airless,/area/derelict/medical) +"je" = (/turf/open/floor/plasteel/airless{icon_state = "damaged5"},/area/space) +"jf" = (/obj/item/stack/cable_coil/cut,/turf/open/floor/plating/airless,/area/space) +"jg" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plasteel,/area/derelict/arrival) +"jh" = (/obj/machinery/light/small{dir = 4},/turf/open/floor/plasteel,/area/derelict/arrival) +"ji" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 8},/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plasteel{dir = 8; icon_state = "chapel"},/area/derelict/medical/chapel) +"jj" = (/obj/structure/chair{dir = 4},/turf/open/floor/plasteel{icon_state = "chapel"},/area/derelict/medical/chapel) +"jk" = (/obj/structure/table,/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plasteel{dir = 8; icon_state = "chapel"},/area/derelict/medical/chapel) +"jl" = (/obj/machinery/atmospherics/components/unary/vent_pump{on = 1},/turf/open/floor/plasteel{icon_state = "chapel"},/area/derelict/medical/chapel) +"jm" = (/turf/open/floor/plasteel{dir = 8; icon_state = "chapel"},/area/derelict/medical/chapel) +"jn" = (/turf/open/floor/plasteel{icon_state = "chapel"},/area/derelict/medical/chapel) +"jo" = (/obj/structure/chair,/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/medical) +"jp" = (/obj/structure/table,/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plating/airless,/area/derelict/medical) +"jq" = (/obj/item/weapon/storage/box/lights/mixed,/turf/open/floor/plating/airless,/area/derelict/singularity_engine) +"jr" = (/obj/item/drone_shell,/turf/open/floor/plating/airless,/area/derelict/singularity_engine) +"js" = (/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plating/airless,/area/derelict/singularity_engine) +"jt" = (/obj/item/stack/cable_coil/cut{amount = 2; dir = 2; icon_state = "coil_red2"},/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/hallway/primary) +"ju" = (/turf/open/floor/plasteel/airless{icon_state = "damaged4"},/area/space) +"jv" = (/obj/structure/chair{dir = 1},/turf/open/floor/plasteel,/area/derelict/arrival) +"jw" = (/obj/structure/chair{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plasteel,/area/derelict/arrival) +"jx" = (/obj/structure/window/reinforced,/turf/open/space,/area/space) +"jy" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/grille,/turf/open/space,/area/space) +"jz" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plasteel{dir = 1; icon_state = "chapel"},/area/derelict/medical/chapel) +"jA" = (/obj/structure/window/reinforced,/turf/open/floor/plasteel{dir = 4; icon_state = "chapel"},/area/derelict/medical/chapel) +"jB" = (/obj/structure/window/reinforced,/turf/open/floor/plasteel{dir = 1; icon_state = "chapel"},/area/derelict/medical/chapel) +"jC" = (/obj/machinery/atmospherics/components/unary/vent_pump{on = 1},/turf/open/floor/plasteel{icon_state = "dark"},/area/derelict/medical/chapel) +"jD" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/open/floor/plasteel{icon_state = "dark"},/area/derelict/medical/chapel) +"jE" = (/obj/machinery/sleeper{icon_state = "sleeper-open"; dir = 4},/turf/open/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) +"jF" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/item/weapon/reagent_containers/glass/beaker,/turf/open/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) +"jG" = (/obj/structure/window/reinforced,/turf/open/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) +"jH" = (/obj/structure/window/reinforced,/turf/open/floor/plating/airless,/area/space) +"jI" = (/obj/structure/window/reinforced,/turf/open/floor/plasteel/airless{icon_state = "white"},/area/space) +"jJ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/hallway/primary) +"jK" = (/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plasteel,/area/derelict/arrival) +"jL" = (/obj/machinery/door/poddoor{id = "derelict_gun"; name = "Derelict Mass Driver"},/turf/open/floor/plating,/area/space) +"jM" = (/turf/open/floor/plating,/area/space) +"jN" = (/turf/open/floor/plating,/area/derelict/medical/chapel) +"jO" = (/obj/machinery/mass_driver{dir = 8; icon_state = "mass_driver"; id = "derelict_gun"},/obj/machinery/door/window{dir = 4; req_access_txt = "25"},/obj/structure/closet/coffin,/turf/open/floor/plating,/area/derelict/medical/chapel) +"jP" = (/obj/item/weapon/shard{icon_state = "small"},/turf/open/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) +"jQ" = (/obj/item/stack/medical/bruise_pack,/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/medical) +"jR" = (/obj/item/stack/medical/ointment,/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/medical) +"jS" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/open/floor/plating/airless,/area/derelict/medical) +"jT" = (/obj/structure/closet/l3closet,/turf/open/floor/plating/airless,/area/space) +"jU" = (/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plating/airless,/area/space) +"jV" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/open/space,/area/space) +"jW" = (/obj/structure/window/reinforced{dir = 1},/turf/open/space,/area/space) +"jX" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/turf/open/space,/area/space) +"jY" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plasteel{dir = 1; icon_state = "chapel"},/area/derelict/medical/chapel) +"jZ" = (/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plasteel{dir = 4; icon_state = "chapel"},/area/derelict/medical/chapel) +"ka" = (/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plasteel{dir = 1; icon_state = "chapel"},/area/derelict/medical/chapel) +"kb" = (/obj/structure/chair{dir = 8},/turf/open/floor/plasteel{dir = 4; icon_state = "chapel"},/area/derelict/medical/chapel) +"kc" = (/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) +"kd" = (/obj/item/weapon/cigbutt,/turf/open/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) +"ke" = (/obj/machinery/door/airlock/glass{name = "Med-Sci"; req_access_txt = "9"},/turf/open/floor/plating/airless,/area/derelict/medical) +"kf" = (/obj/structure/table,/turf/open/floor/plating/airless,/area/space) +"kg" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) +"kh" = (/obj/structure/closet/emcloset,/turf/open/floor/plasteel,/area/derelict/arrival) +"ki" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/open/floor/plasteel{icon_state = "chapel"},/area/derelict/medical/chapel) +"kj" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/open/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) +"kk" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) +"kl" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) +"km" = (/obj/item/stack/cable_coil/cut{amount = 2; dir = 2; icon_state = "coil_red2"},/turf/open/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) +"kn" = (/obj/item/stack/cable_coil/cut{amount = 2; dir = 2; icon_state = "coil_red2"},/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/medical) +"ko" = (/obj/item/weapon/reagent_containers/glass/beaker,/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/medical) +"kp" = (/obj/structure/closet/wardrobe/genetics_white,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/open/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) +"kq" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plating/airless,/area/space) +"kr" = (/obj/item/weapon/shard,/turf/open/floor/plating/airless,/area/space) +"ks" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/open/floor/plating/airless,/area/space) +"kt" = (/turf/open/floor/plasteel/airless{icon_state = "white"},/area/space) +"ku" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) +"kv" = (/obj/machinery/atmospherics/components/unary/vent_pump{on = 1},/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/hallway/primary) +"kw" = (/obj/machinery/light/small{dir = 4},/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) +"kx" = (/obj/item/weapon/pen,/turf/open/floor/plasteel,/area/derelict/arrival) +"ky" = (/obj/machinery/light/small,/turf/open/floor/plasteel{dir = 4; icon_state = "chapel"},/area/derelict/medical/chapel) +"kz" = (/obj/machinery/door/window{dir = 8},/turf/open/floor/plasteel/airless,/area/derelict/medical/chapel) +"kA" = (/turf/open/floor/plasteel/airless,/area/derelict/medical/chapel) +"kB" = (/obj/machinery/light/small{dir = 1},/turf/open/floor/plasteel/airless,/area/derelict/medical/chapel) +"kC" = (/obj/machinery/power/apc{dir = 4; name = "Worn-out APC"; pixel_x = 24; pixel_y = 0},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/open/floor/plasteel/airless,/area/derelict/medical/chapel) +"kD" = (/obj/machinery/power/apc{dir = 0; name = "Worn-out APC"; pixel_y = -24},/obj/structure/cable,/turf/open/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) +"kE" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/bed,/turf/open/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) +"kF" = (/obj/item/stack/medical/ointment,/turf/open/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) +"kG" = (/obj/structure/bed,/turf/open/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) +"kH" = (/obj/item/stack/cable_coil/cut{amount = 2; dir = 2; icon_state = "coil_red2"},/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/medical) +"kI" = (/obj/machinery/door/airlock/medical{name = "Medical"},/turf/open/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) +"kJ" = (/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating/airless,/area/space) +"kK" = (/obj/structure/window/fulltile,/turf/open/space,/area/space) +"kL" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/open/floor/plasteel,/area/derelict/arrival) +"kM" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/open/floor/plasteel,/area/derelict/arrival) +"kN" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plating,/area/derelict/arrival) +"kO" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plating,/area/derelict/arrival) +"kP" = (/turf/closed/wall/r_wall,/area/derelict/medical/chapel) +"kQ" = (/obj/machinery/door/window,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel/airless,/area/derelict/medical/chapel) +"kR" = (/obj/machinery/door/window/southleft,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) +"kS" = (/obj/machinery/door/window/southright,/turf/open/floor/plasteel/airless{icon_state = "white"},/area/derelict/medical) +"kT" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) +"kU" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/research{name = "Toxins Research"; req_access_txt = "7"},/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) +"kV" = (/obj/item/stack/cable_coil/cut{amount = 2; dir = 2; icon_state = "coil_red2"},/turf/open/floor/plating/airless,/area/space) +"kW" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plating/airless,/area/space) +"kX" = (/obj/structure/lattice,/obj/structure/grille,/turf/open/space,/area/space) +"kY" = (/obj/machinery/door/airlock/external{name = "Arrivals Docking Bay 1"},/turf/open/floor/plating,/area/derelict/arrival) +"kZ" = (/obj/machinery/light/small{dir = 4},/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/space) +"la" = (/obj/structure/closet,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) +"lb" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel/airless{icon_state = "floorscorched1"},/area/derelict/hallway/primary) +"lc" = (/turf/open/floor/plasteel/airless{icon_state = "floorscorched1"},/area/derelict/hallway/primary) +"ld" = (/obj/machinery/light/small{dir = 1},/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) +"le" = (/obj/structure/frame/computer,/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) +"lf" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/open/floor/plasteel/airless,/area/space) +"lg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel/airless,/area/space) +"lh" = (/obj/structure/window/fulltile,/turf/open/floor/plating/airless,/area/space) +"li" = (/obj/effect/decal/cleanable/dirt,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/open/floor/plating/airless,/area/space) +"lj" = (/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel/airless,/area/space) +"lk" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/window/fulltile,/turf/open/floor/plating/airless,/area/space) +"ll" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/research{name = "Toxins Research"; req_access_txt = "7"},/turf/open/floor/plasteel/airless,/area/derelict/arrival) +"lm" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel,/area/derelict/arrival) +"ln" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plating,/area/derelict/arrival) +"lo" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/open/floor/plasteel,/area/derelict/arrival) +"lp" = (/obj/machinery/door/airlock/command{name = "Teleporter Room"},/turf/open/floor/plasteel/airless,/area/derelict/medical/chapel) +"lq" = (/obj/item/stack/cable_coil/cut{amount = 2; dir = 2; icon_state = "coil_red2"},/turf/open/floor/plasteel/airless{icon_state = "floorscorched1"},/area/derelict/hallway/primary) +"lr" = (/obj/machinery/atmospherics/components/unary/vent_pump{on = 1},/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) +"ls" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) +"lt" = (/obj/machinery/light/small{dir = 8},/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) +"lu" = (/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) +"lv" = (/obj/structure/cable,/obj/machinery/power/apc{dir = 0; name = "Worn-out APC"; pixel_y = -24},/turf/open/floor/plasteel,/area/derelict/arrival) +"lw" = (/obj/machinery/portable_atmospherics/scrubber,/turf/open/floor/plasteel,/area/derelict/arrival) +"lx" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/open/floor/plating/airless,/area/derelict/hallway/primary) +"ly" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/open/floor/plasteel/airless{icon_state = "floorscorched1"},/area/derelict/hallway/primary) +"lz" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) +"lA" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) +"lB" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) +"lC" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) +"lD" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) +"lE" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) +"lF" = (/obj/structure/window/fulltile,/turf/open/floor/plating/airless,/area/derelict/arrival) +"lG" = (/obj/machinery/portable_atmospherics/pump,/turf/open/floor/plasteel,/area/derelict/arrival) +"lH" = (/obj/machinery/door/window,/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) +"lI" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) +"lJ" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) +"lK" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) +"lL" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) +"lM" = (/obj/machinery/vending/hydronutrients,/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) +"lN" = (/obj/structure/girder,/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) +"lO" = (/obj/structure/girder,/turf/open/floor/plasteel/airless,/area/space) +"lP" = (/obj/structure/girder,/turf/open/floor/plating,/area/derelict/arrival) +"lQ" = (/obj/structure/bed,/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) +"lR" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plating/airless,/area/derelict/hallway/primary) +"lS" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plating/airless,/area/derelict/hallway/primary) +"lT" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating/airless,/area/derelict/hallway/primary) +"lU" = (/obj/machinery/door/airlock/security{name = "Security"; req_access = null; req_access_txt = "1"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) +"lV" = (/obj/machinery/door/window,/turf/open/floor/plasteel/airless,/area/hallway/primary/port) +"lW" = (/obj/machinery/vending/hydroseeds,/turf/open/floor/plasteel/airless,/area/hallway/primary/port) +"lX" = (/obj/item/weapon/cigbutt,/turf/open/space,/area/space) +"lY" = (/obj/machinery/light{dir = 1},/turf/open/floor/plasteel,/area/derelict/arrival) +"lZ" = (/obj/structure/table,/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) +"ma" = (/obj/structure/table,/obj/item/weapon/stock_parts/cell,/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) +"mb" = (/obj/machinery/vending/sovietsoda,/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) +"mc" = (/obj/effect/decal/cleanable/blood/gibs/old,/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) +"md" = (/obj/structure/cable,/obj/machinery/power/apc{dir = 0; name = "Worn-out APC"; pixel_y = -24},/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) +"me" = (/obj/structure/table,/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plasteel/airless,/area/space) +"mf" = (/obj/structure/window/reinforced{dir = 8},/obj/item/stack/cable_coil/cut{amount = 2; dir = 2; icon_state = "coil_red2"},/turf/open/floor/plasteel/airless,/area/space) +"mg" = (/obj/structure/lattice,/obj/item/stack/cable_coil/cut,/turf/open/space,/area/space) +"mh" = (/obj/effect/decal/cleanable/blood/splatter,/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) +"mi" = (/obj/machinery/atmospherics/components/unary/vent_pump{on = 1},/obj/effect/decal/cleanable/blood/splatter,/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) +"mj" = (/obj/structure/chair/stool,/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) +"mk" = (/obj/machinery/door/airlock/maintenance{name = "Atmospherics Access"; req_access_txt = "24"},/turf/open/floor/plating/airless,/area/derelict/hallway/primary) +"ml" = (/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plasteel/airless,/area/space) +"mm" = (/obj/item/stack/cable_coil/cut{amount = 2; dir = 2; icon_state = "coil_red2"},/turf/open/floor/plasteel/airless,/area/space) +"mn" = (/obj/structure/closet/wardrobe/orange,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/obj/item/weapon/shovel/spade,/obj/item/weapon/cultivator,/turf/open/floor/plasteel/airless,/area/space) +"mo" = (/obj/structure/grille,/turf/open/floor/plating,/area/derelict/arrival) +"mp" = (/obj/structure/closet/wardrobe,/obj/effect/spawner/lootdrop/maintenance{lootcount = 3; name = "3maintenance loot spawner"},/turf/open/floor/plasteel,/area/derelict/arrival) +"mq" = (/obj/item/weapon/stock_parts/manipulator{pixel_x = -15; pixel_y = 10},/obj/item/weapon/stock_parts/manipulator,/turf/open/floor/plating/airless,/area/derelict/hallway/primary) +"mr" = (/obj/structure/closet,/obj/effect/spawner/lootdrop/maintenance{lootcount = 3; name = "3maintenance loot spawner"},/turf/open/floor/plating/airless,/area/derelict/hallway/primary) +"ms" = (/obj/structure/chair/stool,/obj/effect/decal/remains/human,/obj/effect/decal/cleanable/blood/old,/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) +"mt" = (/obj/structure/table,/obj/item/weapon/reagent_containers/glass/beaker{list_reagents = list("sacid" = 50)},/obj/item/weapon/paper/crumpled/bloody{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 _- "; name = "unifinished paper scrap"},/obj/item/weapon/pen,/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) +"mu" = (/obj/structure/table,/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) +"mv" = (/turf/open/floor/plasteel/airless,/area/derelict/atmospherics) +"mw" = (/turf/open/floor/plating/airless,/area/derelict/atmospherics) +"mx" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/open/floor/plating/airless,/area/derelict/atmospherics) +"my" = (/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating/airless,/area/derelict/atmospherics) +"mz" = (/obj/machinery/atmospherics/components/unary/tank/air,/turf/open/floor/plating/airless,/area/derelict/atmospherics) +"mA" = (/turf/closed/wall,/area/derelict/atmospherics) +"mB" = (/turf/closed/wall/r_wall,/area/derelict/atmospherics) +"mC" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/window/reinforced,/turf/open/floor/plasteel/airless,/area/space) +"mD" = (/obj/structure/window/reinforced,/turf/open/floor/plasteel/airless,/area/space) +"mE" = (/obj/structure/grille,/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating/airless,/area/space) +"mF" = (/obj/structure/bed,/turf/open/floor/plasteel/airless,/area/space) +"mG" = (/turf/open/floor/plasteel/airless{icon_state = "floorgrime"},/area/derelict/hallway/primary) +"mH" = (/turf/open/floor/plasteel/airless{icon_state = "damaged5"},/area/derelict/hallway/primary) +"mI" = (/obj/item/ammo_casing/a357,/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) +"mJ" = (/obj/structure/table,/obj/item/device/healthanalyzer,/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) +"mK" = (/obj/machinery/atmospherics/components/unary/portables_connector/visible{dir = 4},/turf/open/floor/plating/airless,/area/derelict/atmospherics) +"mL" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 4},/turf/open/floor/plating/airless,/area/derelict/atmospherics) +"mM" = (/obj/machinery/atmospherics/components/unary/portables_connector/visible{icon_state = "connector_map"; dir = 8},/turf/open/floor/plating/airless,/area/derelict/atmospherics) +"mN" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/cyan/visible{dir = 6},/turf/open/floor/plating/airless,/area/derelict/atmospherics) +"mO" = (/obj/machinery/atmospherics/pipe/manifold/cyan/hidden,/obj/machinery/meter,/turf/open/floor/plating/airless,/area/derelict/atmospherics) +"mP" = (/obj/machinery/atmospherics/pipe/simple/cyan/hidden{icon_state = "intact"; dir = 9},/turf/open/floor/plating/airless,/area/derelict/atmospherics) +"mQ" = (/obj/machinery/door/airlock/maintenance{name = "Atmospherics Access"; req_access_txt = "24"},/turf/open/floor/plating/airless,/area/derelict/atmospherics) +"mR" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel/airless,/area/space) +"mS" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating/airless,/area/space) +"mT" = (/obj/structure/closet/wardrobe/mixed,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/open/floor/plasteel,/area/derelict/arrival) +"mU" = (/obj/machinery/atmospherics/components/unary/portables_connector/visible{dir = 4},/turf/open/floor/plasteel/airless,/area/derelict/atmospherics) +"mV" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/open/floor/plating/airless,/area/derelict/atmospherics) +"mW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{icon_state = "intact"; dir = 5},/turf/open/floor/plating/airless,/area/derelict/atmospherics) +"mX" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/components/binary/valve,/turf/open/floor/plating/airless,/area/derelict/atmospherics) +"mY" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating/airless,/area/space) +"mZ" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/open/floor/plating,/area/derelict/arrival) +"na" = (/obj/machinery/door/airlock/external{name = "Escape Airlock"},/turf/open/floor/plating,/area/derelict/arrival) +"nb" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/open/floor/plating/airless,/area/derelict/atmospherics) +"nc" = (/obj/machinery/door/window{dir = 8},/obj/item/weapon/shard{icon_state = "medium"},/turf/open/floor/plasteel/airless,/area/space) +"nd" = (/turf/closed/wall,/area/derelict/hallway/secondary) +"ne" = (/obj/structure/girder,/turf/open/floor/plating/airless,/area/derelict/hallway/secondary) +"nf" = (/turf/closed/wall/r_wall,/area/derelict/hallway/secondary) +"ng" = (/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plating/airless,/area/space) +"nh" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"},/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) +"ni" = (/obj/item/ammo_casing/a357{pixel_x = -5},/obj/item/ammo_casing/a357{pixel_x = 5; pixel_y = 6},/obj/item/ammo_casing/a357,/turf/open/floor/plasteel/airless,/area/derelict/hallway/primary) +"nj" = (/obj/machinery/light/small{dir = 8},/turf/open/floor/plating/airless,/area/derelict/atmospherics) +"nk" = (/turf/open/floor/plasteel/airless{icon_state = "floorscorched1"},/area/derelict/atmospherics) +"nl" = (/obj/structure/window/fulltile,/turf/open/floor/plating/airless,/area/derelict/hallway/secondary) +"nm" = (/obj/structure/grille,/obj/item/weapon/shard,/obj/item/weapon/shard{icon_state = "medium"},/turf/open/floor/plating/airless,/area/space) +"nn" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/open/floor/plating/airless,/area/space) +"no" = (/obj/structure/window/reinforced,/turf/open/floor/plasteel/airless,/area/derelict/atmospherics) +"np" = (/turf/open/floor/plasteel/airless{icon_state = "damaged5"},/area/derelict/atmospherics) +"nq" = (/turf/open/floor/plasteel{icon_state = "damaged2"; initial_gas_mix = "TEMP=2.7"},/area/derelict/atmospherics) +"nr" = (/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/atmospherics) +"ns" = (/turf/open/floor/plasteel/airless{icon_state = "damaged4"},/area/derelict/atmospherics) +"nt" = (/obj/structure/window/fulltile,/turf/open/space,/area/derelict/atmospherics) +"nu" = (/obj/item/stack/rods,/turf/open/floor/plasteel/airless,/area/derelict/hallway/secondary) +"nv" = (/obj/item/weapon/shard{icon_state = "small"},/turf/open/space,/area/space) +"nw" = (/obj/structure/frame/computer,/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plasteel/airless,/area/derelict/atmospherics) +"nx" = (/obj/machinery/portable_atmospherics/canister,/turf/open/floor/plasteel/airless,/area/derelict/atmospherics) +"ny" = (/obj/machinery/light/small,/turf/open/floor/plasteel/airless{icon_state = "damaged5"},/area/derelict/atmospherics) +"nz" = (/obj/structure/lattice,/turf/open/space,/area/derelict/atmospherics) +"nA" = (/obj/structure/door_assembly/door_assembly_mai{name = "airlock assembly"},/turf/open/floor/plasteel/airless,/area/derelict/hallway/secondary) +"nB" = (/obj/item/weapon/wirecutters,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/open/floor/plasteel/airless,/area/derelict/hallway/secondary) +"nC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating/airless,/area/derelict/hallway/secondary) +"nD" = (/obj/machinery/atmospherics/components/unary/vent_pump{on = 1},/turf/open/floor/plating/airless,/area/derelict/hallway/primary) +"nE" = (/obj/structure/chair{dir = 1},/turf/open/floor/plating/airless,/area/derelict/atmospherics) +"nF" = (/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/atmospherics) +"nG" = (/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/space) +"nH" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel/airless,/area/derelict/hallway/secondary) +"nI" = (/obj/item/stack/cable_coil/cut,/turf/open/floor/plating/airless,/area/derelict/hallway/primary) +"nJ" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/open/floor/plating/airless,/area/derelict/hallway/primary) +"nK" = (/obj/structure/window/reinforced,/turf/open/floor/plating/airless,/area/derelict/atmospherics) +"nL" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/open/floor/plasteel/airless,/area/derelict/atmospherics) +"nM" = (/turf/open/floor/plasteel/airless{icon_state = "damaged1"},/area/derelict/atmospherics) +"nN" = (/obj/machinery/portable_atmospherics/pump,/turf/open/floor/plating/airless,/area/derelict/atmospherics) +"nO" = (/obj/structure/table,/obj/effect/spawner/lootdrop/maintenance{lootcount = 8; name = "8maintenance loot spawner"},/turf/open/floor/plating/airless,/area/derelict/atmospherics) +"nP" = (/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plating/airless,/area/derelict/hallway/primary) +"nQ" = (/turf/open/space,/area/derelict/atmospherics) +"nR" = (/obj/machinery/light/small,/turf/open/floor/plasteel/airless,/area/derelict/atmospherics) +"nS" = (/turf/open/floor/plasteel/airless,/area/derelict/hallway/secondary) +"nT" = (/obj/machinery/light/small{dir = 4},/turf/open/floor/plasteel/airless,/area/derelict/hallway/secondary) +"nU" = (/obj/machinery/door/airlock/maintenance{name = "Aux Storage"; req_access_txt = "23"},/turf/open/floor/plating/airless,/area/derelict/hallway/secondary) +"nV" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable,/obj/machinery/power/apc{dir = 8; name = "Worn-out APC"; pixel_x = -24; pixel_y = 0},/turf/open/floor/plasteel/airless,/area/derelict/hallway/secondary) +"nW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating/airless,/area/derelict/hallway/secondary) +"nX" = (/turf/open/floor/plating/airless,/area/derelict/hallway/secondary) +"nY" = (/obj/machinery/light/small{dir = 1},/turf/open/floor/plasteel/airless,/area/derelict/hallway/secondary) +"nZ" = (/obj/machinery/atmospherics/components/unary/vent_pump{on = 1},/turf/open/floor/plasteel/airless,/area/derelict/hallway/secondary) +"oa" = (/obj/machinery/power/apc{dir = 1; name = "Worn-out APC"; pixel_x = 0; pixel_y = 24},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/open/floor/plasteel/airless,/area/derelict/atmospherics) +"ob" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel/airless,/area/derelict/hallway/secondary) +"oc" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel/airless{icon_state = "derelict9"},/area/derelict/hallway/secondary) +"od" = (/obj/machinery/light/small{dir = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel/airless{icon_state = "derelict10"},/area/derelict/hallway/secondary) +"oe" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel/airless{icon_state = "derelict11"},/area/derelict/hallway/secondary) +"of" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel/airless{icon_state = "derelict12"},/area/derelict/hallway/secondary) +"og" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel/airless{icon_state = "derelict13"},/area/derelict/hallway/secondary) +"oh" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel/airless{icon_state = "derelict14"},/area/derelict/hallway/secondary) +"oi" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel/airless{icon_state = "derelict15"},/area/derelict/hallway/secondary) +"oj" = (/obj/machinery/light/small{dir = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel/airless{icon_state = "derelict16"},/area/derelict/hallway/secondary) +"ok" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel/airless,/area/derelict/hallway/secondary) +"ol" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/open/floor/plasteel/airless,/area/derelict/hallway/secondary) +"om" = (/turf/open/floor/plasteel/airless{icon_state = "derelict1"},/area/derelict/hallway/secondary) +"on" = (/turf/open/floor/plasteel/airless{icon_state = "derelict2"},/area/derelict/hallway/secondary) +"oo" = (/turf/open/floor/plasteel/airless{icon_state = "derelict3"},/area/derelict/hallway/secondary) +"op" = (/turf/open/floor/plasteel/airless{icon_state = "derelict4"},/area/derelict/hallway/secondary) +"oq" = (/turf/open/floor/plasteel/airless{icon_state = "derelict5"},/area/derelict/hallway/secondary) +"or" = (/turf/open/floor/plasteel/airless{icon_state = "derelict6"},/area/derelict/hallway/secondary) +"os" = (/turf/open/floor/plasteel/airless{icon_state = "derelict7"},/area/derelict/hallway/secondary) +"ot" = (/turf/open/floor/plasteel/airless{icon_state = "derelict8"},/area/derelict/hallway/secondary) +"ou" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/open/floor/plasteel/airless,/area/derelict/hallway/secondary) +"ov" = (/obj/structure/lattice,/turf/open/space,/area/derelict/hallway/secondary) +"ow" = (/obj/structure/grille,/obj/structure/window/reinforced,/turf/open/floor/plating/airless,/area/derelict/hallway/secondary) +"ox" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plating/airless,/area/derelict/hallway/secondary) +"oy" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating/airless,/area/derelict/hallway/secondary) +"oz" = (/turf/closed/wall/r_wall,/area/derelict/se_solar) +"oA" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/engineering{name = "Aft Solar Access"; req_access_txt = "10"},/turf/open/floor/plasteel/airless,/area/derelict/se_solar) +"oB" = (/obj/machinery/door/airlock/external{name = "Escape Airlock"},/turf/open/floor/plating/airless,/area/derelict/hallway/secondary) +"oC" = (/obj/machinery/door/firedoor,/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plating/airless,/area/derelict/hallway/secondary) +"oD" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/turf/open/floor/plasteel/airless,/area/derelict/se_solar) +"oE" = (/obj/structure/closet/emcloset,/turf/open/floor/plasteel/airless,/area/derelict/hallway/secondary) +"oF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plating/airless,/area/derelict/hallway/secondary) +"oG" = (/obj/structure/girder/reinforced,/turf/open/floor/plating/airless,/area/space) +"oH" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/closed/wall/r_wall,/area/derelict/se_solar) +"oI" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/closed/wall/r_wall,/area/derelict/se_solar) +"oJ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/door/airlock/engineering{name = "Aft Solar Access"; req_access_txt = "10"},/turf/open/floor/plasteel/airless,/area/derelict/se_solar) +"oK" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plating/airless,/area/derelict/se_solar) +"oL" = (/obj/structure/grille,/turf/open/floor/plating/airless,/area/derelict/hallway/secondary) +"oM" = (/obj/machinery/power/smes,/obj/structure/cable,/turf/open/floor/plasteel/airless,/area/derelict/se_solar) +"oN" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel/airless,/area/derelict/se_solar) +"oO" = (/turf/open/floor/plasteel/airless{icon_state = "damaged4"},/area/derelict/se_solar) +"oP" = (/turf/open/floor/plasteel/airless,/area/derelict/se_solar) +"oQ" = (/obj/structure/reagent_dispensers/fueltank,/turf/open/floor/plasteel/airless,/area/derelict/se_solar) +"oR" = (/obj/docking_port/stationary{dheight = 0; dir = 2; dwidth = 11; height = 22; id = "whiteship_z4"; name = "KSS13: Derelict"; width = 35},/turf/open/space,/area/space) +"oS" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/item/drone_shell,/turf/open/floor/plasteel/airless,/area/derelict/se_solar) +"oT" = (/turf/open/floor/plating/airless,/area/derelict/se_solar) +"oU" = (/obj/machinery/atmospherics/components/unary/vent_pump{on = 1},/turf/open/floor/plasteel/airless,/area/derelict/se_solar) +"oV" = (/obj/item/weapon/storage/toolbox/syndicate,/turf/open/floor/plasteel/airless,/area/derelict/se_solar) +"oW" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable,/obj/machinery/power/solar_control{id = "derelictsolar"; name = "Primary Solar Control"; track = 0},/turf/open/floor/plasteel/airless,/area/derelict/se_solar) +"oX" = (/obj/structure/cable,/obj/machinery/power/apc{dir = 8; environ = 0; equipment = 0; lighting = 0; locked = 0; name = "Worn-out APC"; pixel_x = -24; pixel_y = 0},/turf/open/floor/plating/airless,/area/derelict/se_solar) +"oY" = (/obj/item/weapon/paper{desc = ""; 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."; name = "Mission Objectives"},/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/se_solar) +"oZ" = (/obj/machinery/light/small{dir = 4},/obj/item/clothing/head/helmet/space/syndicate/black/red,/turf/open/floor/plasteel/airless,/area/derelict/se_solar) +"pa" = (/obj/item/stack/rods,/turf/open/floor/plating/airless,/area/derelict/hallway/secondary) +"pb" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"},/turf/open/floor/plasteel/airless,/area/space) +"pc" = (/obj/machinery/light/small,/turf/open/floor/plasteel/airless,/area/derelict/se_solar) +"pd" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel/airless,/area/derelict/se_solar) +"pe" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"},/turf/open/floor/plasteel/airless,/area/derelict/se_solar) +"pf" = (/obj/item/clothing/suit/space/syndicate/black/red,/turf/open/floor/plasteel/airless,/area/derelict/se_solar) +"pg" = (/obj/effect/decal/remains/human{desc = "This guy seemed to have died in terrible way! Half his remains are dust."; icon_state = "remains"; name = "Syndicate agent remains"},/turf/open/floor/plasteel/airless,/area/derelict/se_solar) +"ph" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/open/floor/plasteel/airless,/area/derelict/se_solar) +"pi" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/external,/turf/open/floor/plasteel/airless,/area/derelict/se_solar) +"pj" = (/obj/structure/cable,/obj/structure/lattice/catwalk,/turf/open/space,/area/solar/derelict_aft) +"pk" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/lattice/catwalk,/turf/open/space,/area/solar/derelict_aft) +"pl" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/solar{id = "derelictsolar"; name = "Derelict Solar Array"},/turf/open/floor/plasteel/airless,/area/solar/derelict_aft) +"pm" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/lattice/catwalk,/turf/open/space,/area/solar/derelict_aft) +"pn" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/solar{id = "derelictsolar"; name = "Derelict Solar Array"},/turf/open/floor/plating/airless{icon_state = "platingdmg3"},/area/solar/derelict_aft) +"po" = (/turf/open/floor/plating/airless,/turf/open/floor/plating/airless{icon_state = "platingdmg2"},/area/solar/derelict_aft) +"pp" = (/obj/structure/lattice/catwalk,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/open/space,/area/solar/derelict_aft) +"pq" = (/obj/structure/lattice/catwalk,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/open/space,/area/solar/derelict_aft) +"pr" = (/obj/structure/lattice/catwalk,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/space,/area/solar/derelict_aft) +"ps" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/lattice/catwalk,/turf/open/space,/area/solar/derelict_aft) +"pt" = (/obj/structure/lattice/catwalk,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/open/space,/area/solar/derelict_aft) +"pu" = (/obj/structure/lattice/catwalk,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/open/space,/area/solar/derelict_aft) +"pv" = (/obj/structure/cable,/obj/machinery/power/solar{id = "derelictsolar"; name = "Derelict Solar Array"},/turf/open/floor/plasteel/airless,/area/solar/derelict_aft) +"pw" = (/turf/open/floor/plating/airless{icon_state = "platingdmg1"},/area/solar/derelict_aft) +"px" = (/obj/structure/lattice/catwalk,/turf/open/space,/area/solar/derelict_aft) +"py" = (/obj/structure/lattice/catwalk,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/open/space,/area/solar/derelict_aft) +"pz" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/lattice/catwalk,/turf/open/space,/area/solar/derelict_aft) +"pA" = (/obj/structure/lattice/catwalk,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/open/space,/area/solar/derelict_aft) +"pB" = (/obj/machinery/power/tracker,/obj/structure/cable,/turf/open/floor/plasteel/airless,/area/solar/derelict_aft) +"pC" = (/turf/closed/wall/r_wall,/area/derelict/teleporter) +"pD" = (/turf/open/floor/plating/airless,/area/derelict/teleporter) +"pE" = (/turf/open/floor/plasteel/airless,/area/derelict/teleporter) +"pF" = (/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/derelict/teleporter) +"pG" = (/obj/machinery/light_construct/small{dir = 1},/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/derelict/teleporter) +"pH" = (/obj/machinery/computer/teleporter,/turf/open/floor/plasteel/airless,/area/derelict/teleporter) +"pI" = (/obj/machinery/teleport/station,/turf/open/floor/plasteel/airless,/area/derelict/teleporter) +"pJ" = (/obj/machinery/teleport/hub,/turf/open/floor/plasteel/airless,/area/derelict/teleporter) +"pK" = (/obj/machinery/light_construct/small{dir = 4},/turf/open/floor/plating/airless,/area/derelict/teleporter) +"pL" = (/obj/structure/table,/obj/item/weapon/stock_parts/cell{charge = 100; maxcharge = 15000},/turf/open/floor/plasteel/airless,/area/derelict/teleporter) +"pM" = (/turf/open/floor/plasteel/airless{icon_state = "damaged4"},/area/derelict/teleporter) +"pN" = (/obj/machinery/power/apc{dir = 0; name = "Worn-out APC"; pixel_y = -24},/turf/open/floor/plasteel/airless,/area/derelict/teleporter) +"pO" = (/turf/closed/mineral/random,/area/space) +"pP" = (/turf/open/floor/plating/asteroid/airless,/area/space) +"pQ" = (/turf/closed/wall/mineral/clown,/area/space) +"pR" = (/obj/machinery/door/airlock/clown,/turf/open/floor/mineral/bananium/airless,/area/space) +"pS" = (/obj/effect/mob_spawn/human/clown,/turf/open/floor/mineral/bananium/airless,/area/space) +"pT" = (/turf/open/floor/mineral/bananium/airless,/area/space) +"pU" = (/obj/structure/closet/crate,/obj/item/weapon/ore/bananium,/obj/item/weapon/ore/bananium,/obj/item/weapon/ore/bananium,/obj/item/weapon/ore/bananium,/obj/item/weapon/ore/bananium,/turf/open/floor/mineral/bananium/airless,/area/space) +"pV" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/obj/item/weapon/ore/bananium,/turf/open/floor/mineral/bananium/airless,/area/space) +"pW" = (/obj/structure/closet/secure_closet{name = "clown locker"; req_access_txt = "46"},/obj/item/clothing/shoes/clown_shoes/banana_shoes,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/open/floor/mineral/bananium/airless,/area/space) +"pX" = (/obj/structure/shuttle/engine/heater{color = "#FFFF00"; dir = 4; icon_state = "heater"},/obj/structure/window/reinforced{color = "#FFFF00"; dir = 8},/turf/open/floor/plating/airless{color = "#FFFF00"},/area/space) +"pY" = (/obj/structure/shuttle/engine/propulsion{color = "#FFFF00"; dir = 8; icon_state = "propulsion_l"},/turf/open/space,/area/space) +"pZ" = (/obj/item/weapon/shard{icon_state = "small"},/turf/open/floor/plating/asteroid/airless,/area/space) +"qa" = (/obj/item/weapon/ore/bananium,/turf/open/floor/mineral/bananium/airless,/area/space) +"qb" = (/obj/item/weapon/shard{icon_state = "medium"},/obj/structure/chair{dir = 8},/turf/open/floor/plating/asteroid/airless,/area/space) +"qc" = (/obj/effect/mob_spawn/human/clown{name = "Clown Pilot"},/turf/open/floor/mineral/bananium/airless,/area/space) +"qd" = (/obj/item/weapon/paper{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!"},/turf/open/floor/mineral/bananium/airless,/area/space) +"qe" = (/obj/structure/grille{color = "#FFFF00"},/obj/structure/window/reinforced{color = "#FFFF00"},/obj/structure/window/reinforced{color = "#FFFF00"; dir = 4},/obj/structure/window/reinforced{color = "#FFFF00"; dir = 8},/turf/open/floor/plating/airless{color = "#FFFF00"},/area/space) +"qf" = (/obj/item/weapon/shard,/obj/structure/chair{dir = 8},/turf/open/floor/mineral/bananium/airless,/area/space) +"qg" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/open/floor/mineral/bananium/airless,/area/space) +"qh" = (/obj/item/weapon/storage/bag/ore,/turf/open/floor/mineral/bananium/airless,/area/space) +"qi" = (/obj/item/weapon/pickaxe,/turf/open/floor/mineral/bananium/airless,/area/space) +"qj" = (/obj/structure/closet/crate,/obj/item/weapon/ore/bananium,/obj/item/weapon/ore/bananium,/obj/item/weapon/ore/bananium,/obj/item/weapon/ore/bananium,/turf/open/floor/mineral/bananium/airless,/area/space) +"qk" = (/obj/item/weapon/shovel,/turf/open/floor/mineral/bananium/airless,/area/space) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -878,121 +877,121 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabacacacacagahahaoahahagacacacac aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababafapaqarahasafabababababaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafatafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafafafafauavawaxayafafafafafafaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagazaAaAaAagawawawawawagkwaCaDaEagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaFaAaAaAaGawaHaIaHawaJaBaBaBaKagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaLaMaNaAagawaOaPaQawagaRaSaTaUagaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaVafafaWafawawawawaXafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYaeafaZafafbaawbbbcafaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaYaeafbdbeafbfawbgawafaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeabababababaaboaaaeaeababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYaaafafafafafafafbhafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabraaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabiaaaaaaaaaaaaaaafahafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabsbybtaabtbtbtbrbtbtbtaabtbtbtaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafbhafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaabzbzbAbDbBbBbBbGbEbEbEbDbEbEbJaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaebKbKbKaabKbKbKbLbKbKbKaabKbKbKaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaeaaaaaaaaaaaabMaaaaaaaaaaaaaeaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaeaaaaaaaaaaaabraaaaaaaaaaaaaeaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababbpbNbNbRbQbSbpababababaeabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakLaakLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjbpbqbWbXbCbYbpabaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakLkLkLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjcsbXbZcabIcbbpababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakLcccfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjbubHcgbTbTcnbpbpabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakLcpkLkLkLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjbncqbPbqbqbqbqbvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakLeFkLeOkLkLkLkLkLkLkLkLkLkLkLkLkLkLkLkLkLbjbjbjbjbjbjblbjbjbjbjbjbjblbjbjbjbjbjbjbnfwePbObObPbqbFgxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakLcpcphTeFcphUeykLkLkLeykLkLkLkLkLkLkLkLkLkLkLkLkLkLkLkLkLkLkLkLkLkLkLkLkLkLkLkLkLbnbpbpbpbpjabpbpgqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakLkLkLkLkLcpkLcpcpcpkLcpcpcpkLkLkLkLkLkLkLkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrbpcjbHbqbpgqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakRkrkRcpkLcpkLcpkLcpkLcpkLkLkLeykLeykLkLkLkLkLkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrbpbpkUbpbpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakRkrkRcpkLcpkLcpkLcpkLcpkLkLcpcplacplfldeFcpkLkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrbpbplgcxlhbpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakRkrkRcpkLcpkLcpkLcpkLcpkLkLcpcpcpcpcpkLkLlpkLkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrkrbpcjbqczclbpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakRkrkRcpkLcpkLcpkLcpkLcpkLkLidcpnbcpmIkLkLlckrkrkLkLkLkLkLkLkLkLkLkLkLkLkLkrkrkrkrbpeAbqcLcHbpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakRkrkRcpkLcpkLcpkLcpkLcpkLkLmIcpnpcpmIkLkLlckrkrkLkLlclclclblclcnamZlckLkLkrkrkrkrbpeQbqcxlhbpgqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakRkrkRcplfcpkLcplfcpkLcpldldcphTcplpeykLkLkXlclclckZlcnclblbndfcnclclikLkLkrkrkrkrbpbqbqbHbqbpgqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakRlekReykLkLkLeykLkLkLeycpkLcpkLkLeFkLkLkLqzkrkrkLkLlilincqwnhndnclilikLkLkrkrkrkrbpbqbqbHbxbpbpbpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakRlekRkLkLkLkLkLkLkLkLkLkLkLqxkLgXhThqkLkLkrkrkrkLkLnkljhBncnalbnllilckLkLkrkrkrkrbpbqbqbHbqbqbqnmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakRieaeaeaaaaaaaaaaaaaaaakLkLkLkLkLkLkLkLkLkrkrkrkLkLqzlmnqlilblilclilckLkLkrkrkrkrbpeQbqbHbqbpbpbpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakRaaaaaeaeaaaaaaaabjabababaebjaaaaaaaaaakLkLkLkLkLkLkLnrnsnsnsnsntkLkLkLkLkrkrkrkrbpbqbqbHbqbpgqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaeaebwbwbwaeaaaaaaaaaaaaaaaaaaaaaaaaaaaablaaaaaanwkrkrkrkrkrkrkrkrbpbqbqbVbPbpgqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablaaaaaanwkrkrkrkrkrkrkrkrbpeQbqbqbHbpbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaecdcdcdcdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablaaaaaanwkrkrkrkrkrkrkrkrbpbpbqnxbHbpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaacvcQcPcQixcdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablaaaaaanycecececececececececececenzceaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaedelqdAdedeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanychchcijpckjwcenAlrjzcechcmceaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaedelylxdelAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanBcocodKcoegnDcechchchcecenzceaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacddAlClClDcQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacechchchchcmctcemqchmrcechcmceaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaacdlClClClCdeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacecwcwcwcyezcececwmscwcecenEceaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeblaaaacdmllnmmmpmocdaeaablaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaacechchchchcmcececuchchchchcmceaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaebljKaeaecdlolwlvlwkscdaeaecCblaeaeaeaaaaaaaaaaaaaacDcDblblblcecEchfecoftnNnMcococococonOceabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeaecIcIcIcImnlCmtlCkOcIcIcIcIaeaeaeaeaeaaaaaaaaaaaaaalscDblblcecJcKnScJcJcecececececececececMbwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaecIcIcIcIcNcIcOcdmzcdmAcIcIcIcIcIcIaeaeaaaaaaaaaacDaaluaablblblcechchcmchchcScTcUlzcWcXcYlzcZdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIcIcIdbdclYmCmBmEmDmycddfdbdddbcIcIcIaeaaaaaaaaaaaaaacDaaaaaaaacecEchcFchchcSdhdidjdididididkdlabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIcIdmdnmudododbdpmmmxmGmFdqdbdbdbdrdscIblaaaaaaaaaaaaaaaaaaaaaaaacecJcKdtcJcJdudidinUnVdididjdidvdwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIcIdxdxdxdxdydfdzcIcImHcIdfdBdddBdBdfcIblaaaaaaaaaaaaaaaaaaaaaaaacechcudCchchdDdididididEdididFdGabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIcIdfdBdBdBdHdcdbdIdBdfdBdBdbdcdcdBdBcIblaaaaaaaaaaaaaaaaaaaaaaaecechchdJdKdLdMdNdNdOdPdjdidididvabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaecIcIdBdcdddbdQdbdddbdfdfdBdbdbdbdbdddbcIblaaaaaaaaaaaaaaaaaaaaaeaecechchdCchchdRcVnJdidSdTdidTdUdVbjdWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaecIcIdbdddbdXdYdZeadfebdfdfecedeedBdcddcIblaeaaaaaaaaaacDaaaaaeaeaececececmcechcSefcVeheiejcTcTnJnLdwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaecIcIdBdbdXekelemdfdfdfdfdfeneneoeedbdccIblaeaeaablcecececececececececechcmcececeeqeqereqeqeqcMcMcMabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaecIcIcIdBdBesetdcdfdfdfdfdfdfdfdfeuevdBewcIblblaeaeblcekMgRexqAgWnPeBcecechcmcenWnWblaebjbjaableDbjbwabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIcIcIcIcIdBdBesekdcdfdfdfdfdfdfdfdfeEevdfdBcIcIcIcIcIaacenXexexexexexexcecechcmcenWnWaeaaaaaaaaaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaecIcIdBeKeLdBdBeMeNdfeaaaaaaaaaaadfdfeEdydfdBdbdBdfcIcIaeceexexexexexexexcececeepcececeaeaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIcInQdbeEeedBdcdBnYdfdfaaaaaaaaaadfdfeRnYdBeSeTeUdbdBcIcIceceeVceeWeWeWeWceexexeCexexcecDaaaaaaaaaaaaaaaabjbjblbwbjbwbjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIcIdqddeYevdcdcdcdddfdfaaaaaaaaaadfdfeZdfdBfafbeUdbnRcIcIfdhpimimilililileHeGeGeIexeJceaeaeaaaaaaaaaaaaaabjbjblbwbjeDbjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIcIdBdBeYevdBddeafhdfdfaaaaaaaaaadfdfdffidfdBdbfjdddBfkfkfdflfmfffgfgfgcRcekVexeCexexceaaaaaaaaaaaaaabjbjbjbkblbwbjbwbjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaecIcIdBfodydbdcfpoadfdfaaaaaaaaaadfdfobfqdBdBeceNdBcIfkfrfshpfufffgfvfgcRceexexeXexexceaaaaaaaaaaaabjbjbjbjfxblbwfybwbjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaecIcIcIcIcIdBdBesdfdfdbdfdfdfdfdfdfdfdffzdcdccIcIcIcIfkflfdfdfdfAfdfdfdfdfdfdfdcecececeaaaabjbjbwbjbjfynTfBbkblbwbkeDbjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaecIcIcIdbfCfDdfdbdddfdfdfdcdbdfdffEfzdddBcIcIcIaeaeflfdfffFfFfdfgfGfHfdjZfFceceaaaeaebjbjfxbwbjblbkfxfyfIblbwnZbwbjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaecIcIdddcfJdfdfdbfKdbdcdddodpdofKfLdcdccIcIaaaafrhtfdfffFfffffgfgfgfdfdaaaeaebjaaaabjbkbkbwbjfNfNfNfNfNfNfOfOfObjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafYfYfYfYfYfYfYfYfYfYfYfYfYaaaaaaaaaaaaaaaaaaaaaaaadgdfdgaeaefDecevdBdBdBfPdxdxdydbdbdBcIcIaafFfMfmfdfgfgfgfffQfgfdfdfdaegcbwbwbwgcfOfOfOfOfOfOfSfTfUfVfUfWfXfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafYgigigigiggggggggggghgifYaaaaaaaaaaaaaaaaaaaafZaadfdfgaaeaedfgbdBdbdbfadBdBdbdcdddBdBcIcIaafFfFfmfdfdfdfgfdfdfdfdfdfdbwfxbjbjfxfxgdgdgegegffOodfSodfUfUfXfUfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafYfYfYgigKggggggfYfYgEfYfYfYfYfYgjgkgkgkgjglgmgngogjgpaegqaedBdBdbdcdcdcdbdBdBdbdccIcIcIcIaaflfmfffdfgfufffufdfufugrfubjfxfxfxbjfxgegdgfgfgegsfUfUfUfUfUfUfUfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagqfYiPfYfYfYfYfYgPfYgQggghggggggfYgtgtgtgugtolocgngnoeaeaeaeaecIcIdBgydddbdBcIcIcIcIcIcIaeaefFgzfmfffgfgfffFfufugrfufFfFbwbwgcgcgcgcfNfNfNfNfNfNfUfUgDfUfUfUfUfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaofomgYgZgYoggYgZgYfYgQgggQgggQggfYgFgtgtgtgtgGgvgwgnohgngnaeaecIcIcIcIdfcIcIcIcIcIcIaeaabjfdhtfmfffffdfgfffffFfkfkfkfkfkaeaeaeaaaaaagHfygHbjcBfNfSfSfUfSgIfUgJfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaofhgojoiokhihhhihhfYgQgggQgggQgggEgtgtgtgtgtgtgvonotgngngnaaaeaecIcIgLhuoDcIcIaeaeaeaaaabjfdfmfmhvfffdfdfdfdfufkfIfxfIgMaaaeaaaaaaaaaaaagHaegMfNgNgNfUgNgOfUfUfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahooooGhrhshrgZgYgZgYfYgQopgQoqgQggfYorgtgtgtgtoHosgvgwgngngnaaaaaeaecIcIcIcIcIaeaeaaaagSgSgTfdffgUfffgfdfgfufffufkfxgMfxfxaaaeaaaacDaaaaaaaagMaefNfUfUfUfUgVfSodfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoubUhKhKhKhLhihhhihhfYgQgggQgggQgggEgtgtgtgtgthagthbgvhcgwgngnhdgjgjgjgjovheaeaaaeaahfaaaabjfdfdhvfffdfdfFfgfFfufkfxgHaaaaaaaeaaaaaaaaaaaaaaaafIfNfOfUfUfOfOfOfOfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaicowoIifigifgZoxoggYfYgQgggggggKggfYgtgtgtgtgthjgthkgtgvgvgwgngnhlgnhlgSbjbjbjaaaeaeaeaeaaoyfdfghmfgfgfdfgfgfgfgfkgMfxaaaaaaaeaaaaaaaaaaaaaaaafNfNfNfUfUfOhnhnhnfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaofhghhhiozhihhhihhfYfYfYfYfYfYfYfYgFgtgtgthxhzhwhyhwhygvgwhAoKgjoLgjfIbjbjbjhChDbjbjbjhEhFfdfghGfgfgfdfgoAfghHfkfkfkbjaeaebjaebjaeaeaebjaeaebjbjfNfUfUfUfUfUhIfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaofomgYgZiEgZgYgZgYhMhNhNhNhOhNhJfYorgtgtgthRoBhSoCgtgjhPoEgjgjgjgjgjgthFfIfyhVbjfybjbjfIhFfdfghGfghHfdfgfgfgfFfgfgfkfdhWhWbwhWaaaaaaaaaeaaaaaaaefNhYfUfUfUfUhZfOiaibaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagqoFoFoFoFoFoFoFoFoFoFoFoFfYfYhQfYfdfdfdfdfdfdfdfdfdfdiiijfdfdfdfdfdfdfdfdfdfdfyhFhFhFfyoyfdfgikilililililimilililinilihioihhWhWhWbwbwirbwbwbwgcfNfOfUfUfUfUfUisgDisaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablfIbjaeaaaaaaaeaelukWoFfdoRipjAfgfgitfgoRfgfgfdoJfghGfgfgfgfdfgfgfgfgfgfdfdfdfdfdfdfdfdfdfghGfgfgfdfgfffgfgfFfgfkfdhWbwiubjivfnoSiyfRivihiviviAiBiCiDgDfUfUfOiaibaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablfBluaaaaaaaaaaaebjfIoMfgfFfFiGoNfgfgfgfgoOfgfdiFfghGfgfghHfdiFoNfgoOfgfdfdfdfdfgfgfgfgfgfghGfgfgfdfgoOfffffgiIfkeDaeaahWhWhWbjeDbwaahWhWhWhWfNfOfUiNfUfUiOfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaebjaaaaaaaaaaaabjaebjoFfdhtffiZiHjhjhjhjhjhjhjOjhjhjTfgfgfgfdfgfgfgfgfgfgfgitfgiRilililililjUjVfkfkfkfgfgfgfgfgfkeDaeaaaaaaaaaaaaaaaaaaaaaaaagAfOfUfOfUfUiUfOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabloFfdfffFfdfdfdfgfdfdfdiVfdfgfgiWilililiXililiYililililililiSfgfgfgfgfgfghGfkoQfkfkiTfffdoPbwaeaaaaaaaaaaaaaaaaaaaaaaaahWjtfOfUfOfOfOfOfOfNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafdfFfmfdjditfgfdjditfgfdjejejejfiVjgfdiFfghGfgfgfgfgfgfgfgfkfkfkfkfkfkjWfkphoVfkfdfdfdaaaaaaaaaaaaaaaajiaaaaaeaaaeaefOgDjkfUfUhIjkfUfNfNabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaefffdoToNjmfdoToNoTfdjnpnpnfgfgfgfdfgfgjofgfgfgfgfgfgfgfkbkbkoUbkbkkabkbkblblbwbwbwfyaaaadWaaaaaaaaaaaaaejsjsaeaefOjtfUfUgDfUfUfUfUfNabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaefdfdfdfdfdfdfdfdfdfgpppojufgfgfdfdfdfdfdfdfdfdfdjvfdfkbjbjbjbjbkjqkdbkbloUbkprbwbjaeaaaeaeaeaaaaaaaeaeaeaaaeaahWjyfUfUfUfUgDfUoZfNabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaefFfFfFpboJjApdjAfdfgpzpwjljufgfdpgoXmvoXmwpApAoWoXoWoYaaaaaedwbjbkjBjCjDbkbkjEbwaebwaeaecDaeaeaeaeaeaaaeaaaaaahWjyjtfUfUfUfUfUfUfNabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeaeaeaefFfFjAjGfgjHfdiFpBjIjlfghHfdpamSoXmWpEpDpHoWpcoWoYaaaeaeaeaebjjrbkjJbkjEjEbwaeaaaaaaaaaeaeaeaaaeaaaaaeaaaahWjyfUfUfUfUfUfUpefNabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaefFfFfFjAfgfdfgfgjljlfgfgfdmYmXnemWqgoXpgoWpgoWoYaaaeaaaaaabjkdbkjLbkjEjEbwaeaeaaaaaeaeaaaaaaaaaaaaaaaaaaaajMjNjMiaiaiaiaiafNabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafFfFfFfdfgfgjujufgfgfdoXpgoXnfnfpgpgoWpcoWoYaaaeaeaejsbjbjbkpibkbkbkjPjQjRblblaeaaaaaaaaaaaaaaaaaaaaaajSgDhVbjbjbjbjaablabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeaefFiQqyfgfgfgfgfgfdngoXoXoXpgoXpkoWpcoWoYblblblblaaaaihblblblblbljRgCjRaabjaaaaaaaaaaaaaaaadWaaaaaajXjNjYbwaaaabwaablabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaefdfdfdfdfdfdiVfdjZnioXoXoXoXnjnnpxpxnopqaaaeaaaeaaaaaaaebjbkbkbkjRkpjRaabwaaaaaaaaaaaaaaaaaaaaaaaakbaaaaaaaaaaabbjblabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaafFfFgrfffgjHfdpsnuoXoXoXpgptoXoXpqpuaeaefIblcDaaaaaebjihbjkdkqktkeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaablabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaaaafFfmpvfgfgfdnvpgoXoXoXpgoXoXpxnCpqaeaeaepfaeaeaeaeaabjbjbkjRkfkeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbjblabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaafFkgfFffpyfgfdnGnFpgoXpgoXoXoXpxnCoWaaaaaeaeaaaaaaaeaaaabjbkjRkfkeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaablabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaeaafFfFfFfgfgfmfdoXpgoXoXnHpgoXoXnCnjoWfIaaaeblblaaaaaeaeaeblbljRkfkeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbjblabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaeaeaefdfFfdfdfdfdpgoXpgoXnCnHoXnonHnjpqfIluaebjbjaaaaaeaaaaaabjjPkfkeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaablabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaafFfFfFfffmfgfdoXnInfoXoXoXqBoXnjpqpuaaaaaebwaaaaaaaeaaaabjbkjPkfkeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjabbjblabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaaaaaepvfFpjfffdoWoWpgnCoXpgoXoXoWoWpuaeaebwbwaeaeaeaebjbjbkbkjPkfjRjPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaablabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaafFfFfFfmfgfdpGpGoWnKnCnCoXoXoWpGpGaaaaaabwaaaaaabjbkbkbkbkjPkfkhkijPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaebwjPjQjPjPjPjPkjjPjPoWjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPkkkhkhkhklaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaekmkhkhkhknpIkhkhkhpJkxpKpMpLpOpNpQpPpRkxkxkxkxkxkxkxkxkxkxkxpSkxkykmkhkhkeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaekmkmkmkhkhkhkhkhkhkhkhkzkAkBkCkDkEkFkGkhkhkhkhkhkhkhkhkhkhkhkfkhpTkhkhkhkeaaaaaaaaaakbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaekHkIkJkJkJjPkJkJkJkJkJjPkJkJkJkJkJjPkJkJkJkJkJjPkJkJkJkJjPkfkmkmkhkhkhkKhohohoaaaaaahfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjababababababababababbwabababababdwdwdwabababblababababpUpVpUkmkhkhkmkNplgCgCkmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablaaaaaaaapUpWpUkSkSjRkTjRkTjRicicicaaaaaakbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabmbjbjpUpYpXpZpUqaqajRkYjRkYjRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaebjpUqbpUqdqcqekujRkYjRkYjRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaebjbjpUkvqfqdqhqiqejRkYjRkYjRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaejsbjfIpUqjpUqkqeqmqljRlkjRkYjRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaebjfIllqnqpqoqeqqqrqejRkYjRkYjRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaebjbkbkpUqdpUqeqeqfqsjRkYjRlkjRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablblblaapUpUqtpUpUpUpUpUjRkYjRlkjRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaemJaeaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaamKaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaltltltaamLaaltcrcAaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaamNmMmMmOmPmOmRmQcDaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaalBlBlBaamLaalBcGaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaquaaaaaacDaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaltltltaamLaaltltltaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaequqvmMmTmPmTmRmRmUaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaalBlBlBaamLaalBlBlBaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaamVaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagazaAaAaAagawawawawawagaBaCaDaEagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaFaAaAaAaGawaHaIaHawaJaKaKaKaLagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaMaNaOaAagawaPaQaRawagaSaTaUaVagaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaWafafaXafawawawawaYafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZaeafbaafafbbawbcbdafaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaZaeafbebfafbgawbhawafaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeabababababaabiaaaeaeababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZaaafafafafafafafbjafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabkaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablaaaaaaaaaaaaaaafahafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabmbnboaabobobobkboboboaaboboboaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafbjafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaabpbpbqbrbsbsbsbtbubububrbububvaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaebwbwbwaabwbwbwbxbwbwbwaabwbwbwaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaeaaaaaaaaaaaabyaaaaaaaaaaaaaeaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaeaaaaaaaaaaaabkaaaaaaaaaaaaaeaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababbzbAbAbBbCbDbzababababaeabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabEaabEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabFbzbGbHbIbJbKbzabaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabEbEbEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabFbLbIbMbNbObPbzababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabEbQbRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabFbSbTbUbVbVbWbzbzabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabEbXbEbEbEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabFbYbZcabGbGbGbGcbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabEccbEcdbEbEbEbEbEbEbEbEbEbEbEbEbEbEbEbEbEbFbFbFbFbFbFcebFbFbFbFbFbFcebFbFbFbFbFbFbYcfcgchchcabGcicjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabEbXbXckccbXclcmbEbEbEcmbEbEbEbEbEbEbEbEbEbEbEbEbEbEbEbEbEbEbEbEbEbEbEbEbEbEbEbEbEbYbzbzbzbzcnbzbzcoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabEbEbEbEbEbXbEbXbXbXbEbXbXbXbEbEbEbEbEbEbEcpcpcpcpcpcpcpcpcpcpcpcpcpcpcpcpcpcpcpcpcpcpcpbzcqbTbGbzcoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrcpcrbXbEbXbEbXbEbXbEbXbEbEbEcmbEcmbEbEbEbEbEcpcpcpcpcpcpcpcpcpcpcpcpcpcpcpcpcpcpcpbzbzcsbzbzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrcpcrbXbEbXbEbXbEbXbEbXbEbEbXbXctbXcucvccbXbEcpcpcpcpcpcpcpcpcpcpcpcpcpcpcpcpcpcpbzbzcwcxcybzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrcpcrbXbEbXbEbXbEbXbEbXbEbEbXbXbXbXbXbEbEczbEcpcpcpcpcpcpcpcpcpcpcpcpcpcpcpcpcpcpbzcqbGcAcBbzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrcpcrbXbEbXbEbXbEbXbEbXbEbEcCbXcDbXcEbEbEcFcpcpbEbEbEbEbEbEbEbEbEbEbEbEbEcpcpcpcpbzcGbGcHcIbzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrcpcrbXbEbXbEbXbEbXbEbXbEbEcEbXcJbXcEbEbEcFcpcpbEbEcFcFcFcKcFcFcLcMcFbEbEcpcpcpcpbzcNbGcxcybzcoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrcpcrbXcubXbEbXcubXbEbXcvcvbXckbXczcmbEbEcOcFcFcFcPcFcQcKcKcRcScQcFcTbEbEcpcpcpcpbzbGbGbTbGbzcoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrcUcrcmbEbEbEcmbEbEbEcmbXbEbXbEbEccbEbEbEcVcpcpbEbEcTcTcQcWcXcRcQcTcTbEbEcpcpcpcpbzbGbGbTcYbzbzbzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrcUcrbEbEbEbEbEbEbEbEbEbEbEcZbEdackdbbEbEcpcpcpbEbEdcdddecQcLcKdfcTcFbEbEcpcpcpcpbzbGbGbTbGbGbGdgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacrdhaeaeaaaaaaaaaaaaaaaabEbEbEbEbEbEbEbEbEcpcpcpbEbEcVdidjcTcKcTcFcTcFbEbEcpcpcpcpbzcNbGbTbGbzbzbzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacraaaaaeaeaaaaaaaabFabababaebFaaaaaaaaaabEbEbEbEbEbEbEdkdldldldldmbEbEbEbEcpcpcpcpbzbGbGbTbGbzcoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaeaedndndnaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaceaaaaaadocpcpcpcpcpcpcpcpbzbGbGdpcabzcoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaceaaaaaadocpcpcpcpcpcpcpcpbzcNbGbGbTbzdnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaedqdqdqdqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaceaaaaaadocpcpcpcpcpcpcpcpbzbzbGdrbTbzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaadsdtdudtdvdqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaceaaaaaadwdxdxdxdxdxdxdxdxdxdxdxdxdydxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaedzdAdBdzdzaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadwdCdCdDdEdFdGdxdHdIdJdxdCdKdxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaedzdLdMdzdNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadOdPdPdQdPdRdSdxdCdCdCdxdxdydxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqdBdTdTdUdtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadxdCdCdCdCdKdVdxdWdCdXdxdCdKdxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaadqdTdTdTdTdzaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadxdYdYdYdZeadxdxdYebdYdxdxecdxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeceaaaadqedeeefegehdqaeaaceaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaadxdCdCdCdCdKdxdxeidCdCdCdCdKdxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeceejaeaedqekelemelendqaeaeeoceaeaeaeaaaaaaaaaaaaaaepepcececedxeqdCerdPeseteudPdPdPdPdPevdxabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeaeewewewewexdTeydTezewewewewaeaeaeaeaeaaaaaaaaaaaaaaeAepcecedxeBeCeDeBeBdxdxdxdxdxdxdxdxdxeEdnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeweweweweFeweGdqeHdqeIewewewewewewaeaeaaaaaaaaaaepaaeJaacececedxdCdCdKdCdCeKeLeMeNeOePeQeNeReSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeweweweTeUeVeWeXeYeZfadqfbeTfceTewewewaeaaaaaaaaaaaaaaepaaaaaaaadxeqdCfddCdCeKfefffgfffffffffhfiabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaewewfjfkflfmfmeTfneffofpfqfreTeTeTfsftewceaaaaaaaaaaaaaaaaaaaaaaaadxeBeCfueBeBfvfffffwfxfffffgfffyfzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaewewfAfAfAfAfBfbfCewewfDewfbfEfcfEfEfbewceaaaaaaaaaaaaaaaaaaaaaaaadxdCeifFdCdCfGfffffffffHfffffIfJabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaewewfbfEfEfEfKeUeTfLfEfbfEfEeTeUeUfEfEewceaaaaaaaaaaaaaaaaaaaaaaaedxdCdCfMdQfNfOfPfPfQfRfgfffffffyabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeewewfEeUfceTfSeTfceTfbfbfEeTeTeTeTfceTewceaaaaaaaaaaaaaaaaaaaaaeaedxdCdCfFdCdCfTfUfVfffWfXfffXfYfZbFgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeeweweTfceTgbgcgdgefbgffbfbggghgifEeUfcewceaeaaaaaaaaaaepaaaaaeaeaedxdxdxdKdxdCeKgjfUgkglgmeLeLfVgnfzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeewewfEeTgbgogpgqfbfbfbfbfbgrgrgsgieTeUewceaeaeaacedxdxdxdxdxdxdxdxdxdxdCdKdxdxdxgtgtgugtgtgteEeEeEabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeewewewfEfEgvgweUfbfbfbfbfbfbfbfbgxgyfEgzewceceaeaecedxgAgBgCgDgEgFgGdxdxdCdKdxgHgHceaebFbFaacegIbFdnabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaewewewewewfEfEgvgoeUfbfbfbfbfbfbfbfbgJgyfbfEewewewewewaadxgKgCgCgCgCgCgCdxdxdCdKdxgHgHaeaaaaaaaaaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeewewfEgLgMfEfEgNgOfbgeaaaaaaaaaafbfbgJfBfbfEeTfEfbewewaedxgCgCgCgCgCgCgCdxdxdxgPdxdxdxaeaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaewewgQeTgJgifEeUfEgRfbfbaaaaaaaaaafbfbgSgRfEgTgUgVeTfEewewdxdxgWdxgXgXgXgXdxgCgCgYgCgCdxepaaaaaaaaaaaaaaaabFbFcednbFdnbFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaewewfrfcgZgyeUeUeUfcfbfbaaaaaaaaaafbfbhafbfEhbhcgVeThdewewhehfhghghhhhhhhhhihjhjhkgChldxaeaeaaaaaaaaaaaaaabFbFcednbFgIbFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaewewfEfEgZgyfEfcgehmfbfbaaaaaaaaaafbfbfbhnfbfEeThofcfEhphphehqhrhshthththudxhvgCgYgCgCdxaaaaaaaaaaaaaabFbFbFhwcednbFdnbFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeewewfEhxfBeTeUhyhzfbfbaaaaaaaaaafbfbhAhBfEfEgggOfEewhphChDhfhEhshthFhthudxgCgChGgCgCdxaaaaaaaaaaaabFbFbFbFhHcednhIdnbFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeewewewewewfEfEgvfbfbeTfbfbfbfbfbfbfbfbhJeUeUewewewewhphqhehehehKhehehehehehehedxdxdxdxaaaabFbFdnbFbFhIhLhMhwcednhwgIbFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeeweweweThNhOfbeTfcfbfbfbeUeTfbfbhPhJfcfEewewewaeaehqhehshQhQhehthRhShehThQdxdxaaaeaebFbFhHdnbFcehwhHhIhUcednhVdnbFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeewewfceUhWfbfbeThXeTeUfcfmfnfmhXhYeUeUewewaaaahChZhehshQhshshthththeheaaaeaebFaaaabFhwhwdnbFiaiaiaiaiaiaibibibbFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaicicicicicicicicicicicicicaaaaaaaaaaaaaaaaaaaaaaaaidfbidaeaehOgggyfEfEfEiefAfAfBeTeTfEewewaahQifhrhehthththsightheheheaeihdndndnihibibibibibibiiijikilikiminibaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaicioioioioipipipipipiqioicaaaaaaaaaaaaaaaaaaaairaafbfbisaeaefbitfEeTeThbfEfEeTeUfcfEfEewewaahQhQhrhehehehthehehehehehednhHbFbFhHhHiuiuiviviwibixiiixikikinikibaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaicicicioiyipipipiciciziciciciciciAiBiBiBiAiCiDiEiFiAiGaecoaefEfEeTeUeUeUeTfEfEeTeUewewewewaahqhrhshehthEhshEhehEhEiHhEbFhHhHhHbFhHiviuiwiwiviIikikikikikikikibaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacoiciJiciciciciciKiciLipiqipipipiciMiMiMiNiMiOiPiEiEiQaeaeaeaeewewfEiRfceTfEewewewewewewaeaehQiShrhshththshQhEhEiHhEhQhQdndnihihihihiaiaiaiaiaiaikikiTikikikikibaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiUiViWiXiWiYiWiXiWiciLipiLipiLipiciZiMiMiMiMjajbjciEjdiEiEaeaeewewewewfbewewewewewewaeaabFhehZhrhshshehthshshQhphphphphpaeaeaeaaaaaajehIjebFjfiaiiiiikiijgikjhibaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiUjijjjkjljmjnjmjniciLipiLipiLipiziMiMiMiMiMiMjbjojpiEiEiEaaaeaeewewjqjrjsewewaeaeaeaaaabFhehrhrjthshehehehehEhphUhHhUjuaaaeaaaaaaaaaaaajeaejuiajvjvikjvjwikikibaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajxjyjzjAjBjAiXiWiXiWiciLjCiLjDiLipicjEiMiMiMiMjFjGjbjciEiEiEaaaaaeaeewewewewewaeaeaaaajHjHjIhehsjJhshthehthEhshEhphHjuhHhHaaaeaaaaepaaaaaaaajuaeiaikikikikjKiiixibaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajLjMjNjNjNjOjmjnjmjniciLipiLipiLipiziMiMiMiMiMjPiMjQjbjRjciEiEjSiAiAiAiAjTjUaeaaaeaajVaaaabFhehejthshehehQhthQhEhphHjeaaaaaaaeaaaaaaaaaaaaaaaahUiaibikikibibibibibaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajWjXjYjZkajZiXkbiYiWiciLipipipiyipiciMiMiMiMiMkciMkdiMjbjbjciEiEkeiEkejHbFbFbFaaaeaeaeaeaakfhehtkghththehththththpjuhHaaaaaaaeaaaaaaaaaaaaaaaaiaiaiaikikibkhkhkhibaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiUjijnjmkijmjnjmjniciciciciciciciciZiMiMiMkjkkklkmklkmjbjcknkoiAkpiAhUbFbFbFkqkrbFbFbFkskthehtkuhththehtkvhtkwhphphpbFaeaebFaebFaeaeaebFaeaebFbFiaikikikikikkxibaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaiUiViWiXkyiXiWiXiWkzkAkAkAkBkAkCicjEiMiMiMkDkEkFkGiMiAkHkIiAiAiAiAiAiMkthUhIkJbFhIbFbFhUkthehtkuhtkwhehthththQhththphekKkKdnkKaaaaaaaaaeaaaaaaaeiakLikikikikkMibkNkOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacokPkPkPkPkPkPkPkPkPkPkPkPicickQichehehehehehehehehehekRkShehehehehehehehehehehIktktkthIkfhehtkThhhhhhhhhhhghhhhhhkUhhkVkWkVkKkKkKdndnkXdndndnihiaibikikikikikkYiTkYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacehUbFaeaaaaaaaeaeeJkZkPhelalblchthtldhtlahththelehtkuhthththehthththththehehehehehehehehehtkuhththehthshththQhthphekKdnlfbFlglhliljlklgkVlglglllmlnloiTikikibkNkOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacehMeJaaaaaaaaaaaebFhUlphthQhQlqlrhthththtlshthelthtkuhthtkwheltlrhtlshthehehehehthththththtkuhththehtlshshshtluhpgIaeaakKkKkKbFgIdnaakKkKkKkKiaibiklvikiklwibaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaebFaaaaaaaaaaaabFaebFkPhehZhslxlylzlzlzlzlzlzlAlzlzlBhthththehththththththtldhtlChhhhhhhhhhlDlEhphphphthththththpgIaeaaaaaaaaaaaaaaaaaaaaaaaalFibikibikiklGibaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacekPhehshQhehehehthehehelHhehthtlIhhhhhhlJhhhhlKhhhhhhhhhhhhlLhthththththtkuhplMhphplNhshelOdnaeaaaaaaaaaaaaaaaaaaaaaaaakKlPibikibibibibibiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahehQhrhelQldhthelQldhthelRlRlRlSlHlThelthtkuhthththththththphphphphphplUhplVlWhpheheheaaaaaaaaaaaaaaaalXaaaaaeaaaeaeibiTlYikikkxlYikiaiaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaehshelZlrmahelZlrlZhembmcmchthththehthtmdhthththththththphwhwmehwhwmfhwhwcecedndndnhIaaaagaaaaaaaaaaaaaaemgmgaeaeiblPikikiTikikikikiaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaehehehehehehehehehehtmhmimjhththehehehehehehehehemkhehpbFbFbFbFhwmlmmhwcemehwmndnbFaeaaaeaeaeaaaaaaaeaeaeaaaeaakKmoikikikikiTikmpiaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaehQhQhQmqlelcmrlchehtmsmtmumjhthemvmwmxmwmymzmzmAmwmAmBaaaaaefzbFhwmCmDmEhwhwmFdnaednaeaeepaeaeaeaeaeaaaeaaaaaakKmolPikikikikikikiaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeaeaeaehQhQlcmGhtmHheltmImJmuhtkwhemKmLmwmMmNmOmPmAmQmAmBaaaeaeaeaebFmRhwmShwmFmFdnaeaaaaaaaaaeaeaeaaaeaaaaaeaaaakKmoikikikikikikmTiaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaehQhQhQlchthehthtmumuhththemUmVmWmMmXmwmvmAmvmAmBaaaeaaaaaabFmmhwmYhwmFmFdnaeaeaaaaaeaeaaaaaaaaaaaaaaaaaaaamZnamZkNkNkNkNkNiaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahQhQhQhehthtmjmjhththemwmvmwnbnbmvmvmAmQmAmBaaaeaeaemgbFbFhwnchwhwhwndnenfceceaeaaaaaaaaaaaaaaaaaaaaaangiTkJbFbFbFbFaaceabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeaehQnhnihthththththenjmwmwmwmvmwnkmAmQmAmBcecececeaaaakVcececececenfnlnfaabFaaaaaaaaaaaaaaaagaaaaaaanmnanndnaaaadnaaceabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaehehehehehehelHhehTnomwmwmwmwnpnqnrnrnsntaaaeaaaeaaaaaaaebFhwhwhwnfnunfaadnaaaaaaaaaaaaaaaaaaaaaaaanvaaaaaaaaaaabbFceabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaahQhQiHhshtmHhenwnxmwmwmwmvnymwmwntnzaeaehUceepaaaaaebFkVbFmmnAnBnCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaceabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaaaahQhrnDhththenEmvmwmwmwmvmwmwnrnFntaeaeaenGaeaeaeaeaabFbFhwnfnHnCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbFceabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaahQnIhQhsnJhthenKnLmvmwmvmwmwmwnrnFmAaaaaaeaeaaaaaaaeaaaabFhwnfnHnCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaceabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaeaahQhQhQhththrhemwmvmwmwnMmvmwmwnFnpmAhUaaaececeaaaaaeaeaececenfnHnCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbFceabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaeaeaehehQhehehehemvmwmvmwnFnMmwnsnMnpnthUeJaebFbFaaaaaeaaaaaabFndnHnCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaceabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaahQhQhQhshrhthemwnNnbmwmwmwnOmwnpntnzaaaaaednaaaaaaaeaaaabFhwndnHnCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabFabbFceabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaaaaaenDhQnPhshemAmAmvnFmwmvmwmwmAmAnzaeaedndnaeaeaeaebFbFhwhwndnHnfndaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaaceabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaahQhQhQhrhthenQnQmAnRnFnFmwmwmAnQnQaaaaaadnaaaaaabFhwhwhwhwndnHnSnTndaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaednndnendndndndnUndndmAndndndndndndndndndndndndndndndndndndndndndndnVnSnSnSnWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaenXnSnSnSnYnZnSnSnSoaobocodoeofogohoiojobobobobobobobobobobobokobolnXnSnSnCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaenXnXnXnSnSnSnSnSnSnSnSomonooopoqorosotnSnSnSnSnSnSnSnSnSnSnSnHnSounSnSnSnCaaaaaaaaaanvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeovowoxoxoxndoxoxoxoxoxndoxoxoxoxoxndoxoxoxoxoxndoxoxoxoxndnHnXnXnSnSnSoyjxjxjxaaaaaajVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabFababababababababababdnabababababfzfzfzabababceababababozoAoznXnSnSnXoBoCnlnlnXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaceaaaaaaaaozoDozoEoEnfoFnfoFnfjWjWjWaaaaaanvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoGbFbFozoHoIoJozoKoKnfoLnfoLnfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaebFozoMozoNoOoPoQnfoLnfoLnfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaebFbFozoSoToNoUoVoPnfoLnfoLnfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaemgbFhUozoWozoXoPoYoZnfpanfoLnfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaebFhUpbpcpdpeoPpfpgoPnfoLnfoLnfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaebFhwhwozoNozoPoPoTphnfoLnfpanfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacececeaaozozpiozozozozoznfoLnfpanfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaepjaeaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaapkaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaplplplaapmaaplpnpoaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaapppqpqprpsprptpuepaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaapvpvpvaapmaapvpwaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaapxaaaaaaepaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaplplplaapmaaplplplaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaepxpypqpzpspzptptpAaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaapvpvpvaapmaapvpvpvaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaapBaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababaeababaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -1003,14 +1002,14 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeaeaeaeaeaeaeaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeaaaeaeaeaeaeaeaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeaeaeaeaebjbjbjbjaeaeaeaeaeaeaaaeaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeaelElElElFlElElEbjbjbjaeaaaaaeaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalElElFlFlGlHlGlFlFaeaeaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalElIlGlGlGlGlGlGlEaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalElGlGlJlKlLlGlMlEaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalElNlOlFlGlGlGlHlEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalElElGlPlGlGlFlElEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalElElElElElFlFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeaeaeaeaebFbFbFbFaeaeaeaeaeaeaaaeaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaeaeaepCpCpCpDpCpCpCbFbFbFaeaaaaaeaeaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapCpCpDpDpEpFpEpDpDaeaeaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapCpGpEpEpEpEpEpEpCaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapCpEpEpHpIpJpEpKpCaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapCpLpMpDpEpEpEpFpCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapCpCpEpNpEpEpDpCpCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapCpCpCpCpCpDpDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -1052,23 +1051,23 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlQaaaaaaaalRlRlRlRlRlRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlQlQlQaaaalQlQlQlQlQlRlRlQlQlQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlQlQlQlQlQlQlQlQlQlQlRlRlQlQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlQlQlQlQlQlQlQlQlQlQlQlQlQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlQlQlQlQlQlQlQlQlQlQlQlRlRaaaalSlSlSlTlTlSlSlSlSlSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlQlQlQlQlQlQlQlQlQlQlQlRlSlSlSlRlUlVlVlWlWlXpmlZmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlQlQlQlQlQlQlQlQlQlQlQlQlQlQmblVlVlVlVlVmclVlZmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlQlQlQlQlQlQlQlQlQlQlQlQlQlQmdmelVmfmclVmclVmclZmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlQlQlQlQlQlQlQlQlQlQlQlQmglVmhlVmilVlUlVlVlVmclZmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlQlQlQlQlQlQlQlQlQlQlQlQlSlSlSqCmjlVlVmkmklWqDlZmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlQlQlQlQlQlQlQlQlQlQlQlQlQlQlSlSlSlTlTlSlSlSlSlSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlQlQlQlQlQlQlQlQlQlQlQlQlQlQlQlQlQlQlQlQlQlQlQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlQaalQlQlQlQlQlRlRlQlQlQlQlQlQlQlQlQlQlQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlQlQlQlRlRlRlQlQlQlQlQlQlQlQlQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlQaaaaaaaalRlRlQlRlQlQlRlRlRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQaaaaaaaaaaaalRlQlQlQlQlQlQlRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalQlQlQlQlRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapOpOaaaaaaaapPpPpPpPpPpPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapOpOpOpOaaaapOpOpOpOpOpPpPpOpOpOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapOpOpOpOpOpOpOpOpOpOpOpPpPpOpOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapOpOpOpOpOpOpOpOpOpOpOpOpOpOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapOpOpOpOpOpOpOpOpOpOpOpOpPpPaaaapQpQpQpRpRpQpQpQpQpQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapOpOpOpOpOpOpOpOpOpOpOpOpPpQpQpQpPpSpTpTpUpUpVpWpXpYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapOpOpOpOpOpOpOpOpOpOpOpOpOpOpOpZpTpTpTpTpTqapTpXpYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapOpOpOpOpOpOpOpOpOpOpOpOpOpOpOqbqcpTqdqapTqapTqapXpYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapOpOpOpOpOpOpOpOpOpOpOpOpOqepTqfpTqgpTpSpTpTpTqapXpYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapOpOpOpOpOpOpOpOpOpOpOpOpOpQpQpQqhqipTpTqjqjpUqkpXpYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapOpOpOpOpOpOpOpOpOpOpOpOpOpOpOpQpQpQpRpRpQpQpQpQpQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapOpOpOpOpOpOpOpOpOpOpOpOpOpOpOpOpOpOpOpOpOpOpOpOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapOpOaapOpOpOpOpOpPpPpOpOpOpOpOpOpOpOpOpOpOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapOpOpOpOpPpPpPpOpOpOpOpOpOpOpOpOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapOpOaaaaaaaapPpPpOpPpOpOpPpPpPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapOaaaaaaaaaaaapPpOpOpOpOpOpOpPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaapOpOpOpOpPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -1100,4 +1099,3 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa "} - diff --git a/_maps/map_files/generic/z5.dmm b/_maps/map_files/generic/z5.dmm index 2dd3e6f2370..0d93c26e48e 100644 --- a/_maps/map_files/generic/z5.dmm +++ b/_maps/map_files/generic/z5.dmm @@ -1,631 +1,631 @@ "aa" = (/turf/open/space,/area/space) -"ab" = (/turf/closed/mineral,/area/mine/unexplored) -"ac" = (/turf/closed/mineral/random,/area/mine/unexplored) -"ad" = (/obj/machinery/atmospherics/pipe/simple,/obj/structure/closet/crate/internals,/obj/item/weapon/tank/internals/emergency_oxygen,/obj/item/weapon/tank/internals/emergency_oxygen,/obj/item/weapon/tank/internals/emergency_oxygen,/obj/item/weapon/tank/internals/emergency_oxygen,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"ae" = (/turf/closed/mineral/random/high_chance,/area/mine/unexplored) -"af" = (/turf/closed/mineral,/area/mine/explored) -"ag" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating/airless,/area/mine/abandoned) -"ah" = (/obj/machinery/door/airlock/external,/turf/open/floor/plasteel/airless,/area/mine/abandoned) -"ai" = (/turf/closed/mineral/random/low_chance,/area/mine/explored) -"aj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating/airless,/area/mine/abandoned) -"ak" = (/turf/open/floor/plasteel/airless,/area/mine/abandoned) -"al" = (/obj/structure/lattice,/turf/open/space,/area/space) -"am" = (/obj/effect/spawner/lootdrop/crate_spawner,/turf/open/floor/plating/asteroid/airless/cave,/area/mine/unexplored) -"an" = (/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/shard{icon_state = "small"},/turf/open/floor/plating/airless,/area/mine/abandoned) -"ao" = (/obj/item/stack/rods,/obj/structure/door_assembly/door_assembly_ext{name = "Broken External Airlock"},/turf/open/floor/plasteel/airless,/area/mine/abandoned) -"ap" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/open/floor/plating/airless,/area/mine/abandoned) -"aq" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plating/airless,/area/mine/abandoned) -"ar" = (/turf/open/floor/plating/airless,/area/mine/abandoned) -"as" = (/obj/item/stack/rods,/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/mine/abandoned) -"at" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/open/floor/plasteel/airless,/area/mine/abandoned) -"au" = (/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/mine/abandoned) -"av" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/open/floor/plating/airless,/area/mine/abandoned) -"aw" = (/obj/item/weapon/shard,/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/mine/abandoned) -"ax" = (/turf/closed/wall,/area/mine/abandoned) -"ay" = (/obj/item/stack/rods,/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/shard,/turf/open/floor/plating/airless,/area/mine/abandoned) +"ab" = (/turf/closed/mineral,/area/mine/explored) +"ac" = (/turf/closed/mineral,/area/mine/unexplored) +"ad" = (/turf/closed/mineral/random,/area/mine/unexplored) +"ae" = (/turf/closed/mineral/random/low_chance,/area/mine/explored) +"af" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating/airless,/area/mine/abandoned) +"ag" = (/obj/machinery/door/airlock/external,/turf/open/floor/plasteel/airless,/area/mine/abandoned) +"ah" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating/airless,/area/mine/abandoned) +"ai" = (/turf/open/floor/plasteel/airless,/area/mine/abandoned) +"aj" = (/obj/structure/lattice,/turf/open/space,/area/space) +"ak" = (/turf/closed/mineral/random/high_chance,/area/mine/unexplored) +"al" = (/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/shard{icon_state = "small"},/turf/open/floor/plating/airless,/area/mine/abandoned) +"am" = (/obj/item/stack/rods,/obj/structure/door_assembly/door_assembly_ext{name = "Broken External Airlock"},/turf/open/floor/plasteel/airless,/area/mine/abandoned) +"an" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/open/floor/plating/airless,/area/mine/abandoned) +"ao" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plating/airless,/area/mine/abandoned) +"ap" = (/turf/open/floor/plating/airless,/area/mine/abandoned) +"aq" = (/obj/item/stack/rods,/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/mine/abandoned) +"ar" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/open/floor/plasteel/airless,/area/mine/abandoned) +"as" = (/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/mine/abandoned) +"at" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/open/floor/plating/airless,/area/mine/abandoned) +"au" = (/obj/item/weapon/shard,/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/mine/abandoned) +"av" = (/turf/closed/wall,/area/mine/abandoned) +"aw" = (/obj/item/stack/rods,/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/shard,/turf/open/floor/plating/airless,/area/mine/abandoned) +"ax" = (/obj/item/stack/rods,/turf/open/floor/plasteel/airless,/area/mine/abandoned) +"ay" = (/obj/structure/lattice,/obj/item/weapon/shard{icon_state = "medium"},/turf/open/space,/area/space) "az" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/open/floor/plating/airless,/area/mine/abandoned) -"aA" = (/obj/item/stack/rods,/turf/open/floor/plasteel/airless,/area/mine/abandoned) -"aB" = (/obj/structure/lattice,/obj/item/weapon/shard{icon_state = "medium"},/turf/open/space,/area/space) -"aC" = (/obj/structure/alien/weeds,/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/mine/abandoned) +"aA" = (/obj/item/clothing/mask/facehugger{icon_state = "facehugger_dead"; stat = 2},/turf/open/floor/plasteel/airless,/area/mine/abandoned) +"aB" = (/obj/structure/alien/weeds,/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/mine/abandoned) +"aC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plating/airless,/area/mine/abandoned) "aD" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/open/floor/plating/airless,/area/mine/abandoned) -"aE" = (/obj/item/clothing/mask/facehugger{icon_state = "facehugger_dead"; stat = 2},/turf/open/floor/plasteel/airless,/area/mine/abandoned) -"aF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plating/airless,/area/mine/abandoned) -"aG" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plating/airless,/area/mine/abandoned) -"aH" = (/obj/effect/decal/remains/xeno,/obj/structure/alien/weeds,/turf/open/floor/plasteel/airless{icon_state = "floorscorched1"},/area/mine/abandoned) -"aI" = (/obj/item/stack/rods,/obj/structure/lattice,/turf/open/space,/area/space) -"aJ" = (/obj/structure/alien/weeds,/turf/open/floor/plasteel/airless,/area/mine/abandoned) +"aE" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plating/airless,/area/mine/abandoned) +"aF" = (/obj/structure/alien/weeds,/turf/open/floor/plasteel/airless,/area/mine/abandoned) +"aG" = (/obj/effect/decal/remains/xeno,/obj/structure/alien/weeds,/turf/open/floor/plasteel/airless{icon_state = "floorscorched1"},/area/mine/abandoned) +"aH" = (/obj/item/stack/rods,/obj/structure/lattice,/turf/open/space,/area/space) +"aI" = (/obj/item/weapon/shard,/obj/item/stack/rods,/turf/open/floor/plating/airless,/area/mine/abandoned) +"aJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plating/airless,/area/mine/abandoned) "aK" = (/obj/structure/table,/turf/open/floor/plasteel/airless{icon_state = "floorscorched2"},/area/mine/abandoned) -"aL" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plating/airless,/area/mine/abandoned) -"aM" = (/obj/item/weapon/shard,/obj/item/stack/rods,/turf/open/floor/plating/airless,/area/mine/abandoned) -"aN" = (/obj/structure/table,/turf/open/floor/plasteel/airless{icon_state = "floorscorched1"},/area/mine/abandoned) -"aO" = (/obj/structure/alien/weeds,/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/mine/abandoned) -"aP" = (/obj/structure/alien/weeds,/turf/open/floor/plating/airless,/area/mine/abandoned) -"aQ" = (/turf/open/floor/plasteel/airless{icon_state = "floorscorched2"},/area/mine/abandoned) -"aR" = (/turf/open/floor/plasteel/airless{icon_state = "floorscorched1"},/area/mine/abandoned) -"aS" = (/obj/item/stack/rods,/turf/open/floor/plating/airless,/area/mine/abandoned) -"aT" = (/obj/item/weapon/shard{icon_state = "small"},/turf/open/floor/plating/airless,/area/mine/abandoned) -"aU" = (/turf/open/floor/plasteel{icon_plating = "asteroid"; icon_state = "asteroid"; name = "Asteroid"},/area/mine/unexplored) -"aV" = (/obj/item/clothing/under/soviet,/obj/item/clothing/head/ushanka,/turf/open/floor/plasteel{icon_plating = "asteroid"; icon_state = "asteroid"; name = "Asteroid"},/area/mine/unexplored) -"aW" = (/obj/effect/decal/remains/human,/turf/open/floor/plasteel{icon_plating = "asteroid"; icon_state = "asteroid"; name = "Asteroid"},/area/mine/unexplored) -"aX" = (/obj/docking_port/stationary{dheight = 9; dir = 2; dwidth = 5; height = 24; id = "syndicate_z5"; name = "south of asteroid"; turf_type = /turf/open/space; width = 18},/turf/open/space,/area/space) -"aY" = (/obj/structure/barricade/wooden,/turf/open/floor/plasteel{icon_state = "bot"; dir = 1},/area/mine/production) -"aZ" = (/obj/structure/grille,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/window/reinforced/fulltile,/turf/open/floor/plating,/area/mine/laborcamp) -"ba" = (/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/mine/abandoned) -"bb" = (/obj/machinery/light,/turf/open/floor/plating/asteroid/airless,/area/mine/north_outpost) -"bc" = (/obj/structure/lattice,/obj/structure/window/reinforced,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/open/space,/area/mine/north_outpost) -"bd" = (/turf/closed/wall/rust,/area/mine/unexplored) -"be" = (/obj/item/weapon/shard,/turf/open/floor/plating/airless,/area/mine/abandoned) -"bf" = (/obj/structure/lattice,/obj/item/weapon/shard{icon_state = "small"},/obj/item/clothing/mask/facehugger{icon_state = "facehugger_dead"; stat = 2},/turf/open/space,/area/mine/abandoned) -"bg" = (/obj/structure/lattice,/turf/open/space,/area/mine/abandoned) -"bh" = (/obj/machinery/door/airlock/hatch,/turf/open/floor/plasteel/airless,/area/mine/abandoned) -"bi" = (/turf/closed/wall,/area/mine/north_outpost) -"bj" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/closed/wall,/area/mine/north_outpost) -"bk" = (/turf/closed/wall/rust,/area/mine/explored) -"bl" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/open/floor/plating/asteroid/airless,/area/mine/north_outpost) -"bm" = (/turf/open/floor/plasteel/airless{icon_state = "damaged4"},/area/mine/abandoned) -"bn" = (/obj/effect/decal/remains/xeno,/turf/open/floor/plasteel/airless{icon_state = "floorscorched2"},/area/mine/abandoned) -"bo" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=2-NMine"; location = "1-Storage"},/mob/living/simple_animal/bot/secbot/beepsky{desc = "Powered by tears and swet of laborer."; name = "Prison Ofitser"},/turf/open/floor/plasteel{icon_state = "asteroidfloor"},/area/mine/laborcamp) -"bp" = (/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plating/airless{icon_state = "platingdmg3"},/area/mine/explored) -"bq" = (/obj/structure/table,/turf/open/floor/plasteel/airless,/area/mine/abandoned) -"br" = (/obj/structure/rack,/turf/open/floor/plasteel/airless,/area/mine/abandoned) -"bs" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/port_gen/pacman{anchored = 1},/turf/open/floor/plating,/area/mine/north_outpost) -"bt" = (/obj/machinery/power/terminal{dir = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/light/small{dir = 1},/turf/open/floor/plating,/area/mine/north_outpost) -"bu" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/smes{charge = 5e+006},/turf/open/floor/plating,/area/mine/north_outpost) -"bv" = (/obj/machinery/atmospherics/components/unary/tank/air,/turf/open/floor/plating,/area/mine/north_outpost) -"bw" = (/obj/effect/decal/remains/human,/turf/open/floor/plasteel/airless{icon_state = "damaged5"},/area/mine/abandoned) -"bx" = (/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plating/airless,/area/mine/explored) -"by" = (/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plating/airless{icon_state = "platingdmg1"},/area/mine/explored) -"bz" = (/obj/structure/window/reinforced,/turf/open/floor/plasteel/airless,/area/mine/explored) -"bA" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/open/floor/plating,/area/mine/north_outpost) -"bB" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/open/floor/plating,/area/mine/north_outpost) -"bC" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/item/weapon/storage/box/lights/bulbs,/obj/machinery/atmospherics/pipe/simple{dir = 6},/turf/open/floor/plating,/area/mine/north_outpost) -"bD" = (/obj/machinery/atmospherics/pipe/simple/general/hidden{dir = 9},/obj/machinery/meter,/turf/open/floor/plating,/area/mine/north_outpost) -"bE" = (/obj/structure/window/reinforced,/turf/open/floor/plating/airless,/area/mine/explored) -"bF" = (/obj/structure/lattice,/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/open/space,/area/mine/north_outpost) -"bG" = (/turf/open/floor/plating/asteroid/airless,/area/mine/explored) -"bH" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/airlock/maintenance{name = "Mining Station Maintenance"; req_access_txt = "54"},/turf/open/floor/plating,/area/mine/north_outpost) -"bI" = (/obj/machinery/atmospherics/pipe/simple,/turf/closed/wall,/area/mine/north_outpost) -"bJ" = (/turf/open/floor/plasteel{icon_state = "dark"},/area/mine/abandoned) -"bK" = (/obj/structure/sink{pixel_y = 30},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/abandoned) -"bL" = (/obj/structure/table,/obj/item/weapon/reagent_containers/glass/bucket,/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/abandoned) -"bM" = (/obj/structure/table,/obj/item/weapon/paper/crumpled,/obj/item/seeds/cherry,/obj/item/weapon/reagent_containers/glass/bottle/nutrient/ez,/obj/item/weapon/reagent_containers/glass/bottle/nutrient/ez,/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/abandoned) -"bN" = (/obj/machinery/light{dir = 1},/turf/open/floor/plating/asteroid/airless,/area/mine/north_outpost) -"bO" = (/obj/machinery/light/small{dir = 4},/obj/structure/barricade/wooden,/turf/open/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/production) -"bP" = (/obj/item/clothing/mask/facehugger{icon_state = "facehugger_dead"; stat = 2},/obj/structure/alien/weeds,/turf/open/floor/plasteel/airless,/area/mine/abandoned) -"bQ" = (/obj/structure/table,/obj/item/weapon/pickaxe,/turf/open/floor/plasteel,/area/mine/north_outpost) -"bR" = (/obj/machinery/newscaster{pixel_y = 32},/turf/open/floor/plasteel,/area/mine/north_outpost) -"bS" = (/obj/structure/table,/obj/machinery/microwave,/turf/open/floor/plasteel,/area/mine/north_outpost) -"bT" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/open/floor/plating,/area/mine/north_outpost) -"bU" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/open/floor/plasteel,/area/mine/north_outpost) -"bV" = (/obj/machinery/atmospherics/pipe/simple,/obj/machinery/airalarm{pixel_y = 24},/obj/machinery/light{dir = 1},/turf/open/floor/plasteel,/area/mine/north_outpost) -"bW" = (/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/turf/open/floor/plasteel,/area/mine/north_outpost) -"bX" = (/turf/open/floor/plasteel,/area/mine/north_outpost) -"bY" = (/turf/open/floor/plasteel{dir = 4; icon_state = "loadingarea"},/area/mine/north_outpost) -"bZ" = (/obj/machinery/mineral/unloading_machine{dir = 2; output_dir = 4},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/north_outpost) -"ca" = (/obj/machinery/conveyor{dir = 4; id = "mining_north"},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/north_outpost) -"cb" = (/obj/machinery/disposal/deliveryChute{dir = 8},/obj/structure/disposalpipe/trunk,/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/north_outpost) -"cc" = (/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/abandoned) -"cd" = (/turf/open/floor/plasteel{icon_state = "damaged2"},/area/mine/abandoned) -"ce" = (/obj/machinery/door/airlock/hatch,/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/abandoned) -"cf" = (/obj/structure/alien/weeds,/obj/structure/alien/weeds,/turf/open/floor/plasteel/airless,/area/mine/abandoned) -"cg" = (/turf/open/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 5},/area/mine/west_outpost) -"ch" = (/turf/open/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 4},/area/mine/west_outpost) -"ci" = (/obj/structure/table,/obj/item/weapon/shovel,/turf/open/floor/plasteel,/area/mine/north_outpost) -"cj" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets,/turf/open/floor/plasteel,/area/mine/north_outpost) -"ck" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/open/floor/plasteel,/area/mine/north_outpost) -"cl" = (/obj/machinery/atmospherics/pipe/simple,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/open/floor/plasteel,/area/mine/north_outpost) -"cm" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; name = "Mining North Outpost APC"; pixel_x = 26; pixel_y = 0},/obj/machinery/conveyor_switch{id = "mining_north"},/obj/machinery/camera{c_tag = "North Outpost"; dir = 8; network = list("MINE")},/turf/open/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/north_outpost) -"cn" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/closed/wall,/area/mine/north_outpost) -"co" = (/obj/machinery/conveyor{backwards = 2; dir = 2; forwards = 1; id = "mining_north"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/plasticflaps/mining,/turf/open/floor/plasteel,/area/mine/north_outpost) -"cp" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/closed/wall,/area/mine/north_outpost) -"cq" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/closed/wall,/area/mine/north_outpost) -"cr" = (/turf/open/floor/plasteel{icon_state = "damaged3"},/area/mine/abandoned) -"cs" = (/obj/structure/ore_box,/turf/open/floor/plating/asteroid/airless,/area/mine/explored) -"ct" = (/obj/structure/table,/obj/item/weapon/storage/backpack/satchel,/obj/item/clothing/glasses/meson,/obj/machinery/light/small{dir = 8},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/open/floor/plasteel,/area/mine/north_outpost) -"cu" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/open/floor/plasteel,/area/mine/north_outpost) -"cv" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/open/floor/plasteel,/area/mine/north_outpost) -"cw" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/machinery/door/airlock/glass_mining{name = "Break Room"; req_access_txt = "54"},/turf/open/floor/plasteel,/area/mine/north_outpost) -"cx" = (/obj/machinery/atmospherics/pipe/manifold{dir = 4},/turf/open/floor/plasteel,/area/mine/north_outpost) -"cy" = (/turf/open/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/north_outpost) -"cz" = (/obj/machinery/door/window/northleft{dir = 8; name = "Pneumatic Tube Access"},/obj/machinery/disposal/deliveryChute{dir = 8; pixel_x = 8; pixel_y = 0},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/disposalpipe/trunk{dir = 4},/turf/open/floor/plasteel{icon_state = "bot"},/area/mine/north_outpost) -"cA" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/closed/wall,/area/mine/north_outpost) -"cB" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/disposalpipe/segment,/turf/open/floor/plating,/area/mine/explored) -"cC" = (/turf/open/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/north_outpost) -"cD" = (/obj/machinery/conveyor_switch{id = "mining_north"},/turf/open/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/north_outpost) -"cE" = (/obj/machinery/light/small{dir = 1},/turf/open/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/north_outpost) -"cF" = (/obj/effect/decal/remains/human,/obj/item/clothing/suit/xenos,/obj/item/clothing/head/xenos,/turf/open/floor/plasteel{icon_state = "damaged2"},/area/mine/abandoned) -"cG" = (/obj/structure/table,/obj/item/stack/sheet/mineral/sandstone{amount = 30},/turf/open/floor/plasteel{icon_state = "damaged3"},/area/mine/abandoned) -"cH" = (/obj/structure/disposalpipe/segment,/turf/closed/mineral,/area/mine/explored) -"cI" = (/turf/open/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 6},/area/mine/west_outpost) -"cJ" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/open/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/unexplored) -"cK" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical,/turf/open/floor/plasteel,/area/mine/north_outpost) -"cL" = (/obj/structure/chair{dir = 8},/turf/open/floor/plasteel,/area/mine/north_outpost) -"cM" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 1; on = 1},/turf/open/floor/plasteel,/area/mine/north_outpost) -"cN" = (/obj/structure/rack,/turf/open/floor/plasteel{icon_state = "bot"},/area/mine/north_outpost) -"cO" = (/obj/structure/disposalpipe/segment,/turf/closed/wall,/area/mine/north_outpost) -"cP" = (/obj/structure/alien/weeds/node,/turf/open/floor/plasteel/airless{icon_state = "floorgrime"},/area/mine/abandoned) -"cQ" = (/turf/open/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/explored) -"cR" = (/obj/machinery/conveyor_switch{id = "mining_west"},/obj/machinery/light/small{dir = 1},/turf/open/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/explored) -"cS" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/open/floor/plating/asteroid/airless,/area/mine/eva) -"cT" = (/turf/open/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 5},/area/mine/eva) -"cU" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plating/airless,/area/mine/abandoned) -"cV" = (/obj/structure/reagent_dispensers/fueltank,/turf/open/floor/plasteel,/area/mine/north_outpost) -"cW" = (/obj/machinery/recharge_station,/turf/open/floor/plasteel,/area/mine/north_outpost) -"cX" = (/obj/structure/tank_dispenser/oxygen,/turf/open/floor/plasteel,/area/mine/north_outpost) -"cY" = (/turf/open/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 4},/area/mine/eva) -"cZ" = (/turf/open/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 6},/area/mine/eva) -"da" = (/turf/open/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/abandoned) -"db" = (/obj/machinery/camera{c_tag = "Production Line External"; dir = 4; network = list("MINE")},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/open/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/production) -"dc" = (/turf/open/floor/plating/asteroid/airless,/area/mine/unexplored) -"dd" = (/obj/machinery/door/airlock/external{name = "Mining North Outpost Airlock"; req_access_txt = "54"},/turf/open/floor/plasteel,/area/mine/north_outpost) -"de" = (/turf/closed/mineral/random/labormineral,/area/mine/unexplored) -"df" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating/airless,/area/mine/abandoned) -"dg" = (/obj/item/clothing/mask/facehugger{icon_state = "facehugger_dead"; stat = 2},/obj/structure/alien/weeds,/turf/open/floor/plating/airless,/area/mine/abandoned) -"dh" = (/obj/structure/alien/weeds/node,/turf/open/floor/plating/airless,/area/mine/abandoned) -"di" = (/obj/item/weapon/shard,/obj/structure/lattice,/turf/open/space,/area/space) -"dj" = (/obj/structure/lattice,/obj/structure/window/reinforced,/turf/open/space,/area/mine/explored) -"dk" = (/obj/structure/lattice,/obj/structure/window/reinforced,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/open/space,/area/mine/north_outpost) -"dl" = (/obj/machinery/mech_bay_recharge_port,/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/north_outpost) -"dm" = (/turf/open/floor/mech_bay_recharge_floor/airless,/area/mine/north_outpost) -"dn" = (/obj/machinery/computer/mech_bay_power_console,/turf/open/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/north_outpost) -"do" = (/obj/machinery/light/small{dir = 8},/turf/open/floor/plasteel,/area/mine/north_outpost) -"dp" = (/obj/structure/closet/emcloset,/turf/open/floor/plasteel,/area/mine/north_outpost) -"dq" = (/turf/closed/wall/r_wall,/area/mine/laborcamp) -"dr" = (/obj/structure/alien/resin/wall,/turf/open/floor/plasteel/airless{icon_state = "floorgrime"},/area/mine/abandoned) -"ds" = (/turf/open/floor/plasteel/airless{icon_state = "floorgrime"},/area/mine/abandoned) -"dt" = (/obj/structure/alien/weeds,/turf/open/floor/plasteel/airless{icon_state = "floorscorched2"},/area/mine/abandoned) -"du" = (/obj/effect/decal/remains/xeno,/obj/structure/alien/weeds,/turf/open/floor/plating/airless,/area/mine/abandoned) -"dv" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating/airless,/area/mine/abandoned) -"dw" = (/turf/open/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/north_outpost) -"dx" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = -32},/turf/open/floor/plasteel{icon_state = "warning"},/area/mine/north_outpost) -"dy" = (/turf/open/floor/plasteel{icon_state = "warning"},/area/mine/north_outpost) -"dz" = (/obj/structure/ore_box,/turf/open/floor/plasteel{icon_state = "warning"},/area/mine/north_outpost) -"dA" = (/obj/structure/rack{dir = 1},/obj/item/clothing/glasses/meson,/obj/item/device/flashlight,/obj/item/weapon/storage/bag/ore,/obj/machinery/atmospherics/pipe/simple{dir = 9},/obj/item/weapon/shovel{attack_verb = list("ineffectively hit"); desc = "A large tool for digging and moving dirt. Was modified with extra safety, making it ineffective as a weapon."; force = 1; name = "safety shovel"; pixel_x = -5; throwforce = 1},/obj/item/weapon/pickaxe{attack_verb = list("ineffectively hit"); desc = "A pickaxe designed to be only effective at digging rock and ore, very ineffective as a weapon."; force = 1; name = "safety pickaxe"; pixel_x = 5; throwforce = 1},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"dB" = (/obj/structure/rack{dir = 1},/obj/item/clothing/glasses/meson,/obj/item/device/flashlight,/obj/item/weapon/storage/bag/ore,/obj/machinery/atmospherics/pipe/simple{dir = 9},/obj/item/weapon/shovel{attack_verb = list("ineffectively hit"); desc = "A large tool for digging and moving dirt. Was modified with extra safety, making it ineffective as a weapon."; force = 1; name = "safety shovel"; pixel_x = -5; throwforce = 1},/obj/item/weapon/pickaxe{attack_verb = list("ineffectively hit"); desc = "A pickaxe designed to be only effective at digging rock and ore, very ineffective as a weapon."; force = 1; name = "safety pickaxe"; pixel_x = 5; throwforce = 1},/obj/machinery/camera{c_tag = "Labor Camp Storage"; dir = 8; network = list("Labor")},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"dC" = (/turf/closed/mineral/random/labormineral,/area/mine/explored) -"dD" = (/obj/item/weapon/storage/toolbox/syndicate,/obj/structure/alien/weeds/node,/turf/open/floor/plasteel/airless{icon_state = "floorscorched1"},/area/mine/abandoned) -"dE" = (/obj/effect/decal/remains/xeno,/obj/item/clothing/suit/space/syndicate/black/red,/obj/item/clothing/head/helmet/space/syndicate/black/red,/obj/structure/alien/weeds,/turf/open/floor/plasteel/airless{icon_state = "damaged4"},/area/mine/abandoned) -"dF" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 1},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/open/space,/area/mine/north_outpost) -"dG" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 1},/turf/open/space,/area/mine/explored) -"dH" = (/obj/machinery/door/airlock/external{name = "Mining North Outpost Airlock"; req_access_txt = "54"},/turf/open/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/north_outpost) -"dI" = (/obj/structure/disposalpipe/segment,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/open/floor/plating,/area/mine/explored) -"dJ" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/o2{pixel_x = 2; pixel_y = 2},/turf/open/floor/plasteel{icon_state = "white"},/area/mine/laborcamp) -"dK" = (/obj/structure/table,/obj/item/device/healthanalyzer,/obj/item/stack/medical/bruise_pack,/turf/open/floor/plasteel{icon_state = "white"},/area/mine/laborcamp) -"dL" = (/obj/structure/sign/bluecross_2{pixel_y = 32},/obj/structure/chair,/turf/open/floor/plasteel{icon_state = "white"},/area/mine/laborcamp) -"dM" = (/obj/machinery/camera{c_tag = "Labor Camp Medical"; dir = 8; network = list("Labor")},/obj/structure/bed,/obj/item/weapon/bedsheet/medical,/turf/open/floor/plasteel{icon_state = "white"},/area/mine/laborcamp) -"dN" = (/turf/closed/wall,/area/mine/laborcamp) -"dO" = (/obj/machinery/atmospherics/components/unary/vent_pump{on = 1},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"dP" = (/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"dQ" = (/turf/closed/wall,/area/mine/explored) -"dR" = (/turf/open/floor/plating/asteroid,/area/mine/explored) -"dS" = (/obj/machinery/door/airlock/external{name = "External Airlock"; req_access_txt = "0"},/turf/open/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/abandoned) -"dT" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/item/weapon/shard{icon_state = "small"},/obj/item/stack/rods,/turf/open/floor/plating/airless,/area/mine/abandoned) -"dU" = (/turf/open/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 10},/area/mine/explored) -"dV" = (/turf/open/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/explored) -"dW" = (/turf/open/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 6},/area/mine/explored) -"dX" = (/obj/machinery/light{dir = 1},/obj/structure/disposalpipe/segment,/turf/open/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/north_outpost) -"dY" = (/obj/structure/disposalpipe/segment,/turf/open/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/explored) -"dZ" = (/turf/open/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 5},/area/mine/explored) -"ea" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/open/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/mine/laborcamp) -"eb" = (/obj/machinery/atmospherics/components/unary/vent_pump{on = 1},/turf/open/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/mine/laborcamp) -"ec" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=1-Storage"; location = "Sleeper"},/turf/open/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/mine/laborcamp) -"ed" = (/obj/machinery/light/small{dir = 4},/obj/structure/bed/roller,/turf/open/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/mine/laborcamp) -"ee" = (/obj/machinery/airalarm{pixel_y = 28},/obj/structure/closet/crate,/turf/open/floor/plasteel{icon_state = "bot"; dir = 1},/area/mine/production) -"ef" = (/obj/machinery/light/small,/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"eg" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plating/airless,/area/mine/abandoned) -"eh" = (/obj/structure/plasticflaps/mining,/turf/open/floor/plasteel{icon_state = "asteroidfloor"},/area/mine/laborcamp) -"ei" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=3-SMine"; location = "2-NMine"},/turf/open/floor/plasteel{icon_state = "asteroidfloor"},/area/mine/laborcamp) -"ej" = (/turf/open/floor/plating{icon_plating = "asteroidplating"; icon_state = "asteroidplating"},/area/mine/explored) -"ek" = (/obj/effect/decal/remains/human,/turf/open/floor/plating/asteroid,/area/mine/explored) -"el" = (/obj/structure/disposalpipe/segment,/turf/open/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/explored) -"em" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple,/obj/structure/window/reinforced/fulltile,/turf/open/floor/plating,/area/mine/laborcamp) -"en" = (/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Infirmary"; req_access_txt = "0"},/turf/open/floor/plasteel{icon_state = "whitebluefull"},/area/mine/laborcamp) -"eo" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/open/floor/plating,/area/mine/laborcamp) -"ep" = (/obj/machinery/atmospherics/pipe/simple,/turf/closed/wall,/area/mine/laborcamp) -"eq" = (/obj/machinery/door/airlock{name = "Labor Camp Storage"},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"er" = (/obj/structure/plasticflaps/mining,/turf/open/floor/plating{icon_plating = "asteroidplating"; icon_state = "asteroidplating"},/area/mine/explored) -"es" = (/turf/closed/wall/r_wall,/area/mine/explored) -"et" = (/obj/structure/girder/reinforced,/turf/open/floor/plating{icon_plating = "asteroidplating"; icon_state = "asteroidplating"},/area/mine/explored) -"eu" = (/turf/open/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/abandoned) -"ev" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/open/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/abandoned) -"ew" = (/obj/structure/disposalpipe/segment,/turf/open/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) -"ex" = (/obj/structure/table,/obj/item/trash/plate,/obj/item/weapon/kitchen/fork,/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"ey" = (/obj/effect/decal/cleanable/cobweb2,/obj/structure/chair{dir = 8},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"ez" = (/obj/machinery/atmospherics/pipe/simple,/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"eA" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"eB" = (/obj/machinery/atmospherics/pipe/simple,/obj/item/device/radio/intercom{desc = "Talk through this. It looks like it has been modified to not broadcast."; dir = 2; name = "Prison Intercom (General)"; pixel_x = 0; pixel_y = 24; prison_radio = 1},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"eC" = (/obj/machinery/light{dir = 1},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"eD" = (/turf/open/floor/plasteel{icon_state = "asteroidfloor"},/area/mine/explored) -"eE" = (/obj/structure/barricade/wooden,/turf/open/floor/plasteel{dir = 4; icon_state = "loadingarea"},/area/space) -"eF" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/item/stack/rods,/obj/item/weapon/shard,/turf/open/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/abandoned) -"eG" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/abandoned) -"eH" = (/obj/structure/chair{dir = 1},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"eI" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=7-Sleeper"; location = "6-Vending"},/mob/living/simple_animal/mouse,/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"eJ" = (/obj/machinery/door/airlock{name = "Vending"},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"eK" = (/obj/machinery/atmospherics/pipe/simple/general/hidden{dir = 5},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"eL" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"eM" = (/obj/machinery/atmospherics/pipe/manifold{dir = 4},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"eN" = (/obj/machinery/door/poddoor/preopen{id = "Labor"; name = "labor camp blast door"},/obj/machinery/door/airlock{name = "Labor Camp External Access"},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"eO" = (/obj/structure/ore_box,/turf/open/floor/plating/asteroid,/area/mine/explored) -"eP" = (/turf/open/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 10},/area/mine/unexplored) -"eQ" = (/turf/open/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/unexplored) -"eR" = (/turf/open/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 6},/area/mine/unexplored) -"eS" = (/obj/machinery/vending/sustenance,/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"eT" = (/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/components/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"eU" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/closed/wall,/area/mine/laborcamp) -"eV" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/machinery/airalarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"eW" = (/obj/machinery/flasher{id = "Labor"; pixel_x = 0; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold{dir = 4},/turf/closed/wall,/area/mine/laborcamp) -"eX" = (/obj/machinery/conveyor_switch/oneway{id = "gulag"},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"eY" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/open/floor/plasteel{icon_state = "asteroidwarning"},/area/mine/laborcamp) -"eZ" = (/turf/open/floor/plasteel{icon_state = "asteroidwarning"},/area/mine/explored) -"fa" = (/turf/open/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/unexplored) -"fb" = (/obj/machinery/light_switch{pixel_x = -27; pixel_y = 0},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"fc" = (/obj/machinery/camera{c_tag = "Labor Camp Central"; network = list("Labor")},/obj/machinery/atmospherics/pipe/manifold{dir = 8},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"fd" = (/obj/machinery/atmospherics/pipe/simple/general/hidden{dir = 9},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"fe" = (/obj/machinery/conveyor{dir = 2; id = "gulag"},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"ff" = (/obj/machinery/conveyor{dir = 8; id = "gulag"},/obj/structure/plasticflaps/mining,/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"fg" = (/obj/machinery/conveyor{dir = 8; id = "gulag"},/turf/open/floor/plasteel{icon_state = "asteroidplating"},/area/mine/laborcamp) -"fh" = (/obj/machinery/mineral/unloading_machine{dir = 1; input_dir = 4; output_dir = 8},/turf/open/floor/plasteel{icon_state = "asteroidplating"},/area/mine/laborcamp) -"fi" = (/obj/structure/ore_box,/turf/open/floor/plasteel{icon_state = "asteroidwarning"; dir = 8},/area/mine/explored) -"fj" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/turf/open/floor/plating/asteroid,/area/mine/explored) -"fk" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/open/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) -"fl" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/open/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) -"fm" = (/obj/machinery/door/airlock/glass_security{name = "Labor Camp Shuttle Security Airlock"; req_access_txt = "2"},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"fn" = (/obj/machinery/light/small{dir = 1},/obj/machinery/button/door{id = "Labor"; name = "Labor Camp Lockdown"; pixel_x = 0; pixel_y = 28; req_access_txt = "2"},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"fo" = (/obj/machinery/door/poddoor/preopen{id = "Labor"; name = "labor camp blast door"},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"fp" = (/turf/open/floor/plasteel,/area/mine/laborcamp) -"fq" = (/obj/machinery/mineral/processing_unit_console{machinedir = 6},/turf/closed/wall,/area/mine/laborcamp) -"fr" = (/obj/structure/plasticflaps,/obj/machinery/conveyor{dir = 2; id = "gulag"},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"fs" = (/obj/machinery/camera{c_tag = "Labor Camp External"; dir = 4; network = list("Labor")},/turf/open/floor/plasteel{icon_state = "asteroidwarning"; dir = 1},/area/mine/explored) -"ft" = (/turf/open/floor/plasteel{icon_state = "asteroidwarning"; dir = 1},/area/mine/explored) -"fu" = (/obj/machinery/conveyor_switch/oneway{id = "gulag"},/turf/open/floor/plasteel{icon_state = "asteroidwarning"; dir = 1},/area/mine/explored) -"fv" = (/obj/effect/decal/cleanable/blood/old,/turf/open/floor/plating/asteroid,/area/mine/explored) -"fw" = (/obj/machinery/mineral/stacking_unit_console{machinedir = 2},/turf/closed/wall,/area/mine/laborcamp) -"fx" = (/obj/machinery/mineral/processing_unit{dir = 1; output_dir = 2},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"fy" = (/obj/machinery/light/small{dir = 4},/turf/open/floor/plating/asteroid,/area/mine/laborcamp) -"fz" = (/obj/machinery/computer/shuttle/labor/one_way,/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"fA" = (/obj/machinery/conveyor{dir = 8; id = "gulag"},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=6-Vending"; location = "5-Central"},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"fB" = (/obj/machinery/mineral/stacking_machine{dir = 1; input_dir = 4},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"fC" = (/obj/machinery/conveyor{dir = 8; id = "gulag"},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"fD" = (/obj/machinery/conveyor{dir = 10; icon_state = "conveyor0"; id = "gulag"},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) -"fE" = (/obj/structure/closet/crate,/turf/open/floor/plasteel{icon_state = "asteroidfloor"},/area/mine/explored) -"fF" = (/obj/item/stack/sheet/metal{amount = 5},/obj/structure/closet/crate,/turf/open/floor/plasteel{icon_state = "asteroidfloor"},/area/mine/explored) -"fG" = (/turf/closed/wall/r_wall,/area/mine/laborcamp/security) -"fH" = (/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp/security) -"fI" = (/obj/machinery/camera{c_tag = "Labor Camp Security Hallway"; dir = 8; network = list("Labor"); pixel_x = 0; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp/security) -"fJ" = (/obj/machinery/atmospherics/pipe/simple,/turf/closed/wall,/area/mine/laborcamp/security) -"fK" = (/obj/structure/plasticflaps/mining,/turf/open/floor/plating,/area/mine/laborcamp/security) -"fL" = (/turf/closed/wall,/area/mine/laborcamp/security) -"fM" = (/obj/structure/girder,/turf/open/floor/plating{icon_plating = "asteroidplating"; icon_state = "asteroidplating"},/area/mine/laborcamp/security) -"fN" = (/obj/docking_port/stationary{dir = 8; dwidth = 2; height = 5; id = "laborcamp_away"; name = "labor camp"; width = 9},/turf/open/space,/area/space) -"fO" = (/obj/machinery/door/airlock/glass_security{name = "Labor Camp Shuttle Prisoner Airlock"; req_access_txt = "0"},/turf/open/floor/plasteel,/area/mine/laborcamp/security) -"fP" = (/obj/machinery/door/airlock/glass_security{name = "Labor Camp Shuttle Prisoner Airlock"; req_access_txt = "0"},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp/security) -"fQ" = (/obj/machinery/atmospherics/pipe/simple{dir = 6},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp/security) -"fR" = (/obj/machinery/atmospherics/pipe/manifold,/obj/machinery/door/airlock/glass_security{name = "Labor Camp Backroom"; req_access_txt = "2"},/turf/open/floor/plating,/area/mine/laborcamp/security) -"fS" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/open/floor/plating{icon_state = "warnplate"; dir = 8},/area/mine/laborcamp/security) -"fT" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/machinery/light/small{dir = 1},/turf/open/floor/plating,/area/mine/laborcamp/security) -"fU" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/open/floor/plating{dir = 2; icon_state = "warnplate"},/area/mine/laborcamp/security) -"fV" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/apc{dir = 1; name = "Labor Camp APC"; pixel_y = 24},/obj/machinery/atmospherics/pipe/simple{dir = 10},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=5-Central"; location = "4-Maint"},/turf/open/floor/plating,/area/mine/laborcamp) -"fW" = (/turf/open/floor/plating{icon_state = "warnplate"; dir = 4},/area/mine/laborcamp/security) -"fX" = (/obj/machinery/door/airlock/glass_security{name = "Labor Camp External Access"; req_access_txt = "2"},/turf/open/floor/plating,/area/mine/laborcamp/security) -"fY" = (/obj/machinery/door/airlock/glass_security{name = "Labor Camp Monitoring"; req_access_txt = "2"},/turf/open/floor/plasteel,/area/mine/laborcamp/security) -"fZ" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/closed/wall,/area/mine/laborcamp/security) -"ga" = (/obj/machinery/door/airlock/maintenance{name = "Labor Camp Maintenance"; req_access_txt = "2"},/turf/open/floor/plating,/area/mine/laborcamp/security) -"gb" = (/obj/structure/plasticflaps/mining,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple,/turf/open/floor/plating,/area/mine/laborcamp/security) -"gc" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/open/floor/plasteel{icon_state = "asteroidfloor"},/area/mine/explored) -"gd" = (/obj/machinery/vending/coffee,/turf/open/floor/plasteel,/area/mine/laborcamp/security) -"ge" = (/turf/open/floor/plasteel,/area/mine/laborcamp/security) -"gf" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/light_switch{pixel_y = 28},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/open/floor/plasteel,/area/mine/laborcamp/security) -"gg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel,/area/mine/laborcamp/security) -"gh" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{dir = 4; name = "Labor Camp Security APC"; pixel_x = 24; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple,/obj/machinery/camera{c_tag = "Labor Camp Monitoring"; network = list("Labor")},/obj/machinery/light_switch{pixel_y = 28},/turf/open/floor/plasteel,/area/mine/laborcamp/security) -"gi" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/closed/wall,/area/mine/laborcamp/security) -"gj" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/open/floor/plating,/area/mine/laborcamp/security) -"gk" = (/obj/machinery/light/small{dir = 1},/obj/item/weapon/storage/box/lights/mixed,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plating,/area/mine/laborcamp/security) -"gl" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plating{icon_state = "warnplate"; dir = 1},/area/mine/laborcamp/security) -"gm" = (/obj/machinery/atmospherics/pipe/manifold{dir = 8},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/open/floor/plating,/area/mine/laborcamp/security) -"gn" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/open/floor/plating,/area/mine/laborcamp/security) -"go" = (/obj/structure/plasticflaps/mining,/turf/closed/wall,/area/mine/laborcamp/security) -"gp" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=4-Maint"; location = "3-SMine"},/turf/open/floor/plasteel{icon_state = "asteroidfloor"},/area/mine/laborcamp) -"gq" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/structure/closet/crate,/turf/open/floor/plasteel{icon_state = "asteroidfloor"},/area/mine/explored) -"gr" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 8; on = 1},/obj/structure/closet/crate,/turf/open/floor/plating/asteroid,/area/mine/explored) -"gs" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/open/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) -"gt" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/closed/wall/r_wall,/area/mine/laborcamp/security) -"gu" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/open/floor/plasteel,/area/mine/laborcamp/security) -"gv" = (/obj/structure/chair/office/dark,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel,/area/mine/laborcamp/security) -"gw" = (/obj/machinery/button/door{id = "Labor"; name = "Labor Camp Lockdown"; pixel_x = 28; pixel_y = 7; req_access_txt = "2"},/obj/machinery/button/flasher{id = "Labor"; pixel_x = 26; pixel_y = -3},/obj/machinery/atmospherics/components/unary/vent_pump{dir = 1; on = 1},/turf/open/floor/plasteel,/area/mine/laborcamp/security) -"gx" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/open/floor/plating,/area/mine/laborcamp/security) -"gy" = (/turf/open/floor/plating,/area/mine/laborcamp/security) -"gz" = (/obj/machinery/atmospherics/pipe/manifold{dir = 8},/obj/machinery/meter,/turf/open/floor/plating,/area/mine/laborcamp/security) -"gA" = (/obj/machinery/atmospherics/components/unary/tank/air{dir = 8},/turf/open/floor/plating,/area/mine/laborcamp/security) -"gB" = (/obj/structure/grille,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/window/reinforced/fulltile,/turf/open/floor/plating,/area/mine/laborcamp/security) -"gC" = (/obj/structure/table,/obj/machinery/recharger,/turf/open/floor/plasteel,/area/mine/laborcamp/security) -"gD" = (/obj/machinery/computer/secure_data,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/open/floor/plasteel,/area/mine/laborcamp/security) -"gE" = (/obj/machinery/computer/security{name = "Labor Camp Monitoring"; network = list("Labor")},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/open/floor/plasteel,/area/mine/laborcamp/security) -"gF" = (/obj/machinery/computer/prisoner,/obj/machinery/airalarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/open/floor/plasteel,/area/mine/laborcamp/security) -"gG" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/turf/open/floor/plasteel,/area/mine/laborcamp/security) -"gH" = (/obj/machinery/space_heater,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/open/floor/plating,/area/mine/laborcamp/security) -"gI" = (/obj/machinery/power/port_gen/pacman{anchored = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/open/floor/plating,/area/mine/laborcamp/security) -"gJ" = (/obj/machinery/portable_atmospherics/canister/air,/turf/open/floor/plating,/area/mine/laborcamp/security) -"gK" = (/obj/machinery/atmospherics/pipe/simple/general/hidden{dir = 5},/obj/structure/reagent_dispensers/fueltank,/turf/open/floor/plating,/area/mine/laborcamp/security) -"gL" = (/obj/structure/grille,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/window/reinforced/fulltile,/turf/open/floor/plating,/area/mine/laborcamp/security) -"gM" = (/obj/structure/grille,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/window/reinforced/fulltile,/turf/open/floor/plating,/area/mine/laborcamp/security) -"gN" = (/obj/structure/grille,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable,/obj/structure/window/reinforced/fulltile,/turf/open/floor/plating,/area/mine/laborcamp/security) -"gO" = (/turf/open/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 9},/area/mine/explored) -"gP" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/open/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) -"gQ" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/open/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) -"gR" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plating/airless,/area/mine/abandoned) -"gS" = (/obj/structure/alien/weeds,/turf/open/floor/plasteel/airless{icon_state = "floorscorched1"},/area/mine/abandoned) -"gT" = (/obj/effect/decal/remains/xeno,/obj/structure/alien/weeds,/turf/open/floor/plasteel/airless{icon_state = "damaged4"},/area/mine/abandoned) -"gU" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/open/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 8},/area/mine/explored) -"gV" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/open/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 4},/area/mine/explored) -"gW" = (/obj/structure/alien/weeds/node,/turf/open/floor/plasteel/airless{icon_state = "floorscorched2"},/area/mine/abandoned) -"gX" = (/obj/item/clothing/mask/facehugger{icon_state = "facehugger_dead"; stat = 2},/obj/structure/alien/weeds,/turf/open/floor/plasteel/airless{icon_state = "floorscorched1"},/area/mine/abandoned) -"gY" = (/obj/structure/table,/obj/structure/alien/weeds,/turf/open/floor/plasteel/airless,/area/mine/abandoned) -"gZ" = (/obj/item/weapon/shard,/turf/open/floor/plasteel/airless{icon_state = "floorscorched2"},/area/mine/abandoned) -"ha" = (/obj/item/weapon/shard{icon_state = "small"},/obj/structure/alien/weeds,/turf/open/floor/plasteel/airless,/area/mine/abandoned) -"hb" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/item/weapon/shard{icon_state = "medium"},/turf/open/floor/plating/airless,/area/mine/abandoned) -"hc" = (/obj/structure/alien/resin/membrane,/obj/structure/alien/weeds,/turf/open/floor/plating/airless,/area/mine/abandoned) -"hd" = (/turf/closed/wall/r_wall,/area/mine/maintenance) -"he" = (/obj/structure/alien/weeds/node,/turf/open/floor/plasteel/airless,/area/mine/abandoned) -"hf" = (/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plasteel/airless,/area/mine/explored) -"hg" = (/obj/effect/decal/remains/xeno,/obj/structure/alien/weeds,/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/mine/abandoned) -"hh" = (/turf/open/floor/bluegrid,/area/mine/maintenance) -"hi" = (/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/power/apc{dir = 1; name = "Mining Communications APC"; pixel_x = 1; pixel_y = 25},/turf/open/floor/plasteel{icon_state = "dark"},/area/mine/maintenance) -"hj" = (/obj/machinery/telecomms/relay/preset/mining,/obj/machinery/light/small{dir = 1},/turf/open/floor/plasteel{icon_state = "vault"; dir = 1},/area/mine/maintenance) -"hk" = (/obj/machinery/airalarm{pixel_y = 24},/obj/machinery/atmospherics/components/unary/vent_pump{on = 1},/turf/open/floor/plasteel{icon_state = "dark"},/area/mine/maintenance) -"hl" = (/obj/structure/alien/resin/wall,/turf/open/floor/plating/airless,/area/mine/abandoned) -"hm" = (/obj/structure/alien/weeds,/turf/open/floor/plasteel/airless{icon_state = "floorgrime"},/area/mine/abandoned) -"hn" = (/obj/effect/decal/remains/xeno,/turf/open/floor/plasteel/airless,/area/mine/abandoned) -"ho" = (/obj/structure/alien/weeds,/turf/open/floor/plasteel/airless{icon_state = "damaged4"},/area/mine/abandoned) -"hp" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/open/floor/bluegrid,/area/mine/maintenance) -"hq" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple{dir = 6},/turf/open/floor/plasteel{icon_state = "dark"},/area/mine/maintenance) -"hr" = (/obj/machinery/atmospherics/pipe/simple/general/hidden{dir = 9},/obj/machinery/light_switch{pixel_y = -25},/turf/open/floor/bluegrid,/area/mine/maintenance) -"hs" = (/obj/machinery/camera{c_tag = "Communications Relay"; dir = 8; network = list("MINE")},/turf/open/floor/bluegrid,/area/mine/maintenance) -"ht" = (/turf/open/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) -"hu" = (/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/vulgaris,/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/vulgaris,/turf/open/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) -"hv" = (/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/libertycap,/turf/open/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) -"hw" = (/turf/closed/wall,/area/mine/living_quarters) -"hx" = (/obj/machinery/door/airlock/maintenance{name = "Mining Station Communications"; req_access_txt = "48"},/obj/machinery/atmospherics/pipe/simple,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel{icon_state = "vault"},/area/mine/maintenance) -"hy" = (/obj/item/clothing/under/rank/miner,/obj/effect/decal/remains/human,/turf/open/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) -"hz" = (/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/vulgaris,/turf/open/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/explored) -"hA" = (/obj/structure/bed,/obj/item/weapon/bedsheet/brown,/turf/open/floor/carpet,/area/mine/living_quarters) -"hB" = (/obj/machinery/light/small{dir = 4},/obj/machinery/button/door{id = "miningdorm1"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/turf/open/floor/carpet,/area/mine/living_quarters) -"hC" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple,/turf/open/floor/plasteel,/area/mine/living_quarters) -"hD" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating/airless,/area/mine/abandoned) -"hE" = (/obj/structure/table,/turf/open/floor/carpet,/area/mine/living_quarters) -"hF" = (/turf/open/floor/carpet,/area/mine/living_quarters) -"hG" = (/obj/machinery/door/airlock{id_tag = "miningdorm1"; name = "Room 1"},/turf/open/floor/plasteel,/area/mine/living_quarters) -"hH" = (/obj/structure/disposalpipe/trunk,/obj/structure/disposaloutlet{dir = 1},/turf/open/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) -"hI" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple,/obj/machinery/light/small{dir = 4},/turf/open/floor/plasteel,/area/mine/living_quarters) -"hJ" = (/obj/machinery/door/airlock/glass,/turf/open/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/abandoned) -"hK" = (/obj/machinery/light/small{dir = 4},/obj/machinery/button/door{id = "miningdorm2"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/turf/open/floor/carpet,/area/mine/living_quarters) -"hL" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/open/floor/plating,/area/mine/living_quarters) -"hM" = (/turf/open/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/west_outpost) -"hN" = (/obj/machinery/door/airlock{id_tag = "miningdorm2"; name = "Room 2"},/turf/open/floor/plasteel,/area/mine/living_quarters) -"hO" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/shard,/turf/open/floor/plating/airless,/area/mine/abandoned) -"hP" = (/obj/machinery/mech_bay_recharge_port,/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/west_outpost) -"hQ" = (/turf/open/floor/mech_bay_recharge_floor/airless,/area/mine/west_outpost) -"hR" = (/obj/machinery/computer/mech_bay_power_console,/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/west_outpost) -"hS" = (/obj/structure/disposalpipe/segment,/obj/structure/sign/deathsposal,/turf/closed/wall,/area/mine/living_quarters) -"hT" = (/turf/closed/wall,/area/mine/west_outpost) -"hU" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/open/floor/plating,/area/mine/west_outpost) -"hV" = (/obj/machinery/light/small{dir = 8},/turf/open/floor/plating/asteroid/airless,/area/mine/west_outpost) -"hW" = (/obj/machinery/computer/arcade,/turf/open/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) -"hX" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 1},/turf/open/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) -"hY" = (/obj/machinery/vending/cigarette,/obj/machinery/newscaster{pixel_y = 32},/turf/open/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) -"hZ" = (/obj/machinery/vending/snack,/turf/open/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) -"ia" = (/obj/machinery/light/small{dir = 4},/obj/machinery/button/door{id = "miningdorm3"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/turf/open/floor/carpet,/area/mine/living_quarters) -"ib" = (/obj/structure/table,/obj/item/weapon/pickaxe,/turf/open/floor/plasteel,/area/mine/west_outpost) -"ic" = (/obj/machinery/newscaster{pixel_y = 32},/turf/open/floor/plasteel,/area/mine/west_outpost) -"id" = (/obj/structure/table,/obj/machinery/microwave,/turf/open/floor/plasteel,/area/mine/west_outpost) -"ie" = (/obj/machinery/recharge_station,/turf/open/floor/plasteel{icon_state = "bot"},/area/mine/west_outpost) -"if" = (/obj/structure/tank_dispenser/oxygen,/turf/open/floor/plasteel{icon_state = "bot"},/area/mine/west_outpost) -"ig" = (/obj/structure/rack,/obj/machinery/light{dir = 1},/turf/open/floor/plasteel{icon_state = "bot"},/area/mine/west_outpost) -"ih" = (/obj/structure/rack,/turf/open/floor/plasteel{icon_state = "bot"},/area/mine/west_outpost) -"ii" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/trunk,/obj/machinery/door/window/northleft{dir = 2; name = "Pneumatic Tube Access"},/obj/machinery/disposal/deliveryChute{pixel_y = 5},/turf/open/floor/plasteel{icon_state = "bot"},/area/mine/west_outpost) -"ij" = (/turf/open/floor/plasteel,/area/mine/west_outpost) -"ik" = (/turf/open/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/west_outpost) -"il" = (/obj/structure/grille,/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/obj/structure/window/reinforced/fulltile,/turf/open/floor/plating,/area/mine/west_outpost) -"im" = (/obj/structure/table,/obj/machinery/microwave{pixel_y = 6},/turf/open/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) -"in" = (/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = 32},/turf/open/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) -"io" = (/turf/open/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) -"ip" = (/obj/structure/chair,/turf/open/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) -"iq" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 31},/turf/open/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) -"ir" = (/obj/machinery/door/airlock{id_tag = "miningdorm3"; name = "Room 3"},/turf/open/floor/plasteel,/area/mine/living_quarters) -"is" = (/obj/structure/ore_box,/turf/open/floor/plasteel,/area/mine/living_quarters) -"it" = (/obj/machinery/recharge_station,/obj/machinery/light/small{dir = 1},/turf/open/floor/plasteel,/area/mine/living_quarters) -"iu" = (/obj/structure/closet/secure_closet/miner,/turf/open/floor/plasteel,/area/mine/living_quarters) -"iv" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/closed/wall,/area/mine/eva) -"iw" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/closed/wall,/area/mine/eva) -"ix" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/open/floor/plating,/area/mine/eva) -"iy" = (/turf/closed/wall,/area/mine/eva) -"iz" = (/obj/structure/table,/obj/item/weapon/shovel,/turf/open/floor/plasteel,/area/mine/west_outpost) -"iA" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets,/turf/open/floor/plasteel,/area/mine/west_outpost) -"iB" = (/turf/open/floor/plasteel{dir = 1; icon_state = "warning"},/area/mine/west_outpost) -"iC" = (/obj/structure/disposalpipe/segment,/turf/open/floor/plasteel{dir = 1; icon_state = "warning"},/area/mine/west_outpost) -"iD" = (/obj/machinery/door/airlock/external{name = "Mining West Outpost Airlock"; req_access_txt = "54"},/turf/open/floor/plasteel,/area/mine/west_outpost) -"iE" = (/obj/machinery/door/airlock/external{name = "Mining West Outpost Airlock"; req_access_txt = "54"},/turf/open/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/west_outpost) -"iF" = (/turf/open/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 4},/area/mine/explored) -"iG" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/beer,/obj/item/weapon/reagent_containers/food/drinks/beer,/turf/open/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) -"iH" = (/obj/structure/chair{dir = 4},/turf/open/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) -"iI" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/beer,/turf/open/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) -"iJ" = (/obj/structure/chair{dir = 8},/turf/open/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) -"iK" = (/obj/machinery/light{dir = 4},/turf/open/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) -"iL" = (/turf/open/floor/plasteel,/area/mine/living_quarters) -"iM" = (/obj/machinery/atmospherics/components/unary/vent_pump{on = 1},/turf/open/floor/plasteel,/area/mine/living_quarters) -"iN" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/table,/obj/item/weapon/pickaxe,/turf/open/floor/plasteel,/area/mine/eva) -"iO" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/suit_storage_unit/mining/eva,/turf/open/floor/plasteel,/area/mine/eva) -"iP" = (/obj/machinery/suit_storage_unit/mining/eva,/turf/open/floor/plasteel,/area/mine/eva) -"iQ" = (/obj/machinery/light,/turf/open/floor/plating/asteroid/airless,/area/mine/explored) -"iR" = (/obj/structure/table,/obj/item/weapon/storage/backpack/satchel,/obj/item/clothing/glasses/meson,/obj/machinery/light/small{dir = 8},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/open/floor/plasteel,/area/mine/west_outpost) -"iS" = (/obj/machinery/door/airlock/glass_mining{name = "Break Room"; req_access_txt = "54"},/turf/open/floor/plasteel,/area/mine/west_outpost) -"iT" = (/obj/structure/disposalpipe/segment,/turf/open/floor/plasteel,/area/mine/west_outpost) -"iU" = (/obj/structure/closet/emcloset,/turf/open/floor/plasteel,/area/mine/west_outpost) -"iV" = (/obj/structure/ore_box,/turf/open/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/west_outpost) -"iW" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets,/turf/open/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) -"iX" = (/obj/machinery/camera{c_tag = "Crew Area"; dir = 1; network = list("MINE")},/turf/open/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) -"iY" = (/obj/item/weapon/cigbutt,/turf/open/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) -"iZ" = (/obj/machinery/airalarm{pixel_y = 24},/turf/open/floor/plasteel,/area/mine/living_quarters) -"ja" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/open/floor/plasteel,/area/mine/living_quarters) -"jb" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/open/floor/plasteel,/area/mine/living_quarters) -"jc" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple,/turf/open/floor/plasteel,/area/mine/living_quarters) -"jd" = (/obj/machinery/mineral/equipment_vendor,/turf/open/floor/plasteel,/area/mine/living_quarters) -"je" = (/obj/machinery/camera{c_tag = "Storage Room"; dir = 1; network = list("MINE")},/turf/open/floor/plasteel,/area/mine/living_quarters) -"jf" = (/obj/machinery/atmospherics/pipe/simple,/turf/open/floor/plasteel,/area/mine/living_quarters) -"jg" = (/turf/closed/wall,/area/mine/production) -"jh" = (/obj/structure/disposalpipe/segment,/turf/closed/wall,/area/mine/production) -"ji" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/open/floor/plating,/area/mine/production) -"jj" = (/obj/machinery/atmospherics/pipe/simple{dir = 6},/obj/machinery/camera{c_tag = "EVA"; dir = 4; network = list("MINE")},/obj/machinery/airalarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/table,/obj/item/device/gps/mining,/obj/item/device/gps/mining,/obj/item/device/gps/mining,/obj/item/device/gps/mining,/turf/open/floor/plasteel,/area/mine/eva) -"jk" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/structure/disposalpipe/segment,/turf/open/floor/plasteel,/area/mine/eva) -"jl" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/open/floor/plasteel,/area/mine/eva) -"jm" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 8; on = 1},/obj/machinery/light_switch{pixel_x = 27},/turf/open/floor/plasteel,/area/mine/eva) -"jn" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical,/turf/open/floor/plasteel,/area/mine/west_outpost) -"jo" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/open/floor/plasteel,/area/mine/west_outpost) -"jp" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/structure/window/reinforced/fulltile,/turf/open/floor/plating,/area/mine/west_outpost) -"jq" = (/obj/machinery/atmospherics/pipe/manifold{dir = 1},/turf/open/floor/plasteel,/area/mine/west_outpost) -"jr" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/open/floor/plasteel,/area/mine/west_outpost) -"js" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 8; on = 1},/turf/open/floor/plasteel,/area/mine/west_outpost) -"jt" = (/obj/machinery/conveyor_switch{id = "mining_west"},/obj/structure/disposalpipe/segment,/turf/open/floor/plasteel,/area/mine/west_outpost) -"ju" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple,/obj/structure/window/reinforced/fulltile,/turf/open/floor/plating,/area/mine/living_quarters) -"jv" = (/obj/machinery/door/airlock/glass{name = "Crew Area"; req_access_txt = "48"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel,/area/mine/living_quarters) -"jw" = (/obj/machinery/atmospherics/pipe/simple,/obj/machinery/door/airlock/mining{name = "Mining Station Storage"; req_access_txt = "48"},/turf/open/floor/plasteel,/area/mine/living_quarters) -"jx" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/northleft{dir = 2; name = "Pneumatic Tube Access"},/obj/machinery/disposal/deliveryChute{pixel_y = 5},/obj/structure/disposalpipe/trunk{dir = 1},/turf/open/floor/plasteel{icon_state = "bot"; dir = 1},/area/mine/production) -"jy" = (/obj/structure/closet/crate,/turf/open/floor/plasteel{icon_state = "bot"; dir = 1},/area/mine/production) -"jz" = (/obj/machinery/atmospherics/pipe/simple{dir = 6},/obj/structure/closet/crate,/turf/open/floor/plasteel{icon_state = "bot"; dir = 1},/area/mine/production) -"jA" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/structure/window/reinforced/fulltile,/turf/open/floor/plating,/area/mine/eva) -"jB" = (/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/general/hidden{dir = 9},/turf/open/floor/plasteel,/area/mine/eva) -"jC" = (/obj/structure/disposalpipe/segment,/turf/open/floor/plasteel,/area/mine/eva) -"jD" = (/turf/open/floor/plasteel,/area/mine/eva) -"jE" = (/obj/structure/tank_dispenser/oxygen,/turf/open/floor/plasteel,/area/mine/eva) -"jF" = (/obj/machinery/light/small{dir = 1},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/eva) -"jG" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/turf/open/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/eva) -"jH" = (/obj/structure/reagent_dispensers/fueltank,/turf/open/floor/plasteel,/area/mine/west_outpost) -"jI" = (/obj/structure/chair{dir = 1},/turf/open/floor/plasteel,/area/mine/west_outpost) -"jJ" = (/obj/machinery/power/apc{dir = 2; name = "Mining West Outpost APC"; pixel_x = 1; pixel_y = -23},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/atmospherics/pipe/simple,/turf/open/floor/plasteel,/area/mine/west_outpost) -"jK" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/camera{c_tag = "West Outpost"; dir = 1; network = list("MINE")},/turf/open/floor/plasteel,/area/mine/west_outpost) -"jL" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/open/floor/plasteel,/area/mine/west_outpost) -"jM" = (/obj/machinery/airalarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/open/floor/plasteel,/area/mine/west_outpost) -"jN" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/open/floor/plasteel{dir = 4; icon_state = "loadingarea"},/area/mine/west_outpost) -"jO" = (/obj/machinery/mineral/unloading_machine{dir = 2; output_dir = 4},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/west_outpost) -"jP" = (/obj/machinery/conveyor{dir = 4; id = "mining_west"},/obj/machinery/light/small{dir = 1},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/west_outpost) -"jQ" = (/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/disposal/deliveryChute{dir = 8},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/west_outpost) -"jR" = (/obj/structure/grille,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/window/reinforced/fulltile,/turf/open/floor/plating,/area/mine/west_outpost) -"jS" = (/obj/structure/toilet{dir = 4},/turf/open/floor/plasteel{icon_state = "showroomfloor"},/area/mine/living_quarters) -"jT" = (/obj/structure/sink{pixel_y = 30},/obj/machinery/light/small,/obj/structure/mirror{pixel_y = -32},/turf/open/floor/plasteel{icon_state = "showroomfloor"},/area/mine/living_quarters) -"jU" = (/obj/machinery/door/airlock{name = "Toilet"},/turf/open/floor/plasteel{icon_state = "showroomfloor"},/area/mine/living_quarters) -"jV" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel,/area/mine/living_quarters) -"jW" = (/obj/machinery/power/apc{dir = 1; name = "Mining Station Port Wing APC"; pixel_x = 1; pixel_y = 25},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/open/floor/plasteel,/area/mine/living_quarters) -"jX" = (/obj/machinery/camera{c_tag = "Crew Area Hallway"; network = list("MINE")},/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/turf/open/floor/plasteel,/area/mine/living_quarters) -"jY" = (/turf/open/floor/plasteel{dir = 5; icon_state = "warning"},/area/mine/living_quarters) -"jZ" = (/obj/structure/window/reinforced,/obj/structure/lattice,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/open/space,/area/mine/living_quarters) -"ka" = (/obj/structure/window/reinforced,/obj/structure/lattice,/turf/open/space,/area/mine/living_quarters) -"kb" = (/obj/structure/window/reinforced,/obj/structure/lattice,/turf/open/space,/area/mine/production) -"kc" = (/turf/open/floor/plasteel{dir = 9; icon_state = "warning"},/area/mine/production) -"kd" = (/turf/open/floor/plasteel{dir = 1; icon_state = "warning"},/area/mine/production) -"ke" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/open/floor/plasteel{dir = 1; icon_state = "warning"},/area/mine/production) -"kf" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple,/turf/open/floor/plasteel{dir = 5; icon_state = "warning"},/area/mine/production) -"kg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/door/airlock/glass_mining{name = "Mining Station EVA"; req_access_txt = "54"},/turf/open/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/eva) -"kh" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/open/floor/plasteel,/area/mine/eva) -"ki" = (/obj/machinery/door/airlock/external{name = "Mining External Airlock"; req_access_txt = "54"},/turf/open/floor/plasteel,/area/mine/eva) -"kj" = (/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/eva) -"kk" = (/turf/open/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/eva) -"kl" = (/obj/machinery/door/airlock/external{name = "Mining External Airlock"; req_access_txt = "54"},/turf/open/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/eva) -"km" = (/obj/machinery/atmospherics/pipe/simple,/turf/closed/wall,/area/mine/west_outpost) -"kn" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/closed/wall,/area/mine/west_outpost) -"ko" = (/obj/machinery/door/airlock/maintenance{name = "Mining Station Maintenance"; req_access_txt = "54"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/open/floor/plating,/area/mine/west_outpost) -"kp" = (/obj/machinery/conveyor{backwards = 2; dir = 2; forwards = 1; id = "mining_west"},/obj/structure/plasticflaps/mining,/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/open/floor/plasteel,/area/mine/west_outpost) -"kq" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/closed/wall,/area/mine/west_outpost) -"kr" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/open/floor/plasteel,/area/mine/living_quarters) -"ks" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/open/floor/plasteel,/area/mine/living_quarters) -"kt" = (/obj/machinery/atmospherics/pipe/simple,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/open/floor/plasteel,/area/mine/living_quarters) -"ku" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple,/turf/open/floor/plasteel,/area/mine/living_quarters) -"kv" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/open/floor/plasteel,/area/mine/living_quarters) -"kw" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/open/floor/plasteel,/area/mine/living_quarters) -"kx" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple,/turf/open/floor/plasteel,/area/mine/living_quarters) -"ky" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/open/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/living_quarters) -"kz" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/door/airlock/glass_mining{name = "Mining Station Bridge"; req_access_txt = "48"},/turf/open/floor/plasteel,/area/mine/living_quarters) -"kA" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/open/floor/plasteel,/area/mine/living_quarters) -"kB" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/open/floor/plasteel,/area/mine/production) -"kC" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/door/airlock/glass_mining{name = "Mining Station Bridge"; req_access_txt = "48"},/turf/open/floor/plasteel,/area/mine/production) -"kD" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/open/floor/plasteel{dir = 8; icon_state = "warning"},/area/mine/production) -"kE" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/components/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/open/floor/plasteel,/area/mine/production) -"kF" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/open/floor/plasteel,/area/mine/production) -"kG" = (/obj/machinery/atmospherics/pipe/manifold{dir = 4},/turf/open/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/production) -"kH" = (/obj/machinery/power/apc{dir = 2; name = "Mining EVA APC"; pixel_x = 1; pixel_y = -23},/obj/structure/cable,/obj/structure/table,/obj/item/stack/packageWrap,/obj/item/stack/packageWrap,/obj/item/stack/packageWrap,/obj/item/weapon/hand_labeler,/turf/open/floor/plasteel,/area/mine/eva) -"kI" = (/obj/machinery/mech_bay_recharge_port,/obj/structure/disposalpipe/segment,/turf/open/floor/plating,/area/mine/eva) -"kJ" = (/turf/open/floor/mech_bay_recharge_floor,/area/mine/eva) -"kK" = (/obj/machinery/computer/mech_bay_power_console,/turf/open/floor/plasteel,/area/mine/eva) -"kL" = (/obj/structure/closet/emcloset,/turf/open/floor/plasteel,/area/mine/eva) -"kM" = (/obj/structure/ore_box,/turf/open/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/eva) -"kN" = (/obj/machinery/atmospherics/pipe/simple,/obj/machinery/meter,/turf/open/floor/plating,/area/mine/west_outpost) -"kO" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/open/floor/plating,/area/mine/west_outpost) -"kP" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/open/floor/plating,/area/mine/west_outpost) -"kQ" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/obj/item/weapon/storage/box/lights/bulbs,/turf/open/floor/plating,/area/mine/west_outpost) -"kR" = (/obj/structure/alien/weeds/node,/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/mine/abandoned) -"kS" = (/obj/effect/decal/remains/human,/obj/structure/alien/weeds,/turf/open/floor/plasteel/airless,/area/mine/abandoned) -"kT" = (/obj/machinery/atmospherics/pipe/manifold{dir = 8},/turf/open/floor/plasteel,/area/mine/living_quarters) -"kU" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/open/floor/plasteel,/area/mine/living_quarters) -"kV" = (/obj/machinery/atmospherics/pipe/manifold,/turf/open/floor/plasteel,/area/mine/living_quarters) -"kW" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/open/floor/plasteel,/area/mine/living_quarters) -"kX" = (/obj/machinery/atmospherics/pipe/manifold{dir = 1},/turf/open/floor/plasteel,/area/mine/living_quarters) -"kY" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/machinery/light,/turf/open/floor/plasteel,/area/mine/living_quarters) -"kZ" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/open/floor/plasteel{dir = 6; icon_state = "warning"},/area/mine/living_quarters) -"la" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/structure/window/reinforced/fulltile,/turf/open/floor/plating,/area/mine/living_quarters) -"lb" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/open/space,/area/mine/living_quarters) -"lc" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/open/space,/area/mine/production) -"ld" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/machinery/light{dir = 4},/turf/open/space,/area/mine/production) -"le" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/structure/window/reinforced/fulltile,/turf/open/floor/plating,/area/mine/production) -"lf" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/open/floor/plasteel{dir = 10; icon_state = "warning"},/area/mine/production) -"lg" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/open/floor/plasteel{icon_state = "warningcorner"; dir = 1},/area/mine/production) -"lh" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/open/floor/plasteel,/area/mine/production) -"li" = (/obj/machinery/atmospherics/pipe/manifold{dir = 4},/obj/machinery/airalarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/open/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/production) -"lj" = (/obj/structure/rack,/turf/open/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/abandoned) -"lk" = (/turf/open/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/production) -"ll" = (/obj/machinery/conveyor_switch{id = "mining_external"},/turf/open/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/production) -"lm" = (/turf/open/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/production) -"ln" = (/obj/machinery/atmospherics/components/unary/tank/air{dir = 1; initialize_directions = 0; level = 1},/turf/open/floor/plating,/area/mine/west_outpost) -"lo" = (/obj/machinery/power/port_gen/pacman{anchored = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/open/floor/plating,/area/mine/west_outpost) -"lp" = (/obj/machinery/power/terminal{dir = 4},/obj/machinery/light/small,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/open/floor/plating,/area/mine/west_outpost) -"lq" = (/obj/structure/cable,/obj/machinery/power/smes{charge = 5e+006},/turf/open/floor/plating,/area/mine/west_outpost) -"lr" = (/obj/machinery/atmospherics/pipe/simple,/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Infirmary"; req_access_txt = "0"},/turf/open/floor/plasteel{icon_state = "whitebluefull"},/area/mine/living_quarters) -"ls" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/closed/wall,/area/mine/living_quarters) -"lt" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/airlock/maintenance{name = "Mining Station Maintenance"; req_access_txt = "48"},/turf/open/floor/plating,/area/mine/living_quarters) -"lu" = (/obj/machinery/atmospherics/pipe/simple,/turf/closed/wall,/area/mine/living_quarters) -"lv" = (/obj/machinery/door/airlock/external{name = "Mining External Airlock"; req_access_txt = "54"},/turf/open/floor/plasteel,/area/mine/living_quarters) -"lw" = (/turf/open/floor/plasteel{dir = 8; icon_state = "warning"},/area/mine/production) -"lx" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/open/floor/plasteel,/area/mine/production) -"ly" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple,/turf/open/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/production) -"lz" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock{name = "Closet"; req_access_txt = "0"},/turf/open/floor/plating,/area/mine/production) -"lA" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light/small{dir = 1},/turf/open/floor/plating{icon_state = "warnplate"; dir = 8},/area/mine/production) -"lB" = (/obj/structure/disposalpipe/junction{dir = 8; icon_state = "pipe-j1"},/obj/machinery/space_heater,/turf/open/floor/plating,/area/mine/production) -"lC" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/closed/wall,/area/mine/production) -"lD" = (/obj/machinery/disposal/deliveryChute{dir = 4},/obj/structure/disposalpipe/trunk{dir = 8},/turf/open/floor/plating{icon_state = "warnplate"; dir = 8},/area/mine/production) -"lE" = (/obj/machinery/conveyor{dir = 4; id = "mining_external"},/turf/open/floor/plating,/area/mine/production) -"lF" = (/obj/machinery/conveyor{dir = 4; id = "mining_external"},/turf/open/floor/plating{icon_state = "warnplate"; dir = 4},/area/mine/production) -"lG" = (/obj/machinery/conveyor{dir = 4; id = "mining_external"},/obj/structure/plasticflaps/mining,/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/production) -"lH" = (/obj/machinery/conveyor{dir = 4; id = "mining_external"},/turf/open/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/production) -"lI" = (/obj/machinery/light/small{dir = 8},/obj/machinery/airalarm{frequency = 1439; pixel_y = 23},/turf/open/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/mine/living_quarters) -"lJ" = (/turf/open/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/mine/living_quarters) -"lK" = (/obj/machinery/atmospherics/pipe/simple,/turf/open/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/mine/living_quarters) -"lL" = (/turf/open/floor/plasteel{dir = 5; icon_state = "whiteblue"},/area/mine/living_quarters) -"lM" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/open/floor/plating,/area/mine/living_quarters) -"lN" = (/obj/effect/spawner/lootdrop/crate_spawner,/turf/open/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/abandoned) -"lO" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/open/floor/plating,/area/mine/living_quarters) -"lP" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/light/small{dir = 1},/obj/structure/closet/crate/secure/loot,/turf/open/floor/plating,/area/mine/living_quarters) -"lQ" = (/turf/open/floor/plating,/area/mine/living_quarters) -"lR" = (/obj/structure/closet/emcloset,/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/living_quarters) -"lS" = (/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/living_quarters) -"lT" = (/obj/machinery/light/small{dir = 4},/turf/open/floor/plasteel,/area/mine/living_quarters) -"lU" = (/obj/structure/sign/xeno_warning_mining,/turf/closed/wall,/area/mine/living_quarters) -"lV" = (/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/open/floor/plasteel{dir = 8; icon_state = "warning"},/area/mine/production) -"lW" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/open/floor/plasteel,/area/mine/production) -"lX" = (/obj/machinery/atmospherics/pipe/simple,/obj/machinery/status_display{layer = 4; pixel_x = 32; pixel_y = 0},/turf/open/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/production) -"lY" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/open/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/production) -"lZ" = (/obj/structure/rack,/obj/item/weapon/storage/firstaid/regular,/obj/item/weapon/storage/firstaid/regular{pixel_x = -3; pixel_y = -3},/turf/open/floor/plating,/area/mine/living_quarters) -"ma" = (/obj/machinery/iv_drip,/turf/open/floor/plasteel{icon_state = "white"},/area/mine/living_quarters) -"mb" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 1; on = 1},/obj/machinery/camera{c_tag = "Sleeper Room"; dir = 1; network = list("MINE")},/turf/open/floor/plasteel{icon_state = "white"},/area/mine/living_quarters) -"mc" = (/obj/structure/closet/crate/freezer,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty{pixel_x = -3; pixel_y = -3},/obj/item/weapon/reagent_containers/blood/AMinus,/obj/item/weapon/reagent_containers/blood/BMinus{pixel_x = -4; pixel_y = 4},/obj/item/weapon/reagent_containers/blood/BPlus{pixel_x = 1; pixel_y = 2},/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OPlus{pixel_x = -2; pixel_y = -1},/obj/item/weapon/reagent_containers/blood/random,/obj/item/weapon/reagent_containers/blood/random,/obj/item/weapon/reagent_containers/blood/random,/turf/open/floor/plasteel{icon_state = "white"},/area/mine/living_quarters) -"md" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/open/floor/plating,/area/mine/living_quarters) +"aL" = (/obj/structure/table,/turf/open/floor/plasteel/airless{icon_state = "floorscorched1"},/area/mine/abandoned) +"aM" = (/obj/structure/alien/weeds,/turf/open/floor/plasteel/airless{icon_state = "damaged3"},/area/mine/abandoned) +"aN" = (/obj/structure/alien/weeds,/turf/open/floor/plating/airless,/area/mine/abandoned) +"aO" = (/obj/item/stack/rods,/turf/open/floor/plating/airless,/area/mine/abandoned) +"aP" = (/obj/item/weapon/shard{icon_state = "small"},/turf/open/floor/plating/airless,/area/mine/abandoned) +"aQ" = (/turf/open/floor/plasteel/airless{icon_state = "floorscorched1"},/area/mine/abandoned) +"aR" = (/turf/open/floor/plasteel/airless{icon_state = "floorscorched2"},/area/mine/abandoned) +"aS" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating/airless,/area/mine/abandoned) +"aT" = (/obj/structure/alien/weeds/node,/turf/open/floor/plating/airless,/area/mine/abandoned) +"aU" = (/obj/item/clothing/mask/facehugger{icon_state = "facehugger_dead"; stat = 2},/obj/structure/alien/weeds,/turf/open/floor/plating/airless,/area/mine/abandoned) +"aV" = (/obj/item/weapon/shard,/obj/structure/lattice,/turf/open/space,/area/space) +"aW" = (/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/mine/abandoned) +"aX" = (/obj/structure/alien/weeds,/turf/open/floor/plasteel/airless{icon_state = "floorscorched2"},/area/mine/abandoned) +"aY" = (/obj/effect/decal/remains/xeno,/obj/structure/alien/weeds,/turf/open/floor/plating/airless,/area/mine/abandoned) +"aZ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating/airless,/area/mine/abandoned) +"ba" = (/obj/item/weapon/shard,/turf/open/floor/plating/airless,/area/mine/abandoned) +"bb" = (/obj/structure/lattice,/obj/item/weapon/shard{icon_state = "small"},/obj/item/clothing/mask/facehugger{icon_state = "facehugger_dead"; stat = 2},/turf/open/space,/area/mine/abandoned) +"bc" = (/obj/structure/lattice,/turf/open/space,/area/mine/abandoned) +"bd" = (/obj/machinery/door/airlock/hatch,/turf/open/floor/plasteel/airless,/area/mine/abandoned) +"be" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plating/airless,/area/mine/abandoned) +"bf" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plating/airless,/area/mine/abandoned) +"bg" = (/turf/open/floor/plasteel/airless{icon_state = "damaged4"},/area/mine/abandoned) +"bh" = (/obj/effect/decal/remains/xeno,/turf/open/floor/plasteel/airless{icon_state = "floorscorched2"},/area/mine/abandoned) +"bi" = (/obj/structure/alien/weeds,/turf/open/floor/plasteel/airless{icon_state = "floorscorched1"},/area/mine/abandoned) +"bj" = (/obj/effect/decal/remains/xeno,/obj/structure/alien/weeds,/turf/open/floor/plasteel/airless{icon_state = "damaged4"},/area/mine/abandoned) +"bk" = (/obj/structure/table,/turf/open/floor/plasteel/airless,/area/mine/abandoned) +"bl" = (/obj/structure/rack,/turf/open/floor/plasteel/airless,/area/mine/abandoned) +"bm" = (/obj/effect/decal/remains/human,/turf/open/floor/plasteel/airless{icon_state = "damaged5"},/area/mine/abandoned) +"bn" = (/obj/item/clothing/mask/facehugger{icon_state = "facehugger_dead"; stat = 2},/obj/structure/alien/weeds,/turf/open/floor/plasteel/airless{icon_state = "floorscorched1"},/area/mine/abandoned) +"bo" = (/obj/structure/alien/weeds/node,/turf/open/floor/plasteel/airless{icon_state = "floorscorched2"},/area/mine/abandoned) +"bp" = (/obj/structure/table,/obj/structure/alien/weeds,/turf/open/floor/plasteel/airless,/area/mine/abandoned) +"bq" = (/obj/item/weapon/shard,/turf/open/floor/plasteel/airless{icon_state = "floorscorched2"},/area/mine/abandoned) +"br" = (/obj/item/weapon/shard{icon_state = "small"},/obj/structure/alien/weeds,/turf/open/floor/plasteel/airless,/area/mine/abandoned) +"bs" = (/turf/open/floor/plasteel{icon_state = "dark"},/area/mine/abandoned) +"bt" = (/obj/structure/sink{pixel_y = 30},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/abandoned) +"bu" = (/obj/structure/table,/obj/item/weapon/reagent_containers/glass/bucket,/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/abandoned) +"bv" = (/obj/structure/table,/obj/item/weapon/paper/crumpled,/obj/item/seeds/cherry,/obj/item/weapon/reagent_containers/glass/bottle/nutrient/ez,/obj/item/weapon/reagent_containers/glass/bottle/nutrient/ez,/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/abandoned) +"bw" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/item/weapon/shard{icon_state = "medium"},/turf/open/floor/plating/airless,/area/mine/abandoned) +"bx" = (/obj/structure/alien/resin/membrane,/obj/structure/alien/weeds,/turf/open/floor/plating/airless,/area/mine/abandoned) +"by" = (/obj/item/clothing/mask/facehugger{icon_state = "facehugger_dead"; stat = 2},/obj/structure/alien/weeds,/turf/open/floor/plasteel/airless,/area/mine/abandoned) +"bz" = (/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/abandoned) +"bA" = (/turf/open/floor/plasteel{icon_state = "damaged2"},/area/mine/abandoned) +"bB" = (/obj/machinery/door/airlock/hatch,/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/abandoned) +"bC" = (/obj/structure/alien/weeds,/obj/structure/alien/weeds,/turf/open/floor/plasteel/airless,/area/mine/abandoned) +"bD" = (/obj/structure/alien/weeds/node,/turf/open/floor/plasteel/airless,/area/mine/abandoned) +"bE" = (/obj/effect/decal/remains/xeno,/obj/structure/alien/weeds,/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/mine/abandoned) +"bF" = (/turf/open/floor/plasteel{icon_state = "damaged3"},/area/mine/abandoned) +"bG" = (/obj/effect/decal/remains/human,/obj/item/clothing/suit/xenos,/obj/item/clothing/head/xenos,/turf/open/floor/plasteel{icon_state = "damaged2"},/area/mine/abandoned) +"bH" = (/obj/structure/table,/obj/item/stack/sheet/mineral/sandstone{amount = 30},/turf/open/floor/plasteel{icon_state = "damaged3"},/area/mine/abandoned) +"bI" = (/obj/structure/alien/weeds,/turf/open/floor/plasteel/airless{icon_state = "floorgrime"},/area/mine/abandoned) +"bJ" = (/obj/structure/alien/resin/wall,/turf/open/floor/plating/airless,/area/mine/abandoned) +"bK" = (/obj/effect/decal/remains/xeno,/turf/open/floor/plasteel/airless,/area/mine/abandoned) +"bL" = (/turf/closed/mineral/random/labormineral,/area/mine/unexplored) +"bM" = (/obj/structure/alien/weeds/node,/turf/open/floor/plasteel/airless{icon_state = "floorgrime"},/area/mine/abandoned) +"bN" = (/obj/structure/alien/weeds,/turf/open/floor/plasteel/airless{icon_state = "damaged4"},/area/mine/abandoned) +"bO" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plating/airless,/area/mine/abandoned) +"bP" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/shard,/turf/open/floor/plating/airless,/area/mine/abandoned) +"bQ" = (/obj/machinery/door/airlock/glass,/turf/open/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/abandoned) +"bR" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plating/airless,/area/mine/abandoned) +"bS" = (/turf/open/floor/plating/asteroid/airless,/area/mine/explored) +"bT" = (/obj/effect/decal/remains/human,/obj/structure/alien/weeds,/turf/open/floor/plasteel/airless,/area/mine/abandoned) +"bU" = (/obj/structure/alien/weeds/node,/turf/open/floor/plasteel/airless{icon_state = "damaged2"},/area/mine/abandoned) +"bV" = (/turf/open/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/abandoned) +"bW" = (/obj/structure/rack,/turf/open/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/abandoned) +"bX" = (/turf/open/floor/plasteel{icon_plating = "asteroid"; icon_state = "asteroid"; name = "Asteroid"},/area/mine/unexplored) +"bY" = (/obj/item/weapon/rack_parts,/turf/open/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/abandoned) +"bZ" = (/obj/structure/girder/displaced,/turf/open/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/abandoned) +"ca" = (/obj/item/clothing/under/soviet,/obj/item/clothing/head/ushanka,/turf/open/floor/plasteel{icon_plating = "asteroid"; icon_state = "asteroid"; name = "Asteroid"},/area/mine/unexplored) +"cb" = (/obj/effect/decal/remains/human,/turf/open/floor/plasteel{icon_plating = "asteroid"; icon_state = "asteroid"; name = "Asteroid"},/area/mine/unexplored) +"cc" = (/obj/structure/alien/resin/wall,/turf/open/floor/plasteel/airless{icon_state = "floorgrime"},/area/mine/abandoned) +"cd" = (/turf/open/floor/plasteel/airless{icon_state = "floorgrime"},/area/mine/abandoned) +"ce" = (/obj/structure/girder,/turf/open/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/abandoned) +"cf" = (/obj/item/weapon/storage/toolbox/syndicate,/obj/structure/alien/weeds/node,/turf/open/floor/plasteel/airless{icon_state = "floorscorched1"},/area/mine/abandoned) +"cg" = (/obj/effect/decal/remains/xeno,/obj/item/clothing/suit/space/syndicate/black/red,/obj/item/clothing/head/helmet/space/syndicate/black/red,/obj/structure/alien/weeds,/turf/open/floor/plasteel/airless{icon_state = "damaged4"},/area/mine/abandoned) +"ch" = (/obj/machinery/door/airlock/external{name = "External Airlock"; req_access_txt = "0"},/turf/open/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/abandoned) +"ci" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/grille/broken,/obj/item/weapon/shard{icon_state = "small"},/obj/item/stack/rods,/turf/open/floor/plating/airless,/area/mine/abandoned) +"cj" = (/turf/open/floor/plating/asteroid/airless,/area/mine/unexplored) +"ck" = (/obj/effect/spawner/lootdrop/crate_spawner,/turf/open/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/abandoned) +"cl" = (/turf/open/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/abandoned) +"cm" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/open/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/abandoned) +"cn" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille/broken,/obj/item/stack/rods,/obj/item/weapon/shard,/turf/open/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/abandoned) +"co" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/abandoned) +"cp" = (/turf/open/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 10},/area/mine/unexplored) +"cq" = (/turf/open/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/unexplored) +"cr" = (/turf/open/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 6},/area/mine/unexplored) +"cs" = (/turf/open/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/unexplored) +"ct" = (/turf/closed/wall/r_wall,/area/mine/laborcamp) +"cu" = (/obj/effect/spawner/lootdrop/crate_spawner,/turf/open/floor/plating/asteroid/airless/cave,/area/mine/unexplored) +"cv" = (/obj/structure/grille,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/window/reinforced/fulltile,/turf/open/floor/plating,/area/mine/laborcamp) +"cw" = (/obj/structure/rack{dir = 1},/obj/item/clothing/glasses/meson,/obj/item/device/flashlight,/obj/item/weapon/storage/bag/ore,/obj/machinery/atmospherics/pipe/simple{dir = 9},/obj/item/weapon/shovel{attack_verb = list("ineffectively hit"); desc = "A large tool for digging and moving dirt. Was modified with extra safety, making it ineffective as a weapon."; force = 1; name = "safety shovel"; pixel_x = -5; throwforce = 1},/obj/item/weapon/pickaxe{attack_verb = list("ineffectively hit"); desc = "A pickaxe designed to be only effective at digging rock and ore, very ineffective as a weapon."; force = 1; name = "safety pickaxe"; pixel_x = 5; throwforce = 1},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"cx" = (/obj/structure/rack{dir = 1},/obj/item/clothing/glasses/meson,/obj/item/device/flashlight,/obj/item/weapon/storage/bag/ore,/obj/machinery/atmospherics/pipe/simple{dir = 9},/obj/item/weapon/shovel{attack_verb = list("ineffectively hit"); desc = "A large tool for digging and moving dirt. Was modified with extra safety, making it ineffective as a weapon."; force = 1; name = "safety shovel"; pixel_x = -5; throwforce = 1},/obj/item/weapon/pickaxe{attack_verb = list("ineffectively hit"); desc = "A pickaxe designed to be only effective at digging rock and ore, very ineffective as a weapon."; force = 1; name = "safety pickaxe"; pixel_x = 5; throwforce = 1},/obj/machinery/camera{c_tag = "Labor Camp Storage"; dir = 8; network = list("Labor")},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"cy" = (/turf/closed/mineral/random/labormineral,/area/mine/explored) +"cz" = (/obj/machinery/light,/turf/open/floor/plating/asteroid/airless,/area/mine/north_outpost) +"cA" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/o2{pixel_x = 2; pixel_y = 2},/turf/open/floor/plasteel{icon_state = "white"},/area/mine/laborcamp) +"cB" = (/obj/structure/table,/obj/item/device/healthanalyzer,/obj/item/stack/medical/bruise_pack,/turf/open/floor/plasteel{icon_state = "white"},/area/mine/laborcamp) +"cC" = (/obj/structure/sign/bluecross_2{pixel_y = 32},/obj/structure/chair,/turf/open/floor/plasteel{icon_state = "white"},/area/mine/laborcamp) +"cD" = (/obj/machinery/camera{c_tag = "Labor Camp Medical"; dir = 8; network = list("Labor")},/obj/structure/bed,/obj/item/weapon/bedsheet/medical,/turf/open/floor/plasteel{icon_state = "white"},/area/mine/laborcamp) +"cE" = (/turf/closed/wall,/area/mine/laborcamp) +"cF" = (/obj/machinery/atmospherics/components/unary/vent_pump{on = 1},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"cG" = (/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"cH" = (/turf/closed/wall,/area/mine/explored) +"cI" = (/turf/open/floor/plating/asteroid,/area/mine/explored) +"cJ" = (/turf/closed/wall/rust,/area/mine/unexplored) +"cK" = (/obj/structure/lattice,/obj/structure/window/reinforced,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/open/space,/area/mine/north_outpost) +"cL" = (/obj/structure/lattice,/obj/structure/window/reinforced,/turf/open/space,/area/mine/explored) +"cM" = (/obj/structure/lattice,/obj/structure/window/reinforced,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/open/space,/area/mine/north_outpost) +"cN" = (/turf/closed/wall/rust,/area/mine/explored) +"cO" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/open/floor/plating/asteroid/airless,/area/mine/north_outpost) +"cP" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/open/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/mine/laborcamp) +"cQ" = (/obj/machinery/atmospherics/components/unary/vent_pump{on = 1},/turf/open/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/mine/laborcamp) +"cR" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=1-Storage"; location = "Sleeper"},/turf/open/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/mine/laborcamp) +"cS" = (/obj/machinery/light/small{dir = 4},/obj/structure/bed/roller,/turf/open/floor/plasteel{dir = 2; icon_state = "whiteblue"},/area/mine/laborcamp) +"cT" = (/obj/machinery/atmospherics/pipe/simple,/obj/structure/closet/crate/internals,/obj/item/weapon/tank/internals/emergency_oxygen,/obj/item/weapon/tank/internals/emergency_oxygen,/obj/item/weapon/tank/internals/emergency_oxygen,/obj/item/weapon/tank/internals/emergency_oxygen,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"cU" = (/obj/machinery/light/small,/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"cV" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=2-NMine"; location = "1-Storage"},/mob/living/simple_animal/bot/secbot/beepsky{desc = "Powered by tears and swet of laborer."; name = "Prison Ofitser"},/turf/open/floor/plasteel{icon_state = "asteroidfloor"},/area/mine/laborcamp) +"cW" = (/obj/structure/plasticflaps/mining,/turf/open/floor/plasteel{icon_state = "asteroidfloor"},/area/mine/laborcamp) +"cX" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=3-SMine"; location = "2-NMine"},/turf/open/floor/plasteel{icon_state = "asteroidfloor"},/area/mine/laborcamp) +"cY" = (/turf/open/floor/plating{icon_plating = "asteroidplating"; icon_state = "asteroidplating"},/area/mine/explored) +"cZ" = (/obj/effect/decal/remains/human,/turf/open/floor/plating/asteroid,/area/mine/explored) +"da" = (/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plasteel/airless,/area/mine/explored) +"db" = (/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plating/airless{icon_state = "platingdmg3"},/area/mine/explored) +"dc" = (/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plating/airless{icon_state = "platingdmg1"},/area/mine/explored) +"dd" = (/obj/structure/window/reinforced{dir = 1},/turf/open/floor/plating/airless,/area/mine/explored) +"de" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple,/obj/structure/window/reinforced/fulltile,/turf/open/floor/plating,/area/mine/laborcamp) +"df" = (/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Infirmary"; req_access_txt = "0"},/turf/open/floor/plasteel{icon_state = "whitebluefull"},/area/mine/laborcamp) +"dg" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/open/floor/plating,/area/mine/laborcamp) +"dh" = (/obj/machinery/atmospherics/pipe/simple,/turf/closed/wall,/area/mine/laborcamp) +"di" = (/obj/machinery/door/airlock{name = "Labor Camp Storage"},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"dj" = (/obj/structure/plasticflaps/mining,/turf/open/floor/plating{icon_plating = "asteroidplating"; icon_state = "asteroidplating"},/area/mine/explored) +"dk" = (/turf/closed/wall/r_wall,/area/mine/explored) +"dl" = (/obj/structure/girder/reinforced,/turf/open/floor/plating{icon_plating = "asteroidplating"; icon_state = "asteroidplating"},/area/mine/explored) +"dm" = (/obj/structure/window/reinforced,/turf/open/floor/plasteel/airless,/area/mine/explored) +"dn" = (/obj/structure/window/reinforced,/turf/open/floor/plating/airless,/area/mine/explored) +"do" = (/obj/structure/table,/obj/item/trash/plate,/obj/item/weapon/kitchen/fork,/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"dp" = (/obj/effect/decal/cleanable/cobweb2,/obj/structure/chair{dir = 8},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"dq" = (/obj/machinery/atmospherics/pipe/simple,/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"dr" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"ds" = (/obj/machinery/atmospherics/pipe/simple,/obj/item/device/radio/intercom{desc = "Talk through this. It looks like it has been modified to not broadcast."; dir = 2; name = "Prison Intercom (General)"; pixel_x = 0; pixel_y = 24; prison_radio = 1},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"dt" = (/obj/machinery/light{dir = 1},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"du" = (/turf/open/floor/plasteel{icon_state = "asteroidfloor"},/area/mine/explored) +"dv" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 1},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/open/space,/area/mine/north_outpost) +"dw" = (/obj/structure/lattice,/obj/structure/window/reinforced{dir = 1},/turf/open/space,/area/mine/explored) +"dx" = (/obj/structure/lattice,/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/open/space,/area/mine/north_outpost) +"dy" = (/turf/closed/wall,/area/mine/north_outpost) +"dz" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/closed/wall,/area/mine/north_outpost) +"dA" = (/obj/structure/chair{dir = 1},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"dB" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=7-Sleeper"; location = "6-Vending"},/mob/living/simple_animal/mouse,/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"dC" = (/obj/machinery/door/airlock{name = "Vending"},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"dD" = (/obj/machinery/atmospherics/pipe/simple/general/hidden{dir = 5},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"dE" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"dF" = (/obj/machinery/atmospherics/pipe/manifold{dir = 4},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"dG" = (/obj/machinery/door/poddoor/preopen{id = "Labor"; name = "labor camp blast door"},/obj/machinery/door/airlock{name = "Labor Camp External Access"},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"dH" = (/obj/structure/ore_box,/turf/open/floor/plating/asteroid,/area/mine/explored) +"dI" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/port_gen/pacman{anchored = 1},/turf/open/floor/plating,/area/mine/north_outpost) +"dJ" = (/obj/machinery/power/terminal{dir = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/light/small{dir = 1},/turf/open/floor/plating,/area/mine/north_outpost) +"dK" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/smes{charge = 5e+006},/turf/open/floor/plating,/area/mine/north_outpost) +"dL" = (/obj/machinery/atmospherics/components/unary/tank/air,/turf/open/floor/plating,/area/mine/north_outpost) +"dM" = (/obj/machinery/vending/sustenance,/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"dN" = (/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/components/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"dO" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/closed/wall,/area/mine/laborcamp) +"dP" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/machinery/airalarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"dQ" = (/obj/machinery/flasher{id = "Labor"; pixel_x = 0; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold{dir = 4},/turf/closed/wall,/area/mine/laborcamp) +"dR" = (/obj/machinery/conveyor_switch/oneway{id = "gulag"},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"dS" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/open/floor/plasteel{icon_state = "asteroidwarning"},/area/mine/laborcamp) +"dT" = (/turf/open/floor/plasteel{icon_state = "asteroidwarning"},/area/mine/explored) +"dU" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/open/floor/plating,/area/mine/north_outpost) +"dV" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/open/floor/plating,/area/mine/north_outpost) +"dW" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/item/weapon/storage/box/lights/bulbs,/obj/machinery/atmospherics/pipe/simple{dir = 6},/turf/open/floor/plating,/area/mine/north_outpost) +"dX" = (/obj/machinery/atmospherics/pipe/simple/general/hidden{dir = 9},/obj/machinery/meter,/turf/open/floor/plating,/area/mine/north_outpost) +"dY" = (/obj/machinery/light_switch{pixel_x = -27; pixel_y = 0},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"dZ" = (/obj/machinery/camera{c_tag = "Labor Camp Central"; network = list("Labor")},/obj/machinery/atmospherics/pipe/manifold{dir = 8},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"ea" = (/obj/machinery/atmospherics/pipe/simple/general/hidden{dir = 9},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"eb" = (/obj/machinery/conveyor{dir = 2; id = "gulag"},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"ec" = (/obj/machinery/conveyor{dir = 8; id = "gulag"},/obj/structure/plasticflaps/mining,/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"ed" = (/obj/machinery/conveyor{dir = 8; id = "gulag"},/turf/open/floor/plasteel{icon_state = "asteroidplating"},/area/mine/laborcamp) +"ee" = (/obj/machinery/mineral/unloading_machine{dir = 1; input_dir = 4; output_dir = 8},/turf/open/floor/plasteel{icon_state = "asteroidplating"},/area/mine/laborcamp) +"ef" = (/obj/structure/ore_box,/turf/open/floor/plasteel{icon_state = "asteroidwarning"; dir = 8},/area/mine/explored) +"eg" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/turf/open/floor/plating/asteroid,/area/mine/explored) +"eh" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/airlock/maintenance{name = "Mining Station Maintenance"; req_access_txt = "54"},/turf/open/floor/plating,/area/mine/north_outpost) +"ei" = (/obj/machinery/atmospherics/pipe/simple,/turf/closed/wall,/area/mine/north_outpost) +"ej" = (/obj/machinery/door/airlock/glass_security{name = "Labor Camp Shuttle Security Airlock"; req_access_txt = "2"},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"ek" = (/obj/machinery/light/small{dir = 1},/obj/machinery/button/door{id = "Labor"; name = "Labor Camp Lockdown"; pixel_x = 0; pixel_y = 28; req_access_txt = "2"},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"el" = (/obj/machinery/door/poddoor/preopen{id = "Labor"; name = "labor camp blast door"},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"em" = (/turf/open/floor/plasteel,/area/mine/laborcamp) +"en" = (/obj/machinery/mineral/processing_unit_console{machinedir = 6},/turf/closed/wall,/area/mine/laborcamp) +"eo" = (/obj/structure/plasticflaps,/obj/machinery/conveyor{dir = 2; id = "gulag"},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"ep" = (/obj/machinery/camera{c_tag = "Labor Camp External"; dir = 4; network = list("Labor")},/turf/open/floor/plasteel{icon_state = "asteroidwarning"; dir = 1},/area/mine/explored) +"eq" = (/turf/open/floor/plasteel{icon_state = "asteroidwarning"; dir = 1},/area/mine/explored) +"er" = (/obj/machinery/conveyor_switch/oneway{id = "gulag"},/turf/open/floor/plasteel{icon_state = "asteroidwarning"; dir = 1},/area/mine/explored) +"es" = (/obj/effect/decal/cleanable/blood/old,/turf/open/floor/plating/asteroid,/area/mine/explored) +"et" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/open/floor/plating,/area/mine/north_outpost) +"eu" = (/obj/structure/table,/obj/item/weapon/pickaxe,/turf/open/floor/plasteel,/area/mine/north_outpost) +"ev" = (/obj/machinery/newscaster{pixel_y = 32},/turf/open/floor/plasteel,/area/mine/north_outpost) +"ew" = (/obj/structure/table,/obj/machinery/microwave,/turf/open/floor/plasteel,/area/mine/north_outpost) +"ex" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/open/floor/plasteel,/area/mine/north_outpost) +"ey" = (/obj/machinery/atmospherics/pipe/simple,/obj/machinery/airalarm{pixel_y = 24},/obj/machinery/light{dir = 1},/turf/open/floor/plasteel,/area/mine/north_outpost) +"ez" = (/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/turf/open/floor/plasteel,/area/mine/north_outpost) +"eA" = (/turf/open/floor/plasteel,/area/mine/north_outpost) +"eB" = (/turf/open/floor/plasteel{dir = 4; icon_state = "loadingarea"},/area/mine/north_outpost) +"eC" = (/obj/machinery/mineral/unloading_machine{dir = 2; output_dir = 4},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/north_outpost) +"eD" = (/obj/machinery/conveyor{dir = 4; id = "mining_north"},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/north_outpost) +"eE" = (/obj/machinery/disposal/deliveryChute{dir = 8},/obj/structure/disposalpipe/trunk,/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/north_outpost) +"eF" = (/obj/machinery/mineral/stacking_unit_console{machinedir = 2},/turf/closed/wall,/area/mine/laborcamp) +"eG" = (/obj/machinery/mineral/processing_unit{dir = 1; output_dir = 2},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"eH" = (/obj/machinery/light/small{dir = 4},/turf/open/floor/plating/asteroid,/area/mine/laborcamp) +"eI" = (/obj/machinery/light{dir = 1},/turf/open/floor/plating/asteroid/airless,/area/mine/north_outpost) +"eJ" = (/obj/structure/table,/obj/item/weapon/shovel,/turf/open/floor/plasteel,/area/mine/north_outpost) +"eK" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets,/turf/open/floor/plasteel,/area/mine/north_outpost) +"eL" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/open/floor/plasteel,/area/mine/north_outpost) +"eM" = (/obj/machinery/atmospherics/pipe/simple,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/open/floor/plasteel,/area/mine/north_outpost) +"eN" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; name = "Mining North Outpost APC"; pixel_x = 26; pixel_y = 0},/obj/machinery/conveyor_switch{id = "mining_north"},/obj/machinery/camera{c_tag = "North Outpost"; dir = 8; network = list("MINE")},/turf/open/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/north_outpost) +"eO" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/closed/wall,/area/mine/north_outpost) +"eP" = (/obj/machinery/conveyor{backwards = 2; dir = 2; forwards = 1; id = "mining_north"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/plasticflaps/mining,/turf/open/floor/plasteel,/area/mine/north_outpost) +"eQ" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/closed/wall,/area/mine/north_outpost) +"eR" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/closed/wall,/area/mine/north_outpost) +"eS" = (/obj/machinery/computer/shuttle/labor/one_way,/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"eT" = (/obj/machinery/conveyor{dir = 8; id = "gulag"},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=6-Vending"; location = "5-Central"},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"eU" = (/obj/machinery/mineral/stacking_machine{dir = 1; input_dir = 4},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"eV" = (/obj/machinery/conveyor{dir = 8; id = "gulag"},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"eW" = (/obj/machinery/conveyor{dir = 10; icon_state = "conveyor0"; id = "gulag"},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp) +"eX" = (/obj/structure/closet/crate,/turf/open/floor/plasteel{icon_state = "asteroidfloor"},/area/mine/explored) +"eY" = (/obj/item/stack/sheet/metal{amount = 5},/obj/structure/closet/crate,/turf/open/floor/plasteel{icon_state = "asteroidfloor"},/area/mine/explored) +"eZ" = (/obj/structure/table,/obj/item/weapon/storage/backpack/satchel,/obj/item/clothing/glasses/meson,/obj/machinery/light/small{dir = 8},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/open/floor/plasteel,/area/mine/north_outpost) +"fa" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/open/floor/plasteel,/area/mine/north_outpost) +"fb" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/open/floor/plasteel,/area/mine/north_outpost) +"fc" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/machinery/door/airlock/glass_mining{name = "Break Room"; req_access_txt = "54"},/turf/open/floor/plasteel,/area/mine/north_outpost) +"fd" = (/obj/machinery/atmospherics/pipe/manifold{dir = 4},/turf/open/floor/plasteel,/area/mine/north_outpost) +"fe" = (/turf/open/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/north_outpost) +"ff" = (/obj/machinery/door/window/northleft{dir = 8; name = "Pneumatic Tube Access"},/obj/machinery/disposal/deliveryChute{dir = 8; pixel_x = 8; pixel_y = 0},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/disposalpipe/trunk{dir = 4},/turf/open/floor/plasteel{icon_state = "bot"},/area/mine/north_outpost) +"fg" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/closed/wall,/area/mine/north_outpost) +"fh" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/disposalpipe/segment,/turf/open/floor/plating,/area/mine/explored) +"fi" = (/turf/open/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/north_outpost) +"fj" = (/obj/machinery/conveyor_switch{id = "mining_north"},/turf/open/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/north_outpost) +"fk" = (/obj/machinery/light/small{dir = 1},/turf/open/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/north_outpost) +"fl" = (/turf/closed/wall/r_wall,/area/mine/laborcamp/security) +"fm" = (/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp/security) +"fn" = (/obj/machinery/camera{c_tag = "Labor Camp Security Hallway"; dir = 8; network = list("Labor"); pixel_x = 0; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp/security) +"fo" = (/obj/machinery/atmospherics/pipe/simple,/turf/closed/wall,/area/mine/laborcamp/security) +"fp" = (/obj/structure/plasticflaps/mining,/turf/open/floor/plating,/area/mine/laborcamp/security) +"fq" = (/turf/closed/wall,/area/mine/laborcamp/security) +"fr" = (/obj/structure/girder,/turf/open/floor/plating{icon_plating = "asteroidplating"; icon_state = "asteroidplating"},/area/mine/laborcamp/security) +"fs" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical,/turf/open/floor/plasteel,/area/mine/north_outpost) +"ft" = (/obj/structure/chair{dir = 8},/turf/open/floor/plasteel,/area/mine/north_outpost) +"fu" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 1; on = 1},/turf/open/floor/plasteel,/area/mine/north_outpost) +"fv" = (/obj/structure/rack,/turf/open/floor/plasteel{icon_state = "bot"},/area/mine/north_outpost) +"fw" = (/obj/structure/disposalpipe/segment,/turf/closed/wall,/area/mine/north_outpost) +"fx" = (/obj/docking_port/stationary{dir = 8; dwidth = 2; height = 5; id = "laborcamp_away"; name = "labor camp"; width = 9},/turf/open/space,/area/space) +"fy" = (/obj/machinery/door/airlock/glass_security{name = "Labor Camp Shuttle Prisoner Airlock"; req_access_txt = "0"},/turf/open/floor/plasteel,/area/mine/laborcamp/security) +"fz" = (/obj/machinery/door/airlock/glass_security{name = "Labor Camp Shuttle Prisoner Airlock"; req_access_txt = "0"},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp/security) +"fA" = (/obj/machinery/atmospherics/pipe/simple{dir = 6},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/laborcamp/security) +"fB" = (/obj/machinery/atmospherics/pipe/manifold,/obj/machinery/door/airlock/glass_security{name = "Labor Camp Backroom"; req_access_txt = "2"},/turf/open/floor/plating,/area/mine/laborcamp/security) +"fC" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/open/floor/plating{icon_state = "warnplate"; dir = 8},/area/mine/laborcamp/security) +"fD" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/machinery/light/small{dir = 1},/turf/open/floor/plating,/area/mine/laborcamp/security) +"fE" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/open/floor/plating{dir = 2; icon_state = "warnplate"},/area/mine/laborcamp/security) +"fF" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/apc{dir = 1; name = "Labor Camp APC"; pixel_y = 24},/obj/machinery/atmospherics/pipe/simple{dir = 10},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=5-Central"; location = "4-Maint"},/turf/open/floor/plating,/area/mine/laborcamp) +"fG" = (/turf/open/floor/plating{icon_state = "warnplate"; dir = 4},/area/mine/laborcamp/security) +"fH" = (/obj/machinery/door/airlock/glass_security{name = "Labor Camp External Access"; req_access_txt = "2"},/turf/open/floor/plating,/area/mine/laborcamp/security) +"fI" = (/obj/structure/reagent_dispensers/fueltank,/turf/open/floor/plasteel,/area/mine/north_outpost) +"fJ" = (/obj/machinery/recharge_station,/turf/open/floor/plasteel,/area/mine/north_outpost) +"fK" = (/obj/structure/tank_dispenser/oxygen,/turf/open/floor/plasteel,/area/mine/north_outpost) +"fL" = (/obj/machinery/door/airlock/glass_security{name = "Labor Camp Monitoring"; req_access_txt = "2"},/turf/open/floor/plasteel,/area/mine/laborcamp/security) +"fM" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/closed/wall,/area/mine/laborcamp/security) +"fN" = (/obj/machinery/door/airlock/maintenance{name = "Labor Camp Maintenance"; req_access_txt = "2"},/turf/open/floor/plating,/area/mine/laborcamp/security) +"fO" = (/obj/structure/plasticflaps/mining,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple,/turf/open/floor/plating,/area/mine/laborcamp/security) +"fP" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/open/floor/plasteel{icon_state = "asteroidfloor"},/area/mine/explored) +"fQ" = (/obj/machinery/door/airlock/external{name = "Mining North Outpost Airlock"; req_access_txt = "54"},/turf/open/floor/plasteel,/area/mine/north_outpost) +"fR" = (/obj/machinery/vending/coffee,/turf/open/floor/plasteel,/area/mine/laborcamp/security) +"fS" = (/turf/open/floor/plasteel,/area/mine/laborcamp/security) +"fT" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/light_switch{pixel_y = 28},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/open/floor/plasteel,/area/mine/laborcamp/security) +"fU" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plasteel,/area/mine/laborcamp/security) +"fV" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{dir = 4; name = "Labor Camp Security APC"; pixel_x = 24; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple,/obj/machinery/camera{c_tag = "Labor Camp Monitoring"; network = list("Labor")},/obj/machinery/light_switch{pixel_y = 28},/turf/open/floor/plasteel,/area/mine/laborcamp/security) +"fW" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/closed/wall,/area/mine/laborcamp/security) +"fX" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/open/floor/plating,/area/mine/laborcamp/security) +"fY" = (/obj/machinery/light/small{dir = 1},/obj/item/weapon/storage/box/lights/mixed,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plating,/area/mine/laborcamp/security) +"fZ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/open/floor/plating{icon_state = "warnplate"; dir = 1},/area/mine/laborcamp/security) +"ga" = (/obj/machinery/atmospherics/pipe/manifold{dir = 8},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/open/floor/plating,/area/mine/laborcamp/security) +"gb" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/open/floor/plating,/area/mine/laborcamp/security) +"gc" = (/obj/structure/plasticflaps/mining,/turf/closed/wall,/area/mine/laborcamp/security) +"gd" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=4-Maint"; location = "3-SMine"},/turf/open/floor/plasteel{icon_state = "asteroidfloor"},/area/mine/laborcamp) +"ge" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/structure/closet/crate,/turf/open/floor/plasteel{icon_state = "asteroidfloor"},/area/mine/explored) +"gf" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 8; on = 1},/obj/structure/closet/crate,/turf/open/floor/plating/asteroid,/area/mine/explored) +"gg" = (/obj/machinery/mech_bay_recharge_port,/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/north_outpost) +"gh" = (/turf/open/floor/mech_bay_recharge_floor/airless,/area/mine/north_outpost) +"gi" = (/obj/machinery/computer/mech_bay_power_console,/turf/open/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/north_outpost) +"gj" = (/obj/machinery/light/small{dir = 8},/turf/open/floor/plasteel,/area/mine/north_outpost) +"gk" = (/obj/structure/closet/emcloset,/turf/open/floor/plasteel,/area/mine/north_outpost) +"gl" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/closed/wall/r_wall,/area/mine/laborcamp/security) +"gm" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/open/floor/plasteel,/area/mine/laborcamp/security) +"gn" = (/obj/structure/chair/office/dark,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel,/area/mine/laborcamp/security) +"go" = (/obj/machinery/button/door{id = "Labor"; name = "Labor Camp Lockdown"; pixel_x = 28; pixel_y = 7; req_access_txt = "2"},/obj/machinery/button/flasher{id = "Labor"; pixel_x = 26; pixel_y = -3},/obj/machinery/atmospherics/components/unary/vent_pump{dir = 1; on = 1},/turf/open/floor/plasteel,/area/mine/laborcamp/security) +"gp" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/open/floor/plating,/area/mine/laborcamp/security) +"gq" = (/turf/open/floor/plating,/area/mine/laborcamp/security) +"gr" = (/obj/machinery/atmospherics/pipe/manifold{dir = 8},/obj/machinery/meter,/turf/open/floor/plating,/area/mine/laborcamp/security) +"gs" = (/obj/machinery/atmospherics/components/unary/tank/air{dir = 8},/turf/open/floor/plating,/area/mine/laborcamp/security) +"gt" = (/turf/open/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/north_outpost) +"gu" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = -32},/turf/open/floor/plasteel{icon_state = "warning"},/area/mine/north_outpost) +"gv" = (/turf/open/floor/plasteel{icon_state = "warning"},/area/mine/north_outpost) +"gw" = (/obj/structure/ore_box,/turf/open/floor/plasteel{icon_state = "warning"},/area/mine/north_outpost) +"gx" = (/obj/structure/grille,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/window/reinforced/fulltile,/turf/open/floor/plating,/area/mine/laborcamp/security) +"gy" = (/obj/structure/table,/obj/machinery/recharger,/turf/open/floor/plasteel,/area/mine/laborcamp/security) +"gz" = (/obj/machinery/computer/secure_data,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/open/floor/plasteel,/area/mine/laborcamp/security) +"gA" = (/obj/machinery/computer/security{name = "Labor Camp Monitoring"; network = list("Labor")},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/open/floor/plasteel,/area/mine/laborcamp/security) +"gB" = (/obj/machinery/computer/prisoner,/obj/machinery/airalarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/open/floor/plasteel,/area/mine/laborcamp/security) +"gC" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/turf/open/floor/plasteel,/area/mine/laborcamp/security) +"gD" = (/obj/machinery/space_heater,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/open/floor/plating,/area/mine/laborcamp/security) +"gE" = (/obj/machinery/power/port_gen/pacman{anchored = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/open/floor/plating,/area/mine/laborcamp/security) +"gF" = (/obj/machinery/portable_atmospherics/canister/air,/turf/open/floor/plating,/area/mine/laborcamp/security) +"gG" = (/obj/machinery/atmospherics/pipe/simple/general/hidden{dir = 5},/obj/structure/reagent_dispensers/fueltank,/turf/open/floor/plating,/area/mine/laborcamp/security) +"gH" = (/obj/machinery/door/airlock/external{name = "Mining North Outpost Airlock"; req_access_txt = "54"},/turf/open/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/north_outpost) +"gI" = (/obj/structure/disposalpipe/segment,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/open/floor/plating,/area/mine/explored) +"gJ" = (/obj/structure/grille,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/window/reinforced/fulltile,/turf/open/floor/plating,/area/mine/laborcamp/security) +"gK" = (/obj/structure/grille,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/window/reinforced/fulltile,/turf/open/floor/plating,/area/mine/laborcamp/security) +"gL" = (/obj/structure/grille,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable,/obj/structure/window/reinforced/fulltile,/turf/open/floor/plating,/area/mine/laborcamp/security) +"gM" = (/turf/open/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 10},/area/mine/explored) +"gN" = (/turf/open/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/explored) +"gO" = (/turf/open/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 6},/area/mine/explored) +"gP" = (/obj/machinery/light{dir = 1},/obj/structure/disposalpipe/segment,/turf/open/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/north_outpost) +"gQ" = (/obj/structure/disposalpipe/segment,/turf/open/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/explored) +"gR" = (/turf/open/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 5},/area/mine/explored) +"gS" = (/obj/structure/disposalpipe/segment,/turf/open/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/explored) +"gT" = (/obj/structure/disposalpipe/segment,/turf/open/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) +"gU" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/open/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) +"gV" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/open/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) +"gW" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/open/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) +"gX" = (/turf/open/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 9},/area/mine/explored) +"gY" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/open/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) +"gZ" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/open/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) +"ha" = (/obj/structure/ore_box,/turf/open/floor/plating/asteroid/airless,/area/mine/explored) +"hb" = (/turf/closed/wall/r_wall,/area/mine/maintenance) +"hc" = (/turf/open/floor/bluegrid,/area/mine/maintenance) +"hd" = (/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/power/apc{dir = 1; name = "Mining Communications APC"; pixel_x = 1; pixel_y = 25},/turf/open/floor/plasteel{icon_state = "dark"},/area/mine/maintenance) +"he" = (/obj/machinery/telecomms/relay/preset/mining,/obj/machinery/light/small{dir = 1},/turf/open/floor/plasteel{icon_state = "vault"; dir = 1},/area/mine/maintenance) +"hf" = (/obj/machinery/airalarm{pixel_y = 24},/obj/machinery/atmospherics/components/unary/vent_pump{on = 1},/turf/open/floor/plasteel{icon_state = "dark"},/area/mine/maintenance) +"hg" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/open/floor/bluegrid,/area/mine/maintenance) +"hh" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple{dir = 6},/turf/open/floor/plasteel{icon_state = "dark"},/area/mine/maintenance) +"hi" = (/obj/machinery/atmospherics/pipe/simple/general/hidden{dir = 9},/obj/machinery/light_switch{pixel_y = -25},/turf/open/floor/bluegrid,/area/mine/maintenance) +"hj" = (/obj/machinery/camera{c_tag = "Communications Relay"; dir = 8; network = list("MINE")},/turf/open/floor/bluegrid,/area/mine/maintenance) +"hk" = (/turf/open/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/west_outpost) +"hl" = (/turf/open/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) +"hm" = (/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/vulgaris,/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/vulgaris,/turf/open/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) +"hn" = (/obj/item/weapon/reagent_containers/food/snacks/grown/mushroom/libertycap,/turf/open/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) +"ho" = (/turf/closed/wall,/area/mine/living_quarters) +"hp" = (/obj/machinery/door/airlock/maintenance{name = "Mining Station Communications"; req_access_txt = "48"},/obj/machinery/atmospherics/pipe/simple,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel{icon_state = "vault"},/area/mine/maintenance) +"hq" = (/obj/machinery/mech_bay_recharge_port,/obj/structure/window/reinforced{dir = 8},/turf/open/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/west_outpost) +"hr" = (/turf/open/floor/mech_bay_recharge_floor/airless,/area/mine/west_outpost) +"hs" = (/obj/machinery/computer/mech_bay_power_console,/obj/structure/window/reinforced{dir = 4},/turf/open/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/west_outpost) +"ht" = (/obj/item/clothing/under/rank/miner,/obj/effect/decal/remains/human,/turf/open/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) +"hu" = (/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/vulgaris,/turf/open/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/explored) +"hv" = (/obj/structure/bed,/obj/item/weapon/bedsheet/brown,/turf/open/floor/carpet,/area/mine/living_quarters) +"hw" = (/obj/machinery/light/small{dir = 4},/obj/machinery/button/door{id = "miningdorm1"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/turf/open/floor/carpet,/area/mine/living_quarters) +"hx" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple,/turf/open/floor/plasteel,/area/mine/living_quarters) +"hy" = (/turf/closed/wall,/area/mine/west_outpost) +"hz" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/open/floor/plating,/area/mine/west_outpost) +"hA" = (/obj/machinery/light/small{dir = 8},/turf/open/floor/plating/asteroid/airless,/area/mine/west_outpost) +"hB" = (/obj/structure/table,/turf/open/floor/carpet,/area/mine/living_quarters) +"hC" = (/turf/open/floor/carpet,/area/mine/living_quarters) +"hD" = (/obj/machinery/door/airlock{id_tag = "miningdorm1"; name = "Room 1"},/turf/open/floor/plasteel,/area/mine/living_quarters) +"hE" = (/obj/structure/table,/obj/item/weapon/pickaxe,/turf/open/floor/plasteel,/area/mine/west_outpost) +"hF" = (/obj/machinery/newscaster{pixel_y = 32},/turf/open/floor/plasteel,/area/mine/west_outpost) +"hG" = (/obj/structure/table,/obj/machinery/microwave,/turf/open/floor/plasteel,/area/mine/west_outpost) +"hH" = (/obj/machinery/recharge_station,/turf/open/floor/plasteel{icon_state = "bot"},/area/mine/west_outpost) +"hI" = (/obj/structure/tank_dispenser/oxygen,/turf/open/floor/plasteel{icon_state = "bot"},/area/mine/west_outpost) +"hJ" = (/obj/structure/rack,/obj/machinery/light{dir = 1},/turf/open/floor/plasteel{icon_state = "bot"},/area/mine/west_outpost) +"hK" = (/obj/structure/rack,/turf/open/floor/plasteel{icon_state = "bot"},/area/mine/west_outpost) +"hL" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/trunk,/obj/machinery/door/window/northleft{dir = 2; name = "Pneumatic Tube Access"},/obj/machinery/disposal/deliveryChute{pixel_y = 5},/turf/open/floor/plasteel{icon_state = "bot"},/area/mine/west_outpost) +"hM" = (/turf/open/floor/plasteel,/area/mine/west_outpost) +"hN" = (/turf/open/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/west_outpost) +"hO" = (/obj/structure/grille,/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/obj/structure/window/reinforced/fulltile,/turf/open/floor/plating,/area/mine/west_outpost) +"hP" = (/turf/open/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 5},/area/mine/west_outpost) +"hQ" = (/obj/structure/disposalpipe/trunk,/obj/structure/disposaloutlet{dir = 1},/turf/open/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored) +"hR" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple,/obj/machinery/light/small{dir = 4},/turf/open/floor/plasteel,/area/mine/living_quarters) +"hS" = (/obj/structure/table,/obj/item/weapon/shovel,/turf/open/floor/plasteel,/area/mine/west_outpost) +"hT" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets,/turf/open/floor/plasteel,/area/mine/west_outpost) +"hU" = (/turf/open/floor/plasteel{dir = 1; icon_state = "warning"},/area/mine/west_outpost) +"hV" = (/obj/structure/disposalpipe/segment,/turf/open/floor/plasteel{dir = 1; icon_state = "warning"},/area/mine/west_outpost) +"hW" = (/obj/machinery/door/airlock/external{name = "Mining West Outpost Airlock"; req_access_txt = "54"},/turf/open/floor/plasteel,/area/mine/west_outpost) +"hX" = (/obj/machinery/door/airlock/external{name = "Mining West Outpost Airlock"; req_access_txt = "54"},/turf/open/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/west_outpost) +"hY" = (/turf/open/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 4},/area/mine/west_outpost) +"hZ" = (/obj/structure/disposalpipe/segment,/turf/closed/mineral,/area/mine/explored) +"ia" = (/obj/machinery/light/small{dir = 4},/obj/machinery/button/door{id = "miningdorm2"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/turf/open/floor/carpet,/area/mine/living_quarters) +"ib" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/open/floor/plating,/area/mine/living_quarters) +"ic" = (/obj/structure/table,/obj/item/weapon/storage/backpack/satchel,/obj/item/clothing/glasses/meson,/obj/machinery/light/small{dir = 8},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/open/floor/plasteel,/area/mine/west_outpost) +"id" = (/obj/machinery/door/airlock/glass_mining{name = "Break Room"; req_access_txt = "54"},/turf/open/floor/plasteel,/area/mine/west_outpost) +"ie" = (/obj/structure/disposalpipe/segment,/turf/open/floor/plasteel,/area/mine/west_outpost) +"if" = (/obj/structure/closet/emcloset,/turf/open/floor/plasteel,/area/mine/west_outpost) +"ig" = (/obj/structure/ore_box,/turf/open/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/west_outpost) +"ih" = (/turf/open/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 6},/area/mine/west_outpost) +"ii" = (/obj/machinery/door/airlock{id_tag = "miningdorm2"; name = "Room 2"},/turf/open/floor/plasteel,/area/mine/living_quarters) +"ij" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical,/turf/open/floor/plasteel,/area/mine/west_outpost) +"ik" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/open/floor/plasteel,/area/mine/west_outpost) +"il" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/structure/window/reinforced/fulltile,/turf/open/floor/plating,/area/mine/west_outpost) +"im" = (/obj/machinery/atmospherics/pipe/manifold{dir = 1},/turf/open/floor/plasteel,/area/mine/west_outpost) +"in" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/open/floor/plasteel,/area/mine/west_outpost) +"io" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 8; on = 1},/turf/open/floor/plasteel,/area/mine/west_outpost) +"ip" = (/obj/machinery/conveyor_switch{id = "mining_west"},/obj/structure/disposalpipe/segment,/turf/open/floor/plasteel,/area/mine/west_outpost) +"iq" = (/obj/structure/disposalpipe/segment,/obj/structure/sign/deathsposal,/turf/closed/wall,/area/mine/living_quarters) +"ir" = (/obj/structure/reagent_dispensers/fueltank,/turf/open/floor/plasteel,/area/mine/west_outpost) +"is" = (/obj/structure/chair{dir = 1},/turf/open/floor/plasteel,/area/mine/west_outpost) +"it" = (/obj/machinery/power/apc{dir = 2; name = "Mining West Outpost APC"; pixel_x = 1; pixel_y = -23},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/atmospherics/pipe/simple,/turf/open/floor/plasteel,/area/mine/west_outpost) +"iu" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/camera{c_tag = "West Outpost"; dir = 1; network = list("MINE")},/turf/open/floor/plasteel,/area/mine/west_outpost) +"iv" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/open/floor/plasteel,/area/mine/west_outpost) +"iw" = (/obj/machinery/airalarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/open/floor/plasteel,/area/mine/west_outpost) +"ix" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/open/floor/plasteel{dir = 4; icon_state = "loadingarea"},/area/mine/west_outpost) +"iy" = (/obj/machinery/mineral/unloading_machine{dir = 2; output_dir = 4},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/west_outpost) +"iz" = (/obj/machinery/conveyor{dir = 4; id = "mining_west"},/obj/machinery/light/small{dir = 1},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/west_outpost) +"iA" = (/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/disposal/deliveryChute{dir = 8},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/west_outpost) +"iB" = (/obj/structure/grille,/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/window/reinforced/fulltile,/turf/open/floor/plating,/area/mine/west_outpost) +"iC" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/open/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 8},/area/mine/explored) +"iD" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/open/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 4},/area/mine/explored) +"iE" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/open/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/unexplored) +"iF" = (/obj/structure/table,/obj/machinery/microwave{pixel_y = 6},/turf/open/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) +"iG" = (/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 0; pixel_y = 32},/turf/open/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) +"iH" = (/obj/machinery/computer/arcade,/turf/open/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) +"iI" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 1},/turf/open/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) +"iJ" = (/obj/machinery/vending/cigarette,/obj/machinery/newscaster{pixel_y = 32},/turf/open/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) +"iK" = (/obj/machinery/vending/snack,/turf/open/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) +"iL" = (/obj/machinery/light/small{dir = 4},/obj/machinery/button/door{id = "miningdorm3"; name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/turf/open/floor/carpet,/area/mine/living_quarters) +"iM" = (/obj/machinery/atmospherics/pipe/simple,/turf/closed/wall,/area/mine/west_outpost) +"iN" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/closed/wall,/area/mine/west_outpost) +"iO" = (/obj/machinery/door/airlock/maintenance{name = "Mining Station Maintenance"; req_access_txt = "54"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/open/floor/plating,/area/mine/west_outpost) +"iP" = (/obj/machinery/conveyor{backwards = 2; dir = 2; forwards = 1; id = "mining_west"},/obj/structure/plasticflaps/mining,/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/open/floor/plasteel,/area/mine/west_outpost) +"iQ" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/closed/wall,/area/mine/west_outpost) +"iR" = (/obj/structure/table,/obj/machinery/reagentgrinder,/turf/open/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) +"iS" = (/turf/open/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) +"iT" = (/obj/structure/chair,/turf/open/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) +"iU" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 31},/turf/open/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) +"iV" = (/obj/machinery/door/airlock{id_tag = "miningdorm3"; name = "Room 3"},/turf/open/floor/plasteel,/area/mine/living_quarters) +"iW" = (/obj/structure/ore_box,/turf/open/floor/plasteel,/area/mine/living_quarters) +"iX" = (/obj/machinery/recharge_station,/obj/machinery/light/small{dir = 1},/turf/open/floor/plasteel,/area/mine/living_quarters) +"iY" = (/obj/structure/closet/secure_closet/miner,/turf/open/floor/plasteel,/area/mine/living_quarters) +"iZ" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/closed/wall,/area/mine/eva) +"ja" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/closed/wall,/area/mine/eva) +"jb" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/open/floor/plating,/area/mine/eva) +"jc" = (/turf/closed/wall,/area/mine/eva) +"jd" = (/obj/machinery/atmospherics/pipe/simple,/obj/machinery/meter,/turf/open/floor/plating,/area/mine/west_outpost) +"je" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/open/floor/plating,/area/mine/west_outpost) +"jf" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/open/floor/plating,/area/mine/west_outpost) +"jg" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/obj/item/weapon/storage/box/lights/bulbs,/turf/open/floor/plating,/area/mine/west_outpost) +"jh" = (/turf/open/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/explored) +"ji" = (/obj/machinery/conveyor_switch{id = "mining_west"},/obj/machinery/light/small{dir = 1},/turf/open/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 1},/area/mine/explored) +"jj" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/beer,/obj/item/weapon/reagent_containers/food/drinks/beer,/turf/open/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) +"jk" = (/obj/structure/chair{dir = 4},/turf/open/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) +"jl" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/beer,/turf/open/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) +"jm" = (/obj/structure/chair{dir = 8},/turf/open/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) +"jn" = (/obj/machinery/light{dir = 4},/turf/open/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) +"jo" = (/turf/open/floor/plasteel,/area/mine/living_quarters) +"jp" = (/obj/machinery/atmospherics/components/unary/vent_pump{on = 1},/turf/open/floor/plasteel,/area/mine/living_quarters) +"jq" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/table,/obj/item/weapon/pickaxe,/turf/open/floor/plasteel,/area/mine/eva) +"jr" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/machinery/suit_storage_unit/mining/eva,/turf/open/floor/plasteel,/area/mine/eva) +"js" = (/obj/machinery/suit_storage_unit/mining/eva,/turf/open/floor/plasteel,/area/mine/eva) +"jt" = (/obj/machinery/light,/turf/open/floor/plating/asteroid/airless,/area/mine/explored) +"ju" = (/obj/machinery/atmospherics/components/unary/tank/air{dir = 1; initialize_directions = 0; level = 1},/turf/open/floor/plating,/area/mine/west_outpost) +"jv" = (/obj/machinery/power/port_gen/pacman{anchored = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/open/floor/plating,/area/mine/west_outpost) +"jw" = (/obj/machinery/power/terminal{dir = 4},/obj/machinery/light/small,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/open/floor/plating,/area/mine/west_outpost) +"jx" = (/obj/structure/cable,/obj/machinery/power/smes{charge = 5e+006},/turf/open/floor/plating,/area/mine/west_outpost) +"jy" = (/obj/structure/table,/obj/item/weapon/storage/box/donkpockets,/turf/open/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) +"jz" = (/obj/machinery/camera{c_tag = "Crew Area"; dir = 1; network = list("MINE")},/turf/open/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) +"jA" = (/obj/item/weapon/cigbutt,/turf/open/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) +"jB" = (/obj/machinery/airalarm{pixel_y = 24},/turf/open/floor/plasteel,/area/mine/living_quarters) +"jC" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/open/floor/plasteel,/area/mine/living_quarters) +"jD" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/open/floor/plasteel,/area/mine/living_quarters) +"jE" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple,/turf/open/floor/plasteel,/area/mine/living_quarters) +"jF" = (/obj/machinery/mineral/equipment_vendor,/turf/open/floor/plasteel,/area/mine/living_quarters) +"jG" = (/obj/machinery/camera{c_tag = "Storage Room"; dir = 1; network = list("MINE")},/turf/open/floor/plasteel,/area/mine/living_quarters) +"jH" = (/obj/machinery/atmospherics/pipe/simple,/turf/open/floor/plasteel,/area/mine/living_quarters) +"jI" = (/turf/closed/wall,/area/mine/production) +"jJ" = (/obj/structure/disposalpipe/segment,/turf/closed/wall,/area/mine/production) +"jK" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/open/floor/plating,/area/mine/production) +"jL" = (/obj/machinery/atmospherics/pipe/simple{dir = 6},/obj/machinery/camera{c_tag = "EVA"; dir = 4; network = list("MINE")},/obj/machinery/airalarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/table,/obj/item/device/gps/mining,/obj/item/device/gps/mining,/obj/item/device/gps/mining,/obj/item/device/gps/mining,/turf/open/floor/plasteel,/area/mine/eva) +"jM" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/structure/disposalpipe/segment,/turf/open/floor/plasteel,/area/mine/eva) +"jN" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/open/floor/plasteel,/area/mine/eva) +"jO" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 8; on = 1},/obj/machinery/light_switch{pixel_x = 27},/turf/open/floor/plasteel,/area/mine/eva) +"jP" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/open/floor/plating/asteroid/airless,/area/mine/eva) +"jQ" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple,/obj/structure/window/reinforced/fulltile,/turf/open/floor/plating,/area/mine/living_quarters) +"jR" = (/obj/machinery/door/airlock/glass{name = "Crew Area"; req_access_txt = "48"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel,/area/mine/living_quarters) +"jS" = (/obj/machinery/atmospherics/pipe/simple,/obj/machinery/door/airlock/mining{name = "Mining Station Storage"; req_access_txt = "48"},/turf/open/floor/plasteel,/area/mine/living_quarters) +"jT" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/northleft{dir = 2; name = "Pneumatic Tube Access"},/obj/machinery/disposal/deliveryChute{pixel_y = 5},/obj/structure/disposalpipe/trunk{dir = 1},/turf/open/floor/plasteel{icon_state = "bot"; dir = 1},/area/mine/production) +"jU" = (/obj/structure/closet/crate,/turf/open/floor/plasteel{icon_state = "bot"; dir = 1},/area/mine/production) +"jV" = (/obj/machinery/atmospherics/pipe/simple{dir = 6},/obj/structure/closet/crate,/turf/open/floor/plasteel{icon_state = "bot"; dir = 1},/area/mine/production) +"jW" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/structure/window/reinforced/fulltile,/turf/open/floor/plating,/area/mine/eva) +"jX" = (/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/general/hidden{dir = 9},/turf/open/floor/plasteel,/area/mine/eva) +"jY" = (/obj/structure/disposalpipe/segment,/turf/open/floor/plasteel,/area/mine/eva) +"jZ" = (/turf/open/floor/plasteel,/area/mine/eva) +"ka" = (/obj/structure/tank_dispenser/oxygen,/turf/open/floor/plasteel,/area/mine/eva) +"kb" = (/obj/machinery/light/small{dir = 1},/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/eva) +"kc" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/turf/open/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/eva) +"kd" = (/turf/open/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 5},/area/mine/eva) +"ke" = (/obj/structure/toilet{dir = 4},/turf/open/floor/plasteel{icon_state = "showroomfloor"},/area/mine/living_quarters) +"kf" = (/obj/structure/sink{pixel_y = 30},/obj/machinery/light/small,/obj/structure/mirror{pixel_y = -32},/turf/open/floor/plasteel{icon_state = "showroomfloor"},/area/mine/living_quarters) +"kg" = (/obj/machinery/door/airlock{name = "Toilet"},/turf/open/floor/plasteel{icon_state = "showroomfloor"},/area/mine/living_quarters) +"kh" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/open/floor/plasteel,/area/mine/living_quarters) +"ki" = (/obj/machinery/power/apc{dir = 1; name = "Mining Station Port Wing APC"; pixel_x = 1; pixel_y = 25},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/open/floor/plasteel,/area/mine/living_quarters) +"kj" = (/obj/machinery/camera{c_tag = "Crew Area Hallway"; network = list("MINE")},/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/turf/open/floor/plasteel,/area/mine/living_quarters) +"kk" = (/turf/open/floor/plasteel{dir = 5; icon_state = "warning"},/area/mine/living_quarters) +"kl" = (/obj/structure/window/reinforced,/obj/structure/lattice,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/open/space,/area/mine/living_quarters) +"km" = (/obj/structure/window/reinforced,/obj/structure/lattice,/turf/open/space,/area/mine/living_quarters) +"kn" = (/obj/structure/window/reinforced,/obj/structure/lattice,/turf/open/space,/area/mine/production) +"ko" = (/turf/open/floor/plasteel{dir = 9; icon_state = "warning"},/area/mine/production) +"kp" = (/turf/open/floor/plasteel{dir = 1; icon_state = "warning"},/area/mine/production) +"kq" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/open/floor/plasteel{dir = 1; icon_state = "warning"},/area/mine/production) +"kr" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple,/turf/open/floor/plasteel{dir = 5; icon_state = "warning"},/area/mine/production) +"ks" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/door/airlock/glass_mining{name = "Mining Station EVA"; req_access_txt = "54"},/turf/open/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/eva) +"kt" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/open/floor/plasteel,/area/mine/eva) +"ku" = (/obj/machinery/door/airlock/external{name = "Mining External Airlock"; req_access_txt = "54"},/turf/open/floor/plasteel,/area/mine/eva) +"kv" = (/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/eva) +"kw" = (/turf/open/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/eva) +"kx" = (/obj/machinery/door/airlock/external{name = "Mining External Airlock"; req_access_txt = "54"},/turf/open/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/eva) +"ky" = (/turf/open/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 4},/area/mine/eva) +"kz" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/open/floor/plasteel,/area/mine/living_quarters) +"kA" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/open/floor/plasteel,/area/mine/living_quarters) +"kB" = (/obj/machinery/atmospherics/pipe/simple,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/open/floor/plasteel,/area/mine/living_quarters) +"kC" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple,/turf/open/floor/plasteel,/area/mine/living_quarters) +"kD" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/open/floor/plasteel,/area/mine/living_quarters) +"kE" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/open/floor/plasteel,/area/mine/living_quarters) +"kF" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple,/turf/open/floor/plasteel,/area/mine/living_quarters) +"kG" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/open/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/living_quarters) +"kH" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/door/airlock/glass_mining{name = "Mining Station Bridge"; req_access_txt = "48"},/turf/open/floor/plasteel,/area/mine/living_quarters) +"kI" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/open/floor/plasteel,/area/mine/living_quarters) +"kJ" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/open/floor/plasteel,/area/mine/production) +"kK" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/door/airlock/glass_mining{name = "Mining Station Bridge"; req_access_txt = "48"},/turf/open/floor/plasteel,/area/mine/production) +"kL" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/open/floor/plasteel{dir = 8; icon_state = "warning"},/area/mine/production) +"kM" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/components/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/open/floor/plasteel,/area/mine/production) +"kN" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/open/floor/plasteel,/area/mine/production) +"kO" = (/obj/machinery/atmospherics/pipe/manifold{dir = 4},/turf/open/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/production) +"kP" = (/obj/machinery/power/apc{dir = 2; name = "Mining EVA APC"; pixel_x = 1; pixel_y = -23},/obj/structure/cable,/obj/structure/table,/obj/item/stack/packageWrap,/obj/item/stack/packageWrap,/obj/item/stack/packageWrap,/obj/item/weapon/hand_labeler,/turf/open/floor/plasteel,/area/mine/eva) +"kQ" = (/obj/machinery/mech_bay_recharge_port,/obj/structure/disposalpipe/segment,/turf/open/floor/plating,/area/mine/eva) +"kR" = (/turf/open/floor/mech_bay_recharge_floor,/area/mine/eva) +"kS" = (/obj/machinery/computer/mech_bay_power_console,/turf/open/floor/plasteel,/area/mine/eva) +"kT" = (/obj/structure/closet/emcloset,/turf/open/floor/plasteel,/area/mine/eva) +"kU" = (/obj/structure/ore_box,/turf/open/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/eva) +"kV" = (/turf/open/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 6},/area/mine/eva) +"kW" = (/obj/machinery/atmospherics/pipe/manifold{dir = 8},/turf/open/floor/plasteel,/area/mine/living_quarters) +"kX" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/open/floor/plasteel,/area/mine/living_quarters) +"kY" = (/obj/machinery/atmospherics/pipe/manifold,/turf/open/floor/plasteel,/area/mine/living_quarters) +"kZ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/open/floor/plasteel,/area/mine/living_quarters) +"la" = (/obj/machinery/atmospherics/pipe/manifold{dir = 1},/turf/open/floor/plasteel,/area/mine/living_quarters) +"lb" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/machinery/light,/turf/open/floor/plasteel,/area/mine/living_quarters) +"lc" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/open/floor/plasteel{dir = 6; icon_state = "warning"},/area/mine/living_quarters) +"ld" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/structure/window/reinforced/fulltile,/turf/open/floor/plating,/area/mine/living_quarters) +"le" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/open/space,/area/mine/living_quarters) +"lf" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/open/space,/area/mine/production) +"lg" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/machinery/light{dir = 4},/turf/open/space,/area/mine/production) +"lh" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/structure/window/reinforced/fulltile,/turf/open/floor/plating,/area/mine/production) +"li" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/open/floor/plasteel{dir = 10; icon_state = "warning"},/area/mine/production) +"lj" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/open/floor/plasteel{icon_state = "warningcorner"; dir = 1},/area/mine/production) +"lk" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/open/floor/plasteel,/area/mine/production) +"ll" = (/obj/machinery/atmospherics/pipe/manifold{dir = 4},/obj/machinery/airalarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/open/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/production) +"lm" = (/obj/machinery/camera{c_tag = "Production Line External"; dir = 4; network = list("MINE")},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/open/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/production) +"ln" = (/turf/open/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/production) +"lo" = (/obj/machinery/conveyor_switch{id = "mining_external"},/turf/open/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/production) +"lp" = (/turf/open/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/production) +"lq" = (/obj/machinery/atmospherics/pipe/simple,/obj/machinery/door/airlock/glass_medical{id_tag = null; name = "Infirmary"; req_access_txt = "0"},/turf/open/floor/plasteel{icon_state = "whitebluefull"},/area/mine/living_quarters) +"lr" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/closed/wall,/area/mine/living_quarters) +"ls" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/airlock/maintenance{name = "Mining Station Maintenance"; req_access_txt = "48"},/turf/open/floor/plating,/area/mine/living_quarters) +"lt" = (/obj/machinery/atmospherics/pipe/simple,/turf/closed/wall,/area/mine/living_quarters) +"lu" = (/obj/machinery/door/airlock/external{name = "Mining External Airlock"; req_access_txt = "54"},/turf/open/floor/plasteel,/area/mine/living_quarters) +"lv" = (/turf/open/floor/plasteel{dir = 8; icon_state = "warning"},/area/mine/production) +"lw" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/open/floor/plasteel,/area/mine/production) +"lx" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple,/turf/open/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/production) +"ly" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock{name = "Closet"; req_access_txt = "0"},/turf/open/floor/plating,/area/mine/production) +"lz" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light/small{dir = 1},/turf/open/floor/plating{icon_state = "warnplate"; dir = 8},/area/mine/production) +"lA" = (/obj/structure/disposalpipe/junction{dir = 8; icon_state = "pipe-j1"},/obj/machinery/space_heater,/turf/open/floor/plating,/area/mine/production) +"lB" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/closed/wall,/area/mine/production) +"lC" = (/obj/machinery/disposal/deliveryChute{dir = 4},/obj/structure/disposalpipe/trunk{dir = 8},/turf/open/floor/plating{icon_state = "warnplate"; dir = 8},/area/mine/production) +"lD" = (/obj/machinery/conveyor{dir = 4; id = "mining_external"},/turf/open/floor/plating,/area/mine/production) +"lE" = (/obj/machinery/conveyor{dir = 4; id = "mining_external"},/turf/open/floor/plating{icon_state = "warnplate"; dir = 4},/area/mine/production) +"lF" = (/obj/machinery/conveyor{dir = 4; id = "mining_external"},/obj/structure/plasticflaps/mining,/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/production) +"lG" = (/obj/machinery/conveyor{dir = 4; id = "mining_external"},/turf/open/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/production) +"lH" = (/obj/machinery/light/small{dir = 8},/obj/machinery/airalarm{frequency = 1439; pixel_y = 23},/turf/open/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/mine/living_quarters) +"lI" = (/turf/open/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/mine/living_quarters) +"lJ" = (/obj/machinery/atmospherics/pipe/simple,/turf/open/floor/plasteel{dir = 1; icon_state = "whiteblue"},/area/mine/living_quarters) +"lK" = (/turf/open/floor/plasteel{dir = 5; icon_state = "whiteblue"},/area/mine/living_quarters) +"lL" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/open/floor/plating,/area/mine/living_quarters) +"lM" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/light/small{dir = 1},/obj/structure/closet/crate/secure/loot,/turf/open/floor/plating,/area/mine/living_quarters) +"lN" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/open/floor/plating,/area/mine/living_quarters) +"lO" = (/obj/machinery/atmospherics/pipe/simple,/obj/item/weapon/storage/box/lights,/turf/open/floor/plating,/area/mine/living_quarters) +"lP" = (/obj/structure/rack,/obj/item/weapon/storage/firstaid/regular,/obj/item/weapon/storage/firstaid/regular{pixel_x = -3; pixel_y = -3},/turf/open/floor/plating,/area/mine/living_quarters) +"lQ" = (/obj/structure/closet/emcloset,/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/living_quarters) +"lR" = (/turf/open/floor/plasteel{icon_state = "floorgrime"},/area/mine/living_quarters) +"lS" = (/obj/machinery/light/small{dir = 4},/turf/open/floor/plasteel,/area/mine/living_quarters) +"lT" = (/obj/structure/sign/xeno_warning_mining,/turf/closed/wall,/area/mine/living_quarters) +"lU" = (/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/open/floor/plasteel{dir = 8; icon_state = "warning"},/area/mine/production) +"lV" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/open/floor/plasteel,/area/mine/production) +"lW" = (/obj/machinery/atmospherics/pipe/simple,/obj/machinery/status_display{layer = 4; pixel_x = 32; pixel_y = 0},/turf/open/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/production) +"lX" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/open/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/production) +"lY" = (/obj/structure/closet/crate/freezer,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty{pixel_x = -3; pixel_y = -3},/obj/item/weapon/reagent_containers/blood/AMinus,/obj/item/weapon/reagent_containers/blood/BMinus{pixel_x = -4; pixel_y = 4},/obj/item/weapon/reagent_containers/blood/BPlus{pixel_x = 1; pixel_y = 2},/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OPlus{pixel_x = -2; pixel_y = -1},/obj/item/weapon/reagent_containers/blood/random,/obj/item/weapon/reagent_containers/blood/random,/obj/item/weapon/reagent_containers/blood/random,/turf/open/floor/plasteel{icon_state = "white"},/area/mine/living_quarters) +"lZ" = (/obj/machinery/iv_drip,/turf/open/floor/plasteel{icon_state = "white"},/area/mine/living_quarters) +"ma" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 1; on = 1},/obj/machinery/camera{c_tag = "Sleeper Room"; dir = 1; network = list("MINE")},/turf/open/floor/plasteel{icon_state = "white"},/area/mine/living_quarters) +"mb" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/brute{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/firstaid/regular,/turf/open/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/mine/living_quarters) +"mc" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/open/floor/plating,/area/mine/living_quarters) +"md" = (/turf/open/floor/plating,/area/mine/living_quarters) "me" = (/obj/machinery/atmospherics/pipe/manifold{dir = 8},/obj/machinery/meter,/turf/open/floor/plating,/area/mine/living_quarters) "mf" = (/obj/machinery/atmospherics/components/unary/tank/air{dir = 8},/turf/open/floor/plating,/area/mine/living_quarters) "mg" = (/obj/structure/ore_box,/turf/open/floor/plasteel{icon_state = "warning"},/area/mine/living_quarters) @@ -637,9 +637,9 @@ "mm" = (/obj/machinery/mineral/equipment_vendor,/turf/open/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/production) "mn" = (/obj/machinery/mineral/mint{input_dir = 4},/turf/open/floor/plasteel,/area/mine/production) "mo" = (/obj/machinery/light/small{dir = 1},/turf/open/floor/plasteel{dir = 8; icon_state = "loadingarea"},/area/mine/production) -"mp" = (/obj/structure/ore_box,/turf/open/floor/plasteel{dir = 6; icon_state = "warning"},/area/mine/production) +"mp" = (/obj/machinery/airalarm{pixel_y = 28},/obj/structure/closet/crate,/turf/open/floor/plasteel{icon_state = "bot"; dir = 1},/area/mine/production) "mq" = (/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/obj/structure/table,/obj/item/weapon/paper{anchored = 0; info = "A hastily written note has been scribbled here...

Please use the ore redemption machine in the science wing for smelting. PLEASE!

--The Research Staff"; name = "URGENT!"},/turf/open/floor/plasteel{icon_state = "bot"; dir = 1},/area/mine/production) -"mr" = (/obj/structure/ore_box,/turf/open/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/production) +"mr" = (/obj/structure/barricade/wooden,/turf/open/floor/plasteel{icon_state = "bot"; dir = 1},/area/mine/production) "ms" = (/obj/structure/cable,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/power/port_gen/pacman{anchored = 1},/turf/open/floor/plating,/area/mine/living_quarters) "mt" = (/obj/machinery/power/port_gen/pacman{anchored = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/open/floor/plating,/area/mine/living_quarters) "mu" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/open/floor/plating,/area/mine/living_quarters) @@ -648,70 +648,70 @@ "mx" = (/obj/structure/disposalpipe/segment,/turf/open/floor/plasteel,/area/mine/production) "my" = (/turf/open/floor/plasteel{icon_state = "loadingarea"},/area/mine/production) "mz" = (/turf/open/floor/plasteel{dir = 5; icon_state = "warning"},/area/mine/production) -"mA" = (/obj/machinery/conveyor{dir = 8; id = "mining_internal"},/obj/structure/plasticflaps,/obj/structure/barricade/wooden,/turf/open/floor/plating{icon_state = "warnplate"; dir = 1},/area/mine/production) -"mB" = (/obj/machinery/conveyor{dir = 2; id = "mining_internal"},/turf/open/floor/plating{icon_state = "warnplate"; dir = 8},/area/mine/production) +"mA" = (/obj/structure/barricade/wooden,/turf/open/floor/plasteel{dir = 4; icon_state = "loadingarea"},/area/space) +"mB" = (/obj/machinery/light/small{dir = 4},/obj/structure/barricade/wooden,/turf/open/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/production) "mC" = (/turf/open/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/explored) -"mD" = (/obj/machinery/light{dir = 1},/turf/open/floor/plating/asteroid/airless,/area/mine/living_quarters) -"mE" = (/obj/structure/grille,/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 0},/obj/structure/window/reinforced/fulltile,/turf/open/floor/plating,/area/mine/production) -"mF" = (/obj/structure/grille,/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/obj/structure/window/reinforced/fulltile,/turf/open/floor/plating,/area/mine/production) -"mG" = (/obj/item/device/radio/beacon,/turf/open/floor/plasteel{dir = 9; icon_state = "warning"},/area/mine/production) -"mH" = (/turf/open/floor/plasteel{icon_state = "warningcorner"; dir = 4},/area/mine/production) -"mI" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/machinery/computer/shuttle/mining{req_access = "0"},/obj/machinery/light{dir = 4},/obj/machinery/camera{c_tag = "Shuttle Docking Foyer"; dir = 8; network = list("MINE")},/obj/machinery/newscaster{pixel_x = 30; pixel_y = 1},/turf/open/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/production) -"mJ" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/turf/open/floor/plasteel{icon_state = "bot"; dir = 1},/area/mine/production) -"mK" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 2; on = 1},/turf/open/floor/plasteel,/area/mine/production) -"mL" = (/obj/machinery/camera{c_tag = "Processing Area Room"; dir = 8; network = list("MINE")},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = 28},/turf/open/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/production) -"mM" = (/obj/machinery/mineral/unloading_machine{dir = 1; icon_state = "unloader-corner"; input_dir = 1; output_dir = 2},/turf/open/floor/plating{icon_state = "warnplate"; dir = 9},/area/mine/production) -"mN" = (/obj/docking_port/stationary{dir = 8; dwidth = 3; height = 5; id = "mining_away"; name = "asteroid mine"; width = 7},/turf/open/space,/area/space) -"mO" = (/obj/machinery/door/airlock/external{name = "Mining Shuttle Airlock"; req_access_txt = "0"},/turf/open/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/production) -"mP" = (/turf/open/floor/plasteel,/area/mine/production) -"mQ" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/open/floor/plasteel,/area/mine/production) -"mR" = (/obj/machinery/atmospherics/pipe/simple,/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/open/floor/plasteel{icon_state = "warningcorner"; dir = 8},/area/mine/production) -"mS" = (/obj/machinery/atmospherics/pipe/simple,/turf/open/floor/plasteel,/area/mine/production) -"mT" = (/obj/machinery/conveyor_switch/oneway{id = "mining_internal"; name = "mining conveyor"},/turf/open/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/production) -"mU" = (/obj/effect/decal/remains/human{desc = "Seems to be all that remains of a poor miner that didn't heed the warning signs."},/turf/open/floor/plating/asteroid/airless,/area/mine/explored) -"mV" = (/turf/open/floor/plasteel{dir = 10; icon_state = "warning"},/area/mine/production) -"mW" = (/turf/open/floor/plasteel{icon_state = "warningcorner"; dir = 1},/area/mine/production) -"mX" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/open/floor/plasteel,/area/mine/production) -"mY" = (/obj/machinery/atmospherics/pipe/manifold{dir = 8},/obj/structure/disposalpipe/junction{dir = 4; icon_state = "pipe-j2"},/turf/open/floor/plasteel,/area/mine/production) -"mZ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/open/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/production) -"na" = (/obj/machinery/door/airlock/glass_mining{name = "Processing Area"; req_access_txt = "48"},/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/open/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/production) -"nb" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/open/floor/plasteel{dir = 9; icon_state = "warning"},/area/mine/production) -"nc" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/open/floor/plasteel{icon_state = "warningcorner"; dir = 4},/area/mine/production) -"nd" = (/obj/machinery/atmospherics/pipe/simple/general/hidden{dir = 9},/turf/open/floor/plasteel,/area/mine/production) -"ne" = (/obj/machinery/light{dir = 4},/turf/open/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/production) -"nf" = (/obj/machinery/mineral/processing_unit_console,/turf/closed/wall/r_wall,/area/mine/production) -"ng" = (/obj/machinery/mineral/processing_unit{dir = 1; output_dir = 2},/turf/open/floor/plating{icon_state = "warnplate"; dir = 9},/area/mine/production) -"nh" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 1; on = 1},/turf/open/floor/plasteel,/area/mine/production) -"ni" = (/turf/open/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/production) -"nj" = (/obj/machinery/door/airlock/glass_mining{name = "Processing Area"; req_access_txt = "48"},/turf/open/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/production) -"nk" = (/obj/structure/disposalpipe/segment,/turf/open/floor/plasteel{dir = 10; icon_state = "warning"},/area/mine/production) -"nl" = (/turf/open/floor/plasteel{dir = 2; icon_state = "warning"},/area/mine/production) -"nm" = (/turf/open/floor/plasteel{dir = 6; icon_state = "warning"},/area/mine/production) -"nn" = (/obj/structure/lattice,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/open/space,/area/space) -"no" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/open/floor/plasteel{dir = 10; icon_state = "warning"},/area/mine/production) -"np" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/open/floor/plasteel{dir = 2; icon_state = "warning"},/area/mine/production) -"nq" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/window/northleft{name = "Output Access"},/turf/open/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/production) -"nr" = (/obj/machinery/door/window/northleft{base_state = "right"; icon_state = "right"; name = "Output Access"},/turf/open/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/production) -"ns" = (/obj/machinery/mineral/stacking_unit_console,/turf/closed/wall/r_wall,/area/mine/production) -"nt" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/turf/open/floor/plating,/area/mine/explored) -"nu" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/closed/wall/r_wall,/area/mine/explored) -"nv" = (/obj/structure/lattice,/obj/structure/disposalpipe/segment{dir = 4},/turf/open/space,/area/space) -"nw" = (/obj/structure/lattice,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/open/space,/area/space) -"nx" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/trunk,/obj/machinery/door/window/northleft{name = "Pneumatic Tube Access"},/obj/machinery/disposal/deliveryChute{dir = 1; pixel_y = -1},/turf/open/floor/plasteel{icon_state = "bot"; dir = 1},/area/mine/production) -"ny" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/obj/machinery/light,/turf/open/floor/plasteel{icon_state = "bot"; dir = 1},/area/mine/production) -"nA" = (/turf/open/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/production) -"nC" = (/obj/machinery/mineral/stacking_machine{dir = 1; input_dir = 4},/turf/open/floor/plating{icon_state = "warnplate"; dir = 9},/area/mine/production) -"nD" = (/obj/machinery/conveyor{dir = 8; id = "mining_internal"},/turf/open/floor/plating{icon_state = "warnplate"; dir = 1},/area/mine/production) -"nE" = (/obj/machinery/conveyor{icon_state = "conveyor0"; dir = 10; id = "mining_internal"},/obj/machinery/light/small{dir = 4},/turf/open/floor/plating{icon_state = "warnplatecorner"; dir = 4},/area/mine/production) -"nF" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/turf/open/floor/plating,/area/mine/explored) -"nG" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/closed/wall,/area/mine/production) -"nH" = (/obj/structure/disposaloutlet{dir = 1; eject_range = 1},/obj/structure/disposalpipe/trunk{dir = 1},/turf/open/floor/plating{icon_state = "warnplate"; dir = 1},/area/mine/production) -"nI" = (/obj/structure/girder/displaced,/turf/open/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/abandoned) -"nJ" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/brute{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/firstaid/regular,/turf/open/floor/plasteel{dir = 4; icon_state = "whiteblue"},/area/mine/living_quarters) -"nK" = (/obj/machinery/atmospherics/pipe/simple,/obj/item/weapon/storage/box/lights,/turf/open/floor/plating,/area/mine/living_quarters) -"nL" = (/obj/structure/table,/obj/machinery/reagentgrinder,/turf/open/floor/plasteel{icon_state = "bar"},/area/mine/living_quarters) -"nM" = (/obj/item/weapon/rack_parts,/turf/open/floor/plasteel/airless{icon_state = "asteroidfloor"},/area/mine/abandoned) -"nN" = (/obj/structure/girder,/turf/open/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/abandoned) +"mD" = (/turf/open/floor/plasteel/airless{icon_state = "asteroidwarning"; dir = 4},/area/mine/explored) +"mE" = (/obj/machinery/light{dir = 1},/turf/open/floor/plating/asteroid/airless,/area/mine/living_quarters) +"mF" = (/obj/structure/grille,/obj/structure/sign/securearea{desc = "A warning sign which reads 'KEEP CLEAR OF DOCKING AREA'."; name = "KEEP CLEAR: DOCKING AREA"; pixel_y = 0},/obj/structure/window/reinforced/fulltile,/turf/open/floor/plating,/area/mine/production) +"mG" = (/obj/structure/grille,/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/obj/structure/window/reinforced/fulltile,/turf/open/floor/plating,/area/mine/production) +"mH" = (/obj/item/device/radio/beacon,/turf/open/floor/plasteel{dir = 9; icon_state = "warning"},/area/mine/production) +"mI" = (/turf/open/floor/plasteel{icon_state = "warningcorner"; dir = 4},/area/mine/production) +"mJ" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/machinery/computer/shuttle/mining{req_access = "0"},/obj/machinery/light{dir = 4},/obj/machinery/camera{c_tag = "Shuttle Docking Foyer"; dir = 8; network = list("MINE")},/obj/machinery/newscaster{pixel_x = 30; pixel_y = 1},/turf/open/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/production) +"mK" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/turf/open/floor/plasteel{icon_state = "bot"; dir = 1},/area/mine/production) +"mL" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 2; on = 1},/turf/open/floor/plasteel,/area/mine/production) +"mM" = (/obj/machinery/camera{c_tag = "Processing Area Room"; dir = 8; network = list("MINE")},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = 28},/turf/open/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/production) +"mN" = (/obj/machinery/mineral/unloading_machine{dir = 1; icon_state = "unloader-corner"; input_dir = 1; output_dir = 2},/turf/open/floor/plating{icon_state = "warnplate"; dir = 9},/area/mine/production) +"mO" = (/obj/docking_port/stationary{dir = 8; dwidth = 3; height = 5; id = "mining_away"; name = "asteroid mine"; width = 7},/turf/open/space,/area/space) +"mP" = (/obj/machinery/door/airlock/external{name = "Mining Shuttle Airlock"; req_access_txt = "0"},/turf/open/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/production) +"mQ" = (/turf/open/floor/plasteel,/area/mine/production) +"mR" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/open/floor/plasteel,/area/mine/production) +"mS" = (/obj/machinery/atmospherics/pipe/simple,/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/open/floor/plasteel{icon_state = "warningcorner"; dir = 8},/area/mine/production) +"mT" = (/obj/machinery/atmospherics/pipe/simple,/turf/open/floor/plasteel,/area/mine/production) +"mU" = (/obj/machinery/conveyor_switch/oneway{id = "mining_internal"; name = "mining conveyor"},/turf/open/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/production) +"mV" = (/obj/machinery/conveyor{dir = 2; id = "mining_internal"},/turf/open/floor/plating{icon_state = "warnplate"; dir = 8},/area/mine/production) +"mW" = (/obj/effect/decal/remains/human{desc = "Seems to be all that remains of a poor miner that didn't heed the warning signs."},/turf/open/floor/plating/asteroid/airless,/area/mine/explored) +"mX" = (/turf/open/floor/plasteel{dir = 10; icon_state = "warning"},/area/mine/production) +"mY" = (/turf/open/floor/plasteel{icon_state = "warningcorner"; dir = 1},/area/mine/production) +"mZ" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/open/floor/plasteel,/area/mine/production) +"na" = (/obj/machinery/atmospherics/pipe/manifold{dir = 8},/obj/structure/disposalpipe/junction{dir = 4; icon_state = "pipe-j2"},/turf/open/floor/plasteel,/area/mine/production) +"nb" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/open/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/production) +"nc" = (/obj/machinery/door/airlock/glass_mining{name = "Processing Area"; req_access_txt = "48"},/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/open/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/production) +"nd" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/open/floor/plasteel{dir = 9; icon_state = "warning"},/area/mine/production) +"ne" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/open/floor/plasteel{icon_state = "warningcorner"; dir = 4},/area/mine/production) +"nf" = (/obj/machinery/atmospherics/pipe/simple/general/hidden{dir = 9},/turf/open/floor/plasteel,/area/mine/production) +"ng" = (/obj/machinery/light{dir = 4},/turf/open/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/production) +"nh" = (/obj/machinery/mineral/processing_unit_console,/turf/closed/wall/r_wall,/area/mine/production) +"ni" = (/obj/machinery/mineral/processing_unit{dir = 1; output_dir = 2},/turf/open/floor/plating{icon_state = "warnplate"; dir = 9},/area/mine/production) +"nj" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 1; on = 1},/turf/open/floor/plasteel,/area/mine/production) +"nk" = (/turf/open/floor/plasteel{dir = 4; icon_state = "warning"},/area/mine/production) +"nl" = (/obj/machinery/door/airlock/glass_mining{name = "Processing Area"; req_access_txt = "48"},/turf/open/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/production) +"nm" = (/obj/structure/disposalpipe/segment,/turf/open/floor/plasteel{dir = 10; icon_state = "warning"},/area/mine/production) +"nn" = (/turf/open/floor/plasteel{dir = 2; icon_state = "warning"},/area/mine/production) +"no" = (/obj/structure/ore_box,/turf/open/floor/plasteel{dir = 6; icon_state = "warning"},/area/mine/production) +"np" = (/obj/structure/lattice,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/open/space,/area/space) +"nq" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/open/floor/plasteel{dir = 10; icon_state = "warning"},/area/mine/production) +"nr" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/open/floor/plasteel{dir = 2; icon_state = "warning"},/area/mine/production) +"ns" = (/turf/open/floor/plasteel{dir = 6; icon_state = "warning"},/area/mine/production) +"nt" = (/obj/structure/disposalpipe/segment,/obj/machinery/door/window/northleft{name = "Output Access"},/turf/open/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/production) +"nu" = (/obj/machinery/door/window/northleft{base_state = "right"; icon_state = "right"; name = "Output Access"},/turf/open/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/production) +"nv" = (/obj/machinery/mineral/stacking_unit_console,/turf/closed/wall/r_wall,/area/mine/production) +"nw" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/turf/open/floor/plating,/area/mine/explored) +"nx" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/closed/wall/r_wall,/area/mine/explored) +"ny" = (/obj/structure/lattice,/obj/structure/disposalpipe/segment{dir = 4},/turf/open/space,/area/space) +"nz" = (/obj/structure/lattice,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/open/space,/area/space) +"nA" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/trunk,/obj/machinery/door/window/northleft{name = "Pneumatic Tube Access"},/obj/machinery/disposal/deliveryChute{dir = 1; pixel_y = -1},/turf/open/floor/plasteel{icon_state = "bot"; dir = 1},/area/mine/production) +"nB" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/obj/machinery/light,/turf/open/floor/plasteel{icon_state = "bot"; dir = 1},/area/mine/production) +"nC" = (/obj/structure/ore_box,/turf/open/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/production) +"nD" = (/turf/open/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/mine/production) +"nE" = (/obj/machinery/conveyor{dir = 8; id = "mining_internal"},/obj/structure/plasticflaps,/obj/structure/barricade/wooden,/turf/open/floor/plating{icon_state = "warnplate"; dir = 1},/area/mine/production) +"nF" = (/obj/machinery/mineral/stacking_machine{dir = 1; input_dir = 4},/turf/open/floor/plating{icon_state = "warnplate"; dir = 9},/area/mine/production) +"nG" = (/obj/machinery/conveyor{dir = 8; id = "mining_internal"},/turf/open/floor/plating{icon_state = "warnplate"; dir = 1},/area/mine/production) +"nH" = (/obj/machinery/conveyor{icon_state = "conveyor0"; dir = 10; id = "mining_internal"},/obj/machinery/light/small{dir = 4},/turf/open/floor/plating{icon_state = "warnplatecorner"; dir = 4},/area/mine/production) +"nI" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/turf/open/floor/plating,/area/mine/explored) +"nJ" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/closed/wall,/area/mine/production) +"nK" = (/obj/structure/disposaloutlet{dir = 1; eject_range = 1},/obj/structure/disposalpipe/trunk{dir = 1},/turf/open/floor/plating{icon_state = "warnplate"; dir = 1},/area/mine/production) +"nL" = (/obj/docking_port/stationary{dheight = 9; dir = 2; dwidth = 5; height = 24; id = "syndicate_z5"; name = "south of asteroid"; turf_type = /turf/open/space; width = 18},/turf/open/space,/area/space) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -736,215 +736,215 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaaabababaaaaababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaabababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababaaaaaaaaaaaaaaababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababaaaaaaaaaaababababacacacacacacabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaaaaaaababababababababababababababababacacacacacacacacababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafafaaaaafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababacacacacabababababababababacacacacacacacacacabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababacacacacacacacacacacacacacacacacacacacacacacababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababacacacacacacacacacacacacacacacacacacacacacacacacacababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafaiaiaiaiaiafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababacacacacacacacacacacacacacacacacacacacacacacababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafaiaiaiaiaiafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacababababacacacacacacacacacacababababaaaaaaaaaaaaaaaaagahagaaaaaaaaababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafaiaiaiaiaiafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababacacacacacacababababababacacacacacacacacababababaaaaaaaaaaaaaaaaaaaaajakajalaaaaabababaaaaababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafaiaiaiaiaiafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababaeaeacacacacacacababababababacacacacacacacacababaaaaaaaaaaaaaaaaaaaaaaaaanaoapaqalaaababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafaiaiaiafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababaeaeacacacacacabababaaaaababacacacacacacacacababaaaaaaaaaaaaaaaaaaaaaaaaarasakajalaaabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafaaaaaaaaaaaaaaaaafafafaiaiaiafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababababaaaaababacacacacacacacabababaaaaaaaaaaaaaaaaaaaaaaaaaratauavalalababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafaaaaaaaaaaaaaaafafafaiaiaiafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababababababaaaaababacacacacacacacababaaaaaaaaaaaaaaaaaaaaaaaaaaaaawakaxabababababababaaaaaaaaabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafaaaaafaaaaaaafafafaiaiaiaiafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababaaabababaaaaaaaaaaaaaaabababacacacacacacacababaaaaaaaaaaaaaaaaaaaaaaalalayaAakaxabababacacababababaaabababababaaabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafafafafafaaaaaaafafafaiaiaiaiafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaaaaababaaaaaaaaaaaaaaabababacacacacacacacacabababalalalaaaaaaaaaaaaalalaBazaEaCaxabababacacababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafafafafafaaaaaaafafaiaiaiaiaiafafaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababacacacacacacacacacacababalaaaaaaaaaaaaalalaFaDaGaxaJaHaxaxaxaxacacacacabababababacababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafaiaiaiafafaaaaafafafaiaiaiaiaiafafaaaaaaaaaaaaafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababacacacacacacacacacacacababalaaaaaaaaalaIaMaraLaKaNagaOaCaxaPaPaxacacacacacacacacacacacacacabababababaaaaaaaaaaaaaaaaaaaaaaaaafafaiaiaiafafafafafafafaiaiaiaiaiafafafaaaaaaaaafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababacacacacacacacacacacacababalaaaaaaalaSaTaMauaRaQaQdfaCaJdhdgaPaxacacacacacacacacacacaeacacabababababaaaaaaaaaaaaaaaaaaaaafafafafaiaiaiafafafafafafaiaiaiaiaiaiafafafaaaaaaafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaaaaaaababacacacacacacacacacacabababalaaaadiaSaTaSararbaaRaRaxaJdtaxaPduaxacacacacacacacacacacacacacabababaaaaaaaaaaaaaaaaaaaaafafafafafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafaaafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababaaaaababacacacacacacacacacacabababalalaldvbearbfbgarbadtdtbhbaaJaxaxaxaxaxaxacacacacacacacacacacababababaaaaaaaaaaaaaaaaaaaaaaafafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababacacacacacacacacacacababalalaleggRbmarbgaraubngSaJaxaQgTaxbqakaRbraxacacacacacacacabababababababaaaaaaaaaaaaaaaaaaaaaaafafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaababababababababacababababababacacacacacacacacacacababalalalaxaNbabwarbmaRgXgWgYagaQaRaxbqakakbraxacacacacababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaafafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababacacacababacacacacacacacacacacacacacaxaxaxaxaxaxaKaRgZbaaRdthagYgYdfakakaxbqauaJbraxacacabababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacabacacacacacacacacacacacacacaxbJbKbLbMaxeghbgRaxbhaxhchchcaxaRakakakakbPgSaxacacababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacacacacacacacacacacacacacacaxbJcccdccceaJcfbPaJhegSaOhgaJgSaObaaxakdtaJaJaxacacababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababaeacacacacacacacacacacacacacacacacacacacaxbJcccrcrcedtaJaJaOaCaJaJaJbPaJaJaJaxaJgSheaJaxacacababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaabababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababacacacacacacacacacacacacacacacacacacaxbJcFcrcGaxhmhlhchchldthlhchchcaJaJaxhnbPaJdtaxacacababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababdedeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacacacacacacacacaxaxaxaxaxaxcPhlaJaJaJaJbPaJhohchegSaxhDhOhJcUaxacacababaaaaaabGbGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababdededeababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababacacacacacacacacacacacacacacacacacacacacacaxhmhlaJdtkSkRaCgSaJhcaJaJaxakdadaljaxacacababaaaabGbGbGbGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababdededeaUdededeabababaaaaaaaaaaabababababaaaaaaaaaaaaaaaaaaababacacacacacacacacacacacacacacacacacacacacaxhmhlaJgSaJaJhoaJdthlhmaxaxbqakdanMnIacacababaaaabGababbGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababdededeaVaWdeabababaaaaaaaaaaabababababababaaaaaaaaaaaaaaaaaaabababacacacacacacacacacacacacacacacacacacaxdrhlhlhlhlhlhlhlhlhlhmaxbqakdsakljnNacacababaaaabGababbGbGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababdedededededeabababaaaaaaaaaaabababababababababaaaaaaaaaaaaaaaaabababacacacacacacacacacacacacacacacacacaxdrhmhmhmdDdEhmhmhmdrdraxbqdsdsdsbraxacacababaaaabGabababbGbGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafaaaaaaaaaaafafafafaaaaaaaaaaaaafaaaaaaaaafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababdedededededeababaaaaaaaaaaaaaaaaababdedeabababababaaaaaaaaaaaaaaababababacacacacacacacacacacacacacacacaxaxaxaxaxaxaxaxaxaxaxaxaxaxcUdSdTaxaxacacabababaabGabababbGbGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafaaaaafafafafafaaaaaaaaaaafafafafaaaaafafafafaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababdededededeabababababaaaaaaaaaaaaaaababdededededeababbGbGaaaaaaaaaaaaaaabababacacacacacacacacacacacacacacacacacacacacacacacacacdcdcdcaxlNdadsaxdcacacabababaabGababababbGbGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafafafafafafafafaaaaaaafafafafafaaaaafafafafaaaaaaaaaaaaafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababdededededeabababababaaaaaaaaaaaaabababdedededededeababbGbGaaaaaaaaaaaaaaababacacacacacacacacacacacacacacacacacacacacacacacacacdcdcdcaxeueveuaxdcacacacababbGbGabababababbGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafafaiafafafafafafafafafafafaaaaafafafafaaaaaaaaafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababdedededeababababababaaaaaaaaaaabababdededededededeabababbGbGbGaaaaaaaaaaaaababacacacacacacacacacacacacacacacacacacacacacacacacacdcdcaxeFdSeGaxdcacacacabababbGabababababbGbGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafaiaiaiaiaiaiaiafafafafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafafafafafafaaaaafafafafafaaaaafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababdedededeababababababababababababababdededededededeabababbGbGbGbGbGaaaaaaaaababacacacacacacacacacacacacacacacacacacacacacacacacacdcdcdcePeQeRdcdcacacacabababbGababababababbGbGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafaiaiaiaiaiafafafafafafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafaaaaaaafafafafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababdededededededededededeababababababdedededededededededeababbGbGbGbGaaaaaaaaaaabacacacacacacacacacacacacacacacacacacacacacacacacacdcdcdcdcdcfadcdcacacacacababbGbGabababababbGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafaiaiaiafafafafafaaaaafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafaaaaafafaiafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababdededededededededededeababababdedededededededededededeababbGababbGbGaaaaaaaaababacacacacacacacacacacacacacacacacacacacacacacacdcdcdcdcdcdcdcfadcacacacacabababbGbGababababbGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafafafafafafafaaaaafafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafafafaiaiaiaiaiaiafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababdededededededededededededededededededededededededededeababbGabababbGaaaaaaaaaaababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababbGbGababababbGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafafafafafaaaaaaaaafafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafafaiaiaiaiaiafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababdedqdqdqdqdqdqdedededededededededededededededededededeababbGbGababbGbGbGaaaaaaababacacacacacamacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababbGbGbGbGbGbGaaaaaaaaaaaaaaaaaaaaaaalalalalalalalalalafafafaaaaaaaaaaafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababaaababaaaaaaaaaaaaaaaaaaaaaZaZdqdqdqdqdAdAdAdBdqdedededCdCdededededededededededededededeabababbGababababbGaaaaaaaaabacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababababbGbGbGbGbGaaaaaaaaaaaaaaaaaaaaalalbGbGbGbGbGbbbGalaaaaaaaaaaaaaaafafafaiaiaiaiaiaiaiaiaiafafafafafafafafafafafafafafafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababacababababababaaaaaaaaaaaaaaaaaaaaaZdJdKdLdMdNdOdPdPdPdqdQdQdQdQdRdCdededededededededededededededeabababababababababaaaaaaababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababbGbGbdbcdjdjdjdjdjdjdjdjdjdjdkbkbGafafafafbkblbGbGbGaaaaaaaaaaafafafaiaiaiaiaiaiaiaiaiafafafafafafafafafafafafafafafafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababacacacabababababaaaaaaaaaaaaaaaaaaaaaZeaebeceddNaddPefboeheiejejdQdRekdCdedededededededededededededeababacacacacacababaaaaaaaaabacacacacacacacacacacacacacacacacacacacacacaeacacacacacacacacacacacacacacacacababbGbGbGhfhfhfhfbpbybxhfhfhfhfhfbGbGafafafafafafafafbGbGaaaaaaaaafafaiaiaiaiaiaiaiaiafafafbGbGbGbGbGbGbGbGbGbGbGbGbGbGafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababacacacacacacabababaaaaaaaaaaaaaaaaaadqdqdqdNemeneodNepeqdNdNdqdqdqeresetdCdCdededededededededededededededeabacacacacacabababaaaaaaabacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababbGbGbGbzbzbzbzbzbEbzbzbzbzbzbzbGbGafafafaiafafafafafbGbGaaaaafafafaiaiaiaiaiaiaiafafafafbGbGbGbGbGbGbGbGbGbGbGbGbGbGafafafafafaiaiaiaiaiaiaiaiaiaiaiaiafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababacacacacacacacabababaaaaaaaaaaaaaaaaaadqexeydNezdPdOeAeBdPeCdNeDeDeDdRejejdCdCdededededededededededededededeabacacacacacacababaaaaaaabacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababbGbGbGbkdFdGdGdGdGdGdGdGdGdGdGbFbkbGafafafaiaiaiafafafafbbbGaaaaafafafaiaiaiaiaiaiafafbGbGbGbGbGbibibjbibibibGbGbGbGbGbGafafafafafaiaiaiaiaiaiaiaiaiaiaiafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababacacamacacacacabababalalalalalalalalaldqeHeIeJeKeLeMdPezdPdPeNeDeDejejejejeOdCdededededededededededededededeabacacacacacacababababaaabacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabbGbGbGaaaaaaaaaaaaaaaaaaaaaaaaaaaabGbGafafaiaiaiaiaiafafafbkblbGaaafafafaiaiaiaiaiaiafafbGbGbGbGbGbibsbtbubvbibGbGbGbGbGbGbGbGbGafafaiaiaiaiaiaiaiaiaiaiaiafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacababaaaaaaaaaaaaaaaaaaaadqeSeTeUeVeLeWdPezeXdPdNeYeZeZejejdRdRdCdCdedededededededededededededeabacacacacacacacacacabababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababbGbGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabGafafafaiaiaiaiaiafafafafbGbGbGafafafaiaiaiaiaiafafbGbGbGbGbGbibAbBbCbDbibGbGbGbGbGbGbGbGbGafafaiaiaiaiaiaiaiaiaiaiaiafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababacacacacacacacacacababaaaaaaaaaaaaaaaaaaaadqdNdNdNfbdPfceLfdeofefffgfgfhfiejdRdRfjdCdedededededededededededededeabacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababbGbGaaaaabababaaaaaaaaaaaaaaaaaaaaaaaaafafafaiaiaiaiaiaiafafafafbGbGafafafafafafafafafbGbGbGbibibibibibHbIbibibibibibibibibibGbGafafaiaiaiaiaiaiaiaiaiaiaiafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacababaaaaaaaaaaaaaaaaaaaafmfnfmfofpdPezdPdPfqfrdNfsftfuejejdRdRfvdCdededededededededededededeababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababababbGbGabababababaaaaaaaaaaaaaaaaaaaaaaaaaaafafaiaiaiaiaiaiaiafafafafbGbGbkafafafafafafbkbGbGbGbTbQbRbSbTbUbVbWbXbXbXbYbZcacbbibGbGafafaiaiaiaiaiaiaiaiaiaiaiafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababacacacacacacacacacacacababaaaaaaaaaaaaaaaaaaaadqdqdqdqdPdPezeofwdNfxdNeDeDeDdRdRdRdRfydNdededededededededededededeabdcacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababbGbGbGabababababababaaaaaaaaaaaaaaaaaaaaaaaaafafaiaiaiaiaiaiaiaiafafafafbGbNbGbGbGbGbGbGbNbGbGbGbTcibXcjbTckclcmbibicncocpcpcqbibGbGafafaiaiaiaiaiaiaiaiaiaiaiaiafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababacacacacacacacacacacacacabababaaaaaaaaaaaaaaaaaaaaaadqfzdPdPezfAfBfCfDdNfEfFdRdRdRdReOdCdCdededededededededededededeabdcacacacacacacacacacacacacacaeacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababbGbGbGababababacabababaaaaaaaaaaaaaaaaaaaaaaaaafafaiaiaiaiaiaiaiaiaiafafafbGbGbGbGbGbGbGbGbGbGbGbGbictcucvcwcvcxcyczcAcBcCcDcEbGbGbGbGafafaiaiaiaiaiaiaiaiaiaiaiaiafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaabababaeaeaeaeacacacacacacacacacacacacacabababaaaaaaaaaaaaaaaaaafGfGfGfHfHfIfJfKfLfLdNfLfLfMdRejdRdReOdCdedededededededededededededeabdcacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababababababababacacacabababaaaaaaaaaaaaaaaaaaaaaaafafaiaiaiaiaiaiaiaiaiaiafafafbGbGbGbGbGbGbGbGbGbGbGbTcKbXcLbTbXcMcycNcOcBbGbGbGbGbGbGbGafafaiaiaiaiaiaiaiaiaiaiaiaiafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababacacacacacacacacacacacacacacababaaaaaaaaaaaaaaaafNfOfHfPfHfHfQfRfSfTfUfVfWfXeDeDdRdRdRdCdCdedededededededededededededeabdcacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaeacacacacabababababacacacacacababababaaaaaaaaaaaaaaaaaaaaafafafaiaiaiaiaiaiaiaiaiafafafbkafafafafafafbkbGbGbGbTcVbXcWbTcXbXcycNcOcBbGbGbGbGbGbGbGafafaiaiaiaiaiaiaiaiafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababacacacacacacacacacacacacababaaaaaaaaaaaaaaaaaafGfLfLfLfYfJfLfLfZgagbfLfLgceDdRdRdCdCdedededededededededededededeababdcacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababaaaaaaaaaaaaaaaaaaaaafafafaiaiaiaiaiaiaiaiaiaiafafafafafafafafafafbGbGbGbibibTbTbibibTddbTcOcBbGbGbGbGbGbGbGafafaiaiaiaiaiaiaiaiafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacacabababaaaaaaaaaaaaaaaafGgdgegfggghgigjgkglgmgngogpgqgrdCdCdededededededededededededededeabdcdcacacacacacacacacacacacacacacacacacacacacacacacacacacacaeacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababaaaaaaaaaaaaaaaaaaaaafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafbGbGbGbGbGdldmdnbidobXdpcOcBbGbGbGbGbGbGbGafafaiaiaiaiaiaiaiaiafafaaafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababacacacacacacacacacabababalalalalalalalalgtgugegvgegwfLgxgygygzgAfLdCdCdCdCdedededededededededededededededeabdcacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababababaaaaaaaaaaaaaaaaaaafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafbGbGbGbGbGdwdwdwbidxdydzcOcBbGbGbGbGbGbGbGafafaiaiaiaiaiaiaiaiafafaaaaaaafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababacacacacacacacacacacababaaaaaaaaaaaaaaaagBgCgDgEgFgGfLgHgIgJgKgAfLdCdedededededededededededededededededeababdcacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababaaaaaaaaaaaaaaaaaaafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafbGbGbGbGbGbGbibTdHbTcOdIbGbGbGbGbGafafafafaiaiaiaiaiaiaiaiafafafafaaaaafafafaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababacacacacacacaeacacacabababaaaaaaaaaaaaaagLgMgNfGfGfGfLfLfLfLfLfLfLdCdedededededededededededededededededeabdcdcacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaeacacacacacacacacacacacacacabababaaaaaaaaaaaaaaaaafafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafbGbGbGbGbGbGbGdUdVdWdXdYdZbGbGbGafafafafaiaiaiaiaiaiaiaiaiafafafaaaaaaaaafafaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacacabababaaaaaaaaaaaaaaaaaaaaafdCdCdCdCdCdCdCdCdCdCdedededededededededededededededededeabdcdcacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababaaaaaaaaaaaaaaaaafafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafbGbGbGbGbGbGbGbGbGdUeleldWbGbGbGafafaiaiaiaiaiaiaiaiaiaiaiafafafaaaaaaaaaaaaaaaaaaaaaaaaafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababacacacacacacacacacacacacabababababaaaaaaaaaaababababdededededededededededededededededededededededededededeabdcacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababaaaaaaaaaaaaaaaaafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafafafafbGbGbGewewbGbGbGafafafaiaiaiaiaiaiaiaiaiaiaiafafafaaaaaaaaaaaaaaaaaaaaaaafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababacacacacacacacacacacacacababababababaaaaababababababdededededededededededededededededededededededededededeabdcacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababababaaaaaaaaaaaaaaafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafafafafafafewfkgsflbGafafaiaiaiaiaiaiaiaiaiaiaiaiafafaaaaaaaaaaaaaaaaaaaaaaaaafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababacacacacacacacacacacacacacacacabababababababababdededededededededededededededededededededededededededededeabacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababaaaaaaaaaaaaaaafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafaffkgsflewbGafafaiaiaiaiaiaiaiaiaiaiaiaiafafaaaaaaaaaaaaaaaaaaaaaaafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababacacacacacacacacacacacacacacacacabababababababdededededededededededededededededededededededededededededeababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababaaaaaaaaaaaaafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafbGbGewewbGafafaiaiaiaiaiaiaiaiaiaiaiaiafafaaaaaaaaaaaaaaaaaaaaafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababacacacacacacacacacacacacacacacacacacacacacabdededededededededededededededededededededededededededededeabacacacacacacacacacacacacacacacacacacacacacacaeacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababababaaaaaaaaaaafafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafbGbGewewbGbGafaiaiaiaiaiaiaiaiaiaiaiaiafafaaaaaaaaaaaaaaaaaaaaafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababacacacacacacacacacacacacacacacacacacacabdededededededededededededededededededededededededededededeabacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababaaaaaaaaaaafafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafbGewewbGbGafafaiaiaiaiaiaiaiaiaiaiaiafafaaaaaaaaaaaaaaaaaaafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababacacacacacacacacacacacacacacacdcabdededededededededededededededededededededededededededededeabacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaeacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababaaaaaaaaaaafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafbGewfkflbGafafaiaiaiaiaiaiaiaiaiaiaiafafaaaaaaaaaaaaaaaaafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacacacacacacacdcabdedededededededededededededededededededededededededededeababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababaaaaaaaaaaafafafaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafaiaiaiaiaiaiaiaiaiaiafafbGfkflewbGafafaiaiaiaiaiaiaiaiaiaiaiafafafafaaaaaaaaaaaaafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababacacacacacacacacacacacacacacacacacdcabdededededededededededededededededededededededeababababababacacacacacacacacacacacacacacacacaeacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababaaaaaaaaafafafaiaiaiaiaiaiaiaiaiaiaiaiafafafafafafaiaiaiaiaiaiaiaiaiaiafafbGbGewewbGbGafaiaiaiaiaiaiaiaiaiaiaiafafafafafbGaaaaaaafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababacacacacababababababacacacacacacacdcababdedededededededededededededededededeabababababdcdcdcdcacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababababacacacacacacacacacacacabababaaaaaaaaaaafafafaiaiaiaiaiaiaiaiaiaiafafafafaaafafaiaiaiaiaiaiaiaiaiaiaiafafbGewewbGbGafafaiaiaiaiaiaiaiaiaiaiaiaiafafafbGaaaaaaafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababacacacabababababababababacacacacacacdcdcabdedededededededededededededededeabababdcdcdcdcdcdcdcacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababababababacacacacacacacacacacacabababaaaaaaaaafafafaiaiaiaiaiaiaiaiaiaiafafafaaaaafafaiaiaiaiaiaiaiaiaiaiaiafafbGewfkflbGafafaiaiaiaiaiaiaiaiaiaiaiaiaiafafbGbGbGafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababacacababababababaaaaabababababacacacacacdcabdededededededededededededededeababdcdcdcdcacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabbGbGabababababacacacacacacacacacabababaaaaaaaaaaafafafaiaiaiaiaiaiaiaiafafafaaaaafafafaiaiaiaiaiaiaiaiaiaiaiafafbGfkflewbGafafaiaiaiaiaiaiaiaiaiaiaiaiaiafafbGbGafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababacababababababaaaaaabGababababacacacacacacababdedededededededededededededeabdcdcacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababbGbGabababababacacacacacacacacacababaaaaaaaaaaafafafafafafaiaiaiaiafafafafaaaaafafafaiaiaiaiaiaiaiaiaiaiaiafafbGbGewewbGbGafaiaiaiaiaiaiaiaiaiaiaiaiaiafafbGbGafafafaiaiafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababaaaaaaaabGbGbGababacacacacacacacabababdededededededededededeababacacacacacacacacacacacacacacacacaeacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababbGbGbGababababacacacacacacacacabababaaaaaaaaaaafafafafafafafafafafafafaaaaaaafafaiaiaiaiaiaiaiaiaiaiaiaiaiafafgOdYdYdZbGafafaiaiaiaiaiaiaiaiaiaiaiaiafafafafafafaiaiaiafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababaaaaabaaaaaaaaaabGabbGababacacacacacacacacacabababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababababbGbGabababababacacacacacacabababaaaaaaaaaaaaaaaaafafafafafafafafaaaaaaafafafaiaiaiaiaiaiaiaiaiaiaiaiaiafafdUeleldWbGafafaiaiaiaiaiaiaiaiaiaiaiaiafafafafafafaiaiaiafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaaaaaaaaaaaaaaaaaaaabGababababacacacacacacacacacacacdcdcdcdcdcacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababbGaaaaabababababacaeaeacababababaaaaaaaaaaaaaaaaaaaaaaafafafafaaaaaaaaafafafaiaiaiaiaiaiaiaiaiaiaiaiaiafafbGewewbGbGafafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababacacacacacacacacacacacacacdcdcacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababaaaaaaaaababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafbGewewbGbGbGbGafaiaiafafafafafaiaiaiaiaiaiaiaiaiaiaiaiaiafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababababaaaaaaaaababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafbGewewbGbGbGbGafaiaiafafbGafafaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababababaaaaaaaaaaababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafafaiaiaiaiaiaiaiaiaiaiaiaiaiafafbGewewbGbGbGafafafafafbGbGafafaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababacacacacacacacacacacacacacacacacacacacacacacacacaeacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafafaiaiaiaiaiaiaiaiaiaiaiaiafafbGewewbGbGbGafafafafbGbGafafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaeacacacacacacacacacacacacacacacacacacacacacacacacacaeacacacacacababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafafafaiaiaiaiaiaiaiaiaiaiafafbGewewbGbGbGafafafbGbGbGafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafafafaiaiaiaiaiaiaiaiafafbGbGewewbGbGbGbGbGbGbGbGafafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababacacacacacacacacaeacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaeacacacacacacacacacacacacacacacacacababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafafaiaiaiaiaiaiaiafafbGbGewewbGbGbGbGbGbGbGbGafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafafaaaaaaaaaaafafafafaiaiaiaiaiaiafafbGbGewewbGbGafafafbGbGbGafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacamacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafafafafafafaaaaaaafafafaiaiaiaiaiaiafafbGbGewewbGbGafafafafbGbGafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafafafafafafafafafaaafafaiaiaiaiaiaiafafbGbGewewbGbGafafafafbGbGafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafaiaiaiaiafafafafafafafafaiaiaiaiaiafafbGbGbGewewbGbGafaiaiafafbGafafaiaiaiaiaiaiaiaiaiaiaiaiafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafafaiaiaiaiaiaiaiafafafafafaiaiaiaiaiafafbGbGbGewewbGafafaiaiaiafafafafaiaiaiaiaiaiaiaiaiaiaiaiafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafbGbGgPgQewbGafafaiaiaiafaiafaiaiaiaiaiaiaiaiaiaiaiaiaiafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacamacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaeacabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafbGbGewgPgQbGafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaeacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababaaaaaaaaaaabababaaaaaaaaaaaaaaafafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafbGbGbGewewbGbGafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababababaaaaaaaaababababababaaaaaaaaaaafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafbGbGbGewewbGafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababababaaaaaaababababababaaaaaaaaaaafafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafbGbGbGewewbGafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaaabababacacacacacacacacacacacaeacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaeacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababababaaaaababababababaaaaaaaaaaafafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafbGbGgPgQewbGafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababaaaaabababababababaaaaaaaaaaafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafbGbGewgPgQbGafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaaabababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaeacacacacacacacacacacacacacacacacacacacacacacacacabababaaababaeacabababaaaaaaaaaaafafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafbGbGbGewewbGbGafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababababababacacacababaaaaaaaaaaafafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafbGbGbGewewbGafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaeacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababababacacacabababaaaaaaaaaaafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafbGbGbGewewbGafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababaaaaaaaaaaafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafbGbGbGewewbGafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaeacacacacacacacacacacacacababaaaaaaaaaaafafafaiaiaiaiaiaiaiaiaiaiaiaiaiafafbGbGbGbGewewbGafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababaaaaaaaaafafafafaiaiaiaiaiaiaiaiaiaiaiaiafafbGbGbGbGewewbGafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababaaaaaaaaaaafafafaiaiaiaiaiaiaiaiaiaiaiaiaiafafafbGbGewewbGbGafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababacacacacacacacacacacacacacacacacacacacacacaeacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababaaaaaaaaaaaaafafafaiaiaiaiaiaiaiaiaiaiaiaiaiafafbGgOdYdYdZbGafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababacaeacacacacacacacacacacacacacamacacacacacacacacacacacacacacacacacacacacacacacaeacacacacacacacacacacacacacacacaeacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababaaaaaaaaaaaaafafafafaiaiaiaiaiaiaiaiaiaiaiaiafafbGdUeleldWbGafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabacacacacabababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababaaaaaaaaaaaaaaafafafaiaiaiaiaiaiaiaiaiaiaiaiafafbGbGewewbGbGafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababacacacababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaeacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababaaaaaaaaaaaaaaaaafafafaiaiaiaiaiaiaiaiaiaiaiafafbGbGewewbGbGbGafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababacacababaaaaaaababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababaaaaaaaaaaaaaaafafafafaiaiaiaiaiaiaiaiaiaiaiafafbGewewbGbGbGafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababaaaaaaaaababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaeacacacacacacacacacacacacacacaeacacacacacacacacacacacacacacacacacabababaaaaaaaaaaaaaaaaafafafaiaiaiaiaiaiaiaiaiaiaiafafbGewewbGbGbGafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababaaaaaaaaaaaaaaaaababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababaaaaaaaaaaaaaaaaaaafafafaiaiaiaiaiaiaiaiaiaiafafbGewfkflbGbGafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaaaaaaaaaaaaaaaaaaaaababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababaaaaaaaaaaaaaaaaaaafafafafaiaiaiaiaiaiaiaiaiafafbGfkflewbGbGafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababaaaaaaaaaaaaaaaaaaaaafafafaiaiaiaiaiaiaiaiaiafafbGbGewewbGbGbGafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaeacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababaaaaaaaaaaaaaaaaaaaaaaafafafaiaiaiaiaiaiaiaiaiafafbGewewbGbGbGafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababaaaaaaaaaaaaaaaaaaaaaaafafafafaiaiaiaiaiaiaiaiafafbGewewbGbGbGafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababaaaaaaaaaaaaaaaaaaaaaaaaaaafafafaiaiaiaiaiaiaiaiafafbGewfkflbGbGafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaeacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafafaiaiaiaiaiaiaiafafbGfkflewbGbGafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababaaaaaaaaaaaaaaafaaaaaaaaaaaaafafafafaiaiaiaiaiaiafafbGbGewewbGbGbGafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacacacaeacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacamacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababaaaaaaaaaaaaaaafafaaaaaaaaaaaaafafafaiaiaiaiaiaiaiafafbGewewbGbGbGafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababacacacacacacacacacacacacacacacacacacacacacacacacacaeacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababaaaaaaaaaaaaaaafafafaaaaaaaaaaaaafafafaiaiaiaiaiaiafafbGewfkflbGbGafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaeacacacacacacacacacacacacacacacababaaaaaaaaaaaaaaafafafafafaaaaaaaaafafafafaiaiaiaiaiafafbGfkflewbGbGafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaababacacacacacacacacacacacacacacacacacacacacacacacacacaeacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaeacacacacacacacacacacacacacacabababaaaaaaaaaaaaaaafafafafafafaaaaaaaaafafafaiaiaiaiaiafafbGbGewewbGbGafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababaaaaaaaaaaaaafafafaiafafafafaaaaaaaaafafafaiaiaiaiaiafafbGewewbGbGbGafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababaaaaaaaaaaaaaaafafafaiaiafafafafaaaaaaafafafafaiaiaiaiafafbGewewbGbGbGafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababaaaaaaaaaaaaaaafafaiaiaiaiafafafafafbGbGafafafaiaiaiaiafafbGewfkflbGbGafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaeacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababaaaaaaaaaaaaaaafafaiaiaiaiaiafafafafafbGbGafafafaiaiaiafafbGfkflewbGbGafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababaaaaaaaaaaaaaaafafaiaiaiaiaiaiaiafafafafbGafafafafaiaiafafbGbGewewbGbGbGafaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacamacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababaaaaaaaaaaaaaaafafaiaiaiaiaiaiaiaiafafafbGbGafafafaiaiaiafafbGewewbGbGbGafafaiaiaiaiaiaiaiaiaiaiaiaiaiafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaeacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababaaaaaaaaaaaaafafafaiaiaiaiaiaiaiaiaiafafafbGbGafafaiaiaiafafbGewewbGbGbGafafaiaiaiaiaiaiaiaiaiaiaiaiaiafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababaaaaaaaaaaaaafafafaiaiaiaiaiaiaiaiaiaiafafafafafafaiaiaiafafbGewfkflbGbGafafaiaiaiaiaiaiaiaiaiaiaiaiaiafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababababacabababaaaaaaaaaaaaafafaiaiaiaiaiaiaiaiaiaiaiaiafafafafafaiaiaiafafbGfkflewbGbGafafaiaiaiaiaiaiaiaiaiaiaiaiaiafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaeacacacacacacacacacacacacacacacacacabababababacababaaaaaaaaaaaaaaafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafbGbGewewbGbGbGafaiaiaiaiaiaiaiaiaiaiaiaiaiafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababababacacababaaabababababaaaaaaaaaaaaaaafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafgOdYdYdZbGbGafafaiaiaiaiaiaiaiaiaiaiaiaiaiafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababababababababaaabababababaaaaaaaaaaaaaaafafaiaiaiaiaiaiaiaiaiafafafafafafafafafafafafafafdUeleldWbGbGafafaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaeacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababbGababababababaaabababababaaaaaaaaaaaaaaafafaiaiaiaiaiaiaiaiaiafafafafafafafafafafbGbGbGbGbGewewbGbGbGafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababacacacacacacacabababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababbGbGbGabababaaaaabababababaaaaaaaaaaaaaaafafaiaiaiaiaiaiaiaiaiafafbGbGbGbGbGbGbGbGbGgPgsgsgsgQewbGbGbGafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababacacacacacacababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacafafafafafafafafafafabababababababbGbGababaaaaabababababaaaaaaaaaaaaaaafafaiaiaiaiaiaiaiaiaiafafbGgPgsgsgsgsgsgsgsgQgPgsgsgsgQbGbGbGbGafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacababababbGbGcscsababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababababacacacacacacacacacacacacacacacacacacacacacafhdhdhdhdhdhdhdafafabababacabababbGaaaaaaaaaaabababababaaaaaaaaaaaaaaafafaiaiaiaiaiaiaiaiafafafbGewgPgsgsgsgsgsgsgsgQbGbGbGbGbGbGbGafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababacacabababbGbGbGbGbGbGbGbGabababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababababacacacacacacacacacacacacacacacacacacacacafafhdhhhihjhkhhhdafafabababacacabababaaaaaaaaaaabababababaaaaaaaaaaaaaaafafaiaiaiafafafafafafbGbGbGewewbGbGbGbGbGbGbGbGbGafafafafafafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaababbGbGabababababbGbGbGbGbGbGbGbGbGbGbGbGabababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababbGababacacacacacacacacacacacacacacacacafafafafafafhdhhhphqhrhshdafafabababacacababababaaaaaaaaabababababaaaaaaaaaaaaafafafaiaiafafafafafafafbGbGbGewewbGbGbGbGafafafafafafafafafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaaaaaaaaaaaaabbGbGbGbGababbGbGbGbGbGhMhMhMbGbGbGbGbGbGbGababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababbGababacacacacacacacacacacacacacacacacafhthuhvafhwhdhdhdhxhdhdhdafafabababacacacababababaaaaaaababababaaaaaaaaaaaaafafafafafafafbGbGbGbGbGbGbGbGgPgQewbGbGbGafafafafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaaaaaaaaaaaaaaaabGbGbGbGbGbGbGbGbGbGhPhQhRbGbGbGbGbGbGbGababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababbGababacacacacacacacacacacacacacacacacafhyhvhzafhwhAhBhwhChwafafafafabababacacacacabababaaaaaaababababaaaaaaaaaaafafafbGbGbGbGbGbGbGbGbGbGbGbGgPgQgPgQbGbGafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafaaafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababaaaaaaaaaaaaaaaaaaaabGhThThThThThThUhUhUhUhThThThThVbGababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababbGbGabababacacacacacacacacacacacacacacacafafhtdQafhwhEhFhGhChwbGafafafabababacacacacacabababaaaaababababaaaaaaaaafafafafbGbGbGgPgsgsgsgsgsgsgsgsgQgPgQbGbGafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafaaaaaaafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababbGaaaaaaaaaaaaaaaabGhUibicidhUieifigihiihUijikilcgbGabababacacacacacacacacacacacacacacacabababababababababababababacacacacacacacacacacacacacacababababbGbGababababacacacacacabababababacacacacafafhHafafhwhwhwhwhIhwbGbGafafafafafacacacacacababababaaaaabababaaaaaaaaaaafafbGbGbGbGewgPgsgsgsgsgsgsgsgsgQbGbGafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacababbGbGbGbGbGbGaaaaaaaaaabGhUizijiAhUiBiBiBiBiCiDijikiEchbGabababababababababababacacacacacabababababababababababababababababababacacacacacacacacabababababbGbGbGbGababababababacababababababacacacacafafcHafafhwhAhKhwhChLbGbGbGbGbGbGafafacacacacacabababaaaaabababaaaaaaaaaaafafbGbGbGbGewewbGbGbGbGbGbGbGbGbGbGbGafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafafafaiafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababacacacacababbGbGbGbGbGbGbGbGbGaaaabGhTiRijijiSijijijijiThUiUiVhUcIbGbGcsababababababababababacacababababababbGbGbGbGbGbGbGbGbGababababababacacacacacacababababababbGbGbGbGbGbGabababababababababbGababacafafafafafcHafafhwhEhFhNhChLbGbGbGbGbGbGbGafacacacacacacababaaaaababaaaaaaaaaaaaafafbGbGbGbGewewbGbGbGbGbGbGbGbGbGbGbGafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababacacacacacababababababbGbGbGbGbGbGbGhUjnijjojpjqjrjsijjthThThThThTgOdZbGbGdcdcdcdcdcdcdcababababababababbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGababababababababababababbGbGbGbGbGbGbGbGbGbGbGabababababbGbGababacafhwhwhwhwhShwhwhwhwhwhwhChLbGbGbGbGbGbGbGafafafafafabababababaaaaaaaaaaaaaaaaaaafafbGbGbGgOdYdYdZbGbGbGbGbGbGbGbGbGbGafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafafafaaaaaaafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacababababababbGbGhUjHijjIhUjJjKjLijjMjNjOjPjQjRgUgVgsgsgsgsgscJcJflbGbGbGababababbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGababababababababababbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGabababbGbGabababafhwiminhWhXhYhZhwhAiahwhIhwhwhwhLhLhLhwbGbGbGbGbGababababaaaaaaaaaaaaafafafafafafbGbGbGbGdUeleldWbGbGbGbGbGbGbGbGbGafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafafafafaaaaaaaaafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababacacacacacacacacacacacacababababbGhThThThThTkmknkohThTkpkqkqkqkqgUgVgsgsgsgsgsgsflfkflbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGabababbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGabbGbGabababafhwnLioioipioiqhwhEhFirhChwisitiuiuiuhLbGbGbGbGbGbGababaaaaaaaaaaaaaaaaafafafbGbGbGbGbGbGbGewiviwixixiyiybGbGbGbGbGafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafaaaaafafaaaaaaaaaaafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacacacacacabbGbGbGbGbGhTkNkOkPkQhTcQcRhtbGbGdUdWbGbGbGbGbGbGfkflfkflbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGabbGbGbGbGbGbGbGbGbGbGbGbGbGhwiGioiHiIiJiKhwhwhwhwhChwisiLiLiLiMhLbGbGbGbGbGbGabaaaaaaaaaaaaaaaaaabGbGbGbGbGbGbGbGgPgsgQiyiNiOiPiPiybGiQbGbGbGafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafaaaaaaaaafaaaaaaaaaaaaafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababacacacacacacacacacacacacacacabbGbGbGbGbGhTlnlolplqhTbGbGbGbGbGbGbGbGbGbGababdcbGfkflfkflbGbGbGbGgOdZbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGababababbGbGbGbGbGbGbGbGbGbGbGbGafhwiWioiXioiYioiZiMjajbjchwjdiLjeiLjfhLbGbGbGbGbGbGaaaaaaaaaaaaaaaaaaaaalaabGbGbGbGbGjgjhjijiiyjjjkjljmiyiyiyiycSbGbGafafafaiaiaiaiaiaiaiaiaiaiaiaiafafafafafaaaaaaaaaaaaaaaaaaafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacacababababbGbGbGhThThThThThTbGbGbGbGbGbGabababababababdcbGfkflfkgsgsgsgsgUgVgsgsflbGababbGbGababbGbGbGbGbGbGbGbGgOdZbGbGbGbGbGbGbGbGbGbGbGbGbGbGababababbGbGbGbGbGbGbGafafafafhwhwhwhwhwhwhwhLjujvhLjuhwhwhwhwhwjwhwhwhLhLbGbGaaaaaaaaaaaaaaaaaaaaaaalaaaaaabGbGjijijxjyjzjAjBjCjDjEixjFjGixcTbGbGbGcsafafaiaiaiaiaiaiaiaiaiaiaiafafafafafafafafaaaaaaaaaaaaafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacacacacababbGbGbGbGbGbGbGbGbGbGbGbGbGbGababababababababbGbGbGfkgsgsgsgsgsgUgVgsflewbGababababababbGgPgsgsgsgsgsgsgUgVgsgsgsgsgsgsgsflbGbGbGbGbGbGbGbGababababbGbGbGbGbGafafafafafafafhwjSjTjUiLjfjViMjfiZjWjXiLiMjfiLiLjYhLhLhLjZkakakakakakakakbkbkbkbkbkbkbjijijikckdkekfkgkhjCjDjDkikjkkklcYbGbGbGcsafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacacacacacababbGbGbGbGbGbGbGbGbGbGbGbGbGababababababbGbGbGbGbGbGbGbGbGbGbGdUdWbGewewbGabababababbGbGewgPgsgsgsgsgsgUgVgsgsgsgsgsgsflfkflbGgOdZdcdcbGbGbGabbGbGbGbGbGbGbGbGbGbGbGafafafhwhwhwhwkrjfksktkujbkvkwkwkxkxkwkwkykzkykzkAkAkAkAkAkAkAkAkBkBkBkBkBkBkBkCkDkCkDkEkFkGixkHkIkJkKixkLkMixcZbGbGbGbGafafafaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababacacacacababababababababababababbGababbGbGbGbGbGbGbGbGbGabababababbGbGbGbGbGbGbGbGbGababababbGbGbGewewbGbGbGgOdZbGbGbGewewbGbGbGbGbGdUdWbGbGbGbGbGbGfkflfkgsgUgVgsgsgsflbGbGbGbGbGbGbGbGbGbGbGbGbGbGafafafafafhwiLkTkUkVkVkUkWkXkYkVkVkUkUkZlalalalblblblblblblblblclclclclclcldlelelelflglhlijgjgjhjgjgjgjgjgjgdblklllklmcsafaiaiaiaiaiaiaiaiaiaiaiafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababacacacacababababababababababababbGababbGbGbGbGbGbGbGbGababababbGbGbGbGabababababababababababbGbGbGewfkgsgsgsgUgVgsgsgsgQewbGbGbGbGbGbGbGbGbGbGbGabbGbGfkgsgsgUgVgsgsflfkflbGbGbGbGgOdZbGbGbGbGbGbGbGbGbGafafhwhwhLlrhLhwhwlsltluhwhwhLlvhLhwhLbGbGbGaaaaaaaaalaaaaaaalaaaaaaaaaaalaajijilwlxlylzlAlBlClDlElElFlGlHlHlHlHlmbGafaiaiaiaiaiaiaiaiaiaiafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababacacacacabababbGbGbGababbGbGbGbGbGbGababababababababababababababababababababababababababababbGbGbGbGfkgsgsgsgsgUgVgsgsgsgsgQbGbGbGbGbGbGbGbGbGbGabababbGbGbGbGdUdWbGbGfkflfkgsgsgsgsgUgVgsgsgsgsgsgsgsflbGbGafhwlIlJlKlLhwlMlPlOnKlZhwlRlSlTlUbGbGbGbGbGbGaaaaalaaaaaaalalalalalalalalaljglVlWlXjgjgjgjgjgjgjgjgjglYlmlmlmlmbGafaiaiaiaiaiaiaiaiaiafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababacacacacabababbGbGbGababbGbGbGbGbGbGabababacacacacacacacacacababababababababacacacacacacabababababbGbGbGbGbGbGdUdWbGbGbGbGbGbGbGbGbGbGbGabababababababababababababbGbGbGfkgsgsgsgsgsgUgVgsgsgsgsgsgsflewbGbGbGhwmcmambnJhwmdlQlQmemfhwmgmhmihwbGbGbGbGbGbGalalalalalalalaaaaaaaaaaalaaaljgmjmkmlmmjgmnmoeemqaYaYjgbGbGbGbGbGafafaiaiaiaiaiaiaiaiaiafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababacacacabababbGbGbGbGbGbGbGaaaaaaaabGbGabababacacacacacacacacacacacacacacacacacacacacacacabababababbGbGbGbGbGbGbGbGbGbGbGbGbGbGabababbGbGbGababababababababababbGbGbGbGbGbGbGbGbGbGbGdUdWbGbGbGbGbGbGewewbGbGbGlUhwhwhwhwhwmsmtmumvmfhwhLmwhLhwbGbGbGbGbGbGaaaaalaaaaaaalaaaaaaaaaaalaajijilwmxmlmmlemykckdmzeEbOjgafafafafafafaiaiaiaiaiaiaiaiaiaiafafaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababacacacacabababbGbGaaaaaaaaaaaaaaaaaaaabGabababacacacacacacacacacacacacacacacacacacacacacacacacacababbGbGbGbGbGbGbGbGbGbGbGbGababababababbGbGbGabababacabababbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGewfkgsflbGbGbGbGbGbGlUhwhwhwhwhwlUmCmCiFmDbGbGbGbGbGaaaaaaalaaaaaaalaaaaaaaaaamEjimFmGmHmxmlmIjgmJlwmKmLjgmMjgaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafaaaaaaafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababacacacacababbGbGaaaaaaaaaaaaaaaaaaaaaaaaaaababacacacacacacacacacacacacacacacacacacacacacacacacacabababababababababababababababababababababbGbGbGababacababbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGfkgsflfkflbGbGbGbGbGbGbGdUdVdVdVdVdVdVdWbGbGbGbGbGbGalalalalalalalalaaaaaaaamNmOlwmOlwmPmQmRmzlejylwmSmTjimBjgaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacababbGaaaaaaaaaaaaaaaaaaaaaaaaaaaaababacacacacacacacacacacacacacacacacacacacacacacacacacabababababababababababababababababbGbGbGbGbGbGbGababacabababababababababababababababababababababbGbGbGbGbGfkflfkflmUbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGaaaaaaaaaaaaalaaaaaaaaaajijijimVmWmXmYmZnanbncndnenfngjgaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababacacacacacacacacababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababababbGbGbGbGabababacababababababababababababababababababababbGbGbGbGbGbGbGfkflfkgsgsgsgsgsgsgsgsgsgsgsgsgsgsgsflbGbGbGbGbGbGaaaaaaaaaaalaaaaaaaaaaalaajijilwmxnhninjnknlnlmpjimBjgaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababacacacacacacababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababacacacacacacacacacacacamacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababababababbGabababacacacacacacacacacacacacacacabababababbGbGbGbGbGbGafbGbGbGfkgsgsgsgsgsgsgsgsgsgsgsgsgsgsgsflewbGgOdZbGbGbGesesalaaaaalaaaaaaaaaaalaannlCnonpnlnmlenqnrnsjijimBjgaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababacacacacacacababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababababababababacacacacacacacacacacacacacacacababbGbGbGbGbGbGbGbGbGafafafbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGbGewfkgsgUgVgsgsgsntnunvnvnvnvnvnvnvnvnvnvnvnwjgnxnyjymJjgmrnAmAnCnDnEjgaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababacacacacacacababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababababacacacacacacacacacacacacacacacababababababababbGbGbGababafafafbGbGbGbGbGbGbGafafbGbGbGbGbGbGfkgsgsgUgVgsgsgsnFnunvnvnvnvnvnvnvnvnvnvnvnvlCnGjgjijijgnHjgjgjgjgjgjgaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababababababababbGbGababababafafafafafafafafafafafbGbGbGbGbGbGbGbGdUdWbGbGbGesesalaaaaaaaaaaaaaaaaaaaaalalalalalaljgjgjgaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababababbGbGababacacacacacacabababbGbGbGbGbGbGbGbGabababababababababbGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababababbGababacacacacacababababbGbGbGbGabbGbGababababababababababbGaaaaaaaaaaaaaaaaaaafafafafafafafafafafafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababaaaaaaaaaaababaaaaaaaaaaaaaaaaaaaaaaaaaaabababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababbGababacacacacababababbGbGbGababababababababacacacacabababaaaaaaaaaaaaaaaaaaafafafafafafafafafafafafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafafaaaaafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaabababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababababacacacababababbGbGabababababababababacacacacababababaaaaaaaaaaaaaaaaafafafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaababaaaaaaaaaaaaaaaaaaaaaaabababacacacacacacacacacacacabababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababababacacacabababbGbGbGababababacacacacacacacacababababaaaaaaaaaaaaaaaaafafafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababacacacacacacacacababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababbGbGbGabababacacacacacacacacacacabababaaaaaaaaaaaaaaaaaaaaafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababacacacacacacacabababababababbGbGbGabababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababbGbGbGabababacacacacacacacacacacababaaaaaaaaaaaaaaaaaaaaaaafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababacacacacacababababababbGbGbGbGbGbGbGbGbGbGabababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababababbGbGababacacacacacacacacacacababaaaaaaaaaaaaaaaaaaaaaaafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababacababababbGbGbGaaaaaaaaaaaaaaaaaaaaaaaaabababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababababbGababacacacacacacacacacacababaaaaaaaaaaaaaaaaaaaaaaafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababacababbGbGbGaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababacacacacacacacacacacacacacacacacacacacacacamacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababababababacacacacacacacacacacababaaaaaaaaaaaaaaaaaaaaaaafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaaaaaaaaababacababbGbGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababababacacacacacacacacacacababaaaaaaaaaaaaaaaaaaaaaaafafaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiaiafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababacabababbGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababababaaaaaaaaaaaaaaaaaaafafafaiaiaiaiaiaiaiaiaiaiafafafafafafafafaiaiaiaiaiaiafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababacabababbGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababababaaaaaaaaaaaaaaaaafafafaiaiaiaiaiaiaiafafafafafafafafafafafafaiaiaiafafafafafaaafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababacacabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacamacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababaaaaaaaaaaaaaaaaaaafafaiaiaiaiaiaiaiafafafafafaaaaaaaaafafafaiaiaiafafafafaaaaafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababacacabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababaaaaaaaaaaaaaaaaaaafafaiaiaiaiaiaiaiafafaaaaaaaaaaaaaaaaafafafafafafafaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababacababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababababaaaaaaaaaaaaaaaaaaafafaiaiaiaiaiaiafafafaaaaaaaaaaaaaaafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababababaaaaaaaaaaaaaaaaaaaaafafafaiaiaiaiafafafafaaaaaaaaaaaaaaaaafaaafafafaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababaaaaaaaaaaaaaaaaaaaaaaaaafafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababaaaaaaaaaaaaaaaaaaaaaaaaafafafafafafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababaaaaaaaaababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababaaaaaaaaaaaaaaaaaaaaaaaaafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaaaaaaaaaaaaaaaaababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababaaaaaaaaaaaaaaaaaaaaaaaaafafafafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaabababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababababacacacacabababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababacabababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababababababababababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababababababaaababababababababaaabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababaaaaaaababacacacacacacacacacacacacacacacacacabababababacabababababababaaaaaaabaaaaaaaaababababaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababacacacacacacacacacacacacacacacacacababababababababababababababaaaaaaaaaaaaaaababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacacacacacacacacababaaabababababaaaaaaababaaaaaaaaaaaaaaaaababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacacacacacababababababaaaaabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababacacacacacacacacacacacacacacacababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababacacacacacacacacabababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababacacacacacacacabababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababacacacacacacacababaaababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababacacacacacacababaaaaabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababaaaaabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababaaaaabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababaaaaaaaaabababaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacaaacacacaaaaacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacaaaaaaaaaaaaaaacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacaaaaaaaaaaacacacacadadadadadadacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacaaaaaaacacacacacacacacacacacacacacacacadadadadadadadadacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababaaaaababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacadadadadacacacacacacacacacadadadadadadadadadacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacadadadadadadadadadadadadadadadadadadadadadadacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacadadadadadadadadadadadadadadadadadadadadadadadadadacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaeaeaeaeaeabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacadadadadadadadadadadadadadadadadadadadadadadacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacadadadadadadadadacacacacadadadadadadadadadadacacacacaaaaaaaaaaaaaaaaafagafaaaaaaaaacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacadadadadadadacacacacacacadadadadadadadadacacacacaaaaaaaaaaaaaaaaaaaaahaiahajaaaaacacacaaaaacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaeaeaeaeaeababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacakakadadadadadadacacacacacacadadadadadadadadacacaaaaaaaaaaaaaaaaaaaaaaaaalamanaoajaaacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaeaeaeababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacakakadadadadadacacacaaaaacacadadadadadadadadacacaaaaaaaaaaaaaaaaaaaaaaaaapaqaiahajaaacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaaaaaaaaaaaaaaaaabababaeaeaeababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacaaaaacacadadadadadadadacacacaaaaaaaaaaaaaaaaaaaaaaaaaparasatajajacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaaaaaaaaaaaaaaabababaeaeaeababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacaaaaacacadadadadadadadacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaauaiavacacacacacacacaaaaaaaaacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaaaaabaaaaaaabababaeaeaeaeababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacaaacacacaaaaaaaaaaaaaaacacacadadadadadadadacacaaaaaaaaaaaaaaaaaaaaaaajajawaxaiavacacacadadacacacacaaacacacacacaaacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababaaaaaaabababaeaeaeaeababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacaaaaacacaaaaaaaaaaaaaaacacacadadadadadadadadacacacajajajaaaaaaaaaaaaajajayazaAaBavacacacadadacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababaaaaaaababaeaeaeaeaeababaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacadadadadadadadadadadacacajaaaaaaaaaaaaajajaCaDaEavaFaGavavavavadadadadacacacacacadacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaeaeaeababaaaaabababaeaeaeaeaeababaaaaaaaaaaaaababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacadadadadadadadadadadadacacajaaaaaaaaajaHaIapaJaKaLafaMaBavaNaNavadadadadadadadadadadadadadacacacacacaaaaaaaaaaaaaaaaaaaaaaaaababaeaeaeabababababababaeaeaeaeaeabababaaaaaaaaabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacadadadadadadadadadadadacacajaaaaaaajaOaPaIasaQaRaRaSaBaFaTaUaNavadadadadadadadadadadakadadacacacacacaaaaaaaaaaaaaaaaaaaaababababaeaeaeababababababaeaeaeaeaeaeabababaaaaaaababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacaaaaaaacacadadadadadadadadadadacacacajaaaaaVaOaPaOapapaWaQaQavaFaXavaNaYavadadadadadadadadadadadadadacacacaaaaaaaaaaaaaaaaaaaaababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacaaaaacacadadadadadadadadadadacacacajajajaZbaapbbbcapaWaXaXbdaWaFavavavavavavadadadadadadadadadadacacacacaaaaaaaaaaaaaaaaaaaaaaabababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacadadadadadadadadadadacacajajajbebfbgapbcapasbhbiaFavaRbjavbkaiaQblavadadadadadadadacacacacacacacaaaaaaaaaaaaaaaaaaaaaaabababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaacacacacacacacacadacacacacacacadadadadadadadadadadacacajajajavaLaWbmapbgaQbnbobpafaRaQavbkaiaiblavadadadadacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaabababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacadadadacacadadadadadadadadadadadadadavavavavavavaKaQbqaWaQaXbrbpbpaSaiaiavbkasaFblavadadacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacadadadadadadadadadacadadadadadadadadadadadadadavbsbtbubvavbebwbfavbdavbxbxbxavaQaiaiaiaibybiavadadacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacadadadadadadadadadadadadadadadadadadadadadadadavbsbzbAbzbBaFbCbyaFbDbiaMbEaFbiaMaWavaiaXaFaFavadadacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacakadadadadadadadadadadadadadadadadadadadavbsbzbFbFbBaXaFaFaMaBaFaFaFbyaFaFaFavaFbibDaFavadadacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacadadadadadadadadadadadadadadadadadadavbsbGbFbHavbIbJbxbxbJaXbJbxbxbxaFaFavbKbyaFaXavadadacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacbLbLacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacadadadadadadadadadadadadadadadadadavavavavavavbMbJaFaFaFaFbyaFbNbxbDbiavbObPbQbRavadadacacaaaaaabSbSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacbLbLbLacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacadadadadadadadadadadadadadadadadadadadadadavbIbJaFaXbTbUaBbiaFbxaFaFavaibVbVbWavadadacacaaaabSbSbSbSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacbLbLbLbXbLbLbLacacacaaaaaaaaaaacacacacacaaaaaaaaaaaaaaaaaaacacadadadadadadadadadadadadadadadadadadadadavbIbJaFbiaFaFbNaFaXbJbIavavbkaibVbYbZadadacacaaaabSacacbSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacbLbLbLcacbbLacacacaaaaaaaaaaacacacacacacacaaaaaaaaaaaaaaaaaaacacacadadadadadadadadadadadadadadadadadadavccbJbJbJbJbJbJbJbJbJbIavbkaicdaibWceadadacacaaaabSacacbSbSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacbLbLbLbLbLbLacacacaaaaaaaaaaacacacacacacacacacaaaaaaaaaaaaaaaaacacacadadadadadadadadadadadadadadadadadavccbIbIbIcfcgbIbIbIccccavbkcdcdcdblavadadacacaaaabSacacacbSbSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababaaaaaaaaaaababababaaaaaaaaaaaaabaaaaaaaaababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacbLbLbLbLbLbLacacaaaaaaaaaaaaaaaaacacbLbLacacacacacaaaaaaaaaaaaaaacacacacadadadadadadadadadadadadadadadavavavavavavavavavavavavavavbRchciavavadadacacacaabSacacacbSbSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababaaaaabababababaaaaaaaaaaababababaaaaababababaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacbLbLbLbLbLacacacacacaaaaaaaaaaaaaaacacbLbLbLbLbLacacbSbSaaaaaaaaaaaaaaacacacadadadadadadadadadadadadadadadadadadadadadadadadadcjcjcjavckbVcdavcjadadacacacaabSacacacacbSbSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababababababababababaaaaaaabababababaaaaababababaaaaaaaaaaaaabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacbLbLbLbLbLacacacacacaaaaaaaaaaaaacacacbLbLbLbLbLbLacacbSbSaaaaaaaaaaaaaaacacadadadadadadadadadadadadadadadadadadadadadadadadadcjcjcjavclcmclavcjadadadacacbSbSacacacacacbSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababababaeabababababababababababaaaaababababaaaaaaaaababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacbLbLbLbLacacacacacacaaaaaaaaaaacacacbLbLbLbLbLbLbLacacacbSbSbSaaaaaaaaaaaaacacadadadadadadadadadadadadadadadadadadadadadadadadadcjcjavcnchcoavcjadadadacacacbSacacacacacbSbSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaeaeaeaeaeaeaeabababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababababababababaaaaabababababaaaaabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacbLbLbLbLacacacacacacacacacacacacacacbLbLbLbLbLbLbLacacacbSbSbSbSbSaaaaaaaaacacadadadadadadadadadadadadadadadadadadadadadadadadadcjcjcjcpcqcrcjcjadadadacacacbSacacacacacacbSbSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaeaeaeaeaeabababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababaaaaaaababababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacbLbLbLbLbLbLbLbLbLbLbLacacacacacacbLbLbLbLbLbLbLbLbLbLacacbSbSbSbSaaaaaaaaaaacadadadadadadadadadadadadadadadadadadadadadadadadadcjcjcjcjcjcscjcjadadadadacacbSbSacacacacacbSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaeaeaeabababababaaaaababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaababaeababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacbLbLbLbLbLbLbLbLbLbLbLacacacacbLbLbLbLbLbLbLbLbLbLbLbLacacbSacacbSbSaaaaaaaaacacadadadadadadadadadadadadadadadadadadadadadadadcjcjcjcjcjcjcjcscjadadadadacacacbSbSacacacacbSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababaaaaabababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababababaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLacacbSacacacbSaaaaaaaaaaacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacbSbSacacacacbSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababaaaaaaaaabababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababababaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacbLctctctctctctbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLacacbSbSacacbSbSbSaaaaaaacacadadadadadcuadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacbSbSbSbSbSbSaaaaaaaaaaaaaaaaaaaaaaajajajajajajajajajabababaaaaaaaaaaababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacaaacacaaaaaaaaaaaaaaaaaaaacvcvctctctctcwcwcwcxctbLbLbLcycybLbLbLbLbLbLbLbLbLbLbLbLbLbLbLacacacbSacacacacbSaaaaaaaaacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacacbSbSbSbSbSaaaaaaaaaaaaaaaaaaaaajajbSbSbSbSbSczbSajaaaaaaaaaaaaaaabababaeaeaeaeaeaeaeaeaeababababababababababababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacadacacacacacacaaaaaaaaaaaaaaaaaaaacvcAcBcCcDcEcFcGcGcGctcHcHcHcHcIcybLbLbLbLbLbLbLbLbLbLbLbLbLbLbLacacacacacacacacacaaaaaaacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacbSbScJcKcLcLcLcLcLcLcLcLcLcLcMcNbSababababcNcObSbSbSaaaaaaaaaaabababaeaeaeaeaeaeaeaeaeabababababababababababababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacadadadacacacacacaaaaaaaaaaaaaaaaaaaacvcPcQcRcScEcTcGcUcVcWcXcYcYcHcIcZcybLbLbLbLbLbLbLbLbLbLbLbLbLbLacacadadadadadacacaaaaaaaaacadadadadadadadadadadadadadadadadadadadadadakadadadadadadadadadadadadadadadadacacbSbSbSdadadadadbdcdddadadadadabSbSababababababababbSbSaaaaaaaaababaeaeaeaeaeaeaeaeabababbSbSbSbSbSbSbSbSbSbSbSbSbSbSababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacadadadadadadacacacaaaaaaaaaaaaaaaaaactctctcEdedfdgcEdhdicEcEctctctdjdkdlcycybLbLbLbLbLbLbLbLbLbLbLbLbLbLbLacadadadadadacacacaaaaaaacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacbSbSbSdmdmdmdmdmdndmdmdmdmdmdmbSbSabababaeabababababbSbSaaaaabababaeaeaeaeaeaeaeababababbSbSbSbSbSbSbSbSbSbSbSbSbSbSabababababaeaeaeaeaeaeaeaeaeaeaeaeababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacadadadadadadadacacacaaaaaaaaaaaaaaaaaactdodpcEdqcGcFdrdscGdtcEdududucIcYcYcycybLbLbLbLbLbLbLbLbLbLbLbLbLbLbLacadadadadadadacacaaaaaaacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacbSbSbScNdvdwdwdwdwdwdwdwdwdwdwdxcNbSabababaeaeaeababababczbSaaaaabababaeaeaeaeaeaeababbSbSbSbSbSdydydzdydydybSbSbSbSbSbSabababababaeaeaeaeaeaeaeaeaeaeaeababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacadadcuadadadadacacacajajajajajajajajajctdAdBdCdDdEdFcGdqcGcGdGduducYcYcYcYdHcybLbLbLbLbLbLbLbLbLbLbLbLbLbLbLacadadadadadadacacacacaaacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacbSbSbSaaaaaaaaaaaaaaaaaaaaaaaaaaaabSbSababaeaeaeaeaeabababcNcObSaaabababaeaeaeaeaeaeababbSbSbSbSbSdydIdJdKdLdybSbSbSbSbSbSbSbSbSababaeaeaeaeaeaeaeaeaeaeaeababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacadadadadadadadacacaaaaaaaaaaaaaaaaaaaactdMdNdOdPdEdQcGdqdRcGcEdSdTdTcYcYcIcIcycybLbLbLbLbLbLbLbLbLbLbLbLbLbLacadadadadadadadadadacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacbSbSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabSabababaeaeaeaeaeababababbSbSbSabababaeaeaeaeaeababbSbSbSbSbSdydUdVdWdXdybSbSbSbSbSbSbSbSbSababaeaeaeaeaeaeaeaeaeaeaeababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacadadadadadadadadadacacaaaaaaaaaaaaaaaaaaaactcEcEcEdYcGdZdEeadgebecededeeefcYcIcIegcybLbLbLbLbLbLbLbLbLbLbLbLbLbLacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacbSbSaaaaacacacaaaaaaaaaaaaaaaaaaaaaaaaabababaeaeaeaeaeaeababababbSbSabababababababababbSbSbSdydydydydyeheidydydydydydydydydybSbSababaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacadadadadadadadadadadacacaaaaaaaaaaaaaaaaaaaaejekejelemcGdqcGcGeneocEepeqercYcYcIcIescybLbLbLbLbLbLbLbLbLbLbLbLbLacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacacbSbSacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaababaeaeaeaeaeaeaeababababbSbScNababababababcNbSbSbSeteuevewetexeyezeAeAeAeBeCeDeEdybSbSababaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacadadadadadadadadadadadacacaaaaaaaaaaaaaaaaaaaactctctctcGcGdqdgeFcEeGcEdududucIcIcIcIeHcEbLbLbLbLbLbLbLbLbLbLbLbLbLaccjadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacbSbSbSacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaababaeaeaeaeaeaeaeaeababababbSeIbSbSbSbSbSbSeIbSbSbSeteJeAeKeteLeMeNdydyeOePeQeQeRdybSbSababaeaeaeaeaeaeaeaeaeaeaeaeababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacadadadadadadadadadadadadacacacaaaaaaaaaaaaaaaaaaaaaacteScGcGdqeTeUeVeWcEeXeYcIcIcIcIdHcycybLbLbLbLbLbLbLbLbLbLbLbLbLaccjadadadadadadadadadadadadadakadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacbSbSbSacacacacadacacacaaaaaaaaaaaaaaaaaaaaaaaaababaeaeaeaeaeaeaeaeaeabababbSbSbSbSbSbSbSbSbSbSbSbSdyeZfafbfcfbfdfefffgfhfifjfkbSbSbSbSababaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaacacacakakakakadadadadadadadadadadadadadacacacaaaaaaaaaaaaaaaaaaflflflfmfmfnfofpfqfqcEfqfqfrcIcYcIcIdHcybLbLbLbLbLbLbLbLbLbLbLbLbLbLaccjadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacacacacacacadadadacacacaaaaaaaaaaaaaaaaaaaaaaababaeaeaeaeaeaeaeaeaeaeabababbSbSbSbSbSbSbSbSbSbSbSetfseAfteteAfufefvfwfhbSbSbSbSbSbSbSababaeaeaeaeaeaeaeaeaeaeaeaeabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacadadadadadadadadadadadadadadacacaaaaaaaaaaaaaaaafxfyfmfzfmfmfAfBfCfDfEfFfGfHduducIcIcIcycybLbLbLbLbLbLbLbLbLbLbLbLbLbLaccjadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadakadadadadacacacacacadadadadadacacacacaaaaaaaaaaaaaaaaaaaaabababaeaeaeaeaeaeaeaeaeabababcNababababababcNbSbSbSetfIeAfJetfKeAfefvfwfhbSbSbSbSbSbSbSababaeaeaeaeaeaeaeaeabababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacadadadadadadadadadadadadacacaaaaaaaaaaaaaaaaaaflfqfqfqfLfofqfqfMfNfOfqfqfPducIcIcycybLbLbLbLbLbLbLbLbLbLbLbLbLbLacaccjadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacaaaaaaaaaaaaaaaaaaaaabababaeaeaeaeaeaeaeaeaeaeababababababababababbSbSbSdydyetetdydyetfQetfwfhbSbSbSbSbSbSbSababaeaeaeaeaeaeaeaeababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacadadadadadadadadadadadacacacaaaaaaaaaaaaaaaaflfRfSfTfUfVfWfXfYfZgagbgcgdgegfcycybLbLbLbLbLbLbLbLbLbLbLbLbLbLbLaccjcjadadadadadadadadadadadadadadadadadadadadadadadadadadadakadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacaaaaaaaaaaaaaaaaaaaaababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababbSbSbSbSbSggghgidygjeAgkfwfhbSbSbSbSbSbSbSababaeaeaeaeaeaeaeaeababaaabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacadadadadadadadadadacacacajajajajajajajajglgmfSgnfSgofqgpgqgqgrgsfqcycycycybLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLaccjadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacacaaaaaaaaaaaaaaaaaaababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababbSbSbSbSbSgtgtgtdygugvgwfwfhbSbSbSbSbSbSbSababaeaeaeaeaeaeaeaeababaaaaaaabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacadadadadadadadadadadacacaaaaaaaaaaaaaaaagxgygzgAgBgCfqgDgEgFgGgsfqcybLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLacaccjadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacaaaaaaaaaaaaaaaaaaababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababbSbSbSbSbSbSdyetgHetfwgIbSbSbSbSbSababababaeaeaeaeaeaeaeaeababababaaaaabababaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacadadadadadadakadadadacacacaaaaaaaaaaaaaagJgKgLflflflfqfqfqfqfqfqfqcybLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLaccjcjadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadakadadadadadadadadadadadadadacacacaaaaaaaaaaaaaaaaabababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabbSbSbSbSbSbSbSgMgNgOgPgQgRbSbSbSababababaeaeaeaeaeaeaeaeaeabababaaaaaaaaababaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacadadadadadadadadadadadacacacaaaaaaaaaaaaaaaaaaaaabcycycycycycycycycycybLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLaccjcjadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacaaaaaaaaaaaaaaaaabababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabbSbSbSbSbSbSbSbSbSgMgSgSgObSbSbSababaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacadadadadadadadadadadadadacacacacacaaaaaaaaaaacacacacbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLaccjadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacaaaaaaaaaaaaaaaaababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababababababbSbSbSgTgTbSbSbSabababaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacadadadadadadadadadadadadacacacacacacaaaaacacacacacacbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLaccjadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacacaaaaaaaaaaaaaaababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababababababababgTgUgVgWbSababaeaeaeaeaeaeaeaeaeaeaeaeababaaaaaaaaaaaaaaaaaaaaaaaaababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacadadadadadadadadadadadadadadadacacacacacacacacacbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacaaaaaaaaaaaaaaababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababgUgVgWgTbSababaeaeaeaeaeaeaeaeaeaeaeaeababaaaaaaaaaaaaaaaaaaaaaaabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacadadadadadadadadadadadadadadadadacacacacacacacbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacaaaaaaaaaaaaababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababbSbSgTgTbSababaeaeaeaeaeaeaeaeaeaeaeaeababaaaaaaaaaaaaaaaaaaaaababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacadadadadadadadadadadadadadadadadadadadadadacbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLacadadadadadadadadadadadadadadadadadadadadadadakadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacacaaaaaaaaaaabababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababbSbSgTgTbSbSabaeaeaeaeaeaeaeaeaeaeaeaeababaaaaaaaaaaaaaaaaaaaaababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacadadadadadadadadadadadadadadadadadadadacbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacaaaaaaaaaaabababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababbSgTgTbSbSababaeaeaeaeaeaeaeaeaeaeaeababaaaaaaaaaaaaaaaaaaababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacadadadadadadadadadadadadadadadcjacbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadakadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacaaaaaaaaaaababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababbSgTgUgWbSababaeaeaeaeaeaeaeaeaeaeaeababaaaaaaaaaaaaaaaaabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacadadadadadadadadadadadadadadadadcjacbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacaaaaaaaaaaabababaeaeaeaeaeaeaeaeaeaeaeaeaeabababababaeaeaeaeaeaeaeaeaeaeababbSgUgWgTbSababaeaeaeaeaeaeaeaeaeaeaeababababaaaaaaaaaaaaabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacadadadadadadadadadadadadadadadadadcjacbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLacacacacacacadadadadadadadadadadadadadadadadakadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacaaaaaaaaabababaeaeaeaeaeaeaeaeaeaeaeaeababababababaeaeaeaeaeaeaeaeaeaeababbSbSgTgTbSbSabaeaeaeaeaeaeaeaeaeaeaeabababababbSaaaaaaababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacadadadadacacacacacacadadadadadadadcjacacbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLacacacacaccjcjcjcjadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacacacadadadadadadadadadadadacacacaaaaaaaaaaabababaeaeaeaeaeaeaeaeaeaeababababaaababaeaeaeaeaeaeaeaeaeaeaeababbSgTgTbSbSababaeaeaeaeaeaeaeaeaeaeaeaeabababbSaaaaaaababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacadadadacacacacacacacacacadadadadadadcjcjacbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLacacaccjcjcjcjcjcjcjadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacacacacadadadadadadadadadadadacacacaaaaaaaaabababaeaeaeaeaeaeaeaeaeaeabababaaaaababaeaeaeaeaeaeaeaeaeaeaeababbSgTgUgWbSababaeaeaeaeaeaeaeaeaeaeaeaeaeababbSbSbSababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacadadacacacacacacaaaaacacacacacadadadadadcjacbLbLbLbLbLbLbLbLbLbLbLbLbLbLbLacaccjcjcjcjadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacbSbSacacacacacadadadadadadadadadacacacaaaaaaaaaaabababaeaeaeaeaeaeaeaeabababaaaaabababaeaeaeaeaeaeaeaeaeaeaeababbSgUgWgTbSababaeaeaeaeaeaeaeaeaeaeaeaeaeababbSbSabababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacadacacacacacacaaaaaabSacacacacadadadadadadacacbLbLbLbLbLbLbLbLbLbLbLbLbLbLaccjcjadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacbSbSacacacacacadadadadadadadadadacacaaaaaaaaaaababababababaeaeaeaeababababaaaaabababaeaeaeaeaeaeaeaeaeaeaeababbSbSgTgTbSbSabaeaeaeaeaeaeaeaeaeaeaeaeaeababbSbSabababaeaeababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacaaaaaaaabSbSbSacacadadadadadadadacacacbLbLbLbLbLbLbLbLbLbLbLacacadadadadadadadadadadadadadadadadakadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacbSbSbSacacacacadadadadadadadadacacacaaaaaaaaaaababababababababababababaaaaaaababaeaeaeaeaeaeaeaeaeaeaeaeaeababgXgQgQgRbSababaeaeaeaeaeaeaeaeaeaeaeaeababababababaeaeaeababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacaaaaacaaaaaaaaaabSacbSacacadadadadadadadadadacacacacacacacacacacacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacacbSbSacacacacacadadadadadadacacacaaaaaaaaaaaaaaaaababababababababaaaaaaabababaeaeaeaeaeaeaeaeaeaeaeaeaeababgMgSgSgObSababaeaeaeaeaeaeaeaeaeaeaeaeababababababaeaeaeababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacaaaaaaaaaaaaaaaaaaaabSacacacacadadadadadadadadadadadcjcjcjcjcjadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacbSaaaaacacacacacadakakadacacacacaaaaaaaaaaaaaaaaaaaaaaababababaaaaaaaaabababaeaeaeaeaeaeaeaeaeaeaeaeaeababbSgTgTbSbSabababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacadadadadadadadadadadadadadcjcjadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacaaaaaaaaacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaeaeaeaeaeaeaeaeaeaeaeaeaeaeababbSgTgTbSbSbSbSabaeaeabababababaeaeaeaeaeaeaeaeaeaeaeaeaeababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacacaaaaaaaaacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaeaeaeaeaeaeaeaeaeaeaeaeaeaeababbSgTgTbSbSbSbSabaeaeababbSababaeaeaeaeaeaeaeaeaeaeaeaeaeabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacacaaaaaaaaaaacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababaeaeaeaeaeaeaeaeaeaeaeaeaeababbSgTgTbSbSbSabababababbSbSababaeaeaeaeaeaeaeaeaeaeaeaeaeabababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacadadadadadadadadadadadadadadadadadadadadadadadadakadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababaeaeaeaeaeaeaeaeaeaeaeaeababbSgTgTbSbSbSababababbSbSabababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadakadadadadadadadadadadadadadadadadadadadadadadadadadakadadadadadacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababaeaeaeaeaeaeaeaeaeaeababbSgTgTbSbSbSabababbSbSbSababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababaeaeaeaeaeaeaeaeababbSbSgTgTbSbSbSbSbSbSbSbSabababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacadadadadadadadadakadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadakadadadadadadadadadadadadadadadadadacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababaeaeaeaeaeaeaeababbSbSgTgTbSbSbSbSbSbSbSbSababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababaaaaaaaaaaababababaeaeaeaeaeaeababbSbSgTgTbSbSabababbSbSbSababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadcuadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababaaaaaaabababaeaeaeaeaeaeababbSbSgTgTbSbSababababbSbSababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababababababaaababaeaeaeaeaeaeababbSbSgTgTbSbSababababbSbSababaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaeaeaeaeababababababababaeaeaeaeaeababbSbSbSgTgTbSbSabaeaeababbSababaeaeaeaeaeaeaeaeaeaeaeaeababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababaeaeaeaeaeaeaeabababababaeaeaeaeaeababbSbSbSgTgTbSababaeaeaeababababaeaeaeaeaeaeaeaeaeaeaeaeababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababbSbSgYgZgTbSababaeaeaeabaeabaeaeaeaeaeaeaeaeaeaeaeaeaeababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadcuadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadakadacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababbSbSgTgYgZbSababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadakadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacaaaaaaaaaaacacacaaaaaaaaaaaaaaabababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababbSbSbSgTgTbSbSabaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacacaaaaaaaaacacacacacacaaaaaaaaaaababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababbSbSbSgTgTbSababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacacaaaaaaacacacacacacaaaaaaaaaaabababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababbSbSbSgTgTbSababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacaaacacacadadadadadadadadadadadakadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadakadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacacaaaaacacacacacacaaaaaaaaaaabababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababbSbSgYgZgTbSababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacaaaaacacacacacacacaaaaaaaaaaababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababbSbSgTgYgZbSababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacaaacacacacacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadakadadadadadadadadadadadadadadadadadadadadadadadadacacacaaacacakadacacacaaaaaaaaaaabababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababbSbSbSgTgTbSbSabaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacacacacadadadacacaaaaaaaaaaabababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababbSbSbSgTgTbSababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadakadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacacacadadadacacacaaaaaaaaaaababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababbSbSbSgTgTbSababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacaaaaaaaaaaababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababbSbSbSgTgTbSababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadakadadadadadadadadadadadadacacaaaaaaaaaaabababaeaeaeaeaeaeaeaeaeaeaeaeaeababbSbSbSbSgTgTbSababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacaaaaaaaaababababaeaeaeaeaeaeaeaeaeaeaeaeababbSbSbSbSgTgTbSababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacaaaaaaaaaaabababaeaeaeaeaeaeaeaeaeaeaeaeaeabababbSbSgTgTbSbSabaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacadadadadadadadadadadadadadadadadadadadadadakadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacaaaaaaaaaaaaabababaeaeaeaeaeaeaeaeaeaeaeaeaeababbSgXgQgQgRbSababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacadakadadadadadadadadadadadadadcuadadadadadadadadadadadadadadadadadadadadadadadakadadadadadadadadadadadadadadadakadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacaaaaaaaaaaaaababababaeaeaeaeaeaeaeaeaeaeaeaeababbSgMgSgSgObSababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacadadadadacacacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacaaaaaaaaaaaaaaabababaeaeaeaeaeaeaeaeaeaeaeaeababbSbSgTgTbSbSababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacadadadacacacacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadakadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacaaaaaaaaaaaaaaaaabababaeaeaeaeaeaeaeaeaeaeaeababbSbSgTgTbSbSbSabaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacadadacacaaaaaaacacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacaaaaaaaaaaaaaaababababaeaeaeaeaeaeaeaeaeaeaeababbSgTgTbSbSbSababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacaaaaaaaaacacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadakadadadadadadadadadadadadadadakadadadadadadadadadadadadadadadadadacacacaaaaaaaaaaaaaaaaabababaeaeaeaeaeaeaeaeaeaeaeababbSgTgTbSbSbSababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacaaaaaaaaaaaaaaaaacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacaaaaaaaaaaaaaaaaaaabababaeaeaeaeaeaeaeaeaeaeababbSgTgUgWbSbSababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacaaaaaaaaaaaaaaaaaaaaacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacaaaaaaaaaaaaaaaaaaababababaeaeaeaeaeaeaeaeaeababbSgUgWgTbSbSababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacaaaaaaaaaaaaaaaaaaaaabababaeaeaeaeaeaeaeaeaeababbSbSgTgTbSbSbSabaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadakadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacaaaaaaaaaaaaaaaaaaaaaaabababaeaeaeaeaeaeaeaeaeababbSgTgTbSbSbSababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacaaaaaaaaaaaaaaaaaaaaaaababababaeaeaeaeaeaeaeaeababbSgTgTbSbSbSababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacaaaaaaaaaaaaaaaaaaaaaaaaaaabababaeaeaeaeaeaeaeaeababbSgTgUgWbSbSababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadakadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababaeaeaeaeaeaeaeababbSgUgWgTbSbSababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacaaaaaaaaaaaaaaabaaaaaaaaaaaaababababaeaeaeaeaeaeababbSbSgTgTbSbSbSabaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacadadadadadadadadadadadadakadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadcuadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacaaaaaaaaaaaaaaababaaaaaaaaaaaaabababaeaeaeaeaeaeaeababbSgTgTbSbSbSababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacadadadadadadadadadadadadadadadadadadadadadadadadadakadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacaaaaaaaaaaaaaaabababaaaaaaaaaaaaabababaeaeaeaeaeaeababbSgTgUgWbSbSababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadakadadadadadadadadadadadadadadadacacaaaaaaaaaaaaaaabababababaaaaaaaaababababaeaeaeaeaeababbSgUgWgTbSbSababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaacacadadadadadadadadadadadadadadadadadadadadadadadadadakadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadakadadadadadadadadadadadadadadacacacaaaaaaaaaaaaaaababababababaaaaaaaaabababaeaeaeaeaeababbSbSgTgTbSbSababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacaaaaaaaaaaaaabababaeababababaaaaaaaaabababaeaeaeaeaeababbSgTgTbSbSbSabaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacaaaaaaaaaaaaaaabababaeaeababababaaaaaaababababaeaeaeaeababbSgTgTbSbSbSababaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacaaaaaaaaaaaaaaababaeaeaeaeabababababbSbSabababaeaeaeaeababbSgTgUgWbSbSababaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadakadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacaaaaaaaaaaaaaaababaeaeaeaeaeabababababbSbSabababaeaeaeababbSgUgWgTbSbSababaeaeaeaeaeaeaeaeaeaeaeaeaeaeababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacaaaaaaaaaaaaaaababaeaeaeaeaeaeaeababababbSababababaeaeababbSbSgTgTbSbSbSabaeaeaeaeaeaeaeaeaeaeaeaeaeaeababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadcuadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacaaaaaaaaaaaaaaababaeaeaeaeaeaeaeaeabababbSbSabababaeaeaeababbSgTgTbSbSbSababaeaeaeaeaeaeaeaeaeaeaeaeaeababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadakadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacaaaaaaaaaaaaabababaeaeaeaeaeaeaeaeaeabababbSbSababaeaeaeababbSgTgTbSbSbSababaeaeaeaeaeaeaeaeaeaeaeaeaeababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacaaaaaaaaaaaaabababaeaeaeaeaeaeaeaeaeaeababababababaeaeaeababbSgTgUgWbSbSababaeaeaeaeaeaeaeaeaeaeaeaeaeababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacacacadacacacaaaaaaaaaaaaababaeaeaeaeaeaeaeaeaeaeaeaeabababababaeaeaeababbSgUgWgTbSbSababaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadakadadadadadadadadadadadadadadadadadacacacacacadacacaaaaaaaaaaaaaaababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababbSbSgTgTbSbSbSabaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacacacadadacacaaacacacacacaaaaaaaaaaaaaaababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababgXgQgQgRbSbSababaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacacacacacacacaaacacacacacaaaaaaaaaaaaaaababaeaeaeaeaeaeaeaeaeababababababababababababababgMgSgSgObSbSababaeaeaeaeaeaeaeaeaeaeaeaeaeababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadakadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacbSacacacacacacaaacacacacacaaaaaaaaaaaaaaababaeaeaeaeaeaeaeaeaeababababababababababbSbSbSbSbSgTgTbSbSbSababaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacadadadadadadadacacacacacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacbSbSbSacacacaaaaacacacacacaaaaaaaaaaaaaaababaeaeaeaeaeaeaeaeaeababbSbSbSbSbSbSbSbSbSgYgVgVgVgZgTbSbSbSababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacadadadadadadacacacacacacacacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadababababababababababacacacacacacacbSbSacacaaaaacacacacacaaaaaaaaaaaaaaababaeaeaeaeaeaeaeaeaeababbSgYgVgVgVgVgVgVgVgZgYgVgVgVgZbSbSbSbSabaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacadadadadacacacacbSbShahaacacacacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacacacadadadadadadadadadadadadadadadadadadadadadabhbhbhbhbhbhbhbababacacacadacacacbSaaaaaaaaaaacacacacacaaaaaaaaaaaaaaababaeaeaeaeaeaeaeaeabababbSgTgYgVgVgVgVgVgVgVgZbSbSbSbSbSbSbSababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacadadacacacbSbSbSbSbSbSbSbSacacacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacacacadadadadadadadadadadadadadadadadadadadadababhbhchdhehfhchbababacacacadadacacacaaaaaaaaaaacacacacacaaaaaaaaaaaaaaababaeaeaeababababababbSbSbSgTgTbSbSbSbSbSbSbSbSbSabababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaacacbSbSacacacacacbSbSbSbSbSbSbSbSbSbSbSbSacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacbSacacadadadadadadadadadadadadadadadadababababababhbhchghhhihjhbababacacacadadacacacacaaaaaaaaacacacacacaaaaaaaaaaaaabababaeaeabababababababbSbSbSgTgTbSbSbSbSababababababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacaaaaaaaaaaaaacbSbSbSbSacacbSbSbSbSbShkhkhkbSbSbSbSbSbSbSacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacbSacacadadadadadadadadadadadadadadadadabhlhmhnabhohbhbhbhphbhbhbababacacacadadadacacacacaaaaaaacacacacaaaaaaaaaaaaabababababababbSbSbSbSbSbSbSbSgYgZgTbSbSbSabababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacaaaaaaaaaaaaaaaabSbSbSbSbSbSbSbSbSbShqhrhsbSbSbSbSbSbSbSacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacbSacacadadadadadadadadadadadadadadadadabhthnhuabhohvhwhohxhoababababacacacadadadadacacacaaaaaaacacacacaaaaaaaaaaabababbSbSbSbSbSbSbSbSbSbSbSbSgYgZgYgZbSbSababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacaaaaaaaaaaaaaaaaaaaabShyhyhyhyhyhyhzhzhzhzhyhyhyhyhAbSacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacbSbSacacacadadadadadadadadadadadadadadadababhlcHabhohBhChDhxhobSabababacacacadadadadadacacacaaaaacacacacaaaaaaaaababababbSbSbSgYgVgVgVgVgVgVgVgVgZgYgZbSbSababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacbSaaaaaaaaaaaaaaaabShzhEhFhGhzhHhIhJhKhLhzhMhNhOhPbSacacacadadadadadadadadadadadadadadadacacacacacacacacacacacacacadadadadadadadadadadadadadadacacacacbSbSacacacacadadadadadacacacacacadadadadababhQababhohohohohRhobSbSabababababadadadadadacacacacaaaaacacacaaaaaaaaaaababbSbSbSbSgTgYgVgVgVgVgVgVgVgVgZbSbSababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacadadacacbSbSbSbSbSbSaaaaaaaaaabShzhShMhThzhUhUhUhUhVhWhMhNhXhYbSacacacacacacacacacacacadadadadadacacacacacacacacacacacacacacacacacacacadadadadadadadadacacacacacbSbSbSbSacacacacacacadacacacacacacadadadadababhZababhohviahohxibbSbSbSbSbSbSababadadadadadacacacaaaaacacacaaaaaaaaaaababbSbSbSbSgTgTbSbSbSbSbSbSbSbSbSbSbSababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababababaeababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacadadadadacacbSbSbSbSbSbSbSbSbSaaaabShyichMhMidhMhMhMhMiehzifighzihbSbShaacacacacacacacacacacadadacacacacacacbSbSbSbSbSbSbSbSbSacacacacacacadadadadadadacacacacacacbSbSbSbSbSbSacacacacacacacacacbSacacadabababababhZababhohBhCiihxibbSbSbSbSbSbSbSabadadadadadadacacaaaaacacaaaaaaaaaaaaababbSbSbSbSgTgTbSbSbSbSbSbSbSbSbSbSbSababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacadadadadadacacacacacacbSbSbSbSbSbSbShzijhMikiliminiohMiphyhyhyhyhygXgRbSbScjcjcjcjcjcjcjacacacacacacacacbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSacacacacacacacacacacacacbSbSbSbSbSbSbSbSbSbSbSacacacacacbSbSacacadabhohohohoiqhohohohohohohxibbSbSbSbSbSbSbSabababababacacacacacaaaaaaaaaaaaaaaaaaababbSbSbSgXgQgQgRbSbSbSbSbSbSbSbSbSbSabaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababababaaaaaaababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacadadadadadadadadadadacacacacacacbSbShzirhMishzitiuivhMiwixiyiziAiBiCiDgVgVgVgVgViEiEgWbSbSbSacacacacbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSacacacacacacacacacacbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSacacacbSbSacacacabhoiFiGiHiIiJiKhohviLhohRhohohoibibibhobSbSbSbSbSacacacacaaaaaaaaaaaaababababababbSbSbSbSgMgSgSgObSbSbSbSbSbSbSbSbSababaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababababababaaaaaaaaabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacadadadadadadadadadadadadacacacacbShyhyhyhyhyiMiNiOhyhyiPiQiQiQiQiCiDgVgVgVgVgVgVgWgUgWbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSacacacbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSacbSbSacacacabhoiRiSiSiTiSiUhohBhCiVhxhoiWiXiYiYiYibbSbSbSbSbSbSacacaaaaaaaaaaaaaaaaabababbSbSbSbSbSbSbSgTiZjajbjbjcjcbSbSbSbSbSababaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaababaaaaaaaaaaababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacadadadadadadadadadadadadadadacbSbSbSbSbShyjdjejfjghyjhjihlbSbSgMgObSbSbSbSbSbSgUgWgUgWbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSacbSbSbSbSbSbSbSbSbSbSbSbSbShojjiSjkjljmjnhohohohohxhoiWjojojojpibbSbSbSbSbSbSacaaaaaaaaaaaaaaaaaabSbSbSbSbSbSbSbSgYgVgZjcjqjrjsjsjcbSjtbSbSbSababaeaeaeaeaeaeaeaeaeaeaeaeaeaeababaaaaaaaaabaaaaaaaaaaaaabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacadadadadadadadadadadadadadadacbSbSbSbSbShyjujvjwjxhybSbSbSbSbSbSbSbSbSbSacaccjbSgUgWgUgWbSbSbSbSgXgRbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSacacacacbSbSbSbSbSbSbSbSbSbSbSbSabhojyiSjziSjAiSjBjpjCjDjEhojFjojGjojHibbSbSbSbSbSbSaaaaaaaaaaaaaaaaaaaaajaabSbSbSbSbSjIjJjKjKjcjLjMjNjOjcjcjcjcjPbSbSabababaeaeaeaeaeaeaeaeaeaeaeaeabababababaaaaaaaaaaaaaaaaaaababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacadadadadadadadadadadadacacacacbSbSbShyhyhyhyhyhybSbSbSbSbSbSacacacacacacaccjbSgUgWgUgVgVgVgViCiDgVgVgWbSacacbSbSacacbSbSbSbSbSbSbSbSgXgRbSbSbSbSbSbSbSbSbSbSbSbSbSbSacacacacbSbSbSbSbSbSbSababababhohohohohohohoibjQjRibjQhohohohohojShohoibibbSbSaaaaaaaaaaaaaaaaaaaaaaajaaaaaabSbSjKjKjTjUjVjWjXjYjZkajbkbkcjbkdbSbSbShaababaeaeaeaeaeaeaeaeaeaeaeababababababababaaaaaaaaaaaaababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacadadadadadadadadadadadadadacacbSbSbSbSbSbSbSbSbSbSbSbSbSbSacacacacacacacacbSbSbSgUgVgVgVgVgViCiDgVgWgTbSacacacacacacbSgYgVgVgVgVgVgViCiDgVgVgVgVgVgVgVgWbSbSbSbSbSbSbSbSacacacacbSbSbSbSbSabababababababhokekfkgjojHkhjpjHjBkikjjojpjHjojokkibibibklkmkmkmkmkmkmkmknknknknknknknjKjKjKkokpkqkrksktjYjZjZkukvkwkxkybSbSbShaababaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacadadadadadadadadadadadadadadacacbSbSbSbSbSbSbSbSbSbSbSbSbSacacacacacacbSbSbSbSbSbSbSbSbSbSbSgMgObSgTgTbSacacacacacbSbSgTgYgVgVgVgVgViCiDgVgVgVgVgVgVgWgUgWbSgXgRcjcjbSbSbSacbSbSbSbSbSbSbSbSbSbSbSabababhohohohokzjHkAkBkCjDkDkEkEkFkFkEkEkGkHkGkHkIkIkIkIkIkIkIkIkJkJkJkJkJkJkJkKkLkKkLkMkNkOjbkPkQkRkSjbkTkUjbkVbSbSbSbSabababaeaeaeaeaeaeaeaeaeaeaeaeaeabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacadadadadacacacacacacacacacacacacbSacacbSbSbSbSbSbSbSbSbSacacacacacbSbSbSbSbSbSbSbSbSacacacacbSbSbSgTgTbSbSbSgXgRbSbSbSgTgTbSbSbSbSbSgMgObSbSbSbSbSbSgUgWgUgViCiDgVgVgVgWbSbSbSbSbSbSbSbSbSbSbSbSbSbSabababababhojokWkXkYkYkXkZlalbkYkYkXkXlcldldldlelelelelelelelelflflflflflflglhlhlhliljlklljIjIjJjIjIjIjIjIjIlmlnlolnlphaabaeaeaeaeaeaeaeaeaeaeaeababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacadadadadacacacacacacacacacacacacbSacacbSbSbSbSbSbSbSbSacacacacbSbSbSbSacacacacacacacacacacacbSbSbSgTgUgVgVgViCiDgVgVgVgZgTbSbSbSbSbSbSbSbSbSbSbSacbSbSgUgVgViCiDgVgVgWgUgWbSbSbSbSgXgRbSbSbSbSbSbSbSbSbSababhohoiblqibhoholrlslthohoibluibhoibbSbSbSaaaaaaaaajaaaaaaajaaaaaaaaaaajaajKjKlvlwlxlylzlAlBlClDlDlElFlGlGlGlGlpbSabaeaeaeaeaeaeaeaeaeaeabababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacadadadadacacacbSbSbSacacbSbSbSbSbSbSacacacacacacacacacacacacacacacacacacacacacacacacacacacacbSbSbSbSgUgVgVgVgViCiDgVgVgVgVgZbSbSbSbSbSbSbSbSbSbSacacacbSbSbSbSgMgObSbSgUgWgUgVgVgVgViCiDgVgVgVgVgVgVgVgWbSbSabholHlIlJlKholLlMlNlOlPholQlRlSlTbSbSbSbSbSbSaaaaajaaaaaaajajajajajajajajajjIlUlVlWjIjIjIjIjIjIjIjIjIlXlplplplpbSabaeaeaeaeaeaeaeaeaeababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacadadadadacacacbSbSbSacacbSbSbSbSbSbSacacacadadadadadadadadadacacacacacacacacadadadadadadacacacacacbSbSbSbSbSbSgMgObSbSbSbSbSbSbSbSbSbSbSacacacacacacacacacacacacacbSbSbSgUgVgVgVgVgViCiDgVgVgVgVgVgVgWgTbSbSbSholYlZmambhomcmdmdmemfhomgmhmihobSbSbSbSbSbSajajajajajajajaaaaaaaaaaajaaajjImjmkmlmmjImnmompmqmrmrjIbSbSbSbSbSababaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacadadadacacacbSbSbSbSbSbSbSaaaaaaaabSbSacacacadadadadadadadadadadadadadadadadadadadadadadacacacacacbSbSbSbSbSbSbSbSbSbSbSbSbSbSacacacbSbSbSacacacacacacacacacacbSbSbSbSbSbSbSbSbSbSbSgMgObSbSbSbSbSbSgTgTbSbSbSlThohohohohomsmtmumvmfhoibmwibhobSbSbSbSbSbSaaaaajaaaaaaajaaaaaaaaaaajaajKjKlvmxmlmmlhmykokpmzmAmBjIababababababaeaeaeaeaeaeaeaeaeaeababaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacadadadadacacacbSbSaaaaaaaaaaaaaaaaaaaabSacacacadadadadadadadadadadadadadadadadadadadadadadadadadacacbSbSbSbSbSbSbSbSbSbSbSbSacacacacacacbSbSbSacacacadacacacbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSgTgUgVgWbSbSbSbSbSbSlThohohohoholTmCmCmDmEbSbSbSbSbSaaaaaaajaaaaaaajaaaaaaaaaamFjKmGmHmImxmlmJjImKlvmLmMjImNjIaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacadadadadacacbSbSaaaaaaaaaaaaaaaaaaaaaaaaaaacacadadadadadadadadadadadadadadadadadadadadadadadadadacacacacacacacacacacacacacacacacacacacacacbSbSbSacacadacacbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSgUgVgWgUgWbSbSbSbSbSbSbSgMgNgNgNgNgNgNgObSbSbSbSbSbSajajajajajajajajaaaaaaaamOmPlvmPlvmQmRmSmzlhjUlvmTmUjKmVjIaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacadadadadadadadacacbSaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacadadadadadadadadadadadadadadadadadadadadadadadadadacacacacacacacacacacacacacacacacacbSbSbSbSbSbSbSacacadacacacacacacacacacacacacacacacacacacacacacbSbSbSbSbSgUgWgUgWmWbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSaaaaaaaaaaaaajaaaaaaaaaajKjKjKmXmYmZnanbncndnenfngnhnijIaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacadadadadadadadadacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacacbSbSbSbSacacacadacacacacacacacacacacacacacacacacacacacacbSbSbSbSbSbSbSgUgWgUgVgVgVgVgVgVgVgVgVgVgVgVgVgVgVgWbSbSbSbSbSbSaaaaaaaaaaajaaaaaaaaaaajaajKjKlvmxnjnknlnmnnnnnojKmVjIaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacadadadadadadacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacadadadadadadadadadadadcuadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacacacacacbSacacacadadadadadadadadadadadadadadacacacacacbSbSbSbSbSbSabbSbSbSgUgVgVgVgVgVgVgVgVgVgVgVgVgVgVgVgWgTbSgXgRbSbSbSdkdkajaaaaajaaaaaaaaaaajaanplBnqnrnnnslhntnunvjKjKmVjIaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacadadadadadadacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacacacacacacadadadadadadadadadadadadadadadacacbSbSbSbSbSbSbSbSbSabababbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSbSgTgUgViCiDgVgVgVnwnxnynynynynynynynynynynynzjInAnBjUmKjInCnDnEnFnGnHjIaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacadadadadadadacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacacacadadadadadadadadadadadadadadadacacacacacacacacbSbSbSacacabababbSbSbSbSbSbSbSababbSbSbSbSbSbSgUgVgViCiDgVgVgVnInxnynynynynynynynynynynynylBnJjIjKjKjInKjIjIjIjIjIjIaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacadadadacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacacacacacacacbSbSacacacacabababababababababababbSbSbSbSbSbSbSbSgMgObSbSbSdkdkajaaaaaaaaaaaaaaaaaaaaajajajajajajjIjIjIaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacacbSbSacacadadadadadadacacacbSbSbSbSbSbSbSbSacacacacacacacacacbSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacacbSacacadadadadadacacacacbSbSbSbSacbSbSacacacacacacacacacacbSaaaaaaaaaaaaaaaaaaababababababababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacaaaaaaaaaaacacaaaaaaaaaaaaaaaaaaaaaaaaaaacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacbSacacadadadadacacacacbSbSbSacacacacacacacacadadadadacacacaaaaaaaaaaaaaaaaaaabababababababababababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababababaaaaababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacacacadadadacacacacbSbSacacacacacacacacacadadadadacacacacaaaaaaaaaaaaaaaaababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaacacaaaaaaaaaaaaaaaaaaaaaaacacacadadadadadadadadadadadacacacacacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacacacadadadacacacbSbSbSacacacacadadadadadadadadacacacacaaaaaaaaaaaaaaaaababababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacadadadadadadadadacacacacacacacacacacacacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacbSbSbSacacacadadadadadadadadadadacacacaaaaaaaaaaaaaaaaaaaaababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacadadadadadadadacacacacacacacbSbSbSacacacacacacacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacbSbSbSacacacadadadadadadadadadadacacaaaaaaaaaaaaaaaaaaaaaaababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacadadadadadacacacacacacbSbSbSbSbSbSbSbSbSbSacacacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacacbSbSacacadadadadadadadadadadacacaaaaaaaaaaaaaaaaaaaaaaababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacadacacacacbSbSbSaaaaaaaaaaaaaaaaaaaaaaaaacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacacacbSacacadadadadadadadadadadacacaaaaaaaaaaaaaaaaaaaaaaababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeabababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacadacacbSbSbSaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacadadadadadadadadadadadadadadadadadadadadadcuadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacacacacadadadadadadadadadadacacaaaaaaaaaaaaaaaaaaaaaaababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacaaaaaaaaacacadacacbSbSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacacacadadadadadadadadadadacacaaaaaaaaaaaaaaaaaaaaaaababaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacadacacacbSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacacaaaaaaaaaaaaaaaaaaabababaeaeaeaeaeaeaeaeaeaeababababababababaeaeaeaeaeaeabababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacadacacacbSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacacacaaaaaaaaaaaaaaaaabababaeaeaeaeaeaeaeababababababababababababaeaeaeabababababaaabababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacadadacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadcuadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacaaaaaaaaaaaaaaaaaaababaeaeaeaeaeaeaeabababababaaaaaaaaabababaeaeaeababababaaaaababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacadadacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacaaaaaaaaaaaaaaaaaaababaeaeaeaeaeaeaeababaaaaaaaaaaaaaaaaabababababababaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacadacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacacacaaaaaaaaaaaaaaaaaaababaeaeaeaeaeaeabababaaaaaaaaaaaaaaabababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacacaaaaaaaaaaaaaaaaaaaaabababaeaeaeaeababababaaaaaaaaaaaaaaaaabaaabababaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacaaaaaaaaaaaaaaaaaaaaaaaaababababababababababaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacaaaaaaaaaaaaaaaaaaaaaaaaabababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacaaaaaaaaacacacacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacaaaaaaaaaaaaaaaaaaaaaaaaababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacaaaaaaaaaaaaaaaaacacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacaaaaaaaaaaaaaaaaaaaaaaaaababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacacacadadadadacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacadacacacacacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacadadadadadadadadadadadadadadadadadadadadadadadadadadadadacacacacacacacaaacacacacacacacacaaacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacaaaaaaacacadadadadadadadadadadadadadadadadadacacacacacadacacacacacacacaaaaaaacaaaaaaaaacacacacaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacadadadadadadadadadadadadadadadadadacacacacacacacacacacacacacacaaaaaaaaaaaaaaacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacadadadadadadadadadadadadadadadadadacacaaacacacacacaaaaaaacacaaaaaaaaaaaaaaaaacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacadadadadadadadadadadadadadadacacacacacacaaaaacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacadadadadadadadadadadadadadadadacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacadadadadadadadadacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacadadadadadadadacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacadadadadadadadacacaaacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacadadadadadadacacaaaaacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacaaaaacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacaaaaacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacaaaaaaaaacacacaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -970,4 +970,3 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa "} - diff --git a/_maps/metastation.dm b/_maps/metastation.dm index d574427fca1..a75489a671d 100644 --- a/_maps/metastation.dm +++ b/_maps/metastation.dm @@ -19,7 +19,7 @@ z7 = empty space #define MINETYPE "lavaland" - #include "map_files\MetaStation\MetaStation.v41I.dmm" + #include "map_files\MetaStation\MetaStation.dmm" #include "map_files\generic\z2.dmm" #include "map_files\generic\z3.dmm" #include "map_files\generic\z4.dmm" @@ -30,7 +30,7 @@ z7 = empty space #include "map_files\generic\z9.dmm" #define MAP_PATH "map_files/MetaStation" - #define MAP_FILE "MetaStation.v41I.dmm" + #define MAP_FILE "MetaStation.dmm" #define MAP_NAME "MetaStation" #define MAP_TRANSITION_CONFIG list(MAIN_STATION = CROSSLINKED, CENTCOMM = SELFLOOPING, ABANDONED_SATELLITE = CROSSLINKED, DERELICT = CROSSLINKED, MINING = SELFLOOPING, EMPTY_AREA_1 = CROSSLINKED, EMPTY_AREA_2 = CROSSLINKED, EMPTY_AREA_3 = CROSSLINKED, EMPTY_AREA_4 = CROSSLINKED) diff --git a/_maps/shuttles/emergency_bar.dmm b/_maps/shuttles/emergency_bar.dmm index 3846904216b..387ebe9f888 100644 --- a/_maps/shuttles/emergency_bar.dmm +++ b/_maps/shuttles/emergency_bar.dmm @@ -34,7 +34,7 @@ "aH" = (/obj/machinery/door/airlock/shuttle{name = "Emergency Shuttle Airlock"},/obj/docking_port/mobile/emergency{name = "The Emergency Escape Bar"},/turf/open/floor/plasteel/bar,/area/shuttle/escape) "aI" = (/obj/structure/table,/obj/machinery/chem_dispenser/drinks/beer,/turf/open/floor/plasteel/bar,/area/shuttle/escape) "aJ" = (/obj/structure/chair,/turf/open/floor/plasteel/bar,/area/shuttle/escape) -"aK" = (/mob/living/simple_animal/drone/snowflake{desc = "A barkeeping drone, an indestructible robot built to tend bars."; dir = 8; health = 3000; languages = 127; laws = "1. Serve drinks. 2. Talk to patrons. 3. Don't get messed up in their affairs."; maxHealth = 3000; name = "Bardrone"; seeStatic = 0},/turf/open/floor/plasteel/bar,/area/shuttle/escape) +"aK" = (/mob/living/simple_animal/drone/snowflake/bardrone,/turf/open/floor/plasteel/bar,/area/shuttle/escape) "aL" = (/obj/machinery/vending/boozeomat,/turf/open/floor/plasteel/bar,/area/shuttle/escape) "aM" = (/obj/structure/table,/turf/open/floor/plasteel/bar,/area/shuttle/escape) "aN" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/condiment/saltshaker,/obj/item/weapon/reagent_containers/food/condiment/peppermill{pixel_x = 6; pixel_y = 4},/turf/open/floor/plasteel/bar,/area/shuttle/escape) diff --git a/_maps/shuttles/emergency_goon.dmm b/_maps/shuttles/emergency_goon.dmm new file mode 100644 index 00000000000..3d8ebf08142 --- /dev/null +++ b/_maps/shuttles/emergency_goon.dmm @@ -0,0 +1,56 @@ +"a" = (/turf/open/space,/area/space) +"b" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion"; dir = 4},/turf/open/floor/plating,/area/shuttle/escape) +"c" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 8},/turf/open/floor/plating,/area/shuttle/escape) +"d" = (/turf/closed/wall/shuttle{tag = "icon-swall0"; icon_state = "swall0"},/area/shuttle/escape) +"e" = (/turf/closed/wall/shuttle{tag = "icon-wall_space (NORTH)"; icon_state = "wall_space"; dir = 1},/area/shuttle/escape) +"f" = (/turf/closed/wall/shuttle{tag = "icon-swall2"; icon_state = "swall2"},/area/shuttle/escape) +"g" = (/obj/machinery/door/airlock/shuttle{name = "Emergency Shuttle Airlock"},/turf/open/floor/plasteel/shuttle,/area/shuttle/escape) +"h" = (/obj/machinery/door/airlock/shuttle{name = "Emergency Shuttle Airlock"},/obj/docking_port/mobile/emergency{dheight = 0; dir = 2; dwidth = 9; name = "NES Port"; width = 19},/turf/open/floor/plasteel/shuttle,/area/shuttle/escape) +"i" = (/turf/closed/wall/shuttle{tag = "icon-wall_space (WEST)"; icon_state = "wall_space"; dir = 8},/area/shuttle/escape) +"j" = (/turf/closed/wall/shuttle{tag = "icon-swall4"; icon_state = "swall4"},/area/shuttle/escape) +"k" = (/turf/closed/wall/shuttle{tag = "icon-swall12"; icon_state = "swall12"},/area/shuttle/escape) +"l" = (/obj/machinery/vending/wallmed,/turf/closed/wall/shuttle{tag = "icon-swall8"; icon_state = "swall8"},/area/shuttle/escape) +"m" = (/obj/structure/window/shuttle,/obj/structure/grille,/turf/open/floor/plasteel/shuttle,/area/shuttle/escape) +"n" = (/turf/closed/wall/shuttle{tag = "icon-swall1"; icon_state = "swall1"},/area/shuttle/escape) +"o" = (/turf/open/floor/plasteel/shuttle,/area/shuttle/escape) +"p" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 8},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/open/floor/plating,/area/shuttle/escape) +"q" = (/obj/machinery/sleeper{icon_state = "sleeper-open"; dir = 4},/turf/open/floor/plasteel/shuttle/white,/area/shuttle/escape) +"r" = (/turf/open/floor/plasteel/shuttle/white,/area/shuttle/escape) +"s" = (/obj/structure/chair{dir = 4},/turf/open/floor/plasteel/shuttle,/area/shuttle/escape) +"t" = (/turf/closed/wall/shuttle{tag = "icon-wall_floor"; icon_state = "wall_floor"},/area/shuttle/escape) +"u" = (/turf/open/space,/area/shuttle/escape) +"v" = (/obj/structure/table,/obj/effect/spawner/lootdrop/maintenance,/turf/open/floor/plasteel/shuttle/white,/area/shuttle/escape) +"w" = (/obj/machinery/door/airlock/glass{name = "Emergency Shuttle Infirmary"},/turf/open/floor/plasteel/shuttle/white,/area/shuttle/escape) +"x" = (/obj/structure/window/shuttle,/obj/structure/grille,/turf/open/floor/plasteel/shuttle/yellow,/area/shuttle/escape) +"y" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/toolbox/emergency,/turf/open/floor/plasteel/shuttle/yellow,/area/shuttle/escape) +"z" = (/obj/structure/table/reinforced,/obj/item/device/radio,/obj/structure/window/reinforced{dir = 1; layer = 2.9},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/open/floor/plasteel/shuttle/yellow,/area/shuttle/escape) +"A" = (/obj/structure/chair/comfy/brown{dir = 4},/turf/open/floor/plasteel/shuttle/yellow,/area/shuttle/escape) +"B" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced{dir = 1},/obj/structure/table/reinforced,/turf/open/floor/plasteel/shuttle/yellow,/area/shuttle/escape) +"C" = (/turf/closed/wall/shuttle{tag = "icon-swall8"; icon_state = "swall8"},/area/shuttle/escape) +"D" = (/turf/closed/wall/shuttle{tag = "icon-swall3"; icon_state = "swall3"},/area/shuttle/escape) +"E" = (/obj/machinery/door/airlock/glass{name = "Emergency Shuttle Cockpit"; req_access_txt = "19"},/turf/open/floor/plasteel/shuttle/yellow,/area/shuttle/escape) +"F" = (/turf/open/floor/plasteel/shuttle/yellow,/area/shuttle/escape) +"G" = (/obj/machinery/computer/emergency_shuttle,/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/open/floor/plasteel/shuttle/yellow,/area/shuttle/escape) +"H" = (/obj/structure/chair{dir = 4},/turf/open/floor/plasteel/shuttle/red,/area/shuttle/escape) +"I" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced,/turf/open/floor/plasteel/shuttle/yellow,/area/shuttle/escape) +"J" = (/turf/open/floor/plasteel/shuttle/red,/area/shuttle/escape) +"K" = (/obj/machinery/door/airlock/glass{name = "Emergency Shuttle Brig"; req_access_txt = "2"},/turf/open/floor/plasteel/shuttle/red,/area/shuttle/escape) +"L" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/firstaid/regular,/turf/open/floor/plasteel/shuttle/yellow,/area/shuttle/escape) +"M" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/firstaid/regular,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/turf/open/floor/plasteel/shuttle/yellow,/area/shuttle/escape) +"N" = (/turf/closed/wall/shuttle{tag = "icon-wall_space (EAST)"; icon_state = "wall_space"; dir = 4},/area/shuttle/escape) +"O" = (/turf/closed/wall/shuttle{tag = "icon-wall_floor (WEST)"; icon_state = "wall_floor"; dir = 8},/area/shuttle/escape) +"P" = (/turf/closed/wall/shuttle{tag = "icon-wall_space"; icon_state = "wall_space"},/area/shuttle/escape) + +(1,1,1) = {" +abcdeaafghfaaaaaaaa +ijklfdmnoonmmdeaaaa +bpqrnsssoossstddeua +bpvrwooooossssxyzxe +bpqrfssdooosssdAABx +jkkCDssmooooooEFAGx +bpHHnssdooosssdAAIx +bpHJKooooossssxLMxN +bpHHfsssoosssOddNua +PjkCndmfoofmmdNaaaa +abcdNaanggnaaaaaaaa +"} diff --git a/_maps/shuttles/emergency_imfedupwiththisworld.dmm b/_maps/shuttles/emergency_imfedupwiththisworld.dmm new file mode 100644 index 00000000000..4ecb0e8fd64 --- /dev/null +++ b/_maps/shuttles/emergency_imfedupwiththisworld.dmm @@ -0,0 +1,42 @@ +"a" = (/turf/closed/wall/mineral/wood,/area/shuttle/escape) +"b" = (/obj/machinery/light_switch,/turf/closed/wall/mineral/wood,/area/shuttle/escape) +"c" = (/obj/machinery/door/unpowered/shuttle,/obj/docking_port/mobile/emergency{dheight = 0; dir = 4; dwidth = 1; height = 10; name = "Oh Hi Mark"; width = 12},/turf/open/floor/wood,/area/shuttle/escape) +"d" = (/turf/open/floor/wood,/area/shuttle/escape) +"e" = (/obj/machinery/light{dir = 1},/turf/open/floor/carpet,/area/shuttle/escape) +"f" = (/obj/structure/chair/comfy/teal,/turf/open/floor/carpet,/area/shuttle/escape) +"g" = (/obj/structure/table/wood,/obj/item/device/flashlight/lamp,/turf/open/floor/carpet,/area/shuttle/escape) +"h" = (/turf/open/floor/carpet,/area/shuttle/escape) +"i" = (/obj/structure/table/reinforced,/obj/item/weapon/kitchen/knife,/turf/open/floor/carpet,/area/shuttle/escape) +"j" = (/turf/open/floor/plasteel/bar,/area/shuttle/escape) +"k" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/vending/boozeomat,/turf/open/floor/plasteel/bar,/area/shuttle/escape) +"l" = (/obj/machinery/computer/security/wooden_tv,/turf/open/floor/carpet,/area/shuttle/escape) +"m" = (/obj/structure/table/glass,/turf/open/floor/carpet,/area/shuttle/escape) +"n" = (/obj/structure/chair/comfy/teal{tag = "icon-comfychair (WEST)"; icon_state = "comfychair"; dir = 8},/turf/open/floor/carpet,/area/shuttle/escape) +"o" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/food/snacks/store/cake/birthday,/turf/open/floor/carpet,/area/shuttle/escape) +"p" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/food/drinks/shaker,/turf/open/floor/plasteel/bar,/area/shuttle/escape) +"q" = (/obj/structure/table/reinforced,/turf/open/floor/carpet,/area/shuttle/escape) +"r" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/shotglass,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/shotglass,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/shotglass,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass/shotglass,/turf/open/floor/plasteel/bar,/area/shuttle/escape) +"s" = (/obj/machinery/door/window{dir = 8},/turf/open/floor/plasteel/bar,/area/shuttle/escape) +"t" = (/obj/structure/table/reinforced,/turf/open/floor/plasteel/bar,/area/shuttle/escape) +"u" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/open/floor/wood,/area/shuttle/escape) +"v" = (/obj/structure/chair/office/dark,/turf/open/floor/wood,/area/shuttle/escape) +"w" = (/obj/effect/decal/cleanable/blood,/obj/effect/decal/cleanable/blood/drip,/obj/effect/decal/cleanable/blood/gibs,/obj/effect/mob_spawn/human/corpse,/obj/item/weapon/gun/projectile/automatic/pistol/m1911,/obj/machinery/light/small{dir = 8},/obj/item/weapon/reagent_containers/food/snacks/cakeslice/birthday,/turf/open/floor/carpet,/area/shuttle/escape) +"x" = (/obj/structure/bed,/obj/item/weapon/bedsheet/red,/obj/item/weapon/paper{info = "i love daniel
daniel is my best friend

you are tearing me apart elise"},/turf/open/floor/carpet,/area/shuttle/escape) +"y" = (/obj/structure/flora/kirbyplants,/turf/open/floor/wood,/area/shuttle/escape) +"z" = (/obj/structure/table/wood,/obj/item/weapon/papercutter,/turf/open/floor/wood,/area/shuttle/escape) +"A" = (/obj/structure/table/wood,/obj/machinery/computer/libraryconsole/bookmanagement,/turf/open/floor/wood,/area/shuttle/escape) +"B" = (/obj/machinery/light,/obj/structure/table/wood,/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/turf/open/floor/wood,/area/shuttle/escape) +"C" = (/obj/structure/mineral_door/wood,/turf/open/floor/wood,/area/shuttle/escape) +"D" = (/obj/machinery/computer/emergency_shuttle,/turf/open/floor/carpet,/area/shuttle/escape) + +(1,1,1) = {" +abaaaaaaaa +cdefghijka +adlmnhojpa +adhmnhqjra +adhhhhsjta +auddddaaaa +addvddawxa +ayzABdChDa +aaaaaaaaaa +"} diff --git a/_maps/shuttles/emergency_narnar.dmm b/_maps/shuttles/emergency_narnar.dmm index c85ddedd921..d4cf6ff501d 100644 --- a/_maps/shuttles/emergency_narnar.dmm +++ b/_maps/shuttles/emergency_narnar.dmm @@ -15,20 +15,20 @@ "o" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -29},/turf/open/floor/plasteel/cult,/area/shuttle/escape) "p" = (/obj/machinery/computer/communications,/turf/open/floor/plasteel/cult,/area/shuttle/escape) "q" = (/obj/item/stack/sheet/metal,/obj/effect/decal/remains/human,/turf/open/floor/plasteel/cult,/area/shuttle/escape) -"r" = (/obj/machinery/door/airlock/cult/unruned/glass,/turf/open/floor/plasteel/cult,/area/shuttle/escape) +"r" = (/obj/machinery/door/airlock/cult/unruned/glass/friendly,/turf/open/floor/plasteel/cult,/area/shuttle/escape) "s" = (/obj/machinery/status_display,/turf/closed/wall/cult,/area/shuttle/escape) "t" = (/obj/structure/closet/emcloset,/turf/open/floor/plasteel/cult,/area/shuttle/escape) "u" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 3},/obj/item/weapon/crowbar,/turf/open/floor/plasteel/cult,/area/shuttle/escape) "v" = (/obj/effect/decal/cleanable/blood,/turf/open/floor/plasteel/cult,/area/shuttle/escape) "w" = (/mob/living/simple_animal/hostile/construct/builder,/turf/open/floor/plasteel/cult,/area/shuttle/escape) -"x" = (/obj/machinery/door/airlock/cult,/turf/open/floor/plating,/area/shuttle/escape) +"x" = (/obj/machinery/door/airlock/cult/friendly,/turf/open/floor/plating,/area/shuttle/escape) "y" = (/obj/effect/decal/cleanable/blood/gibs/up,/obj/item/candle/infinite,/turf/open/floor/plasteel/cult,/area/shuttle/escape) "z" = (/obj/effect/rune/raise_dead,/turf/open/floor/plasteel/cult,/area/shuttle/escape) "A" = (/obj/item/candle/infinite,/turf/open/floor/plasteel/cult,/area/shuttle/escape) "B" = (/obj/effect/rune/true_sight,/obj/effect/decal/remains/human,/obj/effect/decal/cleanable/blood/gibs/body,/obj/effect/decal/cleanable/blood/gibs/core,/turf/open/floor/plasteel/cult,/area/shuttle/escape) "C" = (/mob/living/simple_animal/hostile/construct/armored,/turf/open/floor/plasteel/cult,/area/shuttle/escape) "D" = (/obj/effect/rune/true_sight,/obj/effect/decal/remains/human,/turf/open/floor/plasteel/cult,/area/shuttle/escape) -"E" = (/obj/machinery/door/airlock/cult,/obj/docking_port/mobile/emergency{name = "shuttle 667"},/turf/open/floor/plating,/area/shuttle/escape) +"E" = (/obj/machinery/door/airlock/cult/friendly,/obj/docking_port/mobile/emergency{name = "shuttle 667"},/turf/open/floor/plating,/area/shuttle/escape) "F" = (/obj/effect/decal/cleanable/blood/gibs/down,/turf/open/floor/plasteel/cult,/area/shuttle/escape) "G" = (/obj/structure/extinguisher_cabinet{has_extinguisher = null; icon_state = "extinguisher_empty"; opened = 1; pixel_x = 27; pixel_y = 0},/obj/item/weapon/extinguisher{safety = 0},/turf/open/floor/plasteel/cult,/area/shuttle/escape) "H" = (/mob/living/simple_animal/hostile/construct/wraith,/turf/open/floor/plasteel/cult,/area/shuttle/escape) @@ -37,7 +37,7 @@ "K" = (/mob/living/simple_animal/hostile/carp/eyeball{faction = list("cult"); name = "right eyeball"},/turf/open/floor/plasteel/cult,/area/shuttle/escape) "L" = (/obj/effect/decal/cleanable/blood/drip,/turf/open/floor/plasteel/cult,/area/shuttle/escape) "M" = (/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/open/floor/plasteel/cult,/area/shuttle/escape) -"N" = (/obj/machinery/door/airlock/cult/glass,/turf/open/floor/plasteel/cult,/area/shuttle/escape) +"N" = (/obj/machinery/door/airlock/cult/glass/friendly,/turf/open/floor/plasteel/cult,/area/shuttle/escape) "O" = (/obj/structure/dresser,/turf/open/floor/plasteel/cult,/area/shuttle/escape) "P" = (/obj/structure/showcase/horrific_experiment,/turf/open/floor/plasteel/cult,/area/shuttle/escape) "Q" = (/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 3},/obj/item/weapon/crowbar,/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/obj/item/stack/sheet/metal,/turf/open/floor/plasteel/cult,/area/shuttle/escape) diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm index 0cbd606660e..04e5a8fbf0d 100644 --- a/code/__DEFINES/combat.dm +++ b/code/__DEFINES/combat.dm @@ -70,3 +70,13 @@ #define UNARMED_ATTACK 2 #define PROJECTILE_ATTACK 3 #define THROWN_PROJECTILE_ATTACK 4 + + +//Gun Stuff + #define SAWN_INTACT 0 + #define SAWN_OFF 1 + #define SAWN_SAWING -1 + + #define WEAPON_LIGHT 0 + #define WEAPON_MEDIUM 1 + #define WEAPON_HEAVY 2 \ No newline at end of file diff --git a/code/__DEFINES/events.dm b/code/__DEFINES/events.dm new file mode 100644 index 00000000000..0eb196d1304 --- /dev/null +++ b/code/__DEFINES/events.dm @@ -0,0 +1,4 @@ +#define SUCCESSFUL_SPAWN 2 +#define NOT_ENOUGH_PLAYERS 3 +#define MAP_ERROR 4 +#define WAITING_FOR_SOMETHING 5 diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index c0301b9bfa1..c0810cc0c8f 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -18,6 +18,7 @@ #define NODECONSTRUCT 128 // For machines and structures that should not break into parts, eg, holodeck stuff #define FPRINT 256 // takes a fingerprint #define ON_BORDER 512 // item has priority to check when entering or leaving +#define HOLOGRAM 32768 // HOlodeck shit should not be used in any fucking things #define HEADBANGPROTECT 4096 @@ -52,21 +53,21 @@ #define MUTCOLORS 1 #define HAIR 2 -#define FACEHAIR 4 -#define EYECOLOR 8 -#define LIPS 16 -#define RESISTCOLD 32 -#define RESISTHEAT 64 -#define RADIMMUNE 128 -#define NOBREATH 256 -#define NOGUNS 512 -#define NOBLOOD 1024 -#define NOFIRE 2048 -#define VIRUSIMMUNE 4096 -#define PIERCEIMMUNE 8192 -#define NOTRANSSTING 16384 - -#define MUTCOLORS_PARTSONLY 32768 //Used if we want the mutant colour to be only used by mutant bodyparts. Don't combine this with MUTCOLORS, or it will be useless. +#define FACEHAIR 3 +#define EYECOLOR 4 +#define LIPS 5 +#define RESISTTEMP 6 +#define RADIMMUNE 7 +#define NOBREATH 8 +#define NOGUNS 9 +#define NOBLOOD 10 +#define NOFIRE 11 +#define VIRUSIMMUNE 12 +#define PIERCEIMMUNE 13 +#define NOTRANSSTING 14 +#define MUTCOLORS_PARTSONLY 15 //Used if we want the mutant colour to be only used by mutant bodyparts. Don't combine this with MUTCOLORS, or it will be useless. +#define NODISMEMBER 16 +#define NOHUNGER 17 #define FLYING 65536 diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index f05b74117d9..7daf7eeaf3c 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -8,6 +8,14 @@ #define ishuman(A) (istype(A, /mob/living/carbon/human)) +// Human sub-species +#define isabductor(A) (is_species(A, /datum/species/abductor)) +#define isgolem(A) (is_species(A, /datum/species/golem)) +#define islizard(A) (is_species(A, /datum/species/lizard)) +#define isplasmaman(A) (is_species(A, /datum/species/plasmaman)) +#define ispodperson(A) (is_species(A, /datum/species/podperson)) +#define isflyperson(A) (is_species(A, /datum/species/fly)) + #define ismonkey(A) (istype(A, /mob/living/carbon/monkey)) #define isbrain(A) (istype(A, /mob/living/carbon/brain)) @@ -32,6 +40,8 @@ #define ismouse(A) (istype(A, /mob/living/simple_animal/mouse)) +#define isconstruct(A) (istype(A, /mob/living/simple_animal/hostile/construct)) + #define isbear(A) (istype(A, /mob/living/simple_animal/hostile/bear)) #define iscarp(A) (istype(A, /mob/living/simple_animal/hostile/carp)) @@ -78,4 +88,4 @@ #define issignaler(O) (istype(O, /obj/item/device/assembly/signaler)) -#define istimer(O) (istype(O, /obj/item/device/assembly/timer)) \ No newline at end of file +#define istimer(O) (istype(O, /obj/item/device/assembly/timer)) diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm index de2442c7c40..f77e0cf5300 100644 --- a/code/__HELPERS/global_lists.dm +++ b/code/__HELPERS/global_lists.dm @@ -41,7 +41,7 @@ for(var/path in (subtypesof(/datum/surgery))) surgeries_list += new path() - init_subtypes(/datum/table_recipe, table_recipes) + init_subtypes(/datum/crafting_recipe, crafting_recipes) /* // Uncomment to debug chemical reaction list. /client/verb/debug_chemical_list() diff --git a/code/__HELPERS/lists.dm b/code/__HELPERS/lists.dm index b6eb7864381..172418498c3 100644 --- a/code/__HELPERS/lists.dm +++ b/code/__HELPERS/lists.dm @@ -136,6 +136,11 @@ . = L[L.len] L.len-- +/proc/popleft(list/L) + if(L.len) + . = L[1] + L.Cut(1,2) + /proc/sorted_insert(list/L, thing, comparator) var/pos = L.len while(pos > 0 && call(comparator)(thing, L[pos]) > 0) diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index 3cd1649b6db..41c5a80fe81 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -319,4 +319,11 @@ Proc for attack log creation, because really why not . = 0 break mainloop if(progbar) - qdel(progbar) \ No newline at end of file + qdel(progbar) + +/proc/is_species(A, species_datum) + . = FALSE + if(ishuman(A)) + var/mob/living/carbon/human/H = A + if(H.dna && istype(H.dna.species, species_datum)) + . = TRUE diff --git a/code/_globalvars/lists/objects.dm b/code/_globalvars/lists/objects.dm index 476a1d36ba9..2be17154cd3 100644 --- a/code/_globalvars/lists/objects.dm +++ b/code/_globalvars/lists/objects.dm @@ -13,7 +13,7 @@ var/global/list/nuke_tiles = list() //list of all turfs that turn to animate var/global/list/chemical_reactions_list //list of all /datum/chemical_reaction datums. Used during chemical reactions var/global/list/chemical_reagents_list //list of all /datum/reagent datums indexed by reagent id. Used by chemistry stuff var/global/list/surgeries_list = list() //list of all surgeries by name, associated with their path. -var/global/list/table_recipes = list() //list of all table craft recipes +var/global/list/crafting_recipes = list() //list of all table craft recipes var/global/list/rcd_list = list() //list of Rapid Construction Devices. var/global/list/apcs_list = list() //list of all Area Power Controller machines, seperate from machines for powernet speeeeeeed. var/global/list/tracked_implants = list() //list of all current implants that are tracked to work out what sort of trek everyone is on. Sadly not on lavaworld not implemented... diff --git a/code/_onclick/hud/_defines.dm b/code/_onclick/hud/_defines.dm index 29eea4900da..00e6e610f74 100644 --- a/code/_onclick/hud/_defines.dm +++ b/code/_onclick/hud/_defines.dm @@ -23,6 +23,7 @@ //Middle left indicators #define ui_lingchemdisplay "WEST:6,CENTER-1:15" #define ui_lingstingdisplay "WEST:6,CENTER-3:11" +#define ui_crafting "12:-10,1:5" //Lower center, persistant menu #define ui_sstore1 "CENTER-5:10,SOUTH:5" diff --git a/code/_onclick/hud/drones.dm b/code/_onclick/hud/drones.dm index de79a28c5a2..631686b089b 100644 --- a/code/_onclick/hud/drones.dm +++ b/code/_onclick/hud/drones.dm @@ -64,6 +64,10 @@ zone_select.icon = ui_style zone_select.update_icon(mymob) + using = new /obj/screen/inventory/craft + using.icon = ui_style + static_inventory += using + for(var/obj/screen/inventory/inv in (static_inventory + toggleable_inventory)) if(inv.slot_id) inv.hud = src diff --git a/code/_onclick/hud/human.dm b/code/_onclick/hud/human.dm index e7baed52506..0632c5ff809 100644 --- a/code/_onclick/hud/human.dm +++ b/code/_onclick/hud/human.dm @@ -41,9 +41,6 @@ icon_state = "power_display" screen_loc = ui_lingchemdisplay - - - /mob/living/carbon/human/create_mob_hud() if(client && !hud_used) hud_used = new /datum/hud/human(src, ui_style2icon(client.prefs.UI_style)) @@ -55,6 +52,10 @@ var/obj/screen/using var/obj/screen/inventory/inv_box + using = new /obj/screen/inventory/craft + using.icon = ui_style + static_inventory += using + using = new /obj/screen/act_intent() using.icon_state = mymob.a_intent static_inventory += using diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index ef8ecf90a8b..72e5ae3c0f9 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -46,6 +46,15 @@ M.swap_hand() return 1 +/obj/screen/inventory/craft + name = "crafting menu" + icon = 'icons/mob/screen_midnight.dmi' + icon_state = "craft" + screen_loc = ui_crafting + +/obj/screen/inventory/craft/Click() + var/mob/living/M = usr + M.OpenCraftingMenu() /obj/screen/inventory var/slot_id // The indentifier for the slot. It has nothing to do with ID cards. diff --git a/code/_onclick/telekinesis.dm b/code/_onclick/telekinesis.dm index 1fb7b369327..a8fbcf17bb9 100644 --- a/code/_onclick/telekinesis.dm +++ b/code/_onclick/telekinesis.dm @@ -96,8 +96,12 @@ var/const/tk_maxrange = 15 /obj/item/tk_grab/attack_self(mob/user) - if(focus) - focus.attack_self_tk(user) + if(!focus) + return + if(qdeleted(focus)) + qdel(src) + return + focus.attack_self_tk(user) /obj/item/tk_grab/afterattack(atom/target, mob/living/carbon/user, proximity, params)//TODO: go over this if(!target || !user) diff --git a/code/datums/action.dm b/code/datums/action.dm index 677ccc18254..5aa5ced5756 100644 --- a/code/datums/action.dm +++ b/code/datums/action.dm @@ -365,8 +365,6 @@ /datum/action/innate/proc/Deactivate() return - - //Preset for action that call specific procs (consider innate). /datum/action/generic check_flags = 0 diff --git a/code/datums/martial/wrestling.dm b/code/datums/martial/wrestling.dm index c80217e7754..0b7793727be 100644 --- a/code/datums/martial/wrestling.dm +++ b/code/datums/martial/wrestling.dm @@ -203,7 +203,7 @@ animate(D, transform = matrix(180, MATRIX_ROTATE), time = 1, loop = 0) sleep (15) if (D) - animate(transform = null, time = 1, loop = 0) + animate(D, transform = null, time = 1, loop = 0) for (var/i = 0, i < 3, i++) if (A && D) diff --git a/code/datums/material_container.dm b/code/datums/material_container.dm index d7c5c307bc5..21752e31bd6 100644 --- a/code/datums/material_container.dm +++ b/code/datums/material_container.dm @@ -120,8 +120,7 @@ /datum/material_container/proc/use_amount_type(amt, material_type) - var/datum/material/M - M = materials[material_type] + var/datum/material/M = materials[material_type] if(M) if(M.amount >= amt) M.amount -= amt @@ -129,6 +128,20 @@ return amt return 0 +/datum/material_container/proc/can_use_amount(amt, material_type, list/mats) + if(amt && material_type) + var/datum/material/M = materials[material_type] + if(M && M.amount >= amt) + return TRUE + else if(istype(mats)) + for(var/M in mats) + if(materials[M] && mats[M] <= materials[M]) + continue + else + return FALSE + return TRUE + return FALSE + //For spawning mineral sheets; internal use only /datum/material_container/proc/retrieve(sheet_amt, datum/material/M) if(sheet_amt > 0) diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 60d4d992d88..9c1a5522b93 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -52,6 +52,7 @@ var/datum/faction/faction //associated faction var/datum/changeling/changeling //changeling holder + var/linglink var/miming = 0 // Mime's vow of silence var/antag_hud_icon_state = null //this mind's ANTAG_HUD should have this icon_state diff --git a/code/datums/ruins/lavaland.dm b/code/datums/ruins/lavaland.dm index 9409e9b3b6f..5591c02439b 100644 --- a/code/datums/ruins/lavaland.dm +++ b/code/datums/ruins/lavaland.dm @@ -174,3 +174,28 @@ making sure people work on their cardio." suffix = "lavaland_gym.dmm" cost = 10 + +/datum/map_template/ruin/lavaland/survivalcapsule + name = "Survival Capsule Ruins" + id = "survivalcapsule" + description = "What was once sanctuary to the common miner, \ + is now their tomb." + suffix = "lavaland_surface_survivalpod.dmm" + cost = 5 + +/datum/map_template/ruin/lavaland/wwiioutpost + name = "Strange Outpost" + id = "nazi" + description = "The ruins of an outpost, skeletons and empty shell casings litter the interior of \ + the structure. Some of these uniforms look awfully strange.." + suffix = "lavaland_surface_wwiioutpost.dmm" + cost = 20 + allow_duplicates = FALSE + +/datum/map_template/ruin/lavaland/tomb + name = "Strange Outpost" + id = "tomb" + description = "A strange tomb, housing the dead of whatever strange civilization \ + lived here before. You swear you hear rattling coming from the inside." + suffix = "lavaland_surface_tomb.dmm" + cost = 10 diff --git a/code/datums/shuttles.dm b/code/datums/shuttles.dm index d7497bbe415..f34e49e96a0 100644 --- a/code/datums/shuttles.dm +++ b/code/datums/shuttles.dm @@ -112,6 +112,24 @@ without protective goggles. Emitters spawn powered on, expect \ admin notices, they are harmless." +/datum/map_template/shuttle/emergency/imfedupwiththisworld + suffix = "imfedupwiththisworld" + name = "Oh, Hi Daniel" + description = "How was space work today? \ + Oh, pretty good. We got a new space station and the company will make a lot of money. \ + What space station? \ + I cannot tell you; it's space confidential. \ + Aw, come space on. Why not? \ + No, I can't. Anyway, how is your space roleplay life?" + +/datum/map_template/shuttle/emergency/goon + suffix = "goon" + name = "NES Port" + description = "The Nanotrasen Emergency Shuttle Port(NES Port for short) \ + is a shuttle used at other less known nanotrasen facilities \ + and has a more open inside for larger crowds." + + /datum/map_template/shuttle/ferry/base suffix = "base" name = "transport ferry" diff --git a/code/game/asteroid.dm b/code/game/asteroid.dm index 37e7a2f52b3..1d95041df3c 100644 --- a/code/game/asteroid.dm +++ b/code/game/asteroid.dm @@ -73,11 +73,11 @@ var/global/max_secret_rooms = 6 theme = "cult" walltypes = list(/turf/closed/wall/cult=3,/turf/closed/mineral/random/high_chance=1) floortypes = list(/turf/open/floor/plasteel/cult) - treasureitems = list(/obj/item/device/soulstone/anybody=1, /obj/item/clothing/suit/space/cult=1, /obj/item/weapon/bedsheet/cult=2, + treasureitems = list(/obj/item/device/soulstone/anybody=1, /obj/item/clothing/suit/space/hardsuit/cult=1, /obj/item/weapon/bedsheet/cult=2, /obj/item/clothing/suit/cultrobes=2, /mob/living/simple_animal/hostile/creature=3) fluffitems = list(/obj/effect/gateway=1,/obj/effect/gibspawner=1,/obj/structure/cult/talisman=1,/obj/item/toy/crayon/red=2, /obj/item/organ/heart=2, /obj/effect/decal/cleanable/blood=4,/obj/structure/table/wood=2,/obj/item/weapon/ectoplasm=3, - /obj/item/clothing/head/helmet/space/cult=1, /obj/item/clothing/shoes/cult=1) + /obj/item/clothing/shoes/cult=1) if("wizden") theme = "wizden" diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 61366698333..99e5a8205b7 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -66,8 +66,19 @@ hulk.do_attack_animation(src) return -/atom/proc/CheckParts() - return +/atom/proc/CheckParts(list/parts_list) + for(var/A in parts_list) + if(istype(A, /datum/reagent)) + if(!reagents) + reagents = new() + reagents.reagent_list.Add(A) + reagents.conditional_update() + else if(istype(A, /atom/movable)) + var/atom/movable/M = A + if(istype(M.loc, /mob/living)) + var/mob/living/L = M.loc + L.unEquip(M) + M.loc = src /atom/proc/assume_air(datum/gas_mixture/giver) qdel(giver) diff --git a/code/game/gamemodes/blob/blob.dm b/code/game/gamemodes/blob/blob.dm index 768f23fe646..1ae4ea3c8f2 100644 --- a/code/game/gamemodes/blob/blob.dm +++ b/code/game/gamemodes/blob/blob.dm @@ -23,7 +23,7 @@ var/list/blobs_legit = list() //used for win-score calculations, contains only b var/burst = 0 var/cores_to_spawn = 1 - var/players_per_core = 20 + var/players_per_core = 25 var/blob_point_rate = 3 var/blobwincount = 350 diff --git a/code/game/gamemodes/blob/blob_finish.dm b/code/game/gamemodes/blob/blob_finish.dm index f5a415985fe..e1ade57fe22 100644 --- a/code/game/gamemodes/blob/blob_finish.dm +++ b/code/game/gamemodes/blob/blob_finish.dm @@ -1,9 +1,9 @@ /datum/game_mode/blob/check_finished() - if(blob_overminds.len > cores_to_spawn && cores_to_spawn > blob_cores.len)//Some blobs have yet to burst + if(overminds.len) return 0 if(blobwincount <= blobs_legit.len)//Blob took over return 1 - if(!overminds.len && !blob_cores.len) //blob is dead + if(!blob_cores.len) //blob is dead if(config.continuous["blob"]) continuous_sanity_checked = 1 //Nonstandard definition of "alive" gets past the check otherwise SSshuttle.emergencyNoEscape = 0 diff --git a/code/game/gamemodes/blob/theblob.dm b/code/game/gamemodes/blob/theblob.dm index 72112430613..5647c202066 100644 --- a/code/game/gamemodes/blob/theblob.dm +++ b/code/game/gamemodes/blob/theblob.dm @@ -45,6 +45,20 @@ return ..() +/obj/effect/blob/Adjacent(var/atom/neighbour) + . = ..() + if(.) + var/result = 0 + var/direction = get_dir(src, neighbour) + var/list/dirs = list("[NORTHWEST]" = list(NORTH, WEST), "[NORTHEAST]" = list(NORTH, EAST), "[SOUTHEAST]" = list(SOUTH, EAST), "[SOUTHWEST]" = list(SOUTH, WEST)) + for(var/A in dirs) + if(direction == text2num(A)) + for(var/B in dirs[A]) + var/C = locate(/obj/effect/blob) in get_step(src, B) + if(C) + result++ + . -= result - 1 + /obj/effect/blob/CanAtmosPass(turf/T) return !atmosblock diff --git a/code/game/gamemodes/changeling/changeling.dm b/code/game/gamemodes/changeling/changeling.dm index a6200f60bee..a764b30182b 100644 --- a/code/game/gamemodes/changeling/changeling.dm +++ b/code/game/gamemodes/changeling/changeling.dm @@ -290,6 +290,7 @@ var/list/slot2type = list("head" = /obj/item/clothing/head/changeling, "wear_mas var/changelingID = "Changeling" var/geneticdamage = 0 var/isabsorbing = 0 + var/islinking = 0 var/geneticpoints = 10 var/purchasedpowers = list() var/mimicing = "" diff --git a/code/game/gamemodes/changeling/powers/fleshmend.dm b/code/game/gamemodes/changeling/powers/fleshmend.dm index e4c68a8537c..1331788dc4e 100644 --- a/code/game/gamemodes/changeling/powers/fleshmend.dm +++ b/code/game/gamemodes/changeling/powers/fleshmend.dm @@ -1,13 +1,17 @@ /obj/effect/proc_holder/changeling/fleshmend name = "Fleshmend" - desc = "Our flesh rapidly regenerates, healing our wounds. Effectiveness decreases with quick, repeated use." - helptext = "Heals a moderate amount of damage over a short period of time. Can be used while unconscious, and will alert nearby crew." + desc = "Our flesh rapidly regenerates, healing our wounds, and growing \ + back missing limbs. Effectiveness decreases with quick, repeated use." + helptext = "Heals a moderate amount of damage over a short period of \ + time. Can be used while unconscious. Will alert nearby crew if \ + any limbs are regenerated." chemical_cost = 25 dna_cost = 2 req_stat = UNCONSCIOUS var/recent_uses = 1 //The factor of which the healing should be divided by var/healing_ticks = 10 - // The ideal total healing amount, divided by healing_ticks to get heal/tick + // The ideal total healing amount, + // divided by healing_ticks to get heal/tick var/total_healing = 100 /obj/effect/proc_holder/changeling/fleshmend/New() @@ -22,25 +26,29 @@ if(recent_uses > 1) recent_uses = max(1, recent_uses - (1 / healing_ticks)) -//Starts healing you every second for 10 seconds. Can be used whilst unconscious. +//Starts healing you every second for 10 seconds. +//Can be used whilst unconscious. /obj/effect/proc_holder/changeling/fleshmend/sting_action(mob/living/user) user << "We begin to heal rapidly." if(recent_uses > 1) - user << "Our healing's effectiveness is reduced by quickly repeated use!" + user << "Our healing's effectiveness is reduced \ + by quick repeated use!" spawn(0) recent_uses++ if(ishuman(user)) var/mob/living/carbon/human/H = user H.restore_blood() H.remove_all_embedded_objects() - if(H.get_missing_limbs()) + var/list/missing = H.get_missing_limbs() + if(missing.len) playsound(user, 'sound/magic/Demon_consume.ogg', 50, 1) H.visible_message("[user]'s missing limbs reform, making a loud, grotesque sound!", "Your limbs regrow, making a loud, crunchy sound and giving you great pain!", "You hear organic matter ripping and tearing!") H.emote("scream") H.regenerate_limbs(1) - // The healing itself - doesn't heal toxin damage (that's anatomic panacea) and - // effectiveness decreases with each use in a short timespan + // The healing itself - doesn't heal toxin damage + // (that's anatomic panacea) and the effectiveness decreases with + // each use in a short timespan for(var/i in 1 to healing_ticks) if(user) var/healpertick = -(total_healing / healing_ticks) diff --git a/code/game/gamemodes/changeling/powers/linglink.dm b/code/game/gamemodes/changeling/powers/linglink.dm new file mode 100644 index 00000000000..31de5f47be6 --- /dev/null +++ b/code/game/gamemodes/changeling/powers/linglink.dm @@ -0,0 +1,68 @@ +/obj/effect/proc_holder/changeling/linglink + name = "Hivemind Link" + desc = "Link your victim's mind into the hivemind for personal interrogation" + chemical_cost = 0 + dna_cost = 0 + req_human = 1 + max_genetic_damage = 100 + +/obj/effect/proc_holder/changeling/linglink/can_sting(mob/living/carbon/user) + if(!..()) + return + var/datum/changeling/changeling = user.mind.changeling + var/obj/item/weapon/grab/G = user.get_active_hand() + var/mob/living/carbon/target = G.affecting + if(changeling.islinking) + user << "We have already formed a link with the victim!" + return + if(!target.mind) + user << "The victim has no mind to link to!" + return + if(target.stat == DEAD) + user << "The victim is dead, you cannot link to a dead mind!" + return + if(target.mind.changeling) + user << "The victim is already a part of the hivemind!" + return + if(!istype(G)) + user << "We must be tightly grabbing a creature in our active hand to link with them!" + return + if(G.state <= GRAB_NECK) + user << "We must have a tighter grip to link with this creature!" + return + return changeling.can_absorb_dna(user,target) + +/obj/effect/proc_holder/changeling/linglink/sting_action(mob/user) + var/datum/changeling/changeling = user.mind.changeling + var/obj/item/weapon/grab/G = user.get_active_hand() + var/mob/living/carbon/human/target = G.affecting + changeling.islinking = 1 + for(var/i in 1 to 3) + switch(i) + if(1) + user << "This creature is compatible. We must hold still..." + if(2) + user << "We stealthily stab [target] with a minor proboscis..." + target << "You experience a stabbing sensation and your ears begin to ring..." + if(3) + user << "You mold the [target]'s mind like clay, they can now speak in the hivemind!" + target << "A migraine throbs behind your eyes, you hear yourself screaming - but your mouth has not opened!" + for(var/mob/M in mob_list) + if(M.lingcheck() == 2) + M << "We can sense a foreign presence in the hivemind..." + target.mind.linglink = 1 + target.say(":g AAAAARRRRGGGGGHHHHH!!") + target << "You can now communicate in the changeling hivemind, say \":g message\" to communicate!" + target.reagents.add_reagent("salbutamol", 40) // So they don't choke to death while you interrogate them + sleep(1800) + feedback_add_details("changeling_powers","A [i]") + if(!do_mob(user, target, 20)) + user << "Our link with [target] has ended!" + changeling.islinking = 0 + target.mind.linglink = 0 + return + + changeling.islinking = 0 + target.mind.linglink = 0 + user << "You cannot sustain the connection any longer, your victim fades from the hivemind" + target << "The link cannot be sustained any longer, your connection to the hivemind has faded!" diff --git a/code/game/gamemodes/changeling/traitor_chan.dm b/code/game/gamemodes/changeling/traitor_chan.dm index 2d906e37ed0..861ded33da2 100644 --- a/code/game/gamemodes/changeling/traitor_chan.dm +++ b/code/game/gamemodes/changeling/traitor_chan.dm @@ -43,6 +43,7 @@ for(var/j = 0, j < num_changelings, j++) if(!possible_changelings.len) break var/datum/mind/changeling = pick(possible_changelings) + antag_candidates -= changeling possible_changelings -= changeling changelings += changeling modePlayer += changelings diff --git a/code/game/gamemodes/cult/cult.dm b/code/game/gamemodes/cult/cult.dm index dc706d3934f..2b35c5df6b7 100644 --- a/code/game/gamemodes/cult/cult.dm +++ b/code/game/gamemodes/cult/cult.dm @@ -21,8 +21,14 @@ return 0 if(isloyal(mind.current)) return 0 - if (ticker.mode.name == "cult") //redundant? - if(is_sacrifice_target(mind)) return 0 + if(issilicon(mind.current) || isbot(mind.current) || isdrone(mind.current)) + return 0 //can't convert machines, that's ratvar's thing + if(isguardian(mind.current)) + var/mob/living/simple_animal/hostile/guardian/G = mind.current + if(!iscultist(G.summoner)) + return 0 //can't convert it unless the owner is converted + if(is_sacrifice_target(mind)) + return 0 return 1 /datum/game_mode/cult @@ -62,7 +68,7 @@ restricted_jobs += "Assistant" //cult scaling goes here - recommended_enemies = 3 + round(num_players()/20) + recommended_enemies = 3 + round(num_players()/15) for(var/cultists_number = 1 to recommended_enemies) diff --git a/code/game/gamemodes/cult/cult_items.dm b/code/game/gamemodes/cult/cult_items.dm index 179d87099e2..ebc7070d780 100644 --- a/code/game/gamemodes/cult/cult_items.dm +++ b/code/game/gamemodes/cult/cult_items.dm @@ -117,14 +117,16 @@ armor = list(melee = 50, bullet = 30, laser = 50,energy = 20, bomb = 25, bio = 10, rad = 0) flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT -/obj/item/clothing/head/helmet/space/cult +/obj/item/clothing/head/helmet/space/hardsuit/cult name = "nar-sien hardened helmet" desc = "A heavily-armored helmet worn by warriors of the Nar-Sien cult. It can withstand hard vacuum." icon_state = "cult_helmet" item_state = "cult_helmet" armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30) + brightness_on = 0 + actions_types = list() -/obj/item/clothing/suit/space/cult +/obj/item/clothing/suit/space/hardsuit/cult name = "nar-sien hardened armor" icon_state = "cult_armor" item_state = "cult_armor" @@ -132,6 +134,7 @@ w_class = 2 allowed = list(/obj/item/weapon/tome,/obj/item/weapon/melee/cultblade,/obj/item/weapon/tank/internals/) armor = list(melee = 70, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 30, rad = 30) + helmettype = /obj/item/clothing/head/helmet/space/hardsuit/cult /obj/item/weapon/sharpener/cult name = "eldritch whetstone" @@ -151,10 +154,9 @@ body_parts_covered = CHEST|GROIN|LEGS|ARMS allowed = list(/obj/item/weapon/tome,/obj/item/weapon/melee/cultblade) var/current_charges = 3 - var/shield_state = "shield-red" hooded = 1 hoodtype = /obj/item/clothing/head/cult_hoodie - + /obj/item/clothing/head/cult_hoodie name = "empowered cultist armor" desc = "Empowered garb which creates a powerful shield around the user." @@ -163,8 +165,8 @@ body_parts_covered = HEAD flags = NODROP flags_inv = HIDEHAIR|HIDEFACE|HIDEEARS - -/obj/item/clothing/suit/hooded/cultrobes/cult_shield/pickup(mob/living/user) + +/obj/item/clothing/suit/hooded/cultrobes/cult_shield/equipped(mob/user, slot) ..() if(!iscultist(user)) user << "\"I wouldn't advise that.\"" @@ -172,26 +174,22 @@ user.unEquip(src, 1) user.Dizzy(30) user.Weaken(5) - /obj/item/clothing/suit/hooded/cultrobes/cult_shield/hit_reaction(mob/living/carbon/human/owner, attack_text, isinhands) - if(current_charges > 0) - var/datum/effect_system/spark_spread/s = new - s.set_up(2, 1, src) - s.start() - owner.visible_message("[owner]'s shields deflect [attack_text] in a shower of sparks!") + if(current_charges) + owner.visible_message("\The [attack_text] is deflected in a burst of blood-red sparks!") current_charges-- - if(current_charges <= 0) - owner.visible_message("[owner]'s shield is destroyed!") - shield_state = "broken" + PoolOrNew(/obj/effect/overlay/temp/cult/sparks, get_turf(owner)) + if(!current_charges) + owner.visible_message("The runed shield around [owner] suddenly disappears!") owner.update_inv_wear_suit() return 1 return 0 /obj/item/clothing/suit/hooded/cultrobes/cult_shield/worn_overlays(isinhands) . = list() - if(!isinhands) - . += image(icon = 'icons/effects/effects.dmi', icon_state = "[shield_state]") + if(!isinhands && current_charges) + . += image(layer = MOB_LAYER+0.05, icon = 'icons/effects/effects.dmi', icon_state = "shield-cult") /obj/item/clothing/suit/hooded/cultrobes/berserker name = "flagellant's robes" @@ -205,7 +203,7 @@ slowdown = -1 hooded = 1 hoodtype = /obj/item/clothing/head/berserkerhood - + /obj/item/clothing/head/berserkerhood name = "flagellant's robes" desc = "Blood-soaked garb infused with dark magic; allows the user to move at inhuman speeds, but at the cost of increased damage." @@ -214,8 +212,8 @@ flags = NODROP flags_inv = HIDEHAIR|HIDEFACE|HIDEEARS armor = list(melee = -100, bullet = -100, laser = -100,energy = -100, bomb = -100, bio = -100, rad = -100) - -/obj/item/clothing/suit/hooded/cultrobes/berserker/pickup(mob/living/user) + +/obj/item/clothing/suit/hooded/cultrobes/berserker/equipped(mob/user, slot) ..() if(!iscultist(user)) user << "\"I wouldn't advise that.\"" @@ -223,7 +221,7 @@ user.unEquip(src, 1) user.Dizzy(30) user.Weaken(5) - + /obj/item/clothing/glasses/night/cultblind desc = "May nar-sie guide you through the darkness and shield you from the light." name = "zealot's blindfold" @@ -231,15 +229,15 @@ item_state = "blindfold" darkness_view = 8 flash_protect = 1 - -/obj/item/clothing/glasses/night/cultblind/pickup(mob/living/user) + +/obj/item/clothing/glasses/night/cultblind/equipped(mob/user, slot) ..() if(!iscultist(user)) - user << "\"I wouldn't advise that.\"" - user << "An overwhelming sense of nausea overpowers you!" + user << "\"You want to be blind, do you?\"" user.unEquip(src, 1) user.Dizzy(30) user.Weaken(5) + user.blind_eyes(30) /obj/item/weapon/reagent_containers/food/drinks/bottle/unholywater name = "flask of unholy water" @@ -255,7 +253,7 @@ icon_state ="bluespace" color = "#ff0000" var/global/curselimit = 0 - + /obj/item/device/shuttle_curse/attack_self(mob/user) if(!iscultist(user)) user.unEquip(src, 1) @@ -284,48 +282,57 @@ var/message = pick_n_take(curses) priority_announce("[message]", "System Failure", 'sound/misc/notice1.ogg') curselimit++ - + /obj/item/device/cult_shift name = "veil shifter" - desc = "The veil between worlds is weak, this relic teleports you forward a small distance. It may be used twice before its power is lost." + desc = "This relic teleports you forward a medium distance." icon = 'icons/obj/cult.dmi' icon_state ="shifter" var/uses = 2 - + +/obj/item/device/cult_shift/examine(mob/user) + ..() + if(uses) + user << "It has [uses] uses remaining." + else + user << "It seems drained." + /obj/item/device/cult_shift/proc/handle_teleport_grab(turf/T, mob/user) - var/mob/living/carbon/human/H = user - if(H.pulling && (istype(H.pulling, /mob/living))) - var/mob/living/victim = H.pulling - if(!victim.anchored) - victim.forceMove(locate(T.x+rand(-1,1),T.y+rand(-1,1),T.z)) - return + var/mob/living/carbon/C = user + if(C.pulling) + var/atom/movable/pulled = C.pulling + pulled.forceMove(T) + . = pulled /obj/item/device/cult_shift/attack_self(mob/user) + if(!uses || !iscarbon(user)) + user << "\The [src] is dull and unmoving in your hands." + return if(!iscultist(user)) user.unEquip(src, 1) - user.Weaken(5) - user << "A powerful force shoves you away from [src]!" + step(src, pick(alldirs)) + user << "\The [src] flickers out of your hands, too eager to move!" return - uses-- - if (uses<1) - qdel(src) - var/mob/living/carbon/human/H = user - var/turf/destination = get_teleport_loc(H.loc,H,9,1,3,1,0,1) - var/turf/mobloc = get_turf(H.loc)//Safety - if(destination&&istype(mobloc, /turf))//So we don't teleport out of containers - spawn(0) - playsound(H.loc, "sparks", 50, 1) - anim(mobloc,src,'icons/mob/mob.dmi',,"cultout",,H.dir) + var/mob/living/carbon/C = user + var/turf/mobloc = get_turf(C) + var/turf/destination = get_teleport_loc(mobloc,C,9,1,3,1,0,1) - handle_teleport_grab(destination, H) - H.loc = destination + if(destination) + uses-- + if(uses <= 0) + icon_state ="shifter_drained" + playsound(mobloc, "sparks", 50, 1) + PoolOrNew(/obj/effect/overlay/temp/cult/phase/out, list(mobloc, C.dir)) + + var/atom/movable/pulled = handle_teleport_grab(destination, C) + C.forceMove(destination) + if(pulled) + C.start_pulling(pulled) //forcemove resets pulls, so we need to re-pull + + PoolOrNew(/obj/effect/overlay/temp/cult/phase, list(destination, C.dir)) + playsound(destination, 'sound/effects/phasein.ogg', 25, 1) + playsound(destination, "sparks", 50, 1) - spawn(0) - PoolOrNew(/obj/effect/particle_effect/sparks, H.loc) - playsound(H.loc, 'sound/effects/phasein.ogg', 25, 1) - playsound(H.loc, "sparks", 50, 1) - anim(H.loc,H,'icons/mob/mob.dmi',,"cultin",,H.dir) - else - H << "The veil cannot be torn here!" + C << "The veil cannot be torn here!" diff --git a/code/game/gamemodes/cult/cult_structures.dm b/code/game/gamemodes/cult/cult_structures.dm index 3c3ccf77cdb..a5a299d068c 100644 --- a/code/game/gamemodes/cult/cult_structures.dm +++ b/code/game/gamemodes/cult/cult_structures.dm @@ -6,42 +6,61 @@ var/health = 100 var/maxhealth = 100 +/obj/structure/cult/examine(mob/user) + ..() + user << "\The [src] is [anchored ? "":"not "]secured to the floor." + if(iscultist(user) && cooldowntime > world.time) + user << "The magic in [src] is weak, it will be ready to use again in [getETA()]." + +/obj/structure/cult/attackby(obj/I, mob/user, params) + if(istype(I, /obj/item/weapon/tome) && iscultist(user)) + anchored = !anchored + user << "You [anchored ? "":"un"]secure \the [src] [anchored ? "to":"from"] the floor." + if(!anchored) + icon_state = "[initial(icon_state)]_off" + else + icon_state = initial(icon_state) + else + return ..() + /obj/structure/cult/proc/getETA() - var/time = round((0-(world.time-cooldowntime))/600, 1) - var/eta = "[time] minutes." - if(time == 1) - eta = "about one minute." - else if(time == 0) - eta = "less than thirty seconds." - return eta - + var/time = (cooldowntime - world.time)/600 + var/eta = "[round(time, 1)] minutes" + if(time <= 1) + time = (cooldowntime - world.time)*0.1 + eta = "[round(time, 1)] seconds" + return eta + /obj/structure/cult/talisman name = "altar" desc = "A bloodstained altar dedicated to Nar-Sie." icon_state = "talismanaltar" - /obj/structure/cult/talisman/attack_hand(mob/living/user) if(!iscultist(user)) - user << "You don't even begin to understand what these words mean..." + user << "You're pretty sure you know exactly what this is used for and you can't seem to touch it." + return + if(!anchored) + user << "You need to anchor [src] to the floor with a tome first." return if(cooldowntime > world.time) - user << "The magic here is weak, it will be ready to use again in [getETA()]. " + user << "The magic in [src] is weak, it will be ready to use again in [getETA()]." return - cooldowntime = world.time + 2400 var/choice = alert(user,"You study the schematics etched into the forge...",,"Eldritch Whetstone","Zealot's Blindfold","Flask of Unholy Water") + var/pickedtype switch(choice) if("Eldritch Whetstone") - var/obj/item/weapon/sharpener/cult/N = new(get_turf(src)) - user << "You kneel before the altar and your faith is rewarded with an [N.name]!" + pickedtype = /obj/item/weapon/sharpener/cult if("Zealot's Blindfold") - var/obj/item/clothing/glasses/night/cultblind/N = new(get_turf(src)) - user << "You kneel before the altar and your faith is rewarded with a [N.name]!" + pickedtype = /obj/item/clothing/glasses/night/cultblind if("Flask of Unholy Water") - var/obj/item/weapon/reagent_containers/food/drinks/bottle/unholywater/N = new(get_turf(src)) - user << "You kneel before the altar and your faith is rewarded with a [N.name]!" - - + pickedtype = /obj/item/weapon/reagent_containers/food/drinks/bottle/unholywater + if(src && !qdeleted(src) && anchored && pickedtype && Adjacent(user) && !user.incapacitated() && iscultist(user) && cooldowntime <= world.time) + cooldowntime = world.time + 2400 + var/obj/item/N = new pickedtype(get_turf(src)) + user << "You kneel before the altar and your faith is rewarded with an [N]!" + + /obj/structure/cult/forge name = "daemon forge" desc = "A forge used in crafting the unholy weapons used by the armies of Nar-Sie." @@ -50,67 +69,77 @@ /obj/structure/cult/forge/attack_hand(mob/living/user) if(!iscultist(user)) - user << "You don't even begin to understand what these words mean..." + user << "The heat radiating from [src] pushes you back." + return + if(!anchored) + user << "You need to anchor [src] to the floor with a tome first." return if(cooldowntime > world.time) - user << "The magic here is weak, it will be ready to use again in [getETA()]. " + user << "The magic in [src] is weak, it will be ready to use again in [getETA()]." return - cooldowntime = world.time + 2400 var/choice = alert(user,"You study the schematics etched into the forge...",,"Shielded Robe","Flagellant's Robe","Nar-Sien Hardsuit") + var/pickedtype switch(choice) if("Shielded Robe") - var/obj/item/clothing/suit/hooded/cultrobes/cult_shield/N = new(get_turf(src)) - user << "You work the forge as dark knowledge guides your hands, creating [N]!" + pickedtype = /obj/item/clothing/suit/hooded/cultrobes/cult_shield if("Flagellant's Robe") - var/obj/item/clothing/suit/hooded/cultrobes/berserker/N = new(get_turf(src)) - user << "You work the forge as dark knowledge guides your hands, creating [N]!" + pickedtype = /obj/item/clothing/suit/hooded/cultrobes/berserker if("Nar-Sien Hardsuit") - new /obj/item/clothing/head/helmet/space/cult(get_turf(src)) - var /obj/item/clothing/suit/space/cult/N = new(get_turf(src)) - user << "You work the forge as dark knowledge guides your hands, creating [N]!" + pickedtype = /obj/item/clothing/suit/space/hardsuit/cult + if(src && !qdeleted(src) && anchored && pickedtype && Adjacent(user) && !user.incapacitated() && iscultist(user) && cooldowntime <= world.time) + cooldowntime = world.time + 2400 + var/obj/item/N = new pickedtype(get_turf(src)) + user << "You work the forge as dark knowledge guides your hands, creating [N]!" + /obj/structure/cult/pylon name = "pylon" desc = "A floating crystal that slowly heals those faithful to Nar'Sie." icon_state = "pylon" luminosity = 5 - var/heal_delay = 50 - var/last_shot = 0 - var/list/corruption = list() + var/heal_delay = 25 + var/last_heal = 0 + var/corrupt_delay = 50 + var/last_corrupt = 0 /obj/structure/cult/pylon/New() - SSobj.processing |= src - corruption += get_turf(src) - for(var/i in 1 to 5) - for(var/t in corruption) - var/turf/T = t - corruption |= T.GetAtmosAdjacentTurfs() + SSfastprocess.processing |= src ..() /obj/structure/cult/pylon/Destroy() - SSobj.processing.Remove(src) + SSfastprocess.processing.Remove(src) return ..() - + /obj/structure/cult/pylon/process() - if((last_shot + heal_delay) <= world.time) - last_shot = world.time + if(!anchored) + return + if(last_heal <= world.time) + last_heal = world.time + heal_delay for(var/mob/living/L in range(5, src)) - if(iscultist(L)) - var/mob/living/carbon/human/H = L - if(istype(H)) - L.adjustBruteLoss(-1, 0) - L.adjustFireLoss(-1, 0) - L.updatehealth() - if(istype(L, /mob/living/simple_animal/hostile/construct)) - var/mob/living/simple_animal/M = L - if(M.health < M.maxHealth) - M.adjustHealth(-2) - if(corruption.len) - var/turf/T = pick_n_take(corruption) - corruption -= T - if (istype(T, /turf/open/floor/engine/cult) || istype(T, /turf/open/space) || istype(T, /turf/open/floor/plating/lava)) - return + if(iscultist(L) || istype(L, /mob/living/simple_animal/shade) || istype(L, /mob/living/simple_animal/hostile/construct)) + if(L.health != L.maxHealth) + PoolOrNew(/obj/effect/overlay/temp/heal, list(get_turf(src), "#960000")) + if(ishuman(L)) + L.adjustBruteLoss(-1, 0) + L.adjustFireLoss(-1, 0) + L.updatehealth() + if(istype(L, /mob/living/simple_animal/shade) || istype(L, /mob/living/simple_animal/hostile/construct)) + var/mob/living/simple_animal/M = L + if(M.health < M.maxHealth) + M.adjustHealth(-1) + CHECK_TICK + if(last_corrupt <= world.time) + var/list/validturfs = list() + for(var/T in circleviewturfs(src, 5)) + if(istype(T, /turf/closed) || istype(T, /turf/open/floor/engine/cult) || istype(T, /turf/open/space) || istype(T, /turf/open/floor/plating/lava)) + continue + validturfs |= T + var/turf/T = safepick(validturfs) + if(T) T.ChangeTurf(/turf/open/floor/engine/cult) + last_corrupt = world.time + corrupt_delay + else + last_corrupt = world.time + corrupt_delay*2 /obj/structure/cult/tome name = "archives" @@ -120,25 +149,28 @@ /obj/structure/cult/tome/attack_hand(mob/living/user) if(!iscultist(user)) - user << "You don't even begin to understand what these words mean..." + user << "All of these books seem to be gibberish." + return + if(!anchored) + user << "You need to anchor [src] to the floor with a tome first." return if(cooldowntime > world.time) - user << "The magic here is weak, it will be ready to use again in [getETA()]. " + user << "The magic in [src] is weak, it will be ready to use again in [getETA()]." return - cooldowntime = world.time + 2400 - var/choice = alert(user,"You flip through the black pages of the archives...",,"Supply Talisman","Shuttle Curse","Veil Shift") + var/choice = alert(user,"You flip through the black pages of the archives...",,"Supply Talisman","Shuttle Curse","Veil Shifter") + var/pickedtype switch(choice) if("Supply Talisman") - var/obj/item/weapon/paper/talisman/supply/N = new(get_turf(src)) - N.uses = 2 - user << "You summon [N] from the archives!" + pickedtype = /obj/item/weapon/paper/talisman/supply/weak if("Shuttle Curse") - var/obj/item/device/shuttle_curse/N = new(get_turf(src)) - user << "You summon [N] from the archives!" - if("Veil Shift") - var /obj/item/device/cult_shift/N = new(get_turf(src)) - user << "You summon [N] from the archives!" - + pickedtype = /obj/item/device/shuttle_curse + if("Veil Shifter") + pickedtype = /obj/item/device/cult_shift + if(src && !qdeleted(src) && anchored && pickedtype && Adjacent(user) && !user.incapacitated() && iscultist(user) && cooldowntime <= world.time) + cooldowntime = world.time + 2400 + var/obj/item/N = new pickedtype(get_turf(src)) + user << "You summon [N] from the archives!" + /obj/effect/gateway name = "gateway" desc = "You're pretty sure that abyss is staring back." diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm index ecd8c75aa6e..de7f5cb0a92 100644 --- a/code/game/gamemodes/cult/ritual.dm +++ b/code/game/gamemodes/cult/ritual.dm @@ -17,6 +17,7 @@ This file contains the arcane tome files. ..() if(iscultist(user) || user.stat == DEAD) user << "The scriptures of the Geometer. Allows the scribing of runes and access to the knowledge archives of the cult of Nar-Sie." + user << "Striking a cult structure will unanchor or reanchor it." user << "Striking another cultist with it will purge holy water from them." user << "Striking a noncultist, however, will sear their flesh." @@ -154,7 +155,7 @@ This file contains the arcane tome files. text += "Juggernaut
The Juggernaut is a slow, but durable, melee attacker which can produce temporary forcewalls. It will also reflect most lethal energy weapons.

" - text += "Artificer
The Artificer is a weak and fragile construct, able to heal other constructs, produce more soulstones and construct shells, \ + text += "Artificer
The Artificer is a weak and fragile construct, able to heal other constructs, shades, or itself, produce more soulstones and construct shells, \ construct fortifying cult walls and flooring, and finally, it can release a few indiscriminate stunning missiles.

" text += "Harvester
If you see one, know that you have done all you can and your life is void.

" diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 44e546a9f76..64b6e1c6517 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -24,7 +24,6 @@ To draw a rune, use an arcane tome. unacidable = 1 layer = TURF_LAYER + 0.08 color = rgb(255,0,0) - mouse_opacity = 2 var/invocation = "Aiy ele-mayo!" //This is said by cultists when the rune is invoked. var/req_cultists = 1 //The amount of cultists required around the rune to invoke it. If only 1, any cultist can invoke it. @@ -203,7 +202,7 @@ structure_check() searches for nearby cultist structures required for the invoca log_game("Talisman Creation rune failed - already in use") return var/obj/item/weapon/paper/paper_to_imbue = pick(papers_on_rune) - for(var/I in subtypesof(/obj/item/weapon/paper/talisman) - /obj/item/weapon/paper/talisman/malformed - /obj/item/weapon/paper/talisman/supply) + for(var/I in subtypesof(/obj/item/weapon/paper/talisman) - /obj/item/weapon/paper/talisman/malformed - /obj/item/weapon/paper/talisman/supply - /obj/item/weapon/paper/talisman/supply/weak) var/obj/item/weapon/paper/talisman/J = I var/talisman_cult_name = initial(J.cultist_name) if(talisman_cult_name) @@ -300,7 +299,7 @@ var/list/teleport_runes = list() fail_invoke() -//Rite of Enlightenment: Converts a normal crewmember to the cult. Faster for every cultist nearby. +//Rite of Enlightenment: Converts a normal crewmember to the cult. /obj/effect/rune/convert cultist_name = "Convert" cultist_desc = "converts a normal crewmember on top of it to the cult. Does not work on loyalty-implanted crew." @@ -312,21 +311,22 @@ var/list/teleport_runes = list() /obj/effect/rune/convert/invoke(var/list/invokers) var/list/convertees = list() var/turf/T = get_turf(src) - for(var/mob/living/M in T.contents) - if(!iscultist(M) && !isloyal(M)) - convertees.Add(M) + for(var/mob/living/M in T) + if(M.stat != DEAD && !iscultist(M) && is_convertable_to_cult(M.mind)) + convertees |= M + else if(is_sacrifice_target(M.mind)) + for(var/C in invokers) + C << "\"I desire this one for myself. SACRIFICE THEM!\"" if(!convertees.len) fail_invoke() log_game("Convert rune failed - no eligible convertees") return var/mob/living/new_cultist = pick(convertees) - if(!is_convertable_to_cult(new_cultist.mind) || new_cultist.null_rod_check()) + if(new_cultist.null_rod_check()) for(var/M in invokers) M << "Something is shielding [new_cultist]'s mind!" - if(is_sacrifice_target(new_cultist.mind)) - M << "\"I desire this one for myself. SACRIFICE THEM!\"" fail_invoke() - log_game("Convert rune failed - convertee could not be converted") + log_game("Convert rune failed - convertee had null rod") return ..() new_cultist.visible_message("[new_cultist] writhes in pain as the markings below them glow a bloody red!", \ @@ -448,7 +448,6 @@ var/list/teleport_runes = list() icon_state = "rune_large" pixel_x = -32 //So the big ol' 96x96 sprite shows up right pixel_y = -32 - mouse_opacity = 1 //we're huge and easy to click scribe_delay = 450 //how long the rune takes to create scribe_damage = 40.1 //how much damage you take doing it var/used @@ -534,40 +533,29 @@ var/list/teleport_runes = list() var/mob/living/user = invokers[1] if(rune_in_use) return - for(var/mob/living/M in orange(1,src)) - if(M.stat == DEAD) - potential_sacrifice_mobs.Add(M) + for(var/mob/living/M in orange(1,T)) + if(M.stat == DEAD && !iscultist(M)) + potential_sacrifice_mobs |= M if(!potential_sacrifice_mobs.len) user << "There are no eligible sacrifices nearby!" - log_game("Raise Dead rune failed - no catalyst corpse") - return - mob_to_sacrifice = input(user, "Choose a corpse to sacrifice.", "Corpse to Sacrifice") as null|anything in potential_sacrifice_mobs - if(!Adjacent(user) || !src || qdeleted(src) || user.incapacitated() || !mob_to_revive || !mob_to_sacrifice || rune_in_use) + log_game("Raise Dead rune failed - no catalyst corpses") + fail_invoke() return for(var/mob/living/M in T.contents) if(M.stat == DEAD) - potential_revive_mobs.Add(M) + potential_revive_mobs |= M if(!potential_revive_mobs.len) user << "There is no eligible revival target on the rune!" - log_game("Raise Dead rune failed - no corpse to revived") + log_game("Raise Dead rune failed - no corpses to revive") + fail_invoke() + return + mob_to_sacrifice = input(user, "Choose a corpse to sacrifice.", "Corpse to Sacrifice") as null|anything in potential_sacrifice_mobs + if(!src || qdeleted(src) || rune_in_use || !validness_checks(mob_to_sacrifice, user, 1)) return mob_to_revive = input(user, "Choose a corpse to revive.", "Corpse to Revive") as null|anything in potential_revive_mobs - if(!Adjacent(user) || !src || qdeleted(src) || user.incapacitated() || rune_in_use) + if(!src || qdeleted(src) || rune_in_use || !validness_checks(mob_to_sacrifice, user, 1)) return - if(!in_range(mob_to_sacrifice,src)) - user << "The sacrificial target has been moved!" - fail_invoke() - log_game("Raise Dead rune failed - catalyst corpse moved") - return - if(!(mob_to_revive in T.contents)) - user << "The corpse to revive has been moved!" - fail_invoke() - log_game("Raise Dead rune failed - revival target moved") - return - if(mob_to_sacrifice.stat != DEAD) - user << "The sacrificial target must be dead!" - fail_invoke() - log_game("Raise Dead rune failed - catalyst corpse is not dead") + if(!validness_checks(mob_to_revive, user, 0)) return rune_in_use = 1 if(user.name == "Herbert West") @@ -579,19 +567,47 @@ var/list/teleport_runes = list() mob_to_revive.Beam(mob_to_sacrifice,icon_state="sendbeam",icon='icons/effects/effects.dmi',time=20) sleep(20) if(!mob_to_sacrifice || !in_range(mob_to_sacrifice, src)) - mob_to_sacrifice.visible_message("[mob_to_sacrifice] disintegrates into a pile of bones") + rune_in_use = 0 return - mob_to_sacrifice.dust() if(!mob_to_revive || mob_to_revive.stat != DEAD) visible_message("The glowing tendril snaps against the rune with a shocking crack.") rune_in_use = 0 + fail_invoke() return - mob_to_revive.revive() //This does remove disabilities and such, but the rune might actually see some use because of it! + mob_to_sacrifice.visible_message("[mob_to_sacrifice] disintegrates into a pile of bones.") + mob_to_sacrifice.dust() + mob_to_revive.revive(1, 1) //This does remove disabilities and such, but the rune might actually see some use because of it! mob_to_revive << "\"PASNAR SAVRAE YAM'TOTH. Arise.\"" mob_to_revive.visible_message("[mob_to_revive] draws in a huge breath, red light shining from their eyes.", \ "You awaken suddenly from the void. You're alive!") rune_in_use = 0 +/obj/effect/rune/raise_dead/proc/validness_checks(mob/living/target_mob, mob/living/user, saccing) + var/turf/T = get_turf(src) + if(!user) + return 0 + if(!Adjacent(user) || user.incapacitated()) + return 0 + if(!target_mob) + fail_invoke() + return 0 + if(saccing) + if(!in_range(target_mob, src)) + user << "The sacrificial target has been moved!" + fail_invoke() + log_game("Raise Dead rune failed - catalyst corpse moved") + return 0 + if(target_mob.stat != DEAD) + user << "The sacrificial target must be dead!" + fail_invoke() + log_game("Raise Dead rune failed - catalyst corpse is not dead") + return 0 + else if(!(target_mob in T.contents)) + user << "The corpse to revive has been moved!" + fail_invoke() + log_game("Raise Dead rune failed - revival target moved") + return 0 + return 1 /obj/effect/rune/raise_dead/fail_invoke() ..() @@ -743,7 +759,7 @@ var/list/teleport_runes = list() var/mob/living/user = invokers[1] var/list/cultists = list() for(var/datum/mind/M in ticker.mode.cult) - if(!(M.current in invokers)) + if(!(M.current in invokers) && M.current.stat != DEAD) cultists |= M.current var/mob/living/cultist_to_summon = input(user, "Who do you wish to call to [src]?", "Followers of the Geometer") as null|anything in cultists if(!Adjacent(user) || !src || qdeleted(src) || user.incapacitated()) @@ -753,10 +769,15 @@ var/list/teleport_runes = list() fail_invoke() log_game("Summon Cultist rune failed - no target") return + if(cultist_to_summon.stat == DEAD) + user << "[cultist_to_summon] has died!" + fail_invoke() + log_game("Summon Cultist rune failed - target died") + return if(!iscultist(cultist_to_summon)) user << "[cultist_to_summon] is not a follower of the Geometer!" fail_invoke() - log_game("Summon Cultist rune failed - no target") + log_game("Summon Cultist rune failed - target was deconverted") return if(cultist_to_summon.z > ZLEVEL_SPACEMAX) user << "[cultist_to_summon] is not in our dimension!" @@ -783,8 +804,9 @@ var/list/teleport_runes = list() /obj/effect/rune/blood_boil/invoke(var/list/invokers) ..() + var/turf/T = get_turf(src) visible_message("[src] briefly bubbles before exploding!") - for(var/mob/living/carbon/C in viewers(src)) + for(var/mob/living/carbon/C in viewers(T)) if(!iscultist(C)) var/obj/item/weapon/nullrod/N = C.null_rod_check() if(N) @@ -797,8 +819,8 @@ var/list/teleport_runes = list() var/mob/living/L = M L.apply_damage(15, BRUTE, pick("l_arm", "r_arm")) L << "[src] saps your strength!" - explosion(get_turf(src), -1, 0, 1, 5) qdel(src) + explosion(T, -1, 0, 1, 5) //Rite of Spectral Manifestation: Summons a ghost on top of the rune as a cultist human with no items. User must stand on the rune at all times, and takes damage for each summoned ghost. diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm index 09d2e4be1c3..e1c5f6c3350 100644 --- a/code/game/gamemodes/cult/talisman.dm +++ b/code/game/gamemodes/cult/talisman.dm @@ -101,6 +101,9 @@ visible_message("[src] crumbles to dust.") qdel(src) +/obj/item/weapon/paper/talisman/supply/weak + uses = 2 + //Rite of Translocation: Same as rune /obj/item/weapon/paper/talisman/teleport cultist_name = "Talisman of Teleportation" @@ -330,19 +333,17 @@ new /obj/structure/constructshell(T) user << "The talisman clings to the metal and twists it into a construct shell!" user << sound('sound/effects/magic.ogg',0,1,25) - PoolOrNew(/obj/effect/overlay/temp/cult/turf/open/floor, T) qdel(src) if(istype(target, /obj/item/stack/sheet/plasteel)) var/quantity = target.amount var/turf/T = get_turf(target) new /obj/item/stack/sheet/runed_metal(T,quantity) target.use(quantity) - user << "The talisman clings to the plasteel and runes of power appear on the surface!" + user << "The talisman clings to the plasteel, transforming it into runed metal!" user << sound('sound/effects/magic.ogg',0,1,25) - PoolOrNew(/obj/effect/overlay/temp/cult/turf/open/floor, T) qdel(src) else - user << "The talisman requires metal or plasteel!" + user << "The talisman must be used on metal or plasteel!" //Talisman of Shackling: Applies special cuffs directly from the talisman diff --git a/code/game/gamemodes/demon/demon_game_mode.dm b/code/game/gamemodes/demon/demon_game_mode.dm index 06856715515..5a0c26cde94 100644 --- a/code/game/gamemodes/demon/demon_game_mode.dm +++ b/code/game/gamemodes/demon/demon_game_mode.dm @@ -36,9 +36,9 @@ var/trueName= randomDevilName() var/datum/objective/devil/soulquantity/soulquant = new soulquant.owner = devil_mind - var/datum/objective/devil/soulquality/soulqual = new - soulqual.owner = devil_mind - devil_mind.objectives += soulqual + var/datum/objective/devil/obj_2 = pick(new /datum/objective/devil/soulquality(null), new /datum/objective/devil/sintouch(null)) + obj_2.owner = devil_mind + devil_mind.objectives += obj_2 devil_mind.objectives += soulquant devil_mind.devilinfo = devilInfo(trueName, 1) devil_mind.store_memory("Your devilic true name is [devil_mind.devilinfo.truename]
[lawlorify[LAW][devil_mind.devilinfo.ban]]
[lawlorify[LAW][devil_mind.devilinfo.bane]]
[lawlorify[LAW][devil_mind.devilinfo.obligation]]
[lawlorify[LAW][devil_mind.devilinfo.banish]]
") diff --git a/code/game/gamemodes/demon/demoninfo.dm b/code/game/gamemodes/demon/demoninfo.dm index 5c013496cac..b35fa604711 100644 --- a/code/game/gamemodes/demon/demoninfo.dm +++ b/code/game/gamemodes/demon/demoninfo.dm @@ -299,12 +299,12 @@ var/global/list/lawlorify = list ( owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/summon_pitchfork/greater(null)) owner.AddSpell(new /obj/effect/proc_holder/spell/dumbfire/fireball/hellish(null)) owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/infernal_jaunt(null)) - //owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/sintouch(null)) TODO LORDPIDEY add this spell + owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/sintouch(null)) /datum/devilinfo/proc/give_arch_spells() remove_spells() owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/summon_pitchfork/ascended(null)) - //owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/sintouch/ascended(null)) TODO LORDPIDEY + owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/sintouch/ascended(null)) /datum/devilinfo/proc/beginResurrectionCheck(mob/living/body) if(SOULVALUE>0) diff --git a/code/game/gamemodes/demon/objectives.dm b/code/game/gamemodes/demon/objectives.dm index bdcac75b8e2..0a9d7083e92 100644 --- a/code/game/gamemodes/demon/objectives.dm +++ b/code/game/gamemodes/demon/objectives.dm @@ -6,7 +6,7 @@ var/quantity = 4 /datum/objective/devil/soulquantity/New() - quantity = pick(4,5) + quantity = pick(6,8) explanation_text = "Purchase, and retain control over at least [quantity] souls." /datum/objective/devil/soulquantity/check_completion() diff --git a/code/game/gamemodes/demon/true_demon/_true_demon.dm b/code/game/gamemodes/demon/true_demon/_true_demon.dm index 36d491df5f9..3b725896d61 100644 --- a/code/game/gamemodes/demon/true_demon/_true_demon.dm +++ b/code/game/gamemodes/demon/true_demon/_true_demon.dm @@ -90,13 +90,11 @@ /mob/living/carbon/true_devil/IsAdvancedToolUser() return 1 - /mob/living/carbon/true_devil/canUseTopic() if(stat) return return 1 - /mob/living/carbon/true_devil/assess_threat() return 666 @@ -193,3 +191,6 @@ /mob/living/carbon/true_devil/handle_breathing() // devils do not need to breathe + +/mob/living/carbon/true_devil/is_literate() + return 1 diff --git a/code/game/gamemodes/gang/gang.dm b/code/game/gamemodes/gang/gang.dm index b43ee71186c..8628b91fb87 100644 --- a/code/game/gamemodes/gang/gang.dm +++ b/code/game/gamemodes/gang/gang.dm @@ -263,8 +263,10 @@ var/list/gang_colors_pool = list("red","orange","yellow","green","blue","purple" if(gangs.len) if(!winner) world << "The station was [station_was_nuked ? "destroyed!" : "evacuated before a gang could claim it! The station wins!"]
" + feedback_set_details("round_end_result","win - gang domination complete") else world << "The [winner.name] Gang successfully performed a hostile takeover of the station!
" + feedback_set_details("round_end_result","loss - gangs failed takeover") for(var/datum/gang/G in gangs) var/text = "The [G.name] Gang was [winner==G ? "victorious" : "defeated"] with [round((G.territory.len/start_state.num_territories)*100, 1)]% control of the station!" diff --git a/code/game/gamemodes/meteor/meteors.dm b/code/game/gamemodes/meteor/meteors.dm index 85508dfdaea..5f6cbe62576 100644 --- a/code/game/gamemodes/meteor/meteors.dm +++ b/code/game/gamemodes/meteor/meteors.dm @@ -137,6 +137,8 @@ //first bust whatever is in the turf for(var/atom/A in T) if(A != src) + if(istype(A, /mob/living)) + A.visible_message("[src] slams into [A].", "[src] slams into you!.") A.ex_act(hitpwr) //then, ram the turf if it still exists @@ -190,7 +192,7 @@ pass_flags = PASSTABLE | PASSGRILLE hits = 1 hitpwr = 3 - meteorsound = 'sound/weapons/throwtap.ogg' + meteorsound = 'sound/weapons/Gunshot_smg.ogg' meteordrop = /obj/item/weapon/ore/glass //Medium-sized @@ -314,4 +316,4 @@ ..() meteordrop = pick(/obj/item/clothing/head/hardhat/pumpkinhead, /obj/item/weapon/reagent_containers/food/snacks/grown/pumpkin) meteorsound = pick('sound/hallucinations/im_here1.ogg','sound/hallucinations/im_here2.ogg') -////////////////////////// \ No newline at end of file +////////////////////////// diff --git a/code/game/gamemodes/miniantags/abduction/abduction.dm b/code/game/gamemodes/miniantags/abduction/abduction.dm index 3e602b824e4..c5f3dfa2a70 100644 --- a/code/game/gamemodes/miniantags/abduction/abduction.dm +++ b/code/game/gamemodes/miniantags/abduction/abduction.dm @@ -236,8 +236,8 @@ console.vest = V V.flags |= NODROP agent.equip_to_slot_or_del(V, slot_wear_suit) - agent.equip_to_slot_or_del(new /obj/item/weapon/abductor_baton(agent), slot_in_backpack) - agent.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/alien(agent), slot_belt) + agent.equip_to_slot_or_del(new /obj/item/weapon/abductor_baton(agent), slot_belt) + agent.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/alien(agent), slot_in_backpack) agent.equip_to_slot_or_del(new /obj/item/device/abductor/silencer(agent), slot_in_backpack) agent.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/abductor(agent), slot_head) diff --git a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm index 914dfa1c9d0..989c076a27f 100644 --- a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm +++ b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm @@ -112,19 +112,11 @@ if(combat_cooldown==initial(combat_cooldown)) SSobj.processing.Remove(src) -/obj/item/device/abductor/proc/IsAbductor(user) - if(ishuman(user)) - var/mob/living/carbon/human/H = user - if(H.dna.species.id != "abductor") - return 0 - return 1 - return 0 - /obj/item/device/abductor/proc/AbductorCheck(user) - if(IsAbductor(user)) - return 1 + if(isabductor(user)) + return TRUE user << "You can't figure how this works!" - return 0 + return FALSE /obj/item/device/abductor/proc/ScientistCheck(user) var/mob/living/carbon/human/H = user @@ -194,7 +186,7 @@ user << "This specimen is already marked!" return if(istype(target,/mob/living/carbon/human)) - if(IsAbductor(target)) + if(isabductor(target)) marked = target user << "You mark [target] for future retrieval." else @@ -304,27 +296,26 @@ break return console - -/obj/item/device/firing_pin/alien +/obj/item/device/firing_pin/abductor name = "alien firing pin" - desc = "An odd device that resembles a firing pin." - fail_message = "UNAUTHORIZED -- UNAUTHORIZED" + icon_state = "firing_pin_ayy" + desc = "This firing pin is slimy and warm; you can swear you feel it \ + constantly trying to mentally probe you." + fail_message = "\ + Firing error, please contact Command." -/obj/item/device/firing_pin/alien/pin_auth(mob/living/user) - if(ishuman(user)) - var/mob/living/carbon/human/H = user - if(H.dna.species.id != "abductor") - return 0 - return 1 +/obj/item/device/firing_pin/abductor/pin_auth(mob/living/user) + . = isabductor(user) /obj/item/weapon/gun/energy/alien name = "alien pistol" desc = "A complicated gun that fires bursts of high-intensity radiation." ammo_type = list(/obj/item/ammo_casing/energy/declone) - pin = /obj/item/device/firing_pin/alien + pin = /obj/item/device/firing_pin/abductor icon_state = "alienpistol" item_state = "alienpistol" origin_tech = "combat=5;materials=4;powerstorage=3;abductor=3" + trigger_guard = TRIGGER_GUARD_ALLOW_ALL /obj/item/weapon/paper/abductor name = "Dissection Guide" @@ -402,16 +393,8 @@ Congratulations! You are now trained for xenobiology research!"} icon_state = "wonderprodProbe" item_state = "wonderprodProbe" -/obj/item/weapon/abductor_baton/proc/IsAbductor(mob/living/user) - if(!ishuman(user)) - return 0 - var/mob/living/carbon/human/H = user - if(H.dna.species.id != "abductor") - return 0 - return 1 - /obj/item/weapon/abductor_baton/attack(mob/target, mob/living/user) - if(!IsAbductor(user)) + if(!isabductor(user)) return if(isrobot(target)) @@ -689,4 +672,4 @@ Congratulations! You are now trained for xenobiology research!"} else if(istype(W, /obj/item/stack/sheet)) return // no material modding else - ..() \ No newline at end of file + ..() diff --git a/code/game/gamemodes/miniantags/abduction/machinery/camera.dm b/code/game/gamemodes/miniantags/abduction/machinery/camera.dm index 2a69da0950a..9c06517bd95 100644 --- a/code/game/gamemodes/miniantags/abduction/machinery/camera.dm +++ b/code/game/gamemodes/miniantags/abduction/machinery/camera.dm @@ -45,15 +45,12 @@ set_droppoint_action.target = console set_droppoint_action.Grant(user) -/obj/machinery/computer/camera_advanced/abductor/proc/IsAbductor(mob/living/carbon/human/H) - return H.dna.species.id == "abductor" - /obj/machinery/computer/camera_advanced/abductor/proc/IsScientist(mob/living/carbon/human/H) var/datum/species/abductor/S = H.dna.species return S.scientist /obj/machinery/computer/camera_advanced/abductor/attack_hand(mob/user) - if(!iscarbon(user) || !IsAbductor(user)) + if(!isabductor(user)) return return ..() @@ -154,4 +151,4 @@ var/mob/camera/aiEye/remote/remote_eye = C.remote_control var/obj/machinery/abductor/console/console = target - console.SetDroppoint(remote_eye.loc,owner) \ No newline at end of file + console.SetDroppoint(remote_eye.loc,owner) diff --git a/code/game/gamemodes/miniantags/abduction/machinery/console.dm b/code/game/gamemodes/miniantags/abduction/machinery/console.dm index a2f029725a3..de3a3b468ea 100644 --- a/code/game/gamemodes/miniantags/abduction/machinery/console.dm +++ b/code/game/gamemodes/miniantags/abduction/machinery/console.dm @@ -3,9 +3,6 @@ /obj/machinery/abductor var/team = 0 -/obj/machinery/abductor/proc/IsAbductor(mob/living/carbon/human/H) - return H.dna.species.id == "abductor" - /obj/machinery/abductor/proc/IsAgent(mob/living/carbon/human/H) if(H.dna.species.id == "abductor") var/datum/species/abductor/S = H.dna.species @@ -37,7 +34,7 @@ /obj/machinery/abductor/console/attack_hand(mob/user) if(..()) return - if(!IsAbductor(user)) + if(!isabductor(user)) user << "You start mashing alien buttons at random!" if(do_after(user,100, target = src)) TeleporterSend() @@ -208,4 +205,4 @@ new item(src.loc) else say("Insufficent data!") - return \ No newline at end of file + return diff --git a/code/game/gamemodes/miniantags/abduction/machinery/dispenser.dm b/code/game/gamemodes/miniantags/abduction/machinery/dispenser.dm index dc1a5ec85f7..09f63616766 100644 --- a/code/game/gamemodes/miniantags/abduction/machinery/dispenser.dm +++ b/code/game/gamemodes/miniantags/abduction/machinery/dispenser.dm @@ -25,7 +25,7 @@ /obj/machinery/abductor/gland_dispenser/attack_hand(mob/user) if(..()) return - if(!IsAbductor(user)) + if(!isabductor(user)) return user.set_machine(src) var/box_css = {" @@ -82,4 +82,4 @@ if(amounts[count]>0) amounts[count]-- var/T = gland_types[count] - new T(get_turf(src)) \ No newline at end of file + new T(get_turf(src)) diff --git a/code/game/gamemodes/miniantags/abduction/machinery/experiment.dm b/code/game/gamemodes/miniantags/abduction/machinery/experiment.dm index 19fbe24f92d..7b32758a6dd 100644 --- a/code/game/gamemodes/miniantags/abduction/machinery/experiment.dm +++ b/code/game/gamemodes/miniantags/abduction/machinery/experiment.dm @@ -15,7 +15,7 @@ /obj/machinery/abductor/experiment/MouseDrop_T(mob/target, mob/user) if(user.stat || user.lying || !Adjacent(user) || !target.Adjacent(user) || !ishuman(target)) return - if(IsAbductor(target)) + if(isabductor(target)) return close_machine(target) @@ -30,8 +30,8 @@ ..() /obj/machinery/abductor/experiment/close_machine(mob/target) - for(var/mob/living/carbon/C in loc) - if(IsAbductor(C)) + for(var/A in loc) + if(isabductor(A)) return if(state_open && !panel_open) ..(target) diff --git a/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm b/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm index b0509ca1b28..0e0f23a3d0f 100644 --- a/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm +++ b/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm @@ -90,6 +90,7 @@ faction = list("swarmer") AIStatus = AI_OFF pass_flags = PASSTABLE + mob_size = MOB_SIZE_TINY ventcrawler = 2 ranged = 1 projectiletype = /obj/item/projectile/beam/disabler @@ -551,4 +552,3 @@ M << rendered if(M in dead_mob_list) M << "(F) [rendered]" - diff --git a/code/game/gamemodes/miniantags/morph/morph.dm b/code/game/gamemodes/miniantags/morph/morph.dm index 624660cdb8d..b6fccab0bb2 100644 --- a/code/game/gamemodes/miniantags/morph/morph.dm +++ b/code/game/gamemodes/miniantags/morph/morph.dm @@ -195,31 +195,25 @@ /datum/round_event_control/morph name = "Spawn Morph" - typepath = /datum/round_event/morph + typepath = /datum/round_event/ghost_role/morph weight = 0 //Admin only max_occurrences = 1 -/datum/round_event/morph - var/key_of_morph +/datum/round_event/ghost_role/morph + minimum_required = 1 + role_name = "morphling" -/datum/round_event/morph/proc/get_morph(end_if_fail = 0) - key_of_morph = null - if(!key_of_morph) - var/list/candidates = get_candidates(ROLE_ALIEN) - if(!candidates.len) - if(end_if_fail) - return 0 - return find_morph() - var/client/C = pick(candidates) - key_of_morph = C.key - if(!key_of_morph) - if(end_if_fail) - return 0 - return find_morph() - var/datum/mind/player_mind = new /datum/mind(key_of_morph) +/datum/round_event/ghost_role/morph/spawn_role() + var/list/candidates = get_candidates("alien", null, ROLE_ALIEN) + if(!candidates.len) + return NOT_ENOUGH_PLAYERS + + var/mob/dead/selected = popleft(candidates) + + var/datum/mind/player_mind = new /datum/mind(selected.key) player_mind.active = 1 if(!xeno_spawn) - return find_morph() + return MAP_ERROR var/mob/living/simple_animal/hostile/morph/S = new /mob/living/simple_animal/hostile/morph(pick(xeno_spawn)) player_mind.transfer_to(S) player_mind.assigned_role = "Morph" @@ -227,20 +221,7 @@ ticker.mode.traitors |= player_mind S << S.playstyle_string S << 'sound/magic/Mutate.ogg' - message_admins("[key_of_morph] has been made into morph by an event.") - log_game("[key_of_morph] was spawned as a morph by an event.") - return 1 - -/datum/round_event/morph/start() - get_morph() - - -/datum/round_event/morph/proc/find_morph() - message_admins("Attempted to spawn a morph but there was no players available. Will try again momentarily.") - spawn(50) - if(get_morph(1)) - message_admins("Situation has been resolved, [key_of_morph] has been spawned as a morph.") - log_game("[key_of_morph] was spawned as a morph by an event.") - return 0 - message_admins("Unfortunately, no candidates were available for becoming a morph. Shutting down.") - return kill() + message_admins("[selected.key] has been made into morph by an event.") + log_game("[selected.key] was spawned as a morph by an event.") + spawned_mobs += S + return SUCCESSFUL_SPAWN diff --git a/code/game/gamemodes/miniantags/revenant/revenant_spawn_event.dm b/code/game/gamemodes/miniantags/revenant/revenant_spawn_event.dm index ebd2f67eafd..f73ac040966 100644 --- a/code/game/gamemodes/miniantags/revenant/revenant_spawn_event.dm +++ b/code/game/gamemodes/miniantags/revenant/revenant_spawn_event.dm @@ -1,41 +1,41 @@ #define REVENANT_SPAWN_THRESHOLD 20 /datum/round_event_control/revenant - name = "Spawn Revenant" - typepath = /datum/round_event/revenant + name = "Spawn Revenant" // Did you mean 'griefghost'? + typepath = /datum/round_event/ghost_role/revenant weight = 7 max_occurrences = 1 earliest_start = 12000 //Meant to mix things up early-game. min_players = 5 -/datum/round_event/revenant - var/key_of_revenant +/datum/round_event/ghost_role/revenant + var/force_spawn + role_name = "revenant" +/datum/round_event/ghost_role/revenant/New(my_force_spawn = FALSE) + ..() + force_spawn = my_force_spawn -/datum/round_event/revenant/proc/get_revenant(end_if_fail = 0) - var/deadMobs = 0 - for(var/mob/M in dead_mob_list) - deadMobs++ - if(deadMobs < REVENANT_SPAWN_THRESHOLD) - message_admins("Random event attempted to spawn a revenant, but there were only [deadMobs]/[REVENANT_SPAWN_THRESHOLD] dead mobs.") - return - key_of_revenant = null - if(!key_of_revenant) - var/list/candidates = get_candidates(ROLE_REVENANT) - if(!candidates.len) - if(end_if_fail) - return 0 - return find_revenant() - var/client/C = pick(candidates) - key_of_revenant = C.key - if(!key_of_revenant) - if(end_if_fail) - return 0 - return find_revenant() - var/datum/mind/player_mind = new /datum/mind(key_of_revenant) +/datum/round_event/ghost_role/revenant/spawn_role() + if(!force_spawn) + var/deadMobs = 0 + for(var/mob/M in dead_mob_list) + deadMobs++ + if(deadMobs < REVENANT_SPAWN_THRESHOLD) + message_admins("Event attempted to spawn a revenant, but there were only [deadMobs]/[REVENANT_SPAWN_THRESHOLD] dead mobs.") + return WAITING_FOR_SOMETHING + + var/list/mob/dead/observer/candidates = get_candidates("revenant", null, ROLE_REVENANT) + if(!candidates.len) + return NOT_ENOUGH_PLAYERS + + var/mob/dead/observer/selected = popleft(candidates) + + var/datum/mind/player_mind = new /datum/mind(selected.key) player_mind.active = 1 var/list/spawn_locs = list() + for(var/obj/effect/landmark/L in landmarks_list) if(isturf(L.loc)) switch(L.name) @@ -49,28 +49,15 @@ spawn_locs += L.loc if(!spawn_locs) //If we can't find either, just spawn the revenant at the player's location spawn_locs += get_turf(player_mind.current) - if(!spawn_locs) //If we can't find THAT, then just retry - return find_revenant() + if(!spawn_locs) //If we can't find THAT, then just give up and cry + return MAP_ERROR + var/mob/living/simple_animal/revenant/revvie = new /mob/living/simple_animal/revenant/(pick(spawn_locs)) player_mind.transfer_to(revvie) player_mind.assigned_role = "revenant" player_mind.special_role = "Revenant" ticker.mode.traitors |= player_mind - message_admins("[key_of_revenant] has been made into a revenant by an event.") - log_game("[key_of_revenant] was spawned as a revenant by an event.") - return 1 - - -/datum/round_event/revenant/start() - get_revenant() - - -/datum/round_event/revenant/proc/find_revenant() - message_admins("An event failed to spawn a revenant. Retrying momentarily...") - spawn(50) - if(get_revenant(1)) - message_admins("[key_of_revenant] has been spawned as a revenant.") - log_game("[key_of_revenant] was spawned as a revenant by an event.") - return 0 - message_admins("No candidates were available for becoming a revenant.") - return kill() + message_admins("[player_mind.key] has been made into a revenant by an event.") + log_game("[player_mind.key] was spawned as a revenant by an event.") + spawned_mobs += revvie + return SUCCESSFUL_SPAWN diff --git a/code/game/gamemodes/miniantags/slaughter/slaughterevent.dm b/code/game/gamemodes/miniantags/slaughter/slaughterevent.dm index 047dfe67f06..569216b7411 100644 --- a/code/game/gamemodes/miniantags/slaughter/slaughterevent.dm +++ b/code/game/gamemodes/miniantags/slaughter/slaughterevent.dm @@ -1,6 +1,6 @@ /datum/round_event_control/slaughter name = "Spawn Slaughter Demon" - typepath = /datum/round_event/slaughter + typepath = /datum/round_event/ghost_role/slaughter weight = 1 //Very rare max_occurrences = 1 earliest_start = 36000 //1 hour @@ -8,34 +8,31 @@ -/datum/round_event/slaughter - var/key_of_slaughter +/datum/round_event/ghost_role/slaughter + minimum_required = 1 + role_name = "slaughter demon" +/datum/round_event/ghost_role/slaughter/spawn_role() + var/list/candidates = get_candidates("alien", null, ROLE_ALIEN) + if(!candidates.len) + return NOT_ENOUGH_PLAYERS -/datum/round_event/slaughter/proc/get_slaughter(end_if_fail = 0) - key_of_slaughter = null - if(!key_of_slaughter) - var/list/candidates = get_candidates(ROLE_ALIEN) - if(!candidates.len) - if(end_if_fail) - return 0 - return find_slaughter() - var/client/C = pick(candidates) - key_of_slaughter = C.key - if(!key_of_slaughter) - if(end_if_fail) - return 0 - return find_slaughter() - var/datum/mind/player_mind = new /datum/mind(key_of_slaughter) + var/mob/dead/selected = popleft(candidates) + + var/datum/mind/player_mind = new /datum/mind(selected.key) player_mind.active = 1 + var/list/spawn_locs = list() for(var/obj/effect/landmark/L in landmarks_list) if(isturf(L.loc)) switch(L.name) if("carpspawn") spawn_locs += L.loc + if(!spawn_locs) - return find_slaughter() + message_admins("No valid spawn locations found, aborting...") + return MAP_ERROR + var /obj/effect/dummy/slaughter/holder = PoolOrNew(/obj/effect/dummy/slaughter,(pick(spawn_locs))) var/mob/living/simple_animal/slaughter/S = new /mob/living/simple_animal/slaughter/(holder) S.holder = holder @@ -46,23 +43,7 @@ S << S.playstyle_string S << "You are currently not currently in the same plane of existence as the station. Blood Crawl near a blood pool to manifest." S << 'sound/magic/demon_dies.ogg' - message_admins("[key_of_slaughter] has been made into a slaughter demon by an event.") - log_game("[key_of_slaughter] was spawned as a slaughter demon by an event.") - return 1 - - - -/datum/round_event/slaughter/start() - get_slaughter() - - - -/datum/round_event/slaughter/proc/find_slaughter() - message_admins("Attempted to spawn a slaughter demon but there was no players available. Will try again momentarily.") - spawn(50) - if(get_slaughter(1)) - message_admins("Situation has been resolved, [key_of_slaughter] has been spawned as a slaughter demon.") - log_game("[key_of_slaughter] was spawned as a slaughter demon by an event.") - return 0 - message_admins("Unfortunately, no candidates were available for becoming a slaughter demon. Shutting down.") - return kill() + message_admins("[selected] has been made into a slaughter demon by an event.") + log_game("[selected] was spawned as a slaughter demon by an event.") + spawned_mobs += S + return SUCCESSFUL_SPAWN diff --git a/code/game/gamemodes/nuclear/nuclearbomb.dm b/code/game/gamemodes/nuclear/nuclearbomb.dm index 8a14dfe1a10..b10374a2dbf 100644 --- a/code/game/gamemodes/nuclear/nuclearbomb.dm +++ b/code/game/gamemodes/nuclear/nuclearbomb.dm @@ -425,7 +425,7 @@ This is here to make the tiles around the station mininuke change when it's arme /obj/item/weapon/disk/nuclear/process() var/turf/disk_loc = get_turf(src) - if(disk_loc.z > ZLEVEL_CENTCOM) + if(!disk_loc || disk_loc.z > ZLEVEL_CENTCOM) get(src, /mob) << "You can't help but feel that you just lost something back there..." qdel(src) @@ -438,10 +438,10 @@ This is here to make the tiles around the station mininuke change when it's arme M.remove_from_mob(src) if(istype(loc, /obj/item/weapon/storage)) var/obj/item/weapon/storage/S = loc - S.remove_from_storage(src, diskturf) + S.remove_from_storage(src, targetturf) forceMove(targetturf) //move the disc, so ghosts remain orbitting it even if it's "destroyed" - message_admins("[src] has been destroyed in ([diskturf.x], [diskturf.y] ,[diskturf.z] - JMP). Moving it to ([targetturf.x], [targetturf.y], [targetturf.z] - JMP).") - log_game("[src] has been destroyed in ([diskturf.x], [diskturf.y] ,[diskturf.z]). Moving it to ([targetturf.x], [targetturf.y], [targetturf.z]).") + message_admins("[src] has been destroyed in ([diskturf ? "[diskturf.x], [diskturf.y] ,[diskturf.z] - JMP":"nonexistent location"]). Moving it to ([targetturf.x], [targetturf.y], [targetturf.z] - JMP).") + log_game("[src] has been destroyed in ([diskturf ? "[diskturf.x], [diskturf.y] ,[diskturf.z]":"nonexistent location"]). Moving it to ([targetturf.x], [targetturf.y], [targetturf.z]).") else throw EXCEPTION("Unable to find a blobstart landmark") return QDEL_HINT_LETMELIVE //Cancel destruction regardless of success diff --git a/code/game/gamemodes/revolution/revolution.dm b/code/game/gamemodes/revolution/revolution.dm index 277027ca37a..8c6d2944c30 100644 --- a/code/game/gamemodes/revolution/revolution.dm +++ b/code/game/gamemodes/revolution/revolution.dm @@ -315,7 +315,7 @@ /datum/game_mode/revolution/proc/check_heads_victory() for(var/datum/mind/rev_mind in head_revolutionaries) var/turf/T = get_turf(rev_mind.current) - if((rev_mind) && (rev_mind.current) && (rev_mind.current.stat != 2) && rev_mind.current.client && T && (T.z == ZLEVEL_STATION)) + if((rev_mind) && (rev_mind.current) && (rev_mind.current.stat != 2) && T && (T.z == ZLEVEL_STATION)) if(ishuman(rev_mind.current)) return 0 return 1 diff --git a/code/game/gamemodes/shadowling/shadowling.dm b/code/game/gamemodes/shadowling/shadowling.dm index 9ea427013e0..5ef9970bb3c 100644 --- a/code/game/gamemodes/shadowling/shadowling.dm +++ b/code/game/gamemodes/shadowling/shadowling.dm @@ -254,10 +254,10 @@ Made by Xhuis name = "Shadowling" id = "shadowling" say_mod = "chitters" - specflags = list(NOBREATH,NOBLOOD,RADIMMUNE,NOGUNS) //Can't use guns due to muzzle flash + specflags = list(NOBREATH,NOBLOOD,RADIMMUNE,NOGUNS,NODISMEMBER) //Can't use guns due to muzzle flash burnmod = 1.5 //1.5x burn damage, 2x is excessive heatmod = 1.5 - has_dismemberment = 0 + /datum/species/shadow/ling/spec_life(mob/living/carbon/human/H) if(!H.weakeyes) H.weakeyes = 1 //Makes them more vulnerable to flashes and flashbangs diff --git a/code/game/gamemodes/wizard/soulstone.dm b/code/game/gamemodes/wizard/soulstone.dm index 92c19d7600b..d652a5ae863 100644 --- a/code/game/gamemodes/wizard/soulstone.dm +++ b/code/game/gamemodes/wizard/soulstone.dm @@ -12,6 +12,9 @@ /obj/item/device/soulstone/anybody usability = 1 +/obj/item/device/soulstone/anybody/chaplain + name = "mysterious old shard" + /obj/item/device/soulstone/pickup(mob/living/user) ..() if(!iscultist(user) && !iswizard(user) && !usability) @@ -66,7 +69,7 @@ /obj/structure/constructshell name = "empty shell" icon = 'icons/obj/wizard.dmi' - icon_state = "construct" + icon_state = "construct-cult" desc = "A wicked machine used by those skilled in magical arts. It is inactive." /obj/structure/constructshell/examine(mob/user) diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index 253c17eeeb0..ec0f8298d81 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -94,7 +94,7 @@ qdel(src) /obj/machinery/sleeper/MouseDrop_T(mob/target, mob/user) - if(user.stat || user.lying || !Adjacent(user) || !user.Adjacent(target) || !iscarbon(target)) + if(user.stat || user.lying || !Adjacent(user) || !user.Adjacent(target) || !iscarbon(target) || !user.IsAdvancedToolUser()) return close_machine(target) diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index 4014ad407ec..a26857fd63b 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -133,6 +133,9 @@ busy = 0 return 1 + if(O.flags & HOLOGRAM) + return 1 + var/material_amount = materials.get_item_material_amount(O) if(!material_amount) user << "This object does not contain sufficient amounts of metal or glass to be accepted by the autolathe." diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index 724311e6a54..6e2d45a1f1a 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -142,10 +142,12 @@ if(istype(W, /obj/item/weapon/wirecutters)) //enable/disable the camera toggle_cam(user, 1) health = initial(health) //this is a pretty simplistic way to heal the camera, but there's no reason for this to be complex. + return else if(istype(W, /obj/item/device/multitool)) //change focus setViewRange((view_range == initial(view_range)) ? short_range : initial(view_range)) user << "You [(view_range == initial(view_range)) ? "restore" : "mess up"] the camera's focus." + return else if(istype(W, /obj/item/weapon/weldingtool)) if(weld(W, user)) @@ -157,7 +159,7 @@ assembly.dir = src.dir assembly = null qdel(src) - return + return else if(istype(W, /obj/item/device/analyzer)) if(!isXRay()) diff --git a/code/game/machinery/camera/tracking.dm b/code/game/machinery/camera/tracking.dm index 04d16507522..f4bd51ef02f 100644 --- a/code/game/machinery/camera/tracking.dm +++ b/code/game/machinery/camera/tracking.dm @@ -92,11 +92,6 @@ U.cameraFollow = target U.tracking = 1 - U << "Attempting to track [target.get_visible_name()]..." - sleep(min(30, get_dist(target, U.eyeobj) / 4)) - spawn(15) //give the AI a grace period to stop moving. - U.tracking = 0 - if(!target || !target.can_track(usr)) U << "Target is not near any active cameras." U.cameraFollow = null diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index 253a3c1c8d7..7f80531c354 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -1,1115 +1,1111 @@ -/obj/machinery/computer/arcade/ - name = "random arcade" - desc = "random arcade machine" - icon_state = "arcade" - icon_keyboard = null - icon_screen = "invaders" - var/list/prizes = list( /obj/item/weapon/storage/box/snappops = 2, - /obj/item/toy/AI = 2, - /obj/item/toy/codex_gigas = 2, - /obj/item/clothing/under/syndicate/tacticool = 2, - /obj/item/toy/sword = 2, - /obj/item/toy/gun = 2, - /obj/item/weapon/gun/projectile/shotgun/toy/crossbow = 2, - /obj/item/weapon/storage/box/fakesyndiesuit = 2, - /obj/item/weapon/storage/crayons = 2, - /obj/item/toy/spinningtoy = 2, - /obj/item/toy/prize/ripley = 1, - /obj/item/toy/prize/fireripley = 1, - /obj/item/toy/prize/deathripley = 1, - /obj/item/toy/prize/gygax = 1, - /obj/item/toy/prize/durand = 1, - /obj/item/toy/prize/honk = 1, - /obj/item/toy/prize/marauder = 1, - /obj/item/toy/prize/seraph = 1, - /obj/item/toy/prize/mauler = 1, - /obj/item/toy/prize/odysseus = 1, - /obj/item/toy/prize/phazon = 1, - /obj/item/toy/prize/reticence = 1, - /obj/item/toy/cards/deck = 2, - /obj/item/toy/nuke = 2, - /obj/item/toy/minimeteor = 2, - /obj/item/toy/carpplushie = 2, - /obj/item/toy/foamblade = 2, - /obj/item/toy/redbutton = 2, - /obj/item/toy/talking/owl = 2, - /obj/item/toy/talking/griffin = 2, - /obj/item/weapon/coin/antagtoken = 2, - /obj/item/stack/tile/fakespace/loaded = 2, - /obj/item/toy/toy_xeno = 2, - /obj/item/weapon/restraints/handcuffs/fake = 2 - ) - -/obj/machinery/computer/arcade/New() - ..() - // If it's a generic arcade machine, pick a random arcade - // circuit board for it and make the new machine - if(!circuit) - var/choice = pick(subtypesof(/obj/item/weapon/circuitboard/computer/arcade)) - var/obj/item/weapon/circuitboard/CB = new choice() - new CB.build_path(loc, CB) - qdel(src) - -/obj/machinery/computer/arcade/proc/prizevend() - if(prob(0.0001)) //1 in a million - new /obj/item/weapon/gun/energy/pulse(src) - - if(!contents.len) - var/prizeselect = pickweight(prizes) - new prizeselect(src.loc) - - if(istype(prizeselect, /obj/item/toy/gun)) //Ammo comes with the gun - new /obj/item/toy/ammo/gun(src.loc) - - else if(istype(prizeselect, /obj/item/clothing/suit/syndicatefake)) //Helmet is part of the suit - new /obj/item/clothing/head/syndicatefake(src.loc) - - else - var/atom/movable/prize = pick(contents) - prize.loc = src.loc - -/obj/machinery/computer/arcade/emp_act(severity) - ..(severity) - - if(stat & (NOPOWER|BROKEN)) - return - - var/empprize = null - var/num_of_prizes = 0 - switch(severity) - if(1) - num_of_prizes = rand(1,4) - if(2) - num_of_prizes = rand(0,2) - for(var/i = num_of_prizes; i > 0; i--) - empprize = pickweight(prizes) - new empprize(src.loc) - explosion(src.loc, -1, 0, 1+num_of_prizes, flame_range = 1+num_of_prizes) - - -// ** BATTLE ** // - - -/obj/machinery/computer/arcade/battle - name = "arcade machine" - desc = "Does not support Pinball." - icon_state = "arcade" - circuit = /obj/item/weapon/circuitboard/computer/arcade/battle - var/enemy_name = "Space Villian" - var/temp = "Winners don't use space drugs" //Temporary message, for attack messages, etc - var/player_hp = 30 //Player health/attack points - var/player_mp = 10 - var/enemy_hp = 45 //Enemy health/attack points - var/enemy_mp = 20 - var/gameover = 0 - var/blocked = 0 //Player cannot attack/heal while set - var/turtle = 0 - -/obj/machinery/computer/arcade/battle/New() - ..() - var/name_action - var/name_part1 - var/name_part2 - - name_action = pick("Defeat ", "Annihilate ", "Save ", "Strike ", "Stop ", "Destroy ", "Robust ", "Romance ", "Pwn ", "Own ", "Ban ") - - name_part1 = pick("the Automatic ", "Farmer ", "Lord ", "Professor ", "the Cuban ", "the Evil ", "the Dread King ", "the Space ", "Lord ", "the Great ", "Duke ", "General ") - name_part2 = pick("Melonoid", "Murdertron", "Sorcerer", "Ruin", "Jeff", "Ectoplasm", "Crushulon", "Uhangoid", "Vhakoid", "Peteoid", "slime", "Griefer", "ERPer", "Lizard Man", "Unicorn", "Bloopers") - - src.enemy_name = replacetext((name_part1 + name_part2), "the ", "") - src.name = (name_action + name_part1 + name_part2) - -/obj/machinery/computer/arcade/battle/attack_hand(mob/user) - if(..()) - return - user.set_machine(src) - var/dat = "Close" - dat += "

[src.enemy_name]

" - - dat += "

[src.temp]

" - dat += "
Health: [src.player_hp] | Magic: [src.player_mp] | Enemy Health: [src.enemy_hp]
" - - if (src.gameover) - dat += "
New Game" - else - dat += "
Attack | " - dat += "Heal | " - dat += "Recharge Power" - - dat += "
" - - //user << browse(dat, "window=arcade") - //onclose(user, "arcade") - var/datum/browser/popup = new(user, "arcade", "Space Villian 2000") - popup.set_content(dat) - popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) - popup.open() - return - -/obj/machinery/computer/arcade/battle/Topic(href, href_list) - if(..()) - return - - if (!src.blocked && !src.gameover) - if (href_list["attack"]) - src.blocked = 1 - var/attackamt = rand(2,6) - src.temp = "You attack for [attackamt] damage!" - playsound(src.loc, 'sound/arcade/Hit.ogg', 50, 1, extrarange = -3, falloff = 10) - src.updateUsrDialog() - if(turtle > 0) - turtle-- - - sleep(10) - src.enemy_hp -= attackamt - src.arcade_action() - - else if (href_list["heal"]) - src.blocked = 1 - var/pointamt = rand(1,3) - var/healamt = rand(6,8) - src.temp = "You use [pointamt] magic to heal for [healamt] damage!" - playsound(src.loc, 'sound/arcade/Heal.ogg', 50, 1, extrarange = -3, falloff = 10) - src.updateUsrDialog() - turtle++ - - sleep(10) - src.player_mp -= pointamt - src.player_hp += healamt - src.blocked = 1 - src.updateUsrDialog() - src.arcade_action() - - else if (href_list["charge"]) - src.blocked = 1 - var/chargeamt = rand(4,7) - src.temp = "You regain [chargeamt] points" - playsound(src.loc, 'sound/arcade/Mana.ogg', 50, 1, extrarange = -3, falloff = 10) - src.player_mp += chargeamt - if(turtle > 0) - turtle-- - - src.updateUsrDialog() - sleep(10) - src.arcade_action() - - if (href_list["close"]) - usr.unset_machine() - usr << browse(null, "window=arcade") - - else if (href_list["newgame"]) //Reset everything - temp = "New Round" - player_hp = 30 - player_mp = 10 - enemy_hp = 45 - enemy_mp = 20 - gameover = 0 - turtle = 0 - - if(emagged) - src.New() - emagged = 0 - - src.add_fingerprint(usr) - src.updateUsrDialog() - return - -/obj/machinery/computer/arcade/battle/proc/arcade_action() - if ((src.enemy_mp <= 0) || (src.enemy_hp <= 0)) - if(!gameover) - src.gameover = 1 - src.temp = "[src.enemy_name] has fallen! Rejoice!" - playsound(src.loc, 'sound/arcade/Win.ogg', 50, 1, extrarange = -3, falloff = 10) - - if(emagged) - feedback_inc("arcade_win_emagged") - new /obj/effect/spawner/newbomb/timer/syndicate(src.loc) - new /obj/item/clothing/head/collectable/petehat(src.loc) - message_admins("[key_name_admin(usr)] has outbombed Cuban Pete and been awarded a bomb.") - log_game("[key_name(usr)] has outbombed Cuban Pete and been awarded a bomb.") - src.New() - emagged = 0 - else - feedback_inc("arcade_win_normal") - prizevend() - - else if (emagged && (turtle >= 4)) - var/boomamt = rand(5,10) - src.temp = "[src.enemy_name] throws a bomb, exploding you for [boomamt] damage!" - playsound(src.loc, 'sound/arcade/Boom.ogg', 50, 1, extrarange = -3, falloff = 10) - src.player_hp -= boomamt - - else if ((src.enemy_mp <= 5) && (prob(70))) - var/stealamt = rand(2,3) - src.temp = "[src.enemy_name] steals [stealamt] of your power!" - playsound(src.loc, 'sound/arcade/Steal.ogg', 50, 1, extrarange = -3, falloff = 10) - src.player_mp -= stealamt - src.updateUsrDialog() - - if (src.player_mp <= 0) - src.gameover = 1 - sleep(10) - src.temp = "You have been drained! GAME OVER" - playsound(src.loc, 'sound/arcade/Lose.ogg', 50, 1, extrarange = -3, falloff = 10) - if(emagged) - feedback_inc("arcade_loss_mana_emagged") - usr.gib() - else - feedback_inc("arcade_loss_mana_normal") - - else if ((src.enemy_hp <= 10) && (src.enemy_mp > 4)) - src.temp = "[src.enemy_name] heals for 4 health!" - playsound(src.loc, 'sound/arcade/Heal.ogg', 50, 1, extrarange = -3, falloff = 10) - src.enemy_hp += 4 - src.enemy_mp -= 4 - - else - var/attackamt = rand(3,6) - src.temp = "[src.enemy_name] attacks for [attackamt] damage!" - playsound(src.loc, 'sound/arcade/Hit.ogg', 50, 1, extrarange = -3, falloff = 10) - src.player_hp -= attackamt - - if ((src.player_mp <= 0) || (src.player_hp <= 0)) - src.gameover = 1 - src.temp = "You have been crushed! GAME OVER" - playsound(src.loc, 'sound/arcade/Lose.ogg', 50, 1, extrarange = -3, falloff = 10) - if(emagged) - feedback_inc("arcade_loss_hp_emagged") - usr.gib() - else - feedback_inc("arcade_loss_hp_normal") - - src.blocked = 0 - return - - -/obj/machinery/computer/arcade/battle/emag_act(mob/user) - if(!emagged) - temp = "If you die in the game, you die for real!" - player_hp = 30 - player_mp = 10 - enemy_hp = 45 - enemy_mp = 20 - gameover = 0 - blocked = 0 - - emagged = 1 - - enemy_name = "Cuban Pete" - name = "Outbomb Cuban Pete" - - - src.updateUsrDialog() - - - -// *** THE ORION TRAIL ** // - -#define ORION_TRAIL_WINTURN 9 - -//Orion Trail Events -#define ORION_TRAIL_RAIDERS "Raiders" -#define ORION_TRAIL_FLUX "Interstellar Flux" -#define ORION_TRAIL_ILLNESS "Illness" -#define ORION_TRAIL_BREAKDOWN "Breakdown" -#define ORION_TRAIL_LING "Changelings?" -#define ORION_TRAIL_LING_ATTACK "Changeling Ambush" -#define ORION_TRAIL_MALFUNCTION "Malfunction" -#define ORION_TRAIL_COLLISION "Collision" -#define ORION_TRAIL_SPACEPORT "Spaceport" -#define ORION_TRAIL_BLACKHOLE "BlackHole" - -#define ORION_STATUS_START 1 -#define ORION_STATUS_NORMAL 2 -#define ORION_STATUS_GAMEOVER 3 -#define ORION_STATUS_MARKET 4 - -/obj/machinery/computer/arcade/orion_trail - name = "The Orion Trail" - desc = "Learn how our ancestors got to Orion, and have fun in the process!" - icon_state = "arcade" - circuit = /obj/item/weapon/circuitboard/computer/arcade/orion_trail - var/busy = 0 //prevent clickspam that allowed people to ~speedrun~ the game. - var/engine = 0 - var/hull = 0 - var/electronics = 0 - var/food = 80 - var/fuel = 60 - var/turns = 4 - var/alive = 4 - var/eventdat = null - var/event = null - var/list/settlers = list("Harry","Larry","Bob") - var/list/events = list(ORION_TRAIL_RAIDERS = 3, - ORION_TRAIL_FLUX = 1, - ORION_TRAIL_ILLNESS = 3, - ORION_TRAIL_BREAKDOWN = 2, - ORION_TRAIL_LING = 3, - ORION_TRAIL_MALFUNCTION = 2, - ORION_TRAIL_COLLISION = 1, - ORION_TRAIL_SPACEPORT = 2 - ) - var/list/stops = list() - var/list/stopblurbs = list() - var/lings_aboard = 0 - var/spaceport_raided = 0 - var/spaceport_freebie = 0 - var/last_spaceport_action = "" - var/gameStatus = ORION_STATUS_START - var/canContinueEvent = 0 - -/obj/machinery/computer/arcade/orion_trail/New() - ..() - // Sets up the main trail - stops = list("Pluto","Asteroid Belt","Proxima Centauri","Dead Space","Rigel Prime","Tau Ceti Beta","Black Hole","Space Outpost Beta-9","Orion Prime") - stopblurbs = list( - "Pluto, long since occupied with long-range sensors and scanners, stands ready to, and indeed continues to probe the far reaches of the galaxy.", - "At the edge of the Sol system lies a treacherous asteroid belt. Many have been crushed by stray asteroids and misguided judgement.", - "The nearest star system to Sol, in ages past it stood as a reminder of the boundaries of sub-light travel, now a low-population sanctuary for adventurers and traders.", - "This region of space is particularly devoid of matter. Such low-density pockets are known to exist, but the vastness of it is astounding.", - "Rigel Prime, the center of the Rigel system, burns hot, basking its planetary bodies in warmth and radiation.", - "Tau Ceti Beta has recently become a waypoint for colonists headed towards Orion. There are many ships and makeshift stations in the vicinity.", - "Sensors indicate that a black hole's gravitational field is affecting the region of space we were headed through. We could stay of course, but risk of being overcome by its gravity, or we could change course to go around, which will take longer.", - "You have come into range of the first man-made structure in this region of space. It has been constructed not by travellers from Sol, but by colonists from Orion. It stands as a monument to the colonists' success.", - "You have made it to Orion! Congratulations! Your crew is one of the few to start a new foothold for mankind!" - ) - -/obj/machinery/computer/arcade/orion_trail/proc/newgame() - // Set names of settlers in crew - settlers = list() - for(var/i = 1; i <= 3; i++) - add_crewmember() - add_crewmember("[usr]") - // Re-set items to defaults - engine = 1 - hull = 1 - electronics = 1 - food = 80 - fuel = 60 - alive = 4 - turns = 1 - event = null - gameStatus = ORION_STATUS_NORMAL - lings_aboard = 0 - - //spaceport junk - spaceport_raided = 0 - spaceport_freebie = 0 - last_spaceport_action = "" - -/obj/machinery/computer/arcade/orion_trail/attack_hand(mob/user) - if(..()) - return - if(fuel <= 0 || food <=0 || settlers.len == 0) - gameStatus = ORION_STATUS_GAMEOVER - event = null - user.set_machine(src) - var/dat = "" - if(gameStatus == ORION_STATUS_GAMEOVER) - dat = "

Game Over

" - dat += "Like many before you, your crew never made it to Orion, lost to space...
Forever." - if(settlers.len == 0) - dat += "
Your entire crew died, your ship joins the fleet of ghost-ships littering the galaxy." - else - if(food <= 0) - dat += "
You ran out of food and starved." - if(emagged) - user.nutrition = 0 //yeah you pretty hongry - user << "Your body instantly contracts to that of one who has not eaten in months. Agonizing cramps seize you as you fall to the floor." - if(fuel <= 0) - dat += "
You ran out of fuel, and drift, slowly, into a star." - if(emagged) - var/mob/living/M = user - M.adjust_fire_stacks(5) - M.IgniteMob() //flew into a star, so you're on fire - user << "You feel an immense wave of heat emanate from the arcade machine. Your skin bursts into flames." - dat += "

OK...

" - - if(emagged) - user << "You're never going to make it to Orion..." - user.death() - emagged = 0 //removes the emagged status after you lose - gameStatus = ORION_STATUS_START - name = "The Orion Trail" - desc = "Learn how our ancestors got to Orion, and have fun in the process!" - - else if(event) - dat = eventdat - else if(gameStatus == ORION_STATUS_NORMAL) - var/title = stops[turns] - var/subtext = stopblurbs[turns] - dat = "

[title]

" - dat += "[subtext]" - dat += "

Crew:

" - dat += english_list(settlers) - dat += "
Food: [food] | Fuel: [fuel]" - dat += "
Engine Parts: [engine] | Hull Panels: [hull] | Electronics: [electronics]" - if(turns == 7) - dat += "

Go Around Continue

" - else - dat += "

Continue

" - dat += "

Kill a crewmember

" - dat += "

Close

" - else - dat = "

The Orion Trail

" - dat += "

Experience the journey of your ancestors!



" - dat += "
New Game
" - dat += "

Close

" - var/datum/browser/popup = new(user, "arcade", "The Orion Trail",400,700) - popup.set_content(dat) - popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) - popup.open() - return - -/obj/machinery/computer/arcade/orion_trail/Topic(href, href_list) - if(..()) - return - if(href_list["close"]) - usr.unset_machine() - usr << browse(null, "window=arcade") - - if(busy) - return - busy = 1 - - if (href_list["continue"]) //Continue your travels - if(gameStatus == ORION_STATUS_NORMAL && !event && turns != 7) - if(turns >= ORION_TRAIL_WINTURN) - win() - else - food -= (alive+lings_aboard)*2 - fuel -= 5 - if(turns == 2 && prob(30)) - event = ORION_TRAIL_COLLISION - event() - else if(prob(75)) - event = pickweight(events) - if(lings_aboard) - if(event == ORION_TRAIL_LING || prob(55)) - event = ORION_TRAIL_LING_ATTACK - event() - turns += 1 - if(emagged) - var/mob/living/carbon/M = usr //for some vars - switch(event) - if(ORION_TRAIL_RAIDERS) - if(prob(50)) - usr << "You hear battle shouts. The tramping of boots on cold metal. Screams of agony. The rush of venting air. Are you going insane?" - M.hallucination += 30 - else - usr << "Something strikes you from behind! It hurts like hell and feel like a blunt weapon, but nothing is there..." - M.take_organ_damage(30) - playsound(loc, 'sound/weapons/genhit2.ogg', 100, 1) - if(ORION_TRAIL_ILLNESS) - var/severity = rand(1,3) //pray to RNGesus. PRAY, PIGS - if(severity == 1) - M << "You suddenly feel slightly nauseous." //got off lucky - if(severity == 2) - usr << "You suddenly feel extremely nauseous and hunch over until it passes." - M.Stun(3) - if(severity >= 3) //you didn't pray hard enough - M << "An overpowering wave of nausea consumes over you. You hunch over, your stomach's contents preparing for a spectacular exit." - M.Stun(5) - sleep(30) - M.vomit(50) - if(ORION_TRAIL_FLUX) - if(prob(75)) - M.Weaken(3) - say("A sudden gust of powerful wind slams [M] into the floor!") - M.take_organ_damage(25) - playsound(src.loc, 'sound/weapons/Genhit.ogg', 100, 1) - else - M << "A violent gale blows past you, and you barely manage to stay standing!" - if(ORION_TRAIL_COLLISION) //by far the most damaging event - if(prob(90)) - playsound(src.loc, 'sound/effects/bang.ogg', 100, 1) - var/turf/open/floor/F - for(F in orange(1, src)) - F.ChangeTurf(F.baseturf) - say("Something slams into the floor around [src], exposing it to space!") - if(hull) - sleep(10) - say("A new floor suddenly appears around [src]. What the hell?") - playsound(src.loc, 'sound/weapons/Genhit.ogg', 100, 1) - var/turf/open/space/T - for(T in orange(1, src)) - T.ChangeTurf(/turf/open/floor/plating/) - else - say("Something slams into the floor around [src] - luckily, it didn't get through!") - playsound(src.loc, 'sound/effects/bang.ogg', 50, 1) - if(ORION_TRAIL_MALFUNCTION) - playsound(src.loc, 'sound/effects/EMPulse.ogg', 50, 1) - src.visible_message("[src] malfunctions, randomizing in-game stats!") - var/oldfood = food - var/oldfuel = fuel - food = rand(10,80) / rand(1,2) - fuel = rand(10,60) / rand(1,2) - if(electronics) - sleep(10) - if(oldfuel > fuel && oldfood > food) - src.audible_message("[src] lets out a somehow reassuring chime.") - else if(oldfuel < fuel || oldfood < food) - src.audible_message("[src] lets out a somehow ominous chime.") - food = oldfood - fuel = oldfuel - playsound(src.loc, 'sound/machines/chime.ogg', 50, 1) - - else if(href_list["newgame"]) //Reset everything - if(gameStatus == ORION_STATUS_START) - newgame() - else if(href_list["menu"]) //back to the main menu - if(gameStatus == ORION_STATUS_GAMEOVER) - gameStatus = ORION_STATUS_START - event = null - food = 80 - fuel = 60 - settlers = list("Harry","Larry","Bob") - else if(href_list["slow"]) //slow down - if(event == ORION_TRAIL_FLUX) - food -= (alive+lings_aboard)*2 - fuel -= 5 - event = null - else if(href_list["pastblack"]) //slow down - if(turns == 7) - food -= ((alive+lings_aboard)*2)*3 - fuel -= 15 - turns += 1 - event = null - else if(href_list["useengine"]) //use parts - if(event == ORION_TRAIL_BREAKDOWN) - engine = max(0, --engine) - event = null - else if(href_list["useelec"]) //use parts - if(event == ORION_TRAIL_MALFUNCTION) - electronics = max(0, --electronics) - event = null - else if(href_list["usehull"]) //use parts - if(event == ORION_TRAIL_COLLISION) - hull = max(0, --hull) - event = null - else if(href_list["wait"]) //wait 3 days - if(event == ORION_TRAIL_BREAKDOWN || event == ORION_TRAIL_MALFUNCTION || event == ORION_TRAIL_COLLISION) - food -= ((alive+lings_aboard)*2)*3 - event = null - else if(href_list["keepspeed"]) //keep speed - if(event == ORION_TRAIL_FLUX) - if(prob(75)) - event = "Breakdown" - event() - else - event = null - else if(href_list["blackhole"]) //keep speed past a black hole - if(turns == 7) - if(prob(75)) - event = ORION_TRAIL_BLACKHOLE - event() - if(emagged) //has to be here because otherwise it doesn't work - playsound(src.loc, 'sound/effects/supermatter.ogg', 100, 1) - say("A miniature black hole suddenly appears in front of [src], devouring [usr] alive!") - usr.Stun(10) //you can't run :^) - var/S = new /obj/singularity/academy(usr.loc) - emagged = 0 //immediately removes emagged status so people can't kill themselves by sprinting up and interacting - sleep(50) - say("[S] winks out, just as suddenly as it appeared.") - qdel(S) - else - event = null - turns += 1 - else if(href_list["holedeath"]) - if(event == ORION_TRAIL_BLACKHOLE) - gameStatus = ORION_STATUS_GAMEOVER - event = null - else if(href_list["eventclose"]) //end an event - if(canContinueEvent) - event = null - - else if(href_list["killcrew"]) //shoot a crewmember - if(gameStatus == ORION_STATUS_NORMAL || event == ORION_TRAIL_LING) - var/sheriff = remove_crewmember() //I shot the sheriff - playsound(loc,'sound/weapons/Gunshot.ogg', 100, 1) - - if(settlers.len == 0 || alive == 0) - say("The last crewmember [sheriff], shot themselves, GAME OVER!") - if(emagged) - usr.death(0) - emagged = 0 - gameStatus = ORION_STATUS_GAMEOVER - event = null - else if(emagged) - if(usr.name == sheriff) - say("The crew of the ship chose to kill [usr.name]!") - usr.death(0) - - if(event == ORION_TRAIL_LING) //only ends the ORION_TRAIL_LING event, since you can do this action in multiple places - event = null - - //Spaceport specific interactions - //they get a header because most of them don't reset event (because it's a shop, you leave when you want to) - //they also call event() again, to regen the eventdata, which is kind of odd but necessary - else if(href_list["buycrew"]) //buy a crewmember - if(gameStatus == ORION_STATUS_MARKET) - if(!spaceport_raided && food >= 10 && fuel >= 10) - var/bought = add_crewmember() - last_spaceport_action = "You hired [bought] as a new crewmember." - fuel -= 10 - food -= 10 - event() - - else if(href_list["sellcrew"]) //sell a crewmember - if(gameStatus == ORION_STATUS_MARKET) - if(!spaceport_raided && settlers.len > 1) - var/sold = remove_crewmember() - last_spaceport_action = "You sold your crewmember, [sold]!" - fuel += 7 - food += 7 - event() - - else if(href_list["leave_spaceport"]) - if(gameStatus == ORION_STATUS_MARKET) - event = null - gameStatus = ORION_STATUS_NORMAL - spaceport_raided = 0 - spaceport_freebie = 0 - last_spaceport_action = "" - - else if(href_list["raid_spaceport"]) - if(gameStatus == ORION_STATUS_MARKET) - if(!spaceport_raided) - var/success = min(15 * alive,100) //default crew (4) have a 60% chance - spaceport_raided = 1 - - var/FU = 0 - var/FO = 0 - if(prob(success)) - FU = rand(5,15) - FO = rand(5,15) - last_spaceport_action = "You successfully raided the spaceport! you gained [FU] Fuel and [FO] Food! (+[FU]FU,+[FO]FO)" - else - FU = rand(-5,-15) - FO = rand(-5,-15) - last_spaceport_action = "You failed to raid the spaceport! you lost [FU*-1] Fuel and [FO*-1] Food in your scramble to escape! ([FU]FU,[FO]FO)" - - //your chance of lose a crewmember is 1/2 your chance of success - //this makes higher % failures hurt more, don't get cocky space cowboy! - if(prob(success*5)) - var/lost_crew = remove_crewmember() - last_spaceport_action = "You failed to raid the spaceport! you lost [FU*-1] Fuel and [FO*-1] Food, AND [lost_crew] in your scramble to escape! ([FU]FI,[FO]FO,-Crew)" - if(emagged) - say("WEEWOO WEEWOO, Spaceport Security en route!") - for(var/i, i<=3, i++) - var/mob/living/simple_animal/hostile/syndicate/ranged/orion/O = new/mob/living/simple_animal/hostile/syndicate/ranged/orion(get_turf(src)) - O.target = usr - - - fuel += FU - food += FO - event() - - else if(href_list["buyparts"]) - if(gameStatus == ORION_STATUS_MARKET) - if(!spaceport_raided && fuel > 5) - switch(text2num(href_list["buyparts"])) - if(1) //Engine Parts - engine++ - last_spaceport_action = "Bought Engine Parts" - if(2) //Hull Plates - hull++ - last_spaceport_action = "Bought Hull Plates" - if(3) //Spare Electronics - electronics++ - last_spaceport_action = "Bought Spare Electronics" - fuel -= 5 //they all cost 5 - event() - - else if(href_list["trade"]) - if(gameStatus == ORION_STATUS_MARKET) - if(!spaceport_raided) - switch(text2num(href_list["trade"])) - if(1) //Fuel - if(fuel > 5) - fuel -= 5 - food += 5 - last_spaceport_action = "Traded Fuel for Food" - event() - if(2) //Food - if(food > 5) - fuel += 5 - food -= 5 - last_spaceport_action = "Traded Food for Fuel" - event() - - src.add_fingerprint(usr) - src.updateUsrDialog() - busy = 0 - return - - -/obj/machinery/computer/arcade/orion_trail/proc/event() - eventdat = "

[event]

" - canContinueEvent = 0 - switch(event) - if(ORION_TRAIL_RAIDERS) - eventdat += "Raiders have come aboard your ship!" - if(prob(50)) - var/sfood = rand(1,10) - var/sfuel = rand(1,10) - food -= sfood - fuel -= sfuel - eventdat += "
They have stolen [sfood] Food and [sfuel] Fuel." - else if(prob(10)) - var/deadname = remove_crewmember() - eventdat += "
[deadname] tried to fight back but was killed." - else - eventdat += "
Fortunately you fended them off without any trouble." - eventdat += "

Continue

" - eventdat += "

Close

" - canContinueEvent = 1 - - if(ORION_TRAIL_FLUX) - eventdat += "This region of space is highly turbulent.
If we go slowly we may avoid more damage, but if we keep our speed we won't waste supplies." - eventdat += "
What will you do?" - eventdat += "

Slow Down Continue

" - eventdat += "

Close

" - - if(ORION_TRAIL_ILLNESS) - eventdat += "A deadly illness has been contracted!" - var/deadname = remove_crewmember() - eventdat += "
[deadname] was killed by the disease." - eventdat += "

Continue

" - eventdat += "

Close

" - canContinueEvent = 1 - - if(ORION_TRAIL_BREAKDOWN) - eventdat += "Oh no! The engine has broken down!" - eventdat += "
You can repair it with an engine part, or you can make repairs for 3 days." - if(engine >= 1) - eventdat += "

Use PartWait

" - else - eventdat += "

Wait

" - eventdat += "

Close

" - - if(ORION_TRAIL_MALFUNCTION) - eventdat += "The ship's systems are malfunctioning!" - eventdat += "
You can replace the broken electronics with spares, or you can spend 3 days troubleshooting the AI." - if(electronics >= 1) - eventdat += "

Use PartWait

" - else - eventdat += "

Wait

" - eventdat += "

Close

" - - if(ORION_TRAIL_COLLISION) - eventdat += "Something hit us! Looks like there's some hull damage." - if(prob(25)) - var/sfood = rand(5,15) - var/sfuel = rand(5,15) - food -= sfood - fuel -= sfuel - eventdat += "
[sfood] Food and [sfuel] Fuel was vented out into space." - if(prob(10)) - var/deadname = remove_crewmember() - eventdat += "
[deadname] was killed by rapid depressurization." - eventdat += "
You can repair the damage with hull plates, or you can spend the next 3 days welding scrap together." - if(hull >= 1) - eventdat += "

Use PartWait

" - else - eventdat += "

Wait

" - eventdat += "

Close

" - - if(ORION_TRAIL_BLACKHOLE) - eventdat += "You were swept away into the black hole." - eventdat += "

Oh...

" - eventdat += "

Close

" - settlers = list() - - if(ORION_TRAIL_LING) - eventdat += "Strange reports warn of changelings infiltrating crews on trips to Orion..." - if(settlers.len <= 2) - eventdat += "
Your crew's chance of reaching Orion is so slim the changelings likely avoided your ship..." - eventdat += "

Continue

" - eventdat += "

Close

" - if(prob(10)) // "likely", I didn't say it was guaranteed! - lings_aboard = min(++lings_aboard,2) - else - if(lings_aboard) //less likely to stack lings - if(prob(20)) - lings_aboard = min(++lings_aboard,2) - else if(prob(70)) - lings_aboard = min(++lings_aboard,2) - - eventdat += "

Kill a crewmember

" - eventdat += "

Risk it

" - eventdat += "

Close

" - canContinueEvent = 1 - - if(ORION_TRAIL_LING_ATTACK) - if(lings_aboard <= 0) //shouldn't trigger, but hey. - eventdat += "Haha, fooled you, there are no changelings on board!" - eventdat += "
(You should report this to a coder :S)" - else - var/ling1 = remove_crewmember() - var/ling2 = "" - if(lings_aboard >= 2) - ling2 = remove_crewmember() - - eventdat += "Oh no, some of your crew are Changelings!" - if(ling2) - eventdat += "
[ling1] and [ling2]'s arms twist and contort into grotesque blades!" - else - eventdat += "
[ling1]'s arm twists and contorts into a grotesque blade!" - - var/chance2attack = alive*20 - if(prob(chance2attack)) - var/chancetokill = 30*lings_aboard-(5*alive) //eg: 30*2-(10) = 50%, 2 lings, 2 crew is 50% chance - if(prob(chancetokill)) - var/deadguy = remove_crewmember() - eventdat += "
The Changeling[ling2 ? "s":""] run[ling2 ? "":"s"] up to [deadguy] and capitulates them!" - else - eventdat += "
You valiantly fight off the Changeling[ling2 ? "s":""]!" - eventdat += "
You cut the Changeling[ling2 ? "s":""] up into meat... Eww" - if(ling2) - food += 30 - lings_aboard = max(0,lings_aboard-2) - else - food += 15 - lings_aboard = max(0,--lings_aboard) - else - eventdat += "
The Changeling[ling2 ? "s":""] run[ling2 ? "":"s"] away, What wimps!" - if(ling2) - lings_aboard = max(0,lings_aboard-2) - else - lings_aboard = max(0,--lings_aboard) - - eventdat += "

Continue

" - eventdat += "

Close

" - canContinueEvent = 1 - - - if(ORION_TRAIL_SPACEPORT) - gameStatus = ORION_STATUS_MARKET - if(spaceport_raided) - eventdat += "The Spaceport is on high alert! they wont let you dock since you tried to attack them!" - if(last_spaceport_action) - eventdat += "
Last Spaceport Action: [last_spaceport_action]" - eventdat += "

Depart Spaceport

" - eventdat += "

Close

" - else - eventdat += "You pull the ship up to dock at a nearby Spaceport, lucky find!" - eventdat += "
This Spaceport is home to travellers who failed to reach Orion, but managed to find a different home..." - eventdat += "
Trading terms: FU = Fuel, FO = Food" - if(last_spaceport_action) - eventdat += "
Last Spaceport Action: [last_spaceport_action]" - eventdat += "

Crew:

" - eventdat += english_list(settlers) - eventdat += "
Food: [food] | Fuel: [fuel]" - eventdat += "
Engine Parts: [engine] | Hull Panels: [hull] | Electronics: [electronics]" - - - //If your crew is pathetic you can get freebies (provided you haven't already gotten one from this port) - if(!spaceport_freebie && (fuel < 20 || food < 20)) - spaceport_freebie++ - var/FU = 10 - var/FO = 10 - var/freecrew = 0 - if(prob(30)) - FU = 25 - FO = 25 - - if(prob(10)) - add_crewmember() - freecrew++ - - eventdat += "
The traders of the spaceport take pitty on you, and give you some food and fuel (+[FU]FU,+[FO]FO)" - if(freecrew) - eventdat += "
You also gain a new crewmember!" - - fuel += FU - food += FO - - //CREW INTERACTIONS - eventdat += "

Crew Management:

" - - //Buy crew - if(food >= 10 && fuel >= 10) - eventdat += "

Hire a new Crewmember (-10FU,-10FO)

" - else - eventdat += "

Cant afford a new Crewmember

" - - //Sell crew - if(settlers.len > 1) - eventdat += "

Sell crew for Fuel and Food (+7FU,+7FO)

" - else - eventdat += "

Cant afford to sell a Crewmember

" - - //BUY/SELL STUFF - eventdat += "

Spare Parts:

" - - //Engine parts - if(fuel > 5) - eventdat += "

Buy Engine Parts (-5FU)

" - else - eventdat += "

Cant afford to buy Engine Parts" - - //Hull plates - if(fuel > 5) - eventdat += "

Buy Hull Plates (-5FU)

" - else - eventdat += "

Cant afford to buy Hull Plates" - - //Electronics - if(fuel > 5) - eventdat += "

Buy Spare Electronics (-5FU)

" - else - eventdat += "

Cant afford to buy Spare Electronics" - - //Trade - if(fuel > 5) - eventdat += "

Trade Fuel for Food (-5FU,+5FO)

" - else - eventdat += "

Cant afford to Trade Fuel for Food 5) - eventdat += "

Trade Food for Fuel (+5FU,-5FO)

" - else - eventdat += "

Cant afford to Trade Food for FuelYou override the cheat code menu and skip to Cheat #[rand(1, 50)]: Realism Mode." - name = "The Orion Trail: Realism Edition" - desc = "Learn how our ancestors got to Orion, and try not to die in the process!" - newgame() - emagged = 1 - -/mob/living/simple_animal/hostile/syndicate/ranged/orion - name = "Spaceport Security" - desc = "The Premier security forces for all spaceports found along the Orion Trail." - faction = list("orion") - loot = list(/obj/effect/mob_spawn/human/corpse/orionsecurity, - /obj/item/weapon/gun/projectile/automatic/c20r/unrestricted, - /obj/item/weapon/shield/energy) - -/obj/effect/mob_spawn/human/corpse/orionsecurity - name = "Spaceport Security" - uniform = /obj/item/clothing/under/syndicate - suit = /obj/item/clothing/suit/armor/vest - shoes = /obj/item/clothing/shoes/combat - gloves = /obj/item/clothing/gloves/combat - radio = /obj/item/device/radio/headset - mask = /obj/item/clothing/mask/gas - helmet = /obj/item/clothing/head/helmet/swat - back = /obj/item/weapon/storage/backpack - has_id = 1 - id_job = "Officer" - id_access = "Syndicate" - -/obj/item/weapon/orion_ship - name = "model settler ship" - desc = "A model spaceship, it looks like those used back in the day when travelling to Orion! It even has a miniature FX-293 reactor, which was renowned for its instability and tendency to explode..." - icon = 'icons/obj/toy.dmi' - icon_state = "ship" - w_class = 2 - var/active = 0 //if the ship is on - -/obj/item/weapon/orion_ship/examine(mob/user) - ..() - if(!(in_range(user, src))) - return - if(!active) - user << "There's a little switch on the bottom. It's flipped down." - else - user << "There's a little switch on the bottom. It's flipped up." - -/obj/item/weapon/orion_ship/attack_self(mob/user) //Minibomb-level explosion. Should probably be more because of how hard it is to survive the machine! Also, just over a 5-second fuse - if(active) - return - - message_admins("[key_name_admin(usr)] primed an explosive Orion ship for detonation.") - log_game("[key_name(usr)] primed an explosive Orion ship for detonation.") - - user << "You flip the switch on the underside of [src]." - active = 1 - src.visible_message("[src] softly beeps and whirs to life!") - playsound(src.loc, 'sound/machines/defib_SaftyOn.ogg', 25, 1) - say("This is ship ID #[rand(1,1000)] to Orion Port Authority. We're coming in for landing, over.") - sleep(20) - src.visible_message("[src] begins to vibrate...") - say("Uh, Port? Having some issues with our reactor, could you check it out? Over.") - sleep(30) - say("Oh, God! Code Eight! CODE EIGHT! IT'S GONNA BL-") - playsound(src.loc, 'sound/machines/buzz-sigh.ogg', 25, 1) - sleep(3.6) - src.visible_message("[src] explodes!") - explosion(src.loc, 2,4,8, flame_range = 16) - qdel(src) - - -#undef ORION_TRAIL_WINTURN -#undef ORION_TRAIL_RAIDERS -#undef ORION_TRAIL_FLUX -#undef ORION_TRAIL_ILLNESS -#undef ORION_TRAIL_BREAKDOWN -#undef ORION_TRAIL_LING -#undef ORION_TRAIL_LING_ATTACK -#undef ORION_TRAIL_MALFUNCTION -#undef ORION_TRAIL_COLLISION -#undef ORION_TRAIL_SPACEPORT -#undef ORION_TRAIL_BLACKHOLE - -#undef ORION_STATUS_START -#undef ORION_STATUS_NORMAL -#undef ORION_STATUS_GAMEOVER -#undef ORION_STATUS_MARKET +/obj/machinery/computer/arcade/ + name = "random arcade" + desc = "random arcade machine" + icon_state = "arcade" + icon_keyboard = null + icon_screen = "invaders" + var/list/prizes = list( + /obj/item/weapon/storage/box/snappops = 2, + /obj/item/toy/talking/AI = 2, + /obj/item/toy/talking/codex_gigas = 2, + /obj/item/clothing/under/syndicate/tacticool = 2, + /obj/item/toy/sword = 2, + /obj/item/toy/gun = 2, + /obj/item/weapon/gun/projectile/shotgun/toy/crossbow = 2, + /obj/item/weapon/storage/box/fakesyndiesuit = 2, + /obj/item/weapon/storage/crayons = 2, + /obj/item/toy/spinningtoy = 2, + /obj/item/toy/prize/ripley = 1, + /obj/item/toy/prize/fireripley = 1, + /obj/item/toy/prize/deathripley = 1, + /obj/item/toy/prize/gygax = 1, + /obj/item/toy/prize/durand = 1, + /obj/item/toy/prize/honk = 1, + /obj/item/toy/prize/marauder = 1, + /obj/item/toy/prize/seraph = 1, + /obj/item/toy/prize/mauler = 1, + /obj/item/toy/prize/odysseus = 1, + /obj/item/toy/prize/phazon = 1, + /obj/item/toy/prize/reticence = 1, + /obj/item/toy/cards/deck = 2, + /obj/item/toy/nuke = 2, + /obj/item/toy/minimeteor = 2, + /obj/item/toy/redbutton = 2, + /obj/item/toy/talking/owl = 2, + /obj/item/toy/talking/griffin = 2, + /obj/item/toy/talking/skeleton = 2, + /obj/item/weapon/coin/antagtoken = 2, + /obj/item/stack/tile/fakespace/loaded = 2, + /obj/item/toy/toy_xeno = 2, + /obj/item/weapon/restraints/handcuffs/fake = 2) + +/obj/machinery/computer/arcade/New() + ..() + // If it's a generic arcade machine, pick a random arcade + // circuit board for it and make the new machine + if(!circuit) + var/choice = pick(subtypesof(/obj/item/weapon/circuitboard/computer/arcade)) + var/obj/item/weapon/circuitboard/CB = new choice() + new CB.build_path(loc, CB) + qdel(src) + +/obj/machinery/computer/arcade/proc/prizevend() + if(prob(0.0001)) //1 in a million + new /obj/item/weapon/gun/energy/pulse(src) + + if(!contents.len) + var/prizeselect = pickweight(prizes) + new prizeselect(src) + + var/atom/movable/prize = pick(contents) + visible_message( + "[src] dispenses a [prize]!", + "You hear a chime and a clunk.") + + prize.loc = src.loc + +/obj/machinery/computer/arcade/emp_act(severity) + ..(severity) + + if(stat & (NOPOWER|BROKEN)) + return + + var/empprize = null + var/num_of_prizes = 0 + switch(severity) + if(1) + num_of_prizes = rand(1,4) + if(2) + num_of_prizes = rand(0,2) + for(var/i = num_of_prizes; i > 0; i--) + empprize = pickweight(prizes) + new empprize(src.loc) + explosion(src.loc, -1, 0, 1+num_of_prizes, flame_range = 1+num_of_prizes) + + +// ** BATTLE ** // + + +/obj/machinery/computer/arcade/battle + name = "arcade machine" + desc = "Does not support Pinball." + icon_state = "arcade" + circuit = /obj/item/weapon/circuitboard/computer/arcade/battle + var/enemy_name = "Space Villian" + var/temp = "Winners don't use space drugs" //Temporary message, for attack messages, etc + var/player_hp = 30 //Player health/attack points + var/player_mp = 10 + var/enemy_hp = 45 //Enemy health/attack points + var/enemy_mp = 20 + var/gameover = 0 + var/blocked = 0 //Player cannot attack/heal while set + var/turtle = 0 + +/obj/machinery/computer/arcade/battle/New() + ..() + var/name_action + var/name_part1 + var/name_part2 + + name_action = pick("Defeat ", "Annihilate ", "Save ", "Strike ", "Stop ", "Destroy ", "Robust ", "Romance ", "Pwn ", "Own ", "Ban ") + + name_part1 = pick("the Automatic ", "Farmer ", "Lord ", "Professor ", "the Cuban ", "the Evil ", "the Dread King ", "the Space ", "Lord ", "the Great ", "Duke ", "General ") + name_part2 = pick("Melonoid", "Murdertron", "Sorcerer", "Ruin", "Jeff", "Ectoplasm", "Crushulon", "Uhangoid", "Vhakoid", "Peteoid", "slime", "Griefer", "ERPer", "Lizard Man", "Unicorn", "Bloopers") + + src.enemy_name = replacetext((name_part1 + name_part2), "the ", "") + src.name = (name_action + name_part1 + name_part2) + +/obj/machinery/computer/arcade/battle/attack_hand(mob/user) + if(..()) + return + user.set_machine(src) + var/dat = "Close" + dat += "

[src.enemy_name]

" + + dat += "

[src.temp]

" + dat += "
Health: [src.player_hp] | Magic: [src.player_mp] | Enemy Health: [src.enemy_hp]
" + + if (src.gameover) + dat += "
New Game" + else + dat += "
Attack | " + dat += "Heal | " + dat += "Recharge Power" + + dat += "
" + + //user << browse(dat, "window=arcade") + //onclose(user, "arcade") + var/datum/browser/popup = new(user, "arcade", "Space Villian 2000") + popup.set_content(dat) + popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) + popup.open() + return + +/obj/machinery/computer/arcade/battle/Topic(href, href_list) + if(..()) + return + + if (!src.blocked && !src.gameover) + if (href_list["attack"]) + src.blocked = 1 + var/attackamt = rand(2,6) + src.temp = "You attack for [attackamt] damage!" + playsound(src.loc, 'sound/arcade/Hit.ogg', 50, 1, extrarange = -3, falloff = 10) + src.updateUsrDialog() + if(turtle > 0) + turtle-- + + sleep(10) + src.enemy_hp -= attackamt + src.arcade_action() + + else if (href_list["heal"]) + src.blocked = 1 + var/pointamt = rand(1,3) + var/healamt = rand(6,8) + src.temp = "You use [pointamt] magic to heal for [healamt] damage!" + playsound(src.loc, 'sound/arcade/Heal.ogg', 50, 1, extrarange = -3, falloff = 10) + src.updateUsrDialog() + turtle++ + + sleep(10) + src.player_mp -= pointamt + src.player_hp += healamt + src.blocked = 1 + src.updateUsrDialog() + src.arcade_action() + + else if (href_list["charge"]) + src.blocked = 1 + var/chargeamt = rand(4,7) + src.temp = "You regain [chargeamt] points" + playsound(src.loc, 'sound/arcade/Mana.ogg', 50, 1, extrarange = -3, falloff = 10) + src.player_mp += chargeamt + if(turtle > 0) + turtle-- + + src.updateUsrDialog() + sleep(10) + src.arcade_action() + + if (href_list["close"]) + usr.unset_machine() + usr << browse(null, "window=arcade") + + else if (href_list["newgame"]) //Reset everything + temp = "New Round" + player_hp = 30 + player_mp = 10 + enemy_hp = 45 + enemy_mp = 20 + gameover = 0 + turtle = 0 + + if(emagged) + src.New() + emagged = 0 + + src.add_fingerprint(usr) + src.updateUsrDialog() + return + +/obj/machinery/computer/arcade/battle/proc/arcade_action() + if ((src.enemy_mp <= 0) || (src.enemy_hp <= 0)) + if(!gameover) + src.gameover = 1 + src.temp = "[src.enemy_name] has fallen! Rejoice!" + playsound(src.loc, 'sound/arcade/Win.ogg', 50, 1, extrarange = -3, falloff = 10) + + if(emagged) + feedback_inc("arcade_win_emagged") + new /obj/effect/spawner/newbomb/timer/syndicate(src.loc) + new /obj/item/clothing/head/collectable/petehat(src.loc) + message_admins("[key_name_admin(usr)] has outbombed Cuban Pete and been awarded a bomb.") + log_game("[key_name(usr)] has outbombed Cuban Pete and been awarded a bomb.") + src.New() + emagged = 0 + else + feedback_inc("arcade_win_normal") + prizevend() + + else if (emagged && (turtle >= 4)) + var/boomamt = rand(5,10) + src.temp = "[src.enemy_name] throws a bomb, exploding you for [boomamt] damage!" + playsound(src.loc, 'sound/arcade/Boom.ogg', 50, 1, extrarange = -3, falloff = 10) + src.player_hp -= boomamt + + else if ((src.enemy_mp <= 5) && (prob(70))) + var/stealamt = rand(2,3) + src.temp = "[src.enemy_name] steals [stealamt] of your power!" + playsound(src.loc, 'sound/arcade/Steal.ogg', 50, 1, extrarange = -3, falloff = 10) + src.player_mp -= stealamt + src.updateUsrDialog() + + if (src.player_mp <= 0) + src.gameover = 1 + sleep(10) + src.temp = "You have been drained! GAME OVER" + playsound(src.loc, 'sound/arcade/Lose.ogg', 50, 1, extrarange = -3, falloff = 10) + if(emagged) + feedback_inc("arcade_loss_mana_emagged") + usr.gib() + else + feedback_inc("arcade_loss_mana_normal") + + else if ((src.enemy_hp <= 10) && (src.enemy_mp > 4)) + src.temp = "[src.enemy_name] heals for 4 health!" + playsound(src.loc, 'sound/arcade/Heal.ogg', 50, 1, extrarange = -3, falloff = 10) + src.enemy_hp += 4 + src.enemy_mp -= 4 + + else + var/attackamt = rand(3,6) + src.temp = "[src.enemy_name] attacks for [attackamt] damage!" + playsound(src.loc, 'sound/arcade/Hit.ogg', 50, 1, extrarange = -3, falloff = 10) + src.player_hp -= attackamt + + if ((src.player_mp <= 0) || (src.player_hp <= 0)) + src.gameover = 1 + src.temp = "You have been crushed! GAME OVER" + playsound(src.loc, 'sound/arcade/Lose.ogg', 50, 1, extrarange = -3, falloff = 10) + if(emagged) + feedback_inc("arcade_loss_hp_emagged") + usr.gib() + else + feedback_inc("arcade_loss_hp_normal") + + src.blocked = 0 + return + + +/obj/machinery/computer/arcade/battle/emag_act(mob/user) + if(!emagged) + temp = "If you die in the game, you die for real!" + player_hp = 30 + player_mp = 10 + enemy_hp = 45 + enemy_mp = 20 + gameover = 0 + blocked = 0 + + emagged = 1 + + enemy_name = "Cuban Pete" + name = "Outbomb Cuban Pete" + + + src.updateUsrDialog() + + + +// *** THE ORION TRAIL ** // + +#define ORION_TRAIL_WINTURN 9 + +//Orion Trail Events +#define ORION_TRAIL_RAIDERS "Raiders" +#define ORION_TRAIL_FLUX "Interstellar Flux" +#define ORION_TRAIL_ILLNESS "Illness" +#define ORION_TRAIL_BREAKDOWN "Breakdown" +#define ORION_TRAIL_LING "Changelings?" +#define ORION_TRAIL_LING_ATTACK "Changeling Ambush" +#define ORION_TRAIL_MALFUNCTION "Malfunction" +#define ORION_TRAIL_COLLISION "Collision" +#define ORION_TRAIL_SPACEPORT "Spaceport" +#define ORION_TRAIL_BLACKHOLE "BlackHole" + +#define ORION_STATUS_START 1 +#define ORION_STATUS_NORMAL 2 +#define ORION_STATUS_GAMEOVER 3 +#define ORION_STATUS_MARKET 4 + +/obj/machinery/computer/arcade/orion_trail + name = "The Orion Trail" + desc = "Learn how our ancestors got to Orion, and have fun in the process!" + icon_state = "arcade" + circuit = /obj/item/weapon/circuitboard/computer/arcade/orion_trail + var/busy = 0 //prevent clickspam that allowed people to ~speedrun~ the game. + var/engine = 0 + var/hull = 0 + var/electronics = 0 + var/food = 80 + var/fuel = 60 + var/turns = 4 + var/alive = 4 + var/eventdat = null + var/event = null + var/list/settlers = list("Harry","Larry","Bob") + var/list/events = list(ORION_TRAIL_RAIDERS = 3, + ORION_TRAIL_FLUX = 1, + ORION_TRAIL_ILLNESS = 3, + ORION_TRAIL_BREAKDOWN = 2, + ORION_TRAIL_LING = 3, + ORION_TRAIL_MALFUNCTION = 2, + ORION_TRAIL_COLLISION = 1, + ORION_TRAIL_SPACEPORT = 2 + ) + var/list/stops = list() + var/list/stopblurbs = list() + var/lings_aboard = 0 + var/spaceport_raided = 0 + var/spaceport_freebie = 0 + var/last_spaceport_action = "" + var/gameStatus = ORION_STATUS_START + var/canContinueEvent = 0 + +/obj/machinery/computer/arcade/orion_trail/New() + ..() + // Sets up the main trail + stops = list("Pluto","Asteroid Belt","Proxima Centauri","Dead Space","Rigel Prime","Tau Ceti Beta","Black Hole","Space Outpost Beta-9","Orion Prime") + stopblurbs = list( + "Pluto, long since occupied with long-range sensors and scanners, stands ready to, and indeed continues to probe the far reaches of the galaxy.", + "At the edge of the Sol system lies a treacherous asteroid belt. Many have been crushed by stray asteroids and misguided judgement.", + "The nearest star system to Sol, in ages past it stood as a reminder of the boundaries of sub-light travel, now a low-population sanctuary for adventurers and traders.", + "This region of space is particularly devoid of matter. Such low-density pockets are known to exist, but the vastness of it is astounding.", + "Rigel Prime, the center of the Rigel system, burns hot, basking its planetary bodies in warmth and radiation.", + "Tau Ceti Beta has recently become a waypoint for colonists headed towards Orion. There are many ships and makeshift stations in the vicinity.", + "Sensors indicate that a black hole's gravitational field is affecting the region of space we were headed through. We could stay of course, but risk of being overcome by its gravity, or we could change course to go around, which will take longer.", + "You have come into range of the first man-made structure in this region of space. It has been constructed not by travellers from Sol, but by colonists from Orion. It stands as a monument to the colonists' success.", + "You have made it to Orion! Congratulations! Your crew is one of the few to start a new foothold for mankind!" + ) + +/obj/machinery/computer/arcade/orion_trail/proc/newgame() + // Set names of settlers in crew + settlers = list() + for(var/i = 1; i <= 3; i++) + add_crewmember() + add_crewmember("[usr]") + // Re-set items to defaults + engine = 1 + hull = 1 + electronics = 1 + food = 80 + fuel = 60 + alive = 4 + turns = 1 + event = null + gameStatus = ORION_STATUS_NORMAL + lings_aboard = 0 + + //spaceport junk + spaceport_raided = 0 + spaceport_freebie = 0 + last_spaceport_action = "" + +/obj/machinery/computer/arcade/orion_trail/attack_hand(mob/user) + if(..()) + return + if(fuel <= 0 || food <=0 || settlers.len == 0) + gameStatus = ORION_STATUS_GAMEOVER + event = null + user.set_machine(src) + var/dat = "" + if(gameStatus == ORION_STATUS_GAMEOVER) + dat = "

Game Over

" + dat += "Like many before you, your crew never made it to Orion, lost to space...
Forever." + if(settlers.len == 0) + dat += "
Your entire crew died, your ship joins the fleet of ghost-ships littering the galaxy." + else + if(food <= 0) + dat += "
You ran out of food and starved." + if(emagged) + user.nutrition = 0 //yeah you pretty hongry + user << "Your body instantly contracts to that of one who has not eaten in months. Agonizing cramps seize you as you fall to the floor." + if(fuel <= 0) + dat += "
You ran out of fuel, and drift, slowly, into a star." + if(emagged) + var/mob/living/M = user + M.adjust_fire_stacks(5) + M.IgniteMob() //flew into a star, so you're on fire + user << "You feel an immense wave of heat emanate from the arcade machine. Your skin bursts into flames." + dat += "

OK...

" + + if(emagged) + user << "You're never going to make it to Orion..." + user.death() + emagged = 0 //removes the emagged status after you lose + gameStatus = ORION_STATUS_START + name = "The Orion Trail" + desc = "Learn how our ancestors got to Orion, and have fun in the process!" + + else if(event) + dat = eventdat + else if(gameStatus == ORION_STATUS_NORMAL) + var/title = stops[turns] + var/subtext = stopblurbs[turns] + dat = "

[title]

" + dat += "[subtext]" + dat += "

Crew:

" + dat += english_list(settlers) + dat += "
Food: [food] | Fuel: [fuel]" + dat += "
Engine Parts: [engine] | Hull Panels: [hull] | Electronics: [electronics]" + if(turns == 7) + dat += "

Go Around Continue

" + else + dat += "

Continue

" + dat += "

Kill a crewmember

" + dat += "

Close

" + else + dat = "

The Orion Trail

" + dat += "

Experience the journey of your ancestors!



" + dat += "
New Game
" + dat += "

Close

" + var/datum/browser/popup = new(user, "arcade", "The Orion Trail",400,700) + popup.set_content(dat) + popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) + popup.open() + return + +/obj/machinery/computer/arcade/orion_trail/Topic(href, href_list) + if(..()) + return + if(href_list["close"]) + usr.unset_machine() + usr << browse(null, "window=arcade") + + if(busy) + return + busy = 1 + + if (href_list["continue"]) //Continue your travels + if(gameStatus == ORION_STATUS_NORMAL && !event && turns != 7) + if(turns >= ORION_TRAIL_WINTURN) + win() + else + food -= (alive+lings_aboard)*2 + fuel -= 5 + if(turns == 2 && prob(30)) + event = ORION_TRAIL_COLLISION + event() + else if(prob(75)) + event = pickweight(events) + if(lings_aboard) + if(event == ORION_TRAIL_LING || prob(55)) + event = ORION_TRAIL_LING_ATTACK + event() + turns += 1 + if(emagged) + var/mob/living/carbon/M = usr //for some vars + switch(event) + if(ORION_TRAIL_RAIDERS) + if(prob(50)) + usr << "You hear battle shouts. The tramping of boots on cold metal. Screams of agony. The rush of venting air. Are you going insane?" + M.hallucination += 30 + else + usr << "Something strikes you from behind! It hurts like hell and feel like a blunt weapon, but nothing is there..." + M.take_organ_damage(30) + playsound(loc, 'sound/weapons/genhit2.ogg', 100, 1) + if(ORION_TRAIL_ILLNESS) + var/severity = rand(1,3) //pray to RNGesus. PRAY, PIGS + if(severity == 1) + M << "You suddenly feel slightly nauseous." //got off lucky + if(severity == 2) + usr << "You suddenly feel extremely nauseous and hunch over until it passes." + M.Stun(3) + if(severity >= 3) //you didn't pray hard enough + M << "An overpowering wave of nausea consumes over you. You hunch over, your stomach's contents preparing for a spectacular exit." + M.Stun(5) + sleep(30) + M.vomit(50) + if(ORION_TRAIL_FLUX) + if(prob(75)) + M.Weaken(3) + say("A sudden gust of powerful wind slams [M] into the floor!") + M.take_organ_damage(25) + playsound(src.loc, 'sound/weapons/Genhit.ogg', 100, 1) + else + M << "A violent gale blows past you, and you barely manage to stay standing!" + if(ORION_TRAIL_COLLISION) //by far the most damaging event + if(prob(90)) + playsound(src.loc, 'sound/effects/bang.ogg', 100, 1) + var/turf/open/floor/F + for(F in orange(1, src)) + F.ChangeTurf(F.baseturf) + say("Something slams into the floor around [src], exposing it to space!") + if(hull) + sleep(10) + say("A new floor suddenly appears around [src]. What the hell?") + playsound(src.loc, 'sound/weapons/Genhit.ogg', 100, 1) + var/turf/open/space/T + for(T in orange(1, src)) + T.ChangeTurf(/turf/open/floor/plating/) + else + say("Something slams into the floor around [src] - luckily, it didn't get through!") + playsound(src.loc, 'sound/effects/bang.ogg', 50, 1) + if(ORION_TRAIL_MALFUNCTION) + playsound(src.loc, 'sound/effects/EMPulse.ogg', 50, 1) + src.visible_message("[src] malfunctions, randomizing in-game stats!") + var/oldfood = food + var/oldfuel = fuel + food = rand(10,80) / rand(1,2) + fuel = rand(10,60) / rand(1,2) + if(electronics) + sleep(10) + if(oldfuel > fuel && oldfood > food) + src.audible_message("[src] lets out a somehow reassuring chime.") + else if(oldfuel < fuel || oldfood < food) + src.audible_message("[src] lets out a somehow ominous chime.") + food = oldfood + fuel = oldfuel + playsound(src.loc, 'sound/machines/chime.ogg', 50, 1) + + else if(href_list["newgame"]) //Reset everything + if(gameStatus == ORION_STATUS_START) + newgame() + else if(href_list["menu"]) //back to the main menu + if(gameStatus == ORION_STATUS_GAMEOVER) + gameStatus = ORION_STATUS_START + event = null + food = 80 + fuel = 60 + settlers = list("Harry","Larry","Bob") + else if(href_list["slow"]) //slow down + if(event == ORION_TRAIL_FLUX) + food -= (alive+lings_aboard)*2 + fuel -= 5 + event = null + else if(href_list["pastblack"]) //slow down + if(turns == 7) + food -= ((alive+lings_aboard)*2)*3 + fuel -= 15 + turns += 1 + event = null + else if(href_list["useengine"]) //use parts + if(event == ORION_TRAIL_BREAKDOWN) + engine = max(0, --engine) + event = null + else if(href_list["useelec"]) //use parts + if(event == ORION_TRAIL_MALFUNCTION) + electronics = max(0, --electronics) + event = null + else if(href_list["usehull"]) //use parts + if(event == ORION_TRAIL_COLLISION) + hull = max(0, --hull) + event = null + else if(href_list["wait"]) //wait 3 days + if(event == ORION_TRAIL_BREAKDOWN || event == ORION_TRAIL_MALFUNCTION || event == ORION_TRAIL_COLLISION) + food -= ((alive+lings_aboard)*2)*3 + event = null + else if(href_list["keepspeed"]) //keep speed + if(event == ORION_TRAIL_FLUX) + if(prob(75)) + event = "Breakdown" + event() + else + event = null + else if(href_list["blackhole"]) //keep speed past a black hole + if(turns == 7) + if(prob(75)) + event = ORION_TRAIL_BLACKHOLE + event() + if(emagged) //has to be here because otherwise it doesn't work + playsound(src.loc, 'sound/effects/supermatter.ogg', 100, 1) + say("A miniature black hole suddenly appears in front of [src], devouring [usr] alive!") + usr.Stun(10) //you can't run :^) + var/S = new /obj/singularity/academy(usr.loc) + emagged = 0 //immediately removes emagged status so people can't kill themselves by sprinting up and interacting + sleep(50) + say("[S] winks out, just as suddenly as it appeared.") + qdel(S) + else + event = null + turns += 1 + else if(href_list["holedeath"]) + if(event == ORION_TRAIL_BLACKHOLE) + gameStatus = ORION_STATUS_GAMEOVER + event = null + else if(href_list["eventclose"]) //end an event + if(canContinueEvent) + event = null + + else if(href_list["killcrew"]) //shoot a crewmember + if(gameStatus == ORION_STATUS_NORMAL || event == ORION_TRAIL_LING) + var/sheriff = remove_crewmember() //I shot the sheriff + playsound(loc,'sound/weapons/Gunshot.ogg', 100, 1) + + if(settlers.len == 0 || alive == 0) + say("The last crewmember [sheriff], shot themselves, GAME OVER!") + if(emagged) + usr.death(0) + emagged = 0 + gameStatus = ORION_STATUS_GAMEOVER + event = null + else if(emagged) + if(usr.name == sheriff) + say("The crew of the ship chose to kill [usr.name]!") + usr.death(0) + + if(event == ORION_TRAIL_LING) //only ends the ORION_TRAIL_LING event, since you can do this action in multiple places + event = null + + //Spaceport specific interactions + //they get a header because most of them don't reset event (because it's a shop, you leave when you want to) + //they also call event() again, to regen the eventdata, which is kind of odd but necessary + else if(href_list["buycrew"]) //buy a crewmember + if(gameStatus == ORION_STATUS_MARKET) + if(!spaceport_raided && food >= 10 && fuel >= 10) + var/bought = add_crewmember() + last_spaceport_action = "You hired [bought] as a new crewmember." + fuel -= 10 + food -= 10 + event() + + else if(href_list["sellcrew"]) //sell a crewmember + if(gameStatus == ORION_STATUS_MARKET) + if(!spaceport_raided && settlers.len > 1) + var/sold = remove_crewmember() + last_spaceport_action = "You sold your crewmember, [sold]!" + fuel += 7 + food += 7 + event() + + else if(href_list["leave_spaceport"]) + if(gameStatus == ORION_STATUS_MARKET) + event = null + gameStatus = ORION_STATUS_NORMAL + spaceport_raided = 0 + spaceport_freebie = 0 + last_spaceport_action = "" + + else if(href_list["raid_spaceport"]) + if(gameStatus == ORION_STATUS_MARKET) + if(!spaceport_raided) + var/success = min(15 * alive,100) //default crew (4) have a 60% chance + spaceport_raided = 1 + + var/FU = 0 + var/FO = 0 + if(prob(success)) + FU = rand(5,15) + FO = rand(5,15) + last_spaceport_action = "You successfully raided the spaceport! you gained [FU] Fuel and [FO] Food! (+[FU]FU,+[FO]FO)" + else + FU = rand(-5,-15) + FO = rand(-5,-15) + last_spaceport_action = "You failed to raid the spaceport! you lost [FU*-1] Fuel and [FO*-1] Food in your scramble to escape! ([FU]FU,[FO]FO)" + + //your chance of lose a crewmember is 1/2 your chance of success + //this makes higher % failures hurt more, don't get cocky space cowboy! + if(prob(success*5)) + var/lost_crew = remove_crewmember() + last_spaceport_action = "You failed to raid the spaceport! you lost [FU*-1] Fuel and [FO*-1] Food, AND [lost_crew] in your scramble to escape! ([FU]FI,[FO]FO,-Crew)" + if(emagged) + say("WEEWOO WEEWOO, Spaceport Security en route!") + for(var/i, i<=3, i++) + var/mob/living/simple_animal/hostile/syndicate/ranged/orion/O = new/mob/living/simple_animal/hostile/syndicate/ranged/orion(get_turf(src)) + O.target = usr + + + fuel += FU + food += FO + event() + + else if(href_list["buyparts"]) + if(gameStatus == ORION_STATUS_MARKET) + if(!spaceport_raided && fuel > 5) + switch(text2num(href_list["buyparts"])) + if(1) //Engine Parts + engine++ + last_spaceport_action = "Bought Engine Parts" + if(2) //Hull Plates + hull++ + last_spaceport_action = "Bought Hull Plates" + if(3) //Spare Electronics + electronics++ + last_spaceport_action = "Bought Spare Electronics" + fuel -= 5 //they all cost 5 + event() + + else if(href_list["trade"]) + if(gameStatus == ORION_STATUS_MARKET) + if(!spaceport_raided) + switch(text2num(href_list["trade"])) + if(1) //Fuel + if(fuel > 5) + fuel -= 5 + food += 5 + last_spaceport_action = "Traded Fuel for Food" + event() + if(2) //Food + if(food > 5) + fuel += 5 + food -= 5 + last_spaceport_action = "Traded Food for Fuel" + event() + + src.add_fingerprint(usr) + src.updateUsrDialog() + busy = 0 + return + + +/obj/machinery/computer/arcade/orion_trail/proc/event() + eventdat = "

[event]

" + canContinueEvent = 0 + switch(event) + if(ORION_TRAIL_RAIDERS) + eventdat += "Raiders have come aboard your ship!" + if(prob(50)) + var/sfood = rand(1,10) + var/sfuel = rand(1,10) + food -= sfood + fuel -= sfuel + eventdat += "
They have stolen [sfood] Food and [sfuel] Fuel." + else if(prob(10)) + var/deadname = remove_crewmember() + eventdat += "
[deadname] tried to fight back but was killed." + else + eventdat += "
Fortunately you fended them off without any trouble." + eventdat += "

Continue

" + eventdat += "

Close

" + canContinueEvent = 1 + + if(ORION_TRAIL_FLUX) + eventdat += "This region of space is highly turbulent.
If we go slowly we may avoid more damage, but if we keep our speed we won't waste supplies." + eventdat += "
What will you do?" + eventdat += "

Slow Down Continue

" + eventdat += "

Close

" + + if(ORION_TRAIL_ILLNESS) + eventdat += "A deadly illness has been contracted!" + var/deadname = remove_crewmember() + eventdat += "
[deadname] was killed by the disease." + eventdat += "

Continue

" + eventdat += "

Close

" + canContinueEvent = 1 + + if(ORION_TRAIL_BREAKDOWN) + eventdat += "Oh no! The engine has broken down!" + eventdat += "
You can repair it with an engine part, or you can make repairs for 3 days." + if(engine >= 1) + eventdat += "

Use PartWait

" + else + eventdat += "

Wait

" + eventdat += "

Close

" + + if(ORION_TRAIL_MALFUNCTION) + eventdat += "The ship's systems are malfunctioning!" + eventdat += "
You can replace the broken electronics with spares, or you can spend 3 days troubleshooting the AI." + if(electronics >= 1) + eventdat += "

Use PartWait

" + else + eventdat += "

Wait

" + eventdat += "

Close

" + + if(ORION_TRAIL_COLLISION) + eventdat += "Something hit us! Looks like there's some hull damage." + if(prob(25)) + var/sfood = rand(5,15) + var/sfuel = rand(5,15) + food -= sfood + fuel -= sfuel + eventdat += "
[sfood] Food and [sfuel] Fuel was vented out into space." + if(prob(10)) + var/deadname = remove_crewmember() + eventdat += "
[deadname] was killed by rapid depressurization." + eventdat += "
You can repair the damage with hull plates, or you can spend the next 3 days welding scrap together." + if(hull >= 1) + eventdat += "

Use PartWait

" + else + eventdat += "

Wait

" + eventdat += "

Close

" + + if(ORION_TRAIL_BLACKHOLE) + eventdat += "You were swept away into the black hole." + eventdat += "

Oh...

" + eventdat += "

Close

" + settlers = list() + + if(ORION_TRAIL_LING) + eventdat += "Strange reports warn of changelings infiltrating crews on trips to Orion..." + if(settlers.len <= 2) + eventdat += "
Your crew's chance of reaching Orion is so slim the changelings likely avoided your ship..." + eventdat += "

Continue

" + eventdat += "

Close

" + if(prob(10)) // "likely", I didn't say it was guaranteed! + lings_aboard = min(++lings_aboard,2) + else + if(lings_aboard) //less likely to stack lings + if(prob(20)) + lings_aboard = min(++lings_aboard,2) + else if(prob(70)) + lings_aboard = min(++lings_aboard,2) + + eventdat += "

Kill a crewmember

" + eventdat += "

Risk it

" + eventdat += "

Close

" + canContinueEvent = 1 + + if(ORION_TRAIL_LING_ATTACK) + if(lings_aboard <= 0) //shouldn't trigger, but hey. + eventdat += "Haha, fooled you, there are no changelings on board!" + eventdat += "
(You should report this to a coder :S)" + else + var/ling1 = remove_crewmember() + var/ling2 = "" + if(lings_aboard >= 2) + ling2 = remove_crewmember() + + eventdat += "Oh no, some of your crew are Changelings!" + if(ling2) + eventdat += "
[ling1] and [ling2]'s arms twist and contort into grotesque blades!" + else + eventdat += "
[ling1]'s arm twists and contorts into a grotesque blade!" + + var/chance2attack = alive*20 + if(prob(chance2attack)) + var/chancetokill = 30*lings_aboard-(5*alive) //eg: 30*2-(10) = 50%, 2 lings, 2 crew is 50% chance + if(prob(chancetokill)) + var/deadguy = remove_crewmember() + eventdat += "
The Changeling[ling2 ? "s":""] run[ling2 ? "":"s"] up to [deadguy] and capitulates them!" + else + eventdat += "
You valiantly fight off the Changeling[ling2 ? "s":""]!" + eventdat += "
You cut the Changeling[ling2 ? "s":""] up into meat... Eww" + if(ling2) + food += 30 + lings_aboard = max(0,lings_aboard-2) + else + food += 15 + lings_aboard = max(0,--lings_aboard) + else + eventdat += "
The Changeling[ling2 ? "s":""] run[ling2 ? "":"s"] away, What wimps!" + if(ling2) + lings_aboard = max(0,lings_aboard-2) + else + lings_aboard = max(0,--lings_aboard) + + eventdat += "

Continue

" + eventdat += "

Close

" + canContinueEvent = 1 + + + if(ORION_TRAIL_SPACEPORT) + gameStatus = ORION_STATUS_MARKET + if(spaceport_raided) + eventdat += "The Spaceport is on high alert! they wont let you dock since you tried to attack them!" + if(last_spaceport_action) + eventdat += "
Last Spaceport Action: [last_spaceport_action]" + eventdat += "

Depart Spaceport

" + eventdat += "

Close

" + else + eventdat += "You pull the ship up to dock at a nearby Spaceport, lucky find!" + eventdat += "
This Spaceport is home to travellers who failed to reach Orion, but managed to find a different home..." + eventdat += "
Trading terms: FU = Fuel, FO = Food" + if(last_spaceport_action) + eventdat += "
Last Spaceport Action: [last_spaceport_action]" + eventdat += "

Crew:

" + eventdat += english_list(settlers) + eventdat += "
Food: [food] | Fuel: [fuel]" + eventdat += "
Engine Parts: [engine] | Hull Panels: [hull] | Electronics: [electronics]" + + + //If your crew is pathetic you can get freebies (provided you haven't already gotten one from this port) + if(!spaceport_freebie && (fuel < 20 || food < 20)) + spaceport_freebie++ + var/FU = 10 + var/FO = 10 + var/freecrew = 0 + if(prob(30)) + FU = 25 + FO = 25 + + if(prob(10)) + add_crewmember() + freecrew++ + + eventdat += "
The traders of the spaceport take pitty on you, and give you some food and fuel (+[FU]FU,+[FO]FO)" + if(freecrew) + eventdat += "
You also gain a new crewmember!" + + fuel += FU + food += FO + + //CREW INTERACTIONS + eventdat += "

Crew Management:

" + + //Buy crew + if(food >= 10 && fuel >= 10) + eventdat += "

Hire a new Crewmember (-10FU,-10FO)

" + else + eventdat += "

Cant afford a new Crewmember

" + + //Sell crew + if(settlers.len > 1) + eventdat += "

Sell crew for Fuel and Food (+7FU,+7FO)

" + else + eventdat += "

Cant afford to sell a Crewmember

" + + //BUY/SELL STUFF + eventdat += "

Spare Parts:

" + + //Engine parts + if(fuel > 5) + eventdat += "

Buy Engine Parts (-5FU)

" + else + eventdat += "

Cant afford to buy Engine Parts" + + //Hull plates + if(fuel > 5) + eventdat += "

Buy Hull Plates (-5FU)

" + else + eventdat += "

Cant afford to buy Hull Plates" + + //Electronics + if(fuel > 5) + eventdat += "

Buy Spare Electronics (-5FU)

" + else + eventdat += "

Cant afford to buy Spare Electronics" + + //Trade + if(fuel > 5) + eventdat += "

Trade Fuel for Food (-5FU,+5FO)

" + else + eventdat += "

Cant afford to Trade Fuel for Food 5) + eventdat += "

Trade Food for Fuel (+5FU,-5FO)

" + else + eventdat += "

Cant afford to Trade Food for FuelYou override the cheat code menu and skip to Cheat #[rand(1, 50)]: Realism Mode." + name = "The Orion Trail: Realism Edition" + desc = "Learn how our ancestors got to Orion, and try not to die in the process!" + newgame() + emagged = 1 + +/mob/living/simple_animal/hostile/syndicate/ranged/orion + name = "Spaceport Security" + desc = "The Premier security forces for all spaceports found along the Orion Trail." + faction = list("orion") + loot = list(/obj/effect/mob_spawn/human/corpse/orionsecurity, + /obj/item/weapon/gun/projectile/automatic/c20r/unrestricted, + /obj/item/weapon/shield/energy) + +/obj/effect/mob_spawn/human/corpse/orionsecurity + name = "Spaceport Security" + uniform = /obj/item/clothing/under/syndicate + suit = /obj/item/clothing/suit/armor/vest + shoes = /obj/item/clothing/shoes/combat + gloves = /obj/item/clothing/gloves/combat + radio = /obj/item/device/radio/headset + mask = /obj/item/clothing/mask/gas + helmet = /obj/item/clothing/head/helmet/swat + back = /obj/item/weapon/storage/backpack + has_id = 1 + id_job = "Officer" + id_access = "Syndicate" + +/obj/item/weapon/orion_ship + name = "model settler ship" + desc = "A model spaceship, it looks like those used back in the day when travelling to Orion! It even has a miniature FX-293 reactor, which was renowned for its instability and tendency to explode..." + icon = 'icons/obj/toy.dmi' + icon_state = "ship" + w_class = 2 + var/active = 0 //if the ship is on + +/obj/item/weapon/orion_ship/examine(mob/user) + ..() + if(!(in_range(user, src))) + return + if(!active) + user << "There's a little switch on the bottom. It's flipped down." + else + user << "There's a little switch on the bottom. It's flipped up." + +/obj/item/weapon/orion_ship/attack_self(mob/user) //Minibomb-level explosion. Should probably be more because of how hard it is to survive the machine! Also, just over a 5-second fuse + if(active) + return + + message_admins("[key_name_admin(usr)] primed an explosive Orion ship for detonation.") + log_game("[key_name(usr)] primed an explosive Orion ship for detonation.") + + user << "You flip the switch on the underside of [src]." + active = 1 + src.visible_message("[src] softly beeps and whirs to life!") + playsound(src.loc, 'sound/machines/defib_SaftyOn.ogg', 25, 1) + say("This is ship ID #[rand(1,1000)] to Orion Port Authority. We're coming in for landing, over.") + sleep(20) + src.visible_message("[src] begins to vibrate...") + say("Uh, Port? Having some issues with our reactor, could you check it out? Over.") + sleep(30) + say("Oh, God! Code Eight! CODE EIGHT! IT'S GONNA BL-") + playsound(src.loc, 'sound/machines/buzz-sigh.ogg', 25, 1) + sleep(3.6) + src.visible_message("[src] explodes!") + explosion(src.loc, 2,4,8, flame_range = 16) + qdel(src) + + +#undef ORION_TRAIL_WINTURN +#undef ORION_TRAIL_RAIDERS +#undef ORION_TRAIL_FLUX +#undef ORION_TRAIL_ILLNESS +#undef ORION_TRAIL_BREAKDOWN +#undef ORION_TRAIL_LING +#undef ORION_TRAIL_LING_ATTACK +#undef ORION_TRAIL_MALFUNCTION +#undef ORION_TRAIL_COLLISION +#undef ORION_TRAIL_SPACEPORT +#undef ORION_TRAIL_BLACKHOLE + +#undef ORION_STATUS_START +#undef ORION_STATUS_NORMAL +#undef ORION_STATUS_GAMEOVER +#undef ORION_STATUS_MARKET diff --git a/code/game/machinery/doors/airlock_types.dm b/code/game/machinery/doors/airlock_types.dm index f265bfe46ef..04fe6350d4c 100644 --- a/code/game/machinery/doors/airlock_types.dm +++ b/code/game/machinery/doors/airlock_types.dm @@ -320,39 +320,63 @@ doortype = /obj/structure/door_assembly/door_assembly_cult hackProof = 1 aiControlDisabled = 1 + var/openingoverlaytype = /obj/effect/overlay/temp/cult/door + var/friendly = FALSE /obj/machinery/door/airlock/cult/allowed(mob/M) - if(!iscultist(M)) + if(!density) + return 1 + if(friendly || \ + iscultist(M) || \ + istype(M, /mob/living/simple_animal/shade) || \ + istype(M, /mob/living/simple_animal/hostile/construct)) + PoolOrNew(openingoverlaytype, src.loc) + return 1 + else PoolOrNew(/obj/effect/overlay/temp/cult/sac, src.loc) var/atom/throwtarget throwtarget = get_edge_target_turf(src, get_dir(src, get_step_away(M, src))) M << pick(sound('sound/hallucinations/turn_around1.ogg',0,1,50), sound('sound/hallucinations/turn_around2.ogg',0,1,50)) + if(M.client) + var/old_color = M.client.color + M.client.color = "#960000" + spawn(0)//animate is a delay, avoid delay, etc + animate(M.client,color = old_color, time = 20) M.Weaken(2) M.throw_at_fast(throwtarget, 5, 1,src) return 0 - else - PoolOrNew(/obj/effect/overlay/temp/cult/door, src.loc) - return 1 - /obj/machinery/door/airlock/cult/narsie_act() return +/obj/machinery/door/airlock/cult/friendly + friendly = TRUE + /obj/machinery/door/airlock/cult/glass doortype = /obj/structure/door_assembly/door_assembly_cult/glass glass = 1 opacity = 0 +/obj/machinery/door/airlock/cult/glass/friendly + friendly = TRUE + /obj/machinery/door/airlock/cult/unruned icon = 'icons/obj/doors/airlocks/cult/unruned/cult.dmi' overlays_file = 'icons/obj/doors/airlocks/cult/unruned/overlays.dmi' doortype = /obj/structure/door_assembly/door_assembly_cult/unruned + openingoverlaytype = /obj/effect/overlay/temp/cult/door/unruned + +/obj/machinery/door/airlock/cult/unruned/friendly + friendly = TRUE /obj/machinery/door/airlock/cult/unruned/glass doortype = /obj/structure/door_assembly/door_assembly_cult/unruned/glass glass = 1 opacity = 0 +/obj/machinery/door/airlock/cult/unruned/glass/friendly + friendly = TRUE + ////////////////////////////////// /* Misc Airlocks diff --git a/code/game/machinery/droneDispenser.dm b/code/game/machinery/droneDispenser.dm index dc9bf8e0115..c9836d94f24 100644 --- a/code/game/machinery/droneDispenser.dm +++ b/code/game/machinery/droneDispenser.dm @@ -14,8 +14,8 @@ var/icon_recharging = "recharge" var/icon_creating = "make" - var/metal = 0 - var/glass = 0 + var/datum/material_container/materials + var/list/using_materials var/metal_cost = 1000 var/glass_cost = 1000 var/power_used = 1000 @@ -39,25 +39,31 @@ /obj/machinery/droneDispenser/New() ..() health = max_health + materials = new(src, list(MAT_METAL=1, MAT_GLASS=1), MINERAL_MATERIAL_AMOUNT*MAX_STACK_SIZE*2) + using_materials = list(MAT_METAL=metal_cost, MAT_GLASS=glass_cost) SSmachine.processing |= src /obj/machinery/droneDispenser/Destroy() SSmachine.processing -= src + qdel(materials) + materials = null return ..() -/obj/machinery/droneDispenser/preloaded - metal = 5000 - glass = 5000 +/obj/machinery/droneDispenser/preloaded/New() + ..() + materials.insert_amount(5000) /obj/machinery/droneDispenser/syndrone //Please forgive me name = "syndrone shell dispenser" desc = "A suspicious machine that will create Syndicate exterminator drones when supplied with metal and glass. Disgusting." - metal = 25000 - glass = 25000 dispense_type = /obj/item/drone_shell/syndrone cooldownTime = 100 //If we're gonna be a jackass, go the full mile - 10 second recharge timer end_create_message = "dispenses a suspicious drone shell." +/obj/machinery/droneDispenser/syndrone/New() + ..() + materials.insert_amount(25000) + /obj/machinery/droneDispenser/syndrone/badass //Please forgive me name = "badass syndrone shell dispenser" desc = "A suspicious machine that will create Syndicate exterminator drones when supplied with metal and glass. Disgusting. This one seems ominous." @@ -74,9 +80,9 @@ glass_cost = 2000 power_used = 2000 -/obj/machinery/droneDispenser/snowflake/preloaded - metal = 10000 - glass = 10000 +/obj/machinery/droneDispenser/snowflake/preloaded/New() + ..() + materials.insert_amount(10000) /obj/machinery/droneDispenser/hivebot //An example of a custom drone dispenser. This one requires no materials and creates basic hivebots name = "hivebot fabricator" @@ -125,9 +131,9 @@ if(stat & BROKEN) user << "[src] is smoking and steadily buzzing. It seems to be broken." if(metal_cost) - user << "It has [metal] units of metal stored." + user << "It has [materials.amount(MAT_METAL)] units of metal stored." if(glass_cost) - user << "It has [glass] units of glass stored." + user << "It has [materials.amount(MAT_GLASS)] units of glass stored." /obj/machinery/droneDispenser/power_change() ..() @@ -144,7 +150,7 @@ ..() if(stat & (NOPOWER|BROKEN) || !anchored) return - if((metal_cost && glass_cost) && (metal < metal_cost || glass < glass_cost)) + if((metal_cost && glass_cost) && materials.can_use_amount(mats=using_materials)) return if(droneMadeRecently) icon_state = icon_recharging @@ -157,12 +163,7 @@ icon_state = icon_creating sleep(30) icon_state = icon_on - metal -= metal_cost - glass -= glass_cost - if(metal < 0) - metal = 0 - if(glass < 0) - glass = 0 + materials.use_amount(using_materials) if(power_used) use_power(power_used) new dispense_type(loc) @@ -197,19 +198,16 @@ return if(!user.canUseTopic(src)) return - stack = Clamp(stack, 0, sheets.max_amount) - sheets.use(stack) - if(!stack) - if(!user.unEquip(O)) - user << "[O] is stuck to your hand, you can't get it off!" - return - user.drop_item() - O.loc = src - metal += O.materials[MAT_METAL] * stack - glass += O.materials[MAT_GLASS] * stack - user << "You insert [stack] sheet[stack > 1 ? "s" : ""] to [src]." - if((O && O.loc == src) || !stack) - qdel(O) + if(!user.canUnEquip(sheets)) + user << "[O] is stuck to your hand, you can't get it off!" + return + stack = Clamp(stack, 1, sheets.max_amount) + stack = materials.insert_stack(sheets, stack) + if(stack) + user << "You insert [stack] sheet[stack > 1 ? "s" : ""] into [src]." + else + user << "The [src] can't use [sheets]." + else if(istype(O, /obj/item/weapon/weldingtool)) if(stat & BROKEN) var/obj/item/weapon/weldingtool/WT = O diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index 77028a43d1a..d3e9e6727dc 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -323,9 +323,9 @@ Class Procs: add_fingerprint(user) return 0 -/obj/machinery/CheckParts() +/obj/machinery/CheckParts(list/parts_list) + ..() RefreshParts() - return /obj/machinery/proc/RefreshParts() //Placeholder proc for machines that are built using frames. return diff --git a/code/game/machinery/recycler.dm b/code/game/machinery/recycler.dm index a37a0e4d14e..319ce51d949 100644 --- a/code/game/machinery/recycler.dm +++ b/code/game/machinery/recycler.dm @@ -8,13 +8,15 @@ var/const/SAFETY_COOLDOWN = 100 layer = MOB_LAYER+1 // Overhead anchored = 1 density = 1 - var/safety_mode = 0 // Temporality stops the machine if it detects a mob - var/grinding = 0 + var/safety_mode = FALSE // Temporarily stops machine if it detects a mob var/icon_name = "grinder-o" var/blood = 0 var/eat_dir = WEST var/amount_produced = 1 var/datum/material_container/materials + var/crush_damage = 1000 + var/eat_victim_items = TRUE + var/item_recycle_sound = 'sound/items/Welder.ogg' /obj/machinery/recycler/New() ..() @@ -72,9 +74,9 @@ var/const/SAFETY_COOLDOWN = 100 /obj/machinery/recycler/emag_act(mob/user) if(!emagged) - emagged = 1 + emagged = TRUE if(safety_mode) - safety_mode = 0 + safety_mode = FALSE update_icon() playsound(src.loc, "sparks", 75, 1, -1) user << "You use the cryptographic sequencer on the [src.name]." @@ -83,7 +85,7 @@ var/const/SAFETY_COOLDOWN = 100 ..() var/is_powered = !(stat & (BROKEN|NOPOWER)) if(safety_mode) - is_powered = 0 + is_powered = FALSE icon_state = icon_name + "[is_powered]" + "[(blood ? "bld" : "")]" // add the blood tag at the end // This is purely for admin possession !FUN!. @@ -104,24 +106,34 @@ var/const/SAFETY_COOLDOWN = 100 var/move_dir = get_dir(loc, AM.loc) if(move_dir == eat_dir) + eat(AM) + +/obj/machinery/recycler/proc/eat(atom/AM0, sound=TRUE) + var/list/to_eat = list(AM0) + if(istype(AM0, /obj/item)) + to_eat += AM0.GetAllContents() + var/items_recycled = 0 + + for(var/i in to_eat) + var/atom/movable/AM = i if(isliving(AM)) if(emagged) - eat(AM) + crush_living(AM) else - stop(AM) + emergency_stop(AM) else if(istype(AM, /obj/item)) - recycle(AM) - else // Can't recycle + recycle_item(AM) + items_recycled++ + else playsound(src.loc, 'sound/machines/buzz-sigh.ogg', 50, 0) AM.loc = src.loc -/obj/machinery/recycler/proc/recycle(obj/item/I, sound = 1) - I.loc = src.loc - if(!istype(I)) - return + if(items_recycled && sound) + playsound(src.loc, item_recycle_sound, 50, 1) + +/obj/machinery/recycler/proc/recycle_item(obj/item/I) + I.loc = src.loc - if(sound) - playsound(src.loc, 'sound/items/Welder.ogg', 50, 1) var/material_amount = materials.get_item_material_amount(I) if(!material_amount) qdel(I) @@ -131,18 +143,18 @@ var/const/SAFETY_COOLDOWN = 100 materials.retrieve_all() -/obj/machinery/recycler/proc/stop(mob/living/L) +/obj/machinery/recycler/proc/emergency_stop(mob/living/L) playsound(src.loc, 'sound/machines/buzz-sigh.ogg', 50, 0) - safety_mode = 1 + safety_mode = TRUE update_icon() L.loc = src.loc spawn(SAFETY_COOLDOWN) playsound(src.loc, 'sound/machines/ping.ogg', 50, 0) - safety_mode = 0 + safety_mode = FALSE update_icon() -/obj/machinery/recycler/proc/eat(mob/living/L) +/obj/machinery/recycler/proc/crush_living(mob/living/L) L.loc = src.loc @@ -151,22 +163,23 @@ var/const/SAFETY_COOLDOWN = 100 else playsound(src.loc, 'sound/effects/splat.ogg', 50, 1) - var/gib = 1 + var/gib = TRUE // By default, the emagged recycler will gib all non-carbons. (human simple animal mobs don't count) if(iscarbon(L)) - gib = 0 + gib = FALSE if(L.stat == CONSCIOUS) L.say("ARRRRRRRRRRRGH!!!") add_blood(L) if(!blood && !issilicon(L)) - blood = 1 + blood = TRUE update_icon() - // Remove and recycle the equipped items. - for(var/obj/item/I in L.get_equipped_items()) - if(L.unEquip(I)) - recycle(I, 0) + // Remove and recycle the equipped items + if(eat_victim_items) + for(var/obj/item/I in L.get_equipped_items()) + if(L.unEquip(I)) + eat(I, sound=FALSE) // Instantly lie down, also go unconscious from the pain, before you die. L.Paralyse(5) @@ -175,9 +188,13 @@ var/const/SAFETY_COOLDOWN = 100 if(gib || emagged == 2) L.gib() else if(emagged == 1) - L.adjustBruteLoss(1000) - + L.adjustBruteLoss(crush_damage) +/obj/machinery/recycler/deathtrap + name = "dangerous old crusher" + emagged = TRUE + crush_damage = 120 + flags = NODECONSTRUCT /obj/item/weapon/paper/recycler name = "paper - 'garbage duty instructions'" diff --git a/code/game/machinery/spaceheater.dm b/code/game/machinery/spaceheater.dm index ed76ccd8768..1ee601cc453 100644 --- a/code/game/machinery/spaceheater.dm +++ b/code/game/machinery/spaceheater.dm @@ -224,6 +224,7 @@ if(target == "input") target = input("New target temperature:", name, round(targetTemperature - T0C, 1)) as num|null if(!isnull(target) && !..()) + target += T0C . = TRUE else if(adjust) target = targetTemperature + adjust diff --git a/code/game/machinery/syndicatebomb.dm b/code/game/machinery/syndicatebomb.dm index 79bc642c579..a947c472511 100644 --- a/code/game/machinery/syndicatebomb.dm +++ b/code/game/machinery/syndicatebomb.dm @@ -413,7 +413,8 @@ return ..() -/obj/item/weapon/bombcore/chemical/CheckParts() +/obj/item/weapon/bombcore/chemical/CheckParts(list/parts_list) + ..() // Using different grenade casings, causes the payload to have different properties. var/obj/item/weapon/stock_parts/matter_bin/MB = locate(/obj/item/weapon/stock_parts/matter_bin) in src if(MB) diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm index d4d6b8ea72b..eb062334719 100644 --- a/code/game/machinery/washing_machine.dm +++ b/code/game/machinery/washing_machine.dm @@ -2,306 +2,245 @@ name = "washing machine" desc = "Gets rid of those pesky bloodstains, or your money back!" icon = 'icons/obj/machines/washing_machine.dmi' - icon_state = "wm_10" + icon_state = "wm_1_0" density = 1 anchored = 1 - var/state = 1 - //1 = empty, open door - //2 = empty, closed door - //3 = full, open door - //4 = full, closed door - //5 = running - //6 = blood, open door - //7 = blood, closed door - //8 = blood, running - var/gibs_ready = 0 - var/obj/crayon - var/obj/paper + state_open = 1 + var/busy = 0 + var/bloody_mess = 0 + var/has_corgi = 0 + var/obj/item/color_source + var/max_wash_capacity = 5 + +/obj/machinery/washing_machine/examine(mob/user) + ..() + user << "Alt-click it to start a wash cycle." /obj/machinery/washing_machine/AltClick(mob/user) if(!user.canUseTopic(src)) return - if( state != 4 ) - usr << "The washing machine cannot run in this state." + if(busy) return - if( locate(/mob,contents) ) - state = 8 - else - state = 5 + if(state_open) + user << "Close the door first" + return + + if(bloody_mess) + user << "[src] must be cleaned up first." + return + + if(has_corgi) + bloody_mess = 1 + + busy = 1 update_icon() sleep(200) - for(var/atom/A in contents) - A.clean_blood() + wash_cycle() - //Tanning! - for(var/obj/item/stack/sheet/hairlesshide/HH in contents) - var/obj/item/stack/sheet/wetleather/WL = new(src) - WL.amount = HH.amount - qdel(HH) - - //Corgi costume says goodbye - for(var/obj/item/clothing/suit/hooded/ian_costume/IC in contents) - new /obj/item/weapon/reagent_containers/food/snacks/meat/slab/corgi(src) - qdel(IC) - - for(var/obj/item/weapon/paper/P in contents) - if(crayon) - var/dye_color - if(istype(crayon,/obj/item/toy/crayon)) - var/obj/item/toy/crayon/CR = crayon - dye_color = CR.paint_color - if(dye_color) - P.color = dye_color - qdel(crayon) - crayon = null - - if(crayon) - var/wash_color - if(istype(crayon,/obj/item/toy/crayon)) - var/obj/item/toy/crayon/CR = crayon - wash_color = CR.paint_color - else if(istype(crayon,/obj/item/weapon/stamp)) - var/obj/item/weapon/stamp/ST = crayon - wash_color = ST.item_color - - - if(wash_color) - var/new_jumpsuit_icon_state = "" - var/new_jumpsuit_item_state = "" - var/new_jumpsuit_name = "" - var/new_can_adjust - var/new_glove_icon_state = "" - var/new_glove_item_state = "" - var/new_glove_name = "" - var/new_shoe_icon_state = "" - var/new_shoe_name = "" - var/new_sheet_icon_state = "" - var/new_sheet_name = "" - var/new_softcap_icon_state = "" - var/new_softcap_name = "" - var/new_desc = "The colors are a bit dodgy." - for(var/T in typesof(/obj/item/clothing/under/color)) - var/obj/item/clothing/under/color/J = new T - //world << "DEBUG: [wash_color] == [J.item_color]" - if(wash_color == J.item_color) - new_jumpsuit_icon_state = J.icon_state - new_jumpsuit_item_state = J.item_state - new_jumpsuit_name = J.name - new_can_adjust = J.can_adjust - qdel(J) - break - qdel(J) - for(var/T in typesof(/obj/item/clothing/gloves/color)) - var/obj/item/clothing/gloves/color/G = new T - if(wash_color == G.item_color) - new_glove_icon_state = G.icon_state - new_glove_item_state = G.item_state - new_glove_name = G.name - qdel(G) - break - qdel(G) - for(var/T in typesof(/obj/item/clothing/shoes/sneakers)) - var/obj/item/clothing/shoes/sneakers/S = new T - if(wash_color == S.item_color) - new_shoe_icon_state = S.icon_state - new_shoe_name = S.name - qdel(S) - break - qdel(S) - for(var/T in typesof(/obj/item/weapon/bedsheet)) - var/obj/item/weapon/bedsheet/B = new T - if(wash_color == B.item_color) - new_sheet_icon_state = B.icon_state - new_sheet_name = B.name - qdel(B) - break - qdel(B) - for(var/T in typesof(/obj/item/clothing/head/soft)) - var/obj/item/clothing/head/soft/H = new T - if(wash_color == H.item_color) - new_softcap_icon_state = H.icon_state - new_softcap_name = H.name - qdel(H) - break - qdel(H) - if(new_jumpsuit_icon_state && new_jumpsuit_item_state && new_jumpsuit_name) - for(var/obj/item/clothing/under/color/J in contents) - J.item_state = new_jumpsuit_item_state - J.icon_state = new_jumpsuit_icon_state - J.item_color = wash_color - J.name = new_jumpsuit_name - J.desc = new_desc - J.suit_color = wash_color - J.can_adjust = new_can_adjust - if(new_glove_icon_state && new_glove_item_state && new_glove_name) - for(var/obj/item/clothing/gloves/color/G in contents) - G.item_state = new_glove_item_state - G.icon_state = new_glove_icon_state - G.item_color = wash_color - G.name = new_glove_name - G.desc = new_desc - if(new_shoe_icon_state && new_shoe_name) - for(var/obj/item/clothing/shoes/sneakers/S in contents) - if (S.chained == 1) - S.chained = 0 - S.slowdown = SHOES_SLOWDOWN - new /obj/item/weapon/restraints/handcuffs( src ) - S.icon_state = new_shoe_icon_state - S.item_color = wash_color - S.name = new_shoe_name - S.desc = new_desc - if(new_sheet_icon_state && new_sheet_name) - for(var/obj/item/weapon/bedsheet/B in contents) - B.icon_state = new_sheet_icon_state - B.item_color = wash_color - B.name = new_sheet_name - B.desc = new_desc - if(new_softcap_icon_state && new_softcap_name) - for(var/obj/item/clothing/head/soft/H in contents) - H.icon_state = new_softcap_icon_state - H.item_color = wash_color - H.name = new_softcap_name - H.desc = new_desc - qdel(crayon) - crayon = null +/obj/machinery/washing_machine/clean_blood() + ..() + if(!busy) + bloody_mess = 0 + update_icon() - if( locate(/mob,contents) ) - state = 7 - gibs_ready = 1 - else - state = 4 +/obj/machinery/washing_machine/proc/wash_cycle() + for(var/X in contents) + var/atom/movable/AM = X + AM.clean_blood() + AM.machine_wash(src) + + busy = 0 + if(color_source) + qdel(color_source) + color_source = null update_icon() -/obj/machinery/washing_machine/verb/climb_out() - set name = "Climb out" - set category = "Object" - set src in usr.loc - sleep(20) - if(state in list(1,3,6) ) - usr.loc = src.loc +//what happens to this object when washed inside a washing machine +/atom/movable/proc/machine_wash(obj/machinery/washing_machine/WM) + return + +/obj/item/stack/sheet/hairlesshide/machine_wash(obj/machinery/washing_machine/WM) + var/obj/item/stack/sheet/wetleather/WL = new(loc) + WL.amount = amount + qdel(src) + +/obj/item/clothing/suit/hooded/ian_costume/machine_wash(obj/machinery/washing_machine/WM) + new /obj/item/weapon/reagent_containers/food/snacks/meat/slab/corgi(loc) + qdel(src) + +/obj/item/weapon/paper/machine_wash(obj/machinery/washing_machine/WM) + if(WM.color_source) + if(istype(WM.color_source,/obj/item/toy/crayon)) + var/obj/item/toy/crayon/CR = WM.color_source + color = CR.paint_color + +/mob/living/simple_animal/pet/dog/corgi/machine_wash(obj/machinery/washing_machine/WM) + gib() + +/obj/item/clothing/under/color/machine_wash(obj/machinery/washing_machine/WM) + jumpsuit_wash(WM) + +/obj/item/clothing/under/rank/machine_wash(obj/machinery/washing_machine/WM) + jumpsuit_wash(WM) + +/obj/item/clothing/under/proc/jumpsuit_wash(obj/machinery/washing_machine/WM) + if(WM.color_source) + var/wash_color = WM.color_source.item_color + var/obj/item/clothing/under/U + for(var/T in typesof(/obj/item/clothing/under/color)) + var/obj/item/clothing/under/color/J = T + if(wash_color == initial(J.item_color)) + U = J + break + if(!U) + for(var/T in typesof(/obj/item/clothing/under/rank)) + var/obj/item/clothing/under/rank/R = T + if(wash_color == initial(R.item_color)) + U = R + break + if(U) + item_state = initial(U.item_state) + icon_state = initial(U.icon_state) + item_color = wash_color + name = initial(U.name) + desc = "The colors are a bit dodgy." + can_adjust = initial(U.can_adjust) + if(!can_adjust && adjusted) //we deadjust the uniform if it's now unadjustable + toggle_jumpsuit_adjust() + +/obj/item/clothing/gloves/color/machine_wash(obj/machinery/washing_machine/WM) + if(WM.color_source) + var/wash_color = WM.color_source.item_color + for(var/T in typesof(/obj/item/clothing/gloves/color)) + var/obj/item/clothing/gloves/color/G = T + if(wash_color == initial(G.item_color)) + item_state = initial(G.item_state) + icon_state = initial(G.icon_state) + item_color = wash_color + name = initial(G.name) + desc = "The colors are a bit dodgy." + break + +/obj/item/clothing/shoes/sneakers/machine_wash(obj/machinery/washing_machine/WM) + if(chained) + chained = 0 + slowdown = SHOES_SLOWDOWN + new /obj/item/weapon/restraints/handcuffs(loc) + if(WM.color_source) + var/wash_color = WM.color_source.item_color + for(var/T in typesof(/obj/item/clothing/shoes/sneakers)) + var/obj/item/clothing/shoes/sneakers/S = T + if(wash_color == initial(S.item_color)) + icon_state = initial(S.icon_state) + item_color = wash_color + name = initial(S.name) + desc = "The colors are a bit dodgy." + break + +/obj/item/weapon/bedsheet/machine_wash(obj/machinery/washing_machine/WM) + if(WM.color_source) + var/wash_color = WM.color_source.item_color + for(var/T in typesof(/obj/item/weapon/bedsheet)) + var/obj/item/weapon/bedsheet/B = T + if(wash_color == initial(B.item_color)) + icon_state = initial(B.icon_state) + item_color = wash_color + name = initial(B.name) + desc = "The colors are a bit dodgy." + break + +/obj/item/clothing/head/soft/machine_wash(obj/machinery/washing_machine/WM) + if(WM.color_source) + var/wash_color = WM.color_source.item_color + for(var/T in typesof(/obj/item/clothing/head/soft)) + var/obj/item/clothing/head/soft/H = T + if(wash_color == initial(H.item_color)) + icon_state = initial(H.icon_state) + item_color = wash_color + name = initial(H.name) + desc = "The colors are a bit dodgy." + break + + +/obj/machinery/washing_machine/relaymove(mob/user) + container_resist(user) + +/obj/machinery/washing_machine/container_resist(mob/user) + if(!busy) + add_fingerprint(user) + open_machine() + /obj/machinery/washing_machine/update_icon() - icon_state = "wm_[state]0" + overlays.Cut() + if(busy) + icon_state = "wm_running_[bloody_mess]" + else if(bloody_mess) + icon_state = "wm_[state_open]_blood" + else + var/full = contents.len ? 1 : 0 + icon_state = "wm_[state_open]_[full]" + if(panel_open) + overlays += image(icon, icon_state = "wm_panel") /obj/machinery/washing_machine/attackby(obj/item/weapon/W, mob/user, params) - if(istype(W,/obj/item/toy/crayon) ||istype(W,/obj/item/weapon/stamp)) - if( state in list( 1, 3, 6 ) ) - if(!crayon) - if(!user.drop_item()) - return - crayon = W - crayon.loc = src - else - ..() - else - ..() + if(default_deconstruction_screwdriver(user, null, null, W)) + update_icon() + return else if(istype(W,/obj/item/weapon/grab)) - if(state == 1) + if(state_open) var/obj/item/weapon/grab/G = W if(iscorgi(G.affecting)) + has_corgi = 1 G.affecting.loc = src qdel(G) - state = 3 - else - ..() + update_icon() - else if(istype(W,/obj/item/stack/sheet/hairlesshide) || \ - istype(W,/obj/item/clothing/under) || \ - istype(W,/obj/item/clothing/mask) || \ - istype(W,/obj/item/clothing/head) || \ - istype(W,/obj/item/clothing/gloves) || \ - istype(W,/obj/item/clothing/shoes) || \ - istype(W,/obj/item/clothing/suit) || \ - istype(W,/obj/item/weapon/bedsheet) || \ - istype(W,/obj/item/weapon/paper)) + else if(user.a_intent != "harm") - //YES, it's hardcoded... saves a var/can_be_washed for every single clothing item. - if ( istype(W,/obj/item/clothing/suit/space ) ) - user << "This item does not fit." - return - if ( istype(W,/obj/item/clothing/suit/syndicatefake ) ) - user << "This item does not fit." - return -// if ( istype(W,/obj/item/clothing/suit/powered ) ) -// user << "This item does not fit." -// return - if ( istype(W,/obj/item/clothing/suit/cyborg_suit ) ) - user << "This item does not fit." - return - if ( istype(W,/obj/item/clothing/suit/bomb_suit ) ) - user << "This item does not fit." - return - if ( istype(W,/obj/item/clothing/suit/armor ) ) - user << "This item does not fit." - return - if ( istype(W,/obj/item/clothing/suit/armor ) ) - user << "This item does not fit." - return - if ( istype(W,/obj/item/clothing/mask/gas ) ) - user << "This item does not fit." - return - if ( istype(W,/obj/item/clothing/mask/cigarette ) ) - user << "This item does not fit." - return - if ( istype(W,/obj/item/clothing/head/syndicatefake ) ) - user << "This item does not fit." - return - if ( istype(W,/obj/item/clothing/head/helmet ) ) - user << "This item does not fit." - return - if(W.flags & NODROP) //if "can't drop" item - user << "\The [W] is stuck to your hand, you cannot put it in the washing machine!" - return + if (!state_open) + user << "Open the door first!" + return 1 - if(contents.len < 5) - if ( state in list(1, 3) ) - if(!user.drop_item()) - return - W.loc = src - state = 3 - else - user << "You can't put the item in right now!" - else + if(bloody_mess) + user << "[src] must be cleaned up first." + return 1 + + if(contents.len >= max_wash_capacity) user << "The washing machine is full!" + return 1 + + if(!user.unEquip(W)) + user << "\The [W] is stuck to your hand, you cannot put it in the washing machine!" + return 1 + + if(istype(W,/obj/item/toy/crayon) || istype(W,/obj/item/weapon/stamp)) + color_source = W + W.loc = src + update_icon() + else - ..() - update_icon() + return ..() /obj/machinery/washing_machine/attack_hand(mob/user) - switch(state) - if(1) - state = 2 - if(2) - state = 1 - for(var/atom/movable/O in contents) - O.loc = src.loc - if(3) - state = 4 - if(4) - state = 3 - for(var/atom/movable/O in contents) - O.loc = src.loc - crayon = null - state = 1 - if(5) - user << "The [src] is busy." - if(6) - state = 7 - if(7) - if(gibs_ready) - gibs_ready = 0 - if(locate(/mob,contents)) - var/mob/M = locate(/mob,contents) - M.gib() - for(var/atom/movable/O in contents) - O.loc = src.loc - crayon = null - state = 1 + if(busy) + user << "[src] is busy." + return + + if(!state_open) + open_machine() + else + state_open = 0 //close the door + update_icon() - update_icon() +/obj/machinery/washing_machine/open_machine(drop = 1) + ..() + density = 1 //because machinery/open_machine() sets it to 0 + color_source = null + has_corgi = 0 diff --git a/code/game/mecha/combat/combat.dm b/code/game/mecha/combat/combat.dm index 17aa0d4288b..7bb81bc54e0 100644 --- a/code/game/mecha/combat/combat.dm +++ b/code/game/mecha/combat/combat.dm @@ -4,6 +4,7 @@ damage_absorption = list("brute"=0.7,"fire"=1,"bullet"=0.7,"laser"=0.85,"energy"=1,"bomb"=0.8) /obj/mecha/combat/CheckParts(atom/holder) + ..() var/obj/item/weapon/stock_parts/capacitor/C = locate() in holder var/obj/item/weapon/stock_parts/scanning_module/SM = locate() in holder step_energy_drain = 20 - (5 * SM.rating) //10 is normal, so on lowest part its worse, on second its ok and on higher its real good up to 0 on best diff --git a/code/game/mecha/equipment/tools/mining_tools.dm b/code/game/mecha/equipment/tools/mining_tools.dm index a43d273ac65..a5363b7795a 100644 --- a/code/game/mecha/equipment/tools/mining_tools.dm +++ b/code/game/mecha/equipment/tools/mining_tools.dm @@ -113,6 +113,7 @@ icon_state = "mecha_analyzer" origin_tech = "materials=3;engineering=2" selectable = 0 + equip_cooldown = 30 var/scanning = 0 /obj/item/mecha_parts/mecha_equipment/mining_scanner/New() diff --git a/code/game/mecha/mech_bay.dm b/code/game/mecha/mech_bay.dm index c3847474e60..9ab089a34ff 100644 --- a/code/game/mecha/mech_bay.dm +++ b/code/game/mecha/mech_bay.dm @@ -94,36 +94,35 @@ return interact(user) -/obj/machinery/computer/mech_bay_power_console/interact(mob/user) - var/data - if(!recharge_port) - data += "

No recharging port detected.

" - data += "Reconnect" - else - data += "

Mech status

" - if(!recharge_port.recharging_mech) - data += "
No mech detected.
" - else - data += "
Integrity: [recharge_port.recharging_mech.health]
" +/obj/machinery/computer/mech_bay_power_console/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, datum/tgui/master_ui = null, datum/ui_state/state = default_state) + ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) + if(!ui) + ui = new(user, src, ui_key, "mech_bay_power_console", "Mech Bay Power Control Console", 400, 170, master_ui, state) + ui.open() - if(!recharge_port.recharging_mech.cell) - data += "WARNING : the mech cell is missing!
" - else if(recharge_port.recharging_mech.cell.crit_fail) - data += "WARNING : the mech cell seems faulty!" - else - data += "Power: [recharge_port.recharging_mech.cell.charge]/[recharge_port.recharging_mech.cell.maxcharge]" - - var/datum/browser/popup = new(user, "mech recharger", name, 300, 300) - popup.set_content(data) - popup.open() - return - -/obj/machinery/computer/mech_bay_power_console/Topic(href, href_list) +/obj/machinery/computer/mech_bay_power_console/ui_act(action, params) if(..()) return - if(href_list["reconnect"]) - reconnect() - updateUsrDialog() + switch(action) + if("reconnect") + reconnect() + . = TRUE + update_icon() + +/obj/machinery/computer/mech_bay_power_console/ui_data(mob/user) + var/list/data = list() + if(recharge_port && !qdeleted(recharge_port)) + data["recharge_port"] = list("mech" = null) + if(recharge_port.recharging_mech && !qdeleted(recharge_port.recharging_mech)) + data["recharge_port"]["mech"] = list("health" = recharge_port.recharging_mech.health, "maxhealth" = initial(recharge_port.recharging_mech.health), "cell" = null) + if(recharge_port.recharging_mech.cell && !qdeleted(recharge_port.recharging_mech.cell)) + data["recharge_port"]["mech"]["cell"] = list( + "critfail" = recharge_port.recharging_mech.cell.crit_fail, + "charge" = recharge_port.recharging_mech.cell.charge, + "maxcharge" = recharge_port.recharging_mech.cell.maxcharge + ) + return data + /obj/machinery/computer/mech_bay_power_console/proc/reconnect() if(recharge_port) @@ -142,11 +141,6 @@ else recharge_port = null -/obj/machinery/computer/mech_bay_power_console/process() - if(recharge_port && recharge_port.recharging_mech && recharge_port.recharging_mech.cell) - updateDialog() - - /obj/machinery/computer/mech_bay_power_console/update_icon() ..() if(!recharge_port || !recharge_port.recharging_mech || !recharge_port.recharging_mech.cell || !(recharge_port.recharging_mech.cell.charge < recharge_port.recharging_mech.cell.maxcharge) || stat & (NOPOWER|BROKEN)) diff --git a/code/game/objects/effects/decals/misc.dm b/code/game/objects/effects/decals/misc.dm index 99f894aa392..8daf88c6c42 100644 --- a/code/game/objects/effects/decals/misc.dm +++ b/code/game/objects/effects/decals/misc.dm @@ -22,4 +22,17 @@ name = "chemicals" icon = 'icons/obj/chempuff.dmi' pass_flags = PASSTABLE | PASSGRILLE - layer = 5 \ No newline at end of file + layer = 5 + +/obj/effect/decal/sandeffect + name = "sandy tile" + icon = 'icons/turf/floors.dmi' + icon_state = "sandeffect" + layer = 2 + +/obj/effect/decal/fakelattice + name = "lattice" + desc = "A lightweight support lattice." + icon = 'icons/obj/smooth_structures/lattice.dmi' + icon_state = "lattice" + density = 1 \ No newline at end of file diff --git a/code/game/objects/effects/overlays.dm b/code/game/objects/effects/overlays.dm index 0c0b566390a..c929d74e5ca 100644 --- a/code/game/objects/effects/overlays.dm +++ b/code/game/objects/effects/overlays.dm @@ -43,10 +43,12 @@ icon_state = "heal" duration = 15 -/obj/effect/overlay/temp/heal/New() +/obj/effect/overlay/temp/heal/New(loc, colour) ..() pixel_x = rand(-12, 12) pixel_y = rand(-9, 0) + if(colour) + color = colour /obj/effect/overlay/temp/explosion name = "explosion" @@ -90,6 +92,24 @@ randomdir = 0 duration = 10 +/obj/effect/overlay/temp/cult/sparks + randomdir = 1 + name = "blood sparks" + icon_state = "bloodsparkles" + +/obj/effect/overlay/temp/cult/phase + name = "phase glow" + duration = 7 + icon_state = "cultin" + +/obj/effect/overlay/temp/cult/phase/New(loc, set_dir) + ..() + if(set_dir) + dir = set_dir + +/obj/effect/overlay/temp/cult/phase/out + icon_state = "cultout" + /obj/effect/overlay/temp/cult/sac name = "maw of Nar-Sie" icon_state = "sacconsume" diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 1536d5f1f85..7c61b5d152f 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -575,7 +575,22 @@ obj/item/proc/item_action_slot_check(slot, mob/user) /obj/item/proc/is_sharp() return sharpness -/obj/item/proc/can_dismember() - if((sharpness || damtype == BURN) && w_class >= 3) - return 1 - return 0 \ No newline at end of file +/obj/item/proc/get_dismemberment_chance(obj/item/bodypart/affecting) + if(affecting.can_dismember(src)) + if((sharpness || damtype == BURN) && w_class >= 3) + . = force*(w_class-1) + +/obj/item/proc/get_dismember_sound() + if(damtype == BURN) + . = 'sound/weapons/sear.ogg' + else + . = pick('sound/misc/desceration-01.ogg', 'sound/misc/desceration-02.ogg', 'sound/misc/desceration-03.ogg') + +/obj/item/proc/open_flame() + var/turf/location = loc + if(ismob(location)) + var/mob/M = location + if(M.l_hand == src || M.r_hand == src) + location = get_turf(M) + if(isturf(location)) + location.hotspot_expose(700, 5) diff --git a/code/game/objects/items/candle.dm b/code/game/objects/items/candle.dm index 9a20f3b8e37..eced5d1af07 100644 --- a/code/game/objects/items/candle.dm +++ b/code/game/objects/items/candle.dm @@ -1,22 +1,23 @@ #define CANDLE_LUMINOSITY 2 /obj/item/candle name = "red candle" - desc = "a candle" + desc = "In Greek myth, Prometheus stole fire from the Gods and gave it to \ + humankind. The jewelry he kept for himself." icon = 'icons/obj/candle.dmi' icon_state = "candle1" item_state = "candle1" w_class = 1 var/wax = 200 - var/lit = 0 - var/infinite = 0 - var/start_lit = 0 + var/lit = FALSE + var/infinite = FALSE + var/start_lit = FALSE heat = 1000 /obj/item/candle/New() ..() if(start_lit) // No visible message - light(null) + light(show_message = FALSE) /obj/item/candle/update_icon() var/i @@ -56,12 +57,13 @@ light() //honk return -/obj/item/candle/proc/light(flavor_text = "[usr] lights the [name].") +/obj/item/candle/proc/light(show_message) if(!src.lit) - src.lit = 1 + src.lit = TRUE //src.damtype = "fire" - if(flavor_text) - usr.visible_message(flavor_text) + if(show_message) + usr.visible_message( + "[usr] lights the [name].") SetLuminosity(CANDLE_LUMINOSITY) SSobj.processing |= src update_icon() @@ -79,14 +81,13 @@ M.unEquip(src, 1) //src is being deleted anyway qdel(src) update_icon() - if(istype(loc, /turf)) //start a fire if possible - var/turf/T = loc - T.hotspot_expose(700, 5) - + open_flame() /obj/item/candle/attack_self(mob/user) if(lit) - lit = 0 + user.visible_message( + "[user] snuffs [src].") + lit = FALSE update_icon() SetLuminosity(0) user.AddLuminosity(-CANDLE_LUMINOSITY) @@ -110,7 +111,7 @@ /obj/item/candle/infinite - infinite = 1 - start_lit = 1 + infinite = TRUE + start_lit = TRUE #undef CANDLE_LUMINOSITY diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm index c101d2fbb61..79848f024f5 100644 --- a/code/game/objects/items/crayons.dm +++ b/code/game/objects/items/crayons.dm @@ -1,43 +1,263 @@ + +/* + * Crayons + */ + +/obj/item/toy/crayon + name = "crayon" + desc = "A colourful crayon. Looks tasty. Mmmm..." + icon = 'icons/obj/crayons.dmi' + icon_state = "crayonred" + item_color = "red" + w_class = 1 + attack_verb = list("attacked", "coloured") + var/paint_color = "#FF0000" //RGB + var/drawtype = "rune" + var/text_buffer = "" + var/list/graffiti = list("amyjon","face","matt","revolution","engie","guy","end","dwarf","uboa","body","cyka","arrow","star","poseur tag") + var/list/letters = list("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z") + var/list/numerals = list("0","1","2","3","4","5","6","7","8","9") + var/list/oriented = list("arrow","body") // These turn to face the same way as the drawer + var/uses = 30 //-1 or less for unlimited uses + var/instant = 0 + var/dat + var/list/validSurfaces = list(/turf/open/floor) + var/gang = 0 //For marking territory + var/edible = 1 + +/obj/item/toy/crayon/suicide_act(mob/user) + user.visible_message("[user] is jamming the [src.name] up \his nose and into \his brain. It looks like \he's trying to commit suicide.") + return (BRUTELOSS|OXYLOSS) + +/obj/item/toy/crayon/New() + ..() + name = "[item_color] crayon" //Makes crayons identifiable in things like grinders + drawtype = pick(pick(graffiti), pick(letters), "rune[rand(1,6)]") + if(config) + if(config.mutant_races == 1) + graffiti |= "antilizard" + graffiti |= "prolizard" + +/obj/item/toy/crayon/initialize() + if(config.mutant_races == 1) + graffiti |= "antilizard" + graffiti |= "prolizard" + +/obj/item/toy/crayon/attack_self(mob/living/user) + update_window(user) + +/obj/item/toy/crayon/proc/update_window(mob/living/user) + dat += "

Currently selected: [drawtype]


" + dat += "Random letterPick letter/number" + dat += "Write" + dat += "
" + dat += "

Runes:


" + dat += "Random rune" + for(var/i = 1; i <= 6; i++) + dat += "Rune[i]" + if(!((i + 1) % 3)) //3 buttons in a row + dat += "
" + dat += "
" + graffiti.Find() + dat += "

Graffiti:


" + dat += "Random graffiti" + var/c = 1 + for(var/T in graffiti) + dat += "[T]" + if(!((c + 1) % 3)) //3 buttons in a row + dat += "
" + c++ + dat += "
" + var/datum/browser/popup = new(user, "crayon", name, 300, 500) + popup.set_content(dat) + popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) + popup.open() + dat = "" + +/obj/item/toy/crayon/proc/crayon_text_strip(text) + var/list/base = char_split(lowertext(text)) + var/list/out = list() + for(var/a in base) + if(a in (letters|numerals)) + out += a + return jointext(out,"") + +/obj/item/toy/crayon/Topic(href, href_list, hsrc) + var/temp = "a" + if(href_list["buffer"]) + text_buffer = crayon_text_strip(stripped_input(usr,"Choose what to write.", "Scribbles",default = text_buffer)) + if(href_list["type"]) + switch(href_list["type"]) + if("random_letter") + temp = pick(letters) + if("letter") + temp = input("Choose what to write.", "Scribbles") in (letters|numerals) + if("random_rune") + temp = "rune[rand(1,6)]" + if("random_graffiti") + temp = pick(graffiti) + else + temp = href_list["type"] + if ((usr.restrained() || usr.stat || usr.get_active_hand() != src)) + return + drawtype = temp + update_window(usr) + +/obj/item/toy/crayon/afterattack(atom/target, mob/user, proximity) + if(!proximity || !check_allowed_items(target)) return + if(!uses) + user << "There is no more of [src.name] left!" + if(!instant) + qdel(src) + return + if(istype(target, /obj/effect/decal/cleanable)) + target = target.loc + if(is_type_in_list(target,validSurfaces)) + + var/temp = "rune" + if(letters.Find(drawtype)) + temp = "letter" + else if(graffiti.Find(drawtype)) + temp = "graffiti" + else if(numerals.Find(drawtype)) + temp = "number" + + ////////////////////////// GANG FUNCTIONS + var/area/territory + var/gangID + if(gang) + //Determine gang affiliation + gangID = user.mind.gang_datum + + //Check area validity. Reject space, player-created areas, and non-station z-levels. + if(gangID) + territory = get_area(target) + if(territory && (territory.z == ZLEVEL_STATION) && territory.valid_territory) + //Check if this area is already tagged by a gang + if(!(locate(/obj/effect/decal/cleanable/crayon/gang) in target)) //Ignore the check if the tile being sprayed has a gang tag + if(territory_claimed(territory, user)) + return + if(locate(/obj/machinery/power/apc) in (user.loc.contents | target.contents)) + user << "You cannot tag here." + return + else + user << "[territory] is unsuitable for tagging." + return + ///////////////////////////////////////// + + var/graf_rot + if(oriented.Find(drawtype)) + switch(user.dir) + if(EAST) + graf_rot = 90 + if(SOUTH) + graf_rot = 180 + if(WEST) + graf_rot = 270 + else + graf_rot = 0 + + user << "You start [instant ? "spraying" : "drawing"] a [temp] on the [target.name]..." + if(instant) + playsound(user.loc, 'sound/effects/spray.ogg', 5, 1, 5) + if((instant>0) || do_after(user, 50, target = target)) + + if(length(text_buffer)) + drawtype = copytext(text_buffer,1,2) + text_buffer = copytext(text_buffer,2) + + //Gang functions + if(gangID) + //Delete any old markings on this tile, including other gang tags + if(!(locate(/obj/effect/decal/cleanable/crayon/gang) in target)) //Ignore the check if the tile being sprayed has a gang tag + if(territory_claimed(territory, user)) + return + for(var/obj/effect/decal/cleanable/crayon/old_marking in target) + qdel(old_marking) + new /obj/effect/decal/cleanable/crayon/gang(target,gangID,"graffiti",graf_rot) + user << "You tagged [territory] for your gang!" + + else + new /obj/effect/decal/cleanable/crayon(target,paint_color,drawtype,temp,graf_rot) + + user << "You finish [instant ? "spraying" : "drawing"] \the [temp]." + if(instant<0) + playsound(user.loc, 'sound/effects/spray.ogg', 5, 1, 5) + if(uses < 0) + return + uses = max(0,uses-1) + if(!uses) + user << "There is no more of [src.name] left!" + if(!instant) + qdel(src) + return + +/obj/item/toy/crayon/attack(mob/M, mob/user) + if(edible && (M == user)) + user << "You take a bite of the [src.name]. Delicious!" + user.nutrition += 5 + if(uses < 0) + return + uses = max(0,uses-5) + if(!uses) + user << "There is no more of [src.name] left!" + qdel(src) + else + ..() + +/obj/item/toy/crayon/proc/territory_claimed(area/territory,mob/user) + var/occupying_gang + for(var/datum/gang/G in ticker.mode.gangs) + if(territory.type in (G.territory|G.territory_new)) + occupying_gang = G.name + break + if(occupying_gang) + user << "[territory] has already been tagged by the [occupying_gang] gang! You must get rid of or spray over the old tag first!" + return 1 + return 0 + + + /obj/item/toy/crayon/red icon_state = "crayonred" paint_color = "#DA0000" - colourName = "red" + item_color = "red" /obj/item/toy/crayon/orange icon_state = "crayonorange" paint_color = "#FF9300" - colourName = "orange" + item_color = "orange" /obj/item/toy/crayon/yellow icon_state = "crayonyellow" paint_color = "#FFF200" - colourName = "yellow" + item_color = "yellow" /obj/item/toy/crayon/green icon_state = "crayongreen" paint_color = "#A8E61D" - colourName = "green" + item_color = "green" /obj/item/toy/crayon/blue icon_state = "crayonblue" paint_color = "#00B7EF" - colourName = "blue" + item_color = "blue" /obj/item/toy/crayon/purple icon_state = "crayonpurple" paint_color = "#DA00FF" - colourName = "purple" + item_color = "purple" /obj/item/toy/crayon/white icon_state = "crayonwhite" paint_color = "#FFFFFF" - colourName = "white" + item_color = "white" /obj/item/toy/crayon/mime icon_state = "crayonmime" desc = "A very sad-looking crayon." paint_color = "#FFFFFF" - colourName = "mime" + item_color = "mime" uses = -1 /obj/item/toy/crayon/mime/attack_self(mob/living/user) @@ -62,7 +282,7 @@ /obj/item/toy/crayon/rainbow icon_state = "crayonrainbow" paint_color = "#FFF000" - colourName = "rainbow" + item_color = "rainbow" uses = -1 /obj/item/toy/crayon/rainbow/attack_self(mob/living/user) @@ -110,12 +330,12 @@ /obj/item/weapon/storage/crayons/update_icon() overlays.Cut() for(var/obj/item/toy/crayon/crayon in contents) - overlays += image('icons/obj/crayons.dmi',crayon.colourName) + overlays += image('icons/obj/crayons.dmi',crayon.item_color) /obj/item/weapon/storage/crayons/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/toy/crayon)) var/obj/item/toy/crayon/C = W - switch(C.colourName) + switch(C.item_color) if("mime") usr << "This crayon is too sad to be contained in this box." return diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index ba14a0d3540..dec0a8d6acc 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -254,7 +254,7 @@ var/global/list/obj/item/device/pda/PDAs = list() if (3) dat += "

Atmospheric Readings

" - var/turf/T = get_turf(user.loc) + var/turf/T = user.loc if (isnull(T)) dat += "Unable to obtain a reading.
" else @@ -269,7 +269,7 @@ var/global/list/obj/item/device/pda/PDAs = list() if (total_moles) for(var/id in env_gases) var/gas_level = env_gases[id][MOLES]/total_moles - if(id in hardcoded_gases || gas_level > 0.001) + if(gas_level > 0) dat += "[env_gases[id][GAS_META][META_GAS_NAME]]: [round(gas_level*100, 0.01)]%
" dat += "Temperature: [round(environment.temperature-T0C)]°C
" diff --git a/code/game/objects/items/devices/PDA/PDA_types.dm b/code/game/objects/items/devices/PDA/PDA_types.dm index 3ee33acd12f..b3c9fa46254 100644 --- a/code/game/objects/items/devices/PDA/PDA_types.dm +++ b/code/game/objects/items/devices/PDA/PDA_types.dm @@ -9,7 +9,7 @@ /obj/item/device/pda/clown/Crossed(AM as mob|obj) if (istype(AM, /mob/living/carbon)) var/mob/living/carbon/M = AM - if(M.slip(8, 5, src, NO_SLIP_WHEN_WALKING)) + if(M.slip(0, 6, src, NO_SLIP_WHEN_WALKING)) if (ishuman(M) && (M.real_name != src.owner)) if (istype(src.cartridge, /obj/item/weapon/cartridge/clown)) var/obj/item/weapon/cartridge/clown/cart = src.cartridge @@ -197,4 +197,4 @@ /obj/item/device/pda/geneticist name = "geneticist PDA" default_cartridge = /obj/item/weapon/cartridge/medical - icon_state = "pda-genetics" \ No newline at end of file + icon_state = "pda-genetics" diff --git a/code/game/objects/items/devices/modificationkit.dm b/code/game/objects/items/devices/modificationkit.dm new file mode 100644 index 00000000000..f4de7b7491c --- /dev/null +++ b/code/game/objects/items/devices/modificationkit.dm @@ -0,0 +1,29 @@ +/obj/item/modkit + name = "modification kit" + desc = "A one-use kit, which enables kinetic accelerators to retain their \ + charge when away from a bioelectric source, renders them immune to \ + interference with other accelerators, as well as allowing less \ + dextrous races to use the tool." + icon = 'icons/obj/objects.dmi' + icon_state = "modkit" + origin_tech = "programming=2;materials=2;magnets=4" + var/uses = 1 + +/obj/item/modkit/afterattack(obj/item/weapon/gun/energy/kinetic_accelerator/C, mob/user) + ..() + if(!uses) + qdel(src) + return + if(!istype(C)) + user << "This kit can only modify kinetic \ + accelerators!" + return ..() + user <<"You modify the [C], adjusting the trigger \ + guard and internal capacitor." + C.name = "improved [C.name]" + C.holds_charge = TRUE + C.unique_frequency = TRUE + C.trigger_guard = TRIGGER_GUARD_ALLOW_ALL + uses-- + if(!uses) + qdel(src) diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 798a8ce3614..6102f97caee 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -300,6 +300,7 @@ MASS SPECTROMETER else user << "Plasma: [round(plasma_concentration*100, 0.01)] %" + for(var/id in env_gases) if(id in hardcoded_gases) continue diff --git a/code/game/objects/items/devices/traitordevices.dm b/code/game/objects/items/devices/traitordevices.dm index b722c70fb6d..688a5ebc37a 100644 --- a/code/game/objects/items/devices/traitordevices.dm +++ b/code/game/objects/items/devices/traitordevices.dm @@ -72,7 +72,7 @@ effective or pretty fucking useless. name = "health analyzer" icon_state = "health" item_state = "analyzer" - desc = "A hand-held body scanner able to distinguish vital signs of the subject. A strange microlaser is hooked on to the scanning end." + desc = "A hand-held body scanner able to distinguish vital signs of the subject." flags = CONDUCT slot_flags = SLOT_BELT throwforce = 3 diff --git a/code/game/objects/items/documents.dm b/code/game/objects/items/documents.dm index b3335fd4898..043fcd80cb0 100644 --- a/code/game/objects/items/documents.dm +++ b/code/game/objects/items/documents.dm @@ -50,8 +50,8 @@ user << "You have already forged a seal on [src]!" else var/obj/item/toy/crayon/C = O - name = "[C.colourName] secret documents" - icon_state = "docs_[C.colourName]" - forgedseal = C.colourName - user << "You forge the official seal with a [C.colourName] crayon. No one will notice... right?" + name = "[C.item_color] secret documents" + icon_state = "docs_[C.item_color]" + forgedseal = C.item_color + user << "You forge the official seal with a [C.item_color] crayon. No one will notice... right?" update_icon() \ No newline at end of file diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm index ce91a198c11..0b5fa01aff8 100644 --- a/code/game/objects/items/stacks/sheets/mineral.dm +++ b/code/game/objects/items/stacks/sheets/mineral.dm @@ -63,6 +63,7 @@ var/global/list/datum/stack_recipe/sandstone_recipes = list ( \ icon_state = "sandbags" singular_name = "sandbag" force = 5 + layer = 2.95 throwforce = 5 w_class = 3 throw_speed = 1 diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 6ff3d3ff714..24f20ce70c5 100755 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -323,223 +323,6 @@ attack_verb = list("attacked", "slashed", "stabbed", "sliced") hitsound = 'sound/weapons/bladeslice.ogg' -/* - * Crayons - */ - -/obj/item/toy/crayon - name = "crayon" - desc = "A colourful crayon. Looks tasty. Mmmm..." - icon = 'icons/obj/crayons.dmi' - icon_state = "crayonred" - w_class = 1 - attack_verb = list("attacked", "coloured") - var/paint_color = "#FF0000" //RGB - var/drawtype = "rune" - var/text_buffer = "" - var/list/graffiti = list("amyjon","face","matt","revolution","engie","guy","end","dwarf","uboa","body","cyka","arrow","star","poseur tag") - var/list/letters = list("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z") - var/list/numerals = list("0","1","2","3","4","5","6","7","8","9") - var/list/oriented = list("arrow","body") // These turn to face the same way as the drawer - var/uses = 30 //-1 or less for unlimited uses - var/instant = 0 - var/colourName = "red" //for updateIcon purposes - var/dat - var/list/validSurfaces = list(/turf/open/floor) - var/gang = 0 //For marking territory - var/edible = 1 - -/obj/item/toy/crayon/suicide_act(mob/user) - user.visible_message("[user] is jamming the [src.name] up \his nose and into \his brain. It looks like \he's trying to commit suicide.") - return (BRUTELOSS|OXYLOSS) - -/obj/item/toy/crayon/New() - ..() - name = "[colourName] crayon" //Makes crayons identifiable in things like grinders - drawtype = pick(pick(graffiti), pick(letters), "rune[rand(1,6)]") - if(config) - if(config.mutant_races == 1) - graffiti |= "antilizard" - graffiti |= "prolizard" - -/obj/item/toy/crayon/initialize() - if(config.mutant_races == 1) - graffiti |= "antilizard" - graffiti |= "prolizard" - -/obj/item/toy/crayon/attack_self(mob/living/user) - update_window(user) - -/obj/item/toy/crayon/proc/update_window(mob/living/user) - dat += "

Currently selected: [drawtype]


" - dat += "Random letterPick letter/number" - dat += "Write" - dat += "
" - dat += "

Runes:


" - dat += "Random rune" - for(var/i = 1; i <= 6; i++) - dat += "Rune[i]" - if(!((i + 1) % 3)) //3 buttons in a row - dat += "
" - dat += "
" - graffiti.Find() - dat += "

Graffiti:


" - dat += "Random graffiti" - var/c = 1 - for(var/T in graffiti) - dat += "[T]" - if(!((c + 1) % 3)) //3 buttons in a row - dat += "
" - c++ - dat += "
" - var/datum/browser/popup = new(user, "crayon", name, 300, 500) - popup.set_content(dat) - popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) - popup.open() - dat = "" - -/obj/item/toy/crayon/proc/crayon_text_strip(text) - var/list/base = char_split(lowertext(text)) - var/list/out = list() - for(var/a in base) - if(a in (letters|numerals)) - out += a - return jointext(out,"") - -/obj/item/toy/crayon/Topic(href, href_list, hsrc) - var/temp = "a" - if(href_list["buffer"]) - text_buffer = crayon_text_strip(stripped_input(usr,"Choose what to write.", "Scribbles",default = text_buffer)) - if(href_list["type"]) - switch(href_list["type"]) - if("random_letter") - temp = pick(letters) - if("letter") - temp = input("Choose what to write.", "Scribbles") in (letters|numerals) - if("random_rune") - temp = "rune[rand(1,6)]" - if("random_graffiti") - temp = pick(graffiti) - else - temp = href_list["type"] - if ((usr.restrained() || usr.stat || usr.get_active_hand() != src)) - return - drawtype = temp - update_window(usr) - -/obj/item/toy/crayon/afterattack(atom/target, mob/user, proximity) - if(!proximity || !check_allowed_items(target)) return - if(!uses) - user << "There is no more of [src.name] left!" - if(!instant) - qdel(src) - return - if(istype(target, /obj/effect/decal/cleanable)) - target = target.loc - if(is_type_in_list(target,validSurfaces)) - - var/temp = "rune" - if(letters.Find(drawtype)) - temp = "letter" - else if(graffiti.Find(drawtype)) - temp = "graffiti" - else if(numerals.Find(drawtype)) - temp = "number" - - ////////////////////////// GANG FUNCTIONS - var/area/territory - var/gangID - if(gang) - //Determine gang affiliation - gangID = user.mind.gang_datum - - //Check area validity. Reject space, player-created areas, and non-station z-levels. - if(gangID) - territory = get_area(target) - if(territory && (territory.z == ZLEVEL_STATION) && territory.valid_territory) - //Check if this area is already tagged by a gang - if(!(locate(/obj/effect/decal/cleanable/crayon/gang) in target)) //Ignore the check if the tile being sprayed has a gang tag - if(territory_claimed(territory, user)) - return - if(locate(/obj/machinery/power/apc) in (user.loc.contents | target.contents)) - user << "You cannot tag here." - return - else - user << "[territory] is unsuitable for tagging." - return - ///////////////////////////////////////// - - var/graf_rot - if(oriented.Find(drawtype)) - switch(user.dir) - if(EAST) - graf_rot = 90 - if(SOUTH) - graf_rot = 180 - if(WEST) - graf_rot = 270 - else - graf_rot = 0 - - user << "You start [instant ? "spraying" : "drawing"] a [temp] on the [target.name]..." - if(instant) - playsound(user.loc, 'sound/effects/spray.ogg', 5, 1, 5) - if((instant>0) || do_after(user, 50, target = target)) - - if(length(text_buffer)) - drawtype = copytext(text_buffer,1,2) - text_buffer = copytext(text_buffer,2) - - //Gang functions - if(gangID) - //Delete any old markings on this tile, including other gang tags - if(!(locate(/obj/effect/decal/cleanable/crayon/gang) in target)) //Ignore the check if the tile being sprayed has a gang tag - if(territory_claimed(territory, user)) - return - for(var/obj/effect/decal/cleanable/crayon/old_marking in target) - qdel(old_marking) - new /obj/effect/decal/cleanable/crayon/gang(target,gangID,"graffiti",graf_rot) - user << "You tagged [territory] for your gang!" - - else - new /obj/effect/decal/cleanable/crayon(target,paint_color,drawtype,temp,graf_rot) - - user << "You finish [instant ? "spraying" : "drawing"] \the [temp]." - if(instant<0) - playsound(user.loc, 'sound/effects/spray.ogg', 5, 1, 5) - if(uses < 0) - return - uses = max(0,uses-1) - if(!uses) - user << "There is no more of [src.name] left!" - if(!instant) - qdel(src) - return - -/obj/item/toy/crayon/attack(mob/M, mob/user) - if(edible && (M == user)) - user << "You take a bite of the [src.name]. Delicious!" - user.nutrition += 5 - if(uses < 0) - return - uses = max(0,uses-5) - if(!uses) - user << "There is no more of [src.name] left!" - qdel(src) - else - ..() - -/obj/item/toy/crayon/proc/territory_claimed(area/territory,mob/user) - var/occupying_gang - for(var/datum/gang/G in ticker.mode.gangs) - if(territory.type in (G.territory|G.territory_new)) - occupying_gang = G.name - break - if(occupying_gang) - user << "[territory] has already been tagged by the [occupying_gang] gang! You must get rid of or spray over the old tag first!" - return 1 - return 0 - /* * Snap pops */ @@ -674,50 +457,6 @@ icon_state = "reticenceprize" quiet = 1 -/* - * AI core prizes - */ -/obj/item/toy/AI - name = "toy AI" - desc = "A little toy model AI core with real law announcing action!" - icon = 'icons/obj/toy.dmi' - icon_state = "AI" - w_class = 2 - var/cooldown = 0 - -/obj/item/toy/AI/attack_self(mob/user) - if(!cooldown) //for the sanity of everyone - var/message = generate_ion_law() - user << "You press the button on [src]." - playsound(user, 'sound/machines/click.ogg', 20, 1) - src.loc.visible_message("\icon[src] [message]") - cooldown = 1 - spawn(30) cooldown = 0 - return - ..() - -/obj/item/toy/codex_gigas - name = "Toy Codex Gigas" - desc = "A tool to help you write fictional devils!" - icon = 'icons/obj/library.dmi' - icon_state = "demonomicon" - w_class = 2 - var/cooldown = 0 - -/obj/item/toy/codex_gigas/attack_self(mob/user) - if(!cooldown) - var/datum/devilinfo/devil = randomDevilInfo() - user << "You press the button on [src]." - cooldown = 1 - playsound(user, 'sound/machines/click.ogg', 20, 1) - src.loc.visible_message("\icon[src]Some fun facts about: [devil.truename]") - src.loc.visible_message("[lawlorify[LORE][devil.bane]]") - src.loc.visible_message("[lawlorify[LORE][devil.obligation]]") - src.loc.visible_message("[lawlorify[LORE][devil.ban]]") - src.loc.visible_message("[lawlorify[LORE][devil.banish]]") - spawn(60) cooldown = 0 - return - ..() /obj/item/toy/talking name = "talking action figure" @@ -725,37 +464,175 @@ icon = 'icons/obj/toy.dmi' icon_state = "owlprize" w_class = 2 - var/cooldown = 0 + var/cooldown = FALSE var/messages = list("I'm super generic!", "Mathematics class is of variable difficulty!") var/span = "danger" var/recharge_time = 30 + var/chattering = FALSE + var/phomeme + +// Talking toys are language universal, and thus all species can use them +/obj/item/toy/talking/attack_alien(mob/user) + . = attack_hand(user) + /obj/item/toy/talking/attack_self(mob/user) if(!cooldown) - var/message = pick(messages) - user << "You pull the string on the [src]." - toy_talk(user, message) - cooldown = 1 - spawn(recharge_time) cooldown = 0 + var/list/messages = generate_messages() + activation_message(user) + playsound(loc, 'sound/machines/click.ogg', 20, 1) + + spawn(0) + for(var/message in messages) + toy_talk(user, message) + sleep(10) + + cooldown = TRUE + spawn(recharge_time) + cooldown = FALSE return ..() -/obj/item/toy/talking/proc/toy_talk(user, message) - playsound(user, 'sound/machines/click.ogg', 20, 1) - src.loc.visible_message("\icon[src] [message]") +/obj/item/toy/talking/proc/activation_message(mob/user) + user.visible_message( + "[user] pulls the string on \the [src].", + "You pull the string on \the [src].", + "You hear a string being pulled.") + +/obj/item/toy/talking/proc/generate_messages() + return list(pick(messages)) + +/obj/item/toy/talking/proc/toy_talk(mob/user, message) + user.loc.visible_message("\icon[src] [message]") + if(chattering) + chatter(message, phomeme, user) + +/* + * AI core prizes + */ +/obj/item/toy/talking/AI + name = "toy AI" + desc = "A little toy model AI core with real law announcing action!" + icon_state = "AI" + +/obj/item/toy/talking/AI/generate_messages() + return list(generate_ion_law()) + +/obj/item/toy/talking/codex_gigas + name = "Toy Codex Gigas" + desc = "A tool to help you write fictional devils!" + icon = 'icons/obj/library.dmi' + icon_state = "demonomicon" + w_class = 2 + recharge_time = 60 + +/obj/item/toy/talking/codex_gigas/activation_message(mob/user) + user.visible_message( + "[user] presses the button on \the [src].", + "You press the button on \the [src].", + "You hear a soft click.") + +/obj/item/toy/talking/codex_gigas/generate_messages() + var/datum/devilinfo/devil = randomDevilInfo() + var/list/messages = list() + messages += "Some fun facts about: [devil.truename]" + messages += "[lawlorify[LORE][devil.bane]]" + messages += "[lawlorify[LORE][devil.obligation]]" + messages += "[lawlorify[LORE][devil.ban]]" + messages += "[lawlorify[LORE][devil.banish]]" + return messages /obj/item/toy/talking/owl name = "owl action figure" desc = "An action figure modeled after 'The Owl', defender of justice." icon_state = "owlprize" messages = list("You won't get away this time, Griffin!", "Stop right there, criminal!", "Hoot! Hoot!", "I am the night!") + chattering = TRUE + phomeme = "owl" /obj/item/toy/talking/griffin name = "griffin action figure" desc = "An action figure modeled after 'The Griffin', criminal mastermind." icon_state = "griffinprize" messages = list("You can't stop me, Owl!", "My plan is flawless! The vault is mine!", "Caaaawwww!", "You will never catch me!") + chattering = TRUE + phomeme = "griffin" +/obj/item/toy/talking/skeleton + name = "skeleton action figure" + desc = "An action figure modeled after 'Oh-cee', the original content \ + skeleton.\nNot suitable for infants or assistants under 36 months \ + of age." + icon_state = "skeletonprize" + attack_verb = list("boned", "dunked on", "worked down to the bone") + chattering = TRUE + + var/list/regular_messages = list( + "Why was the skeleton such a bad liar? \ + Because you can see right through him!", + "When does a skeleton laugh? When something tickles his funny bone!", + "Why couldn't the skeleton win the beauty contest? \ + Because he had no body!", + "What do you call a skeleton in the winter? A numbskull!", + "What did the skeleton say before eating? Bone appetit!", + "What type of art do skeletons like? Skulltures!", + "What instrument do skeletons play? The trom-bone!", + "Why are skeletons always so calm? \ + Because nothing gets under their skin!", + "How did the skeleton know it was going to rain? \ + He could feel it in his bones.", + "Why did the skeleton go to the hospital? \ + To get his ghoul stones removed.", + "Why can't skeletons play music in churches? \ + Because they have no organs.", + "There's a skeleton inside everyone! Except slime people I guess...", + "The birds are too busy to notice me acting in the shadows!", + "Giraffes have the same number of bones in their necks as humans. \ + You should never trust a giraffe.", + "When I meet a dog in the street, I always offer it a bone!", + "In corsetry, a bone is one of the rigid parts of a corset that \ + forms its frame and gives it rigidity.", + "A person who plays the trombone is called a trombonist or \ + trombone player.", + "Remember, compromise is for those without backbones!", + "If you go up to the captain and say the word 'bone' repeatedly, \ + eventually he'll brig you.", + "Yo ho ho, shiver me bones!", + "So what you're saying is, you only love me for my legs?", + "You will never again find socks that match!", + "BONES! BONES! BONES!", + "Bones absorb x-rays, which is why radiation gives you superpowers.", + "Oh-cee! The ORIGINAL CONTENT SKELETON. Suitable for ages 36 months \ + and up.", + "I just don't have the heart to judge you.", + "I don't have the stomach for this.", + "I'm a fighter, not a liver.", + "How can I see without eyeballs?", + "Ask your parents about 'boning', before you get pregnant.", + "Remember, a dog is for life, not just for christmas.") + +/obj/item/toy/talking/skeleton/suicide_act(mob/user) + user.visible_message("[user] is trying to commit \ + suicide with \the [src].") + + if(ishuman(user)) + var/mob/living/carbon/human/H = user + H.set_species(/datum/species/skeleton) + + toy_talk(user, "RATTLE ME BONES") + + user.Stun(5) + sleep(20) + return OXYLOSS + +/obj/item/toy/talking/skeleton/generate_messages() + return list(pick(regular_messages)) + +/obj/item/toy/talking/skeleton/toy_talk(user, message) + phomeme = pick("sans", "papyrus") + + span = "danger [phomeme]" + ..() /* || A Deck of Cards for playing various games of chance || diff --git a/code/game/objects/items/weapons/clown_items.dm b/code/game/objects/items/weapons/clown_items.dm index ccc8fc78ce6..a0279af71e9 100644 --- a/code/game/objects/items/weapons/clown_items.dm +++ b/code/game/objects/items/weapons/clown_items.dm @@ -134,4 +134,29 @@ desc = "Damn son, where'd you find this?" icon_state = "air_horn" honksound = 'sound/items/AirHorn2.ogg' - cooldowntime = 50 \ No newline at end of file + cooldowntime = 50 + +/obj/item/weapon/bikehorn/golden + name = "golden bike horn" + desc = "Golden? Clearly, its made with bananium! Honk!" + icon_state = "gold_horn" + item_state = "gold_horn" + +/obj/item/weapon/bikehorn/golden/attack() + ..() + flip_mobs() + +/obj/item/weapon/bikehorn/golden/attack_self(mob/user) + ..() + flip_mobs() + + +/obj/item/weapon/bikehorn/golden/proc/flip_mobs(mob/living/carbon/M, mob/user) + if (!spam_flag) + var/turf/T = get_turf(src) + for(M in ohearers(7, T)) + if(istype(M, /mob/living/carbon/human)) + var/mob/living/carbon/human/H = M + if((istype(H.ears, /obj/item/clothing/ears/earmuffs)) || H.ear_deaf) + continue + M.emote("flip") \ No newline at end of file diff --git a/code/game/objects/items/weapons/defib.dm b/code/game/objects/items/weapons/defib.dm index 5517716c4bf..c04ead47e26 100644 --- a/code/game/objects/items/weapons/defib.dm +++ b/code/game/objects/items/weapons/defib.dm @@ -65,7 +65,8 @@ ratio = Ceiling(ratio*4) * 25 overlays += "[initial(icon_state)]-charge[ratio]" -/obj/item/weapon/defibrillator/CheckParts() +/obj/item/weapon/defibrillator/CheckParts(list/parts_list) + ..() bcell = locate(/obj/item/weapon/stock_parts/cell) in contents update_icon() diff --git a/code/game/objects/items/weapons/flamethrower.dm b/code/game/objects/items/weapons/flamethrower.dm index fdfd0f7c4d6..218f2fba57c 100644 --- a/code/game/objects/items/weapons/flamethrower.dm +++ b/code/game/objects/items/weapons/flamethrower.dm @@ -170,7 +170,8 @@ update_icon() return -/obj/item/weapon/flamethrower/CheckParts() +/obj/item/weapon/flamethrower/CheckParts(list/parts_list) + ..() weldtool = locate(/obj/item/weapon/weldingtool) in contents igniter = locate(/obj/item/device/assembly/igniter) in contents weldtool.status = 0 diff --git a/code/game/objects/items/weapons/grenades/ghettobomb.dm b/code/game/objects/items/weapons/grenades/ghettobomb.dm index 8339ed98c7c..e8ae2498982 100644 --- a/code/game/objects/items/weapons/grenades/ghettobomb.dm +++ b/code/game/objects/items/weapons/grenades/ghettobomb.dm @@ -29,7 +29,8 @@ else range = pick(2,2,2,3,3,3,4) -/obj/item/weapon/grenade/iedcasing/CheckParts() +/obj/item/weapon/grenade/iedcasing/CheckParts(list/parts_list) + ..() var/obj/item/weapon/reagent_containers/food/drinks/soda_cans/can = locate() in contents if(can) var/muh_layer = can.layer diff --git a/code/game/objects/items/weapons/holy_weapons.dm b/code/game/objects/items/weapons/holy_weapons.dm index 205336bfb04..520d043a9ba 100644 --- a/code/game/objects/items/weapons/holy_weapons.dm +++ b/code/game/objects/items/weapons/holy_weapons.dm @@ -167,6 +167,7 @@ name = "high frequency blade" desc = "Bad references are the DNA of the soul." attack_verb = list("chopped", "sliced", "cut", "zandatsu'd") + hitsound = 'sound/weapons/bladeslice.ogg' /obj/item/weapon/nullrod/hammmer icon_state = "hammeron" diff --git a/code/game/objects/items/weapons/implants/implant_track.dm b/code/game/objects/items/weapons/implants/implant_track.dm index 7443a22ab3e..a0d58369614 100644 --- a/code/game/objects/items/weapons/implants/implant_track.dm +++ b/code/game/objects/items/weapons/implants/implant_track.dm @@ -13,6 +13,13 @@ ..() tracked_implants -= src +/obj/item/weapon/implanter/tracking/New() + imp = new /obj/item/weapon/implant/tracking( src ) + ..() +/obj/item/weapon/implanter/tracking/gps/New() + imp = new /obj/item/device/gps/mining/internal( src ) + ..() + /obj/item/weapon/implant/tracking/get_data() var/dat = {"Implant Specifications:
Name: Tracking Beacon
diff --git a/code/game/objects/items/weapons/kitchen.dm b/code/game/objects/items/weapons/kitchen.dm index 9d3ac9f9fbc..c871f8bcab4 100644 --- a/code/game/objects/items/weapons/kitchen.dm +++ b/code/game/objects/items/weapons/kitchen.dm @@ -111,6 +111,16 @@ /obj/item/weapon/kitchen/knife/combat/survival name = "survival knife" + icon_state = "survivalknife" + desc = "A hunting grade survival knife." + force = 15 + throwforce = 15 + +/obj/item/weapon/kitchen/knife/combat/bone + name = "bone dagger" + item_state = "bone_dagger" + icon_state = "bone_dagger" + desc = "A sharpened bone. The bare mimimum in survival." force = 15 throwforce = 15 diff --git a/code/game/objects/items/weapons/pneumaticCannon.dm b/code/game/objects/items/weapons/pneumaticCannon.dm index 3937889f8c1..9823294dcad 100644 --- a/code/game/objects/items/weapons/pneumaticCannon.dm +++ b/code/game/objects/items/weapons/pneumaticCannon.dm @@ -123,7 +123,7 @@ maxWeightClass = 7 gasPerThrow = 5 -/datum/table_recipe/improvised_pneumatic_cannon //Pretty easy to obtain but +/datum/crafting_recipe/improvised_pneumatic_cannon //Pretty easy to obtain but name = "Pneumatic Cannon" result = /obj/item/weapon/pneumatic_cannon/ghetto tools = list(/obj/item/weapon/weldingtool, diff --git a/code/game/objects/items/weapons/signs.dm b/code/game/objects/items/weapons/signs.dm index 4454169fdd3..622f4225166 100644 --- a/code/game/objects/items/weapons/signs.dm +++ b/code/game/objects/items/weapons/signs.dm @@ -29,7 +29,7 @@ user.visible_message("[user] waves around blank sign.") user.changeNext_move(CLICK_CD_MELEE) -/datum/table_recipe/picket_sign +/datum/crafting_recipe/picket_sign name = "Picket Sign" result = /obj/item/weapon/picket_sign reqs = list(/obj/item/stack/rods = 1, diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm index 3cab28cd5f8..ce3249bcc2c 100644 --- a/code/game/objects/items/weapons/storage/backpack.dm +++ b/code/game/objects/items/weapons/storage/backpack.dm @@ -129,6 +129,12 @@ icon_state = "clownpack" item_state = "clownpack" +/obj/item/weapon/storage/backpack/explorer + name = "explorer bag" + desc = "A robust backpack for stashing your loot." + icon_state = "explorerpack" + item_state = "explorerpack" + /obj/item/weapon/storage/backpack/mime name = "Parcel Parceaux" desc = "A silent backpack made for those silent workers. Silence Co." @@ -262,6 +268,12 @@ icon_state = "satchel-sec" item_state = "securitypack" +/obj/item/weapon/storage/backpack/satchel_explorer + name = "explorer satchel" + desc = "A robust satchel for stashing your loot." + icon_state = "satchel-explorer" + item_state = "securitypack" + /obj/item/weapon/storage/backpack/satchel_cap name = "captain's satchel" desc = "An exclusive satchel for Nanotrasen officers." @@ -351,6 +363,10 @@ icon_state = "duffle-clown" item_state = "duffle-clown" +/obj/item/weapon/storage/backpack/dufflebag/clown/cream_pie/New() + . = ..() + for(var/i in 1 to 10) + new /obj/item/weapon/reagent_containers/food/snacks/pie/cream(src) /obj/item/weapon/storage/backpack/dufflebag/syndie name = "suspicious looking dufflebag" diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm index 8b4549cc406..59740fe1d00 100644 --- a/code/game/objects/items/weapons/storage/belt.dm +++ b/code/game/objects/items/weapons/storage/belt.dm @@ -62,6 +62,7 @@ desc = "Can hold various medical equipment." icon_state = "medicalbelt" item_state = "medical" + max_w_class = 4 can_hold = list( /obj/item/device/healthanalyzer, /obj/item/weapon/dnainjector, @@ -80,7 +81,29 @@ /obj/item/device/rad_laser, /obj/item/device/sensor_device, /obj/item/device/radio, - /obj/item/clothing/gloves/ + /obj/item/clothing/gloves/, + /obj/item/weapon/lazarus_injector, + /obj/item/weapon/bikehorn/rubberducky, + /obj/item/clothing/mask/surgical, + /obj/item/clothing/mask/breath, + /obj/item/clothing/mask/breath/medical, + /obj/item/weapon/surgical_drapes, //for true paramedics + /obj/item/weapon/scalpel, + /obj/item/weapon/circular_saw, + /obj/item/weapon/surgicaldrill, + /obj/item/weapon/retractor, + /obj/item/weapon/cautery, + /obj/item/weapon/hemostat, + /obj/item/device/geiger_counter, + /obj/item/clothing/tie/stethoscope, + /obj/item/weapon/stamp, + /obj/item/clothing/glasses, + /obj/item/weapon/wrench/medical, + /obj/item/clothing/mask/muzzle, + /obj/item/weapon/storage/bag/chemistry, + /obj/item/weapon/storage/bag/bio, + /obj/item/weapon/reagent_containers/blood, + /obj/item/weapon/tank/internals/emergency_oxygen ) @@ -120,10 +143,10 @@ /obj/item/weapon/storage/belt/mining - name = "explorer belt" - desc = "A versatile belt, cherised by miners and hunters alike." - icon_state = "ebelt" //I'm doing this because I love you, syndicate son. - item_state = "ebelt" + name = "explorer's webbing" + desc = "A versatile chest rig, cherished by miners and hunters alike." + icon_state = "explorer1" + item_state = "explorer1" storage_slots = 5 w_class = 4 max_w_class = 4 //Pickaxes are big. @@ -163,6 +186,15 @@ ) +/obj/item/weapon/storage/belt/mining/alt + icon_state = "explorer2" + item_state = "explorer2" + +/obj/item/weapon/storage/belt/mining/primitive + name = "hunter's belt" + desc = "A versatile belt, woven from sinew." + icon_state = "ebelt" + item_state = "ebelt" /obj/item/weapon/storage/belt/soulstone name = "soul stone belt" diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm index 6538bba7f06..03ccef5fd1d 100644 --- a/code/game/objects/items/weapons/storage/boxes.dm +++ b/code/game/objects/items/weapons/storage/boxes.dm @@ -57,37 +57,45 @@ return ..() -/obj/item/weapon/storage/box/survival - +// Ordinary survival box /obj/item/weapon/storage/box/survival/New() ..() new /obj/item/clothing/mask/breath(src) new /obj/item/weapon/tank/internals/emergency_oxygen(src) new /obj/item/weapon/reagent_containers/hypospray/medipen(src) -/obj/item/weapon/storage/box/engineer +/obj/item/weapon/storage/box/survival/radio/New() + ..() + new /obj/item/device/radio/off(src) +// Engineer survival box /obj/item/weapon/storage/box/engineer/New() ..() new /obj/item/clothing/mask/breath(src) new /obj/item/weapon/tank/internals/emergency_oxygen/engi(src) new /obj/item/weapon/reagent_containers/hypospray/medipen(src) -/obj/item/weapon/storage/box/syndie +/obj/item/weapon/storage/box/engineer/radio/New() + ..() + new /obj/item/device/radio/off(src) +// Syndie survival box /obj/item/weapon/storage/box/syndie/New() ..() new /obj/item/clothing/mask/gas/syndicate(src) new /obj/item/weapon/tank/internals/emergency_oxygen/engi(src) -/obj/item/weapon/storage/box/security - +// Security survival box /obj/item/weapon/storage/box/security/New() ..() new /obj/item/clothing/mask/gas/sechailer(src) new /obj/item/weapon/tank/internals/emergency_oxygen(src) new /obj/item/weapon/reagent_containers/hypospray/medipen(src) +/obj/item/weapon/storage/box/security/radio/New() + ..() + new /obj/item/device/radio/off(src) + /obj/item/weapon/storage/box/gloves name = "box of latex gloves" desc = "Contains sterile latex gloves." @@ -231,6 +239,19 @@ new /obj/item/weapon/implantpad(src) new /obj/item/weapon/locator(src) +/obj/item/weapon/storage/box/minertracker + name = "boxed tracking implant kit" + desc = "For finding those who have died on the accursed lavaworld." + icon_state = "implant" + +/obj/item/weapon/storage/box/minertracker/New() + ..() + for(var/i in 1 to 3) + new /obj/item/weapon/implantcase/tracking(src) + new /obj/item/weapon/implanter(src) + new /obj/item/weapon/implantpad(src) + new /obj/item/weapon/locator(src) + /obj/item/weapon/storage/box/chemimp name = "boxed chemical implant kit" desc = "Box of stuff used to implant chemicals." diff --git a/code/game/objects/items/weapons/storage/lockbox.dm b/code/game/objects/items/weapons/storage/lockbox.dm index 248f0c7b116..e10c5776a88 100644 --- a/code/game/objects/items/weapons/storage/lockbox.dm +++ b/code/game/objects/items/weapons/storage/lockbox.dm @@ -27,6 +27,7 @@ if(locked) icon_state = icon_locked user << "You lock the [src.name]!" + close_all() return else icon_state = icon_closed diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm index 83842b332a8..9f7b37c2542 100644 --- a/code/game/objects/items/weapons/tools.dm +++ b/code/game/objects/items/weapons/tools.dm @@ -290,14 +290,9 @@ remove_fuel(1) update_icon() + //This is to start fires. process() is only called if the welder is on. - var/turf/location = loc - if(ismob(location)) - var/mob/M = location - if(M.l_hand == src || M.r_hand == src) - location = get_turf(M) - if(isturf(location)) - location.hotspot_expose(700, 5) + open_flame() /obj/item/weapon/weldingtool/afterattack(atom/O, mob/user, proximity) diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm index 7c0860f9506..2419cd93645 100644 --- a/code/game/objects/items/weapons/twohanded.dm +++ b/code/game/objects/items/weapons/twohanded.dm @@ -5,6 +5,7 @@ * Double-Bladed Energy Swords * Spears * CHAINSAWS + * Bone Axe and Spear */ /*################################################################## @@ -339,7 +340,8 @@ if(input) src.war_cry = input -/obj/item/weapon/twohanded/spear/CheckParts() +/obj/item/weapon/twohanded/spear/CheckParts(list/parts_list) + ..() if(explosive) explosive.loc = get_turf(src.loc) explosive = null @@ -389,9 +391,9 @@ var/datum/action/A = X A.UpdateButtonIcon() -/obj/item/weapon/twohanded/required/chainsaw/can_dismember() - return wielded - +/obj/item/weapon/twohanded/required/chainsaw/get_dismemberment_chance() + if(wielded) + . = ..() //GREY TIDE /obj/item/weapon/twohanded/spear/grey_tide @@ -507,4 +509,42 @@ else owner.visible_message("[owner] parries [attack_text] with [src]!") return 1 - return 0 \ No newline at end of file + return 0 + +/obj/item/weapon/twohanded/vibro_weapon/update_icon() + icon_state = "hfrequency[wielded]" + +/* + * Bone Axe + */ +/obj/item/weapon/twohanded/fireaxe/boneaxe // Blatant imitation of the fireaxe, but made out of bone. + icon_state = "bone_axe0" + name = "bone axe" + desc = "A large, vicious axe crafted out of several sharpened bone plates and crudely tied together. Made of monsters, by killing monsters, for killing monsters." + force_wielded = 23 + +/obj/item/weapon/twohanded/fireaxe/boneaxe/update_icon() + icon_state = "bone_axe[wielded]" + +/* + * Bone Spear + */ +/obj/item/weapon/twohanded/bonespear //Blatant imitation of spear, but made out of bone. Not valid for explosive modification. + icon_state = "bone_spear0" + name = "bone spear" + desc = "A haphazardly-constructed yet still deadly weapon. The pinnacle of modern technology." + force = 11 + w_class = 4 + slot_flags = SLOT_BACK + force_unwielded = 11 + force_wielded = 20 //I have no idea how to balance + throwforce = 22 + throw_speed = 4 + embedded_impact_pain_multiplier = 3 + armour_penetration = 15 //Enhanced armor piercing + hitsound = 'sound/weapons/bladeslice.ogg' + attack_verb = list("attacked", "poked", "jabbed", "torn", "gored") + sharpness = IS_SHARP + +/obj/item/weapon/twohanded/bonespear/update_icon() + icon_state = "bone_spear[wielded]" \ No newline at end of file diff --git a/code/game/objects/structures/beds_chairs/chair.dm b/code/game/objects/structures/beds_chairs/chair.dm index 05c037c478c..faf3b4b8cb3 100644 --- a/code/game/objects/structures/beds_chairs/chair.dm +++ b/code/game/objects/structures/beds_chairs/chair.dm @@ -16,7 +16,8 @@ handle_layer() /obj/structure/chair/deconstruct() - if(buildstacktype) + // If we have materials, and don't have the NOCONSTRUCT flag + if(buildstacktype && (!(flags & NODECONSTRUCT))) new buildstacktype(loc,buildstackamount) ..() diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index df6f9ce90db..1265b21905c 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -395,7 +395,7 @@ add_fingerprint(user) locked = !locked user.visible_message("[user] [locked ? null : "un"]locks [src].", - "You [locked ? null : "un"]locks [src].") + "You [locked ? null : "un"]lock [src].") update_icon() else user << "Access Denied" 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 f84d9889d59..88cb7d65b73 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm @@ -61,3 +61,12 @@ new /obj/item/stack/spacecash/c500(src) for(var/i = 0, i < 6, i++) new /obj/item/stack/spacecash/c200(src) + +/obj/structure/closet/secure_closet/freezer/cream_pie + name = "cream pie closet" + desc = "Contains pies filled with cream and/or custard, you sickos." + req_access = list(access_theatre) + +/obj/structure/closet/secure_closet/freezer/pie/New() + ..() + new /obj/item/weapon/reagent_containers/food/snacks/pie/cream(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 c8fa71c24dc..6c6e0f78446 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -111,6 +111,7 @@ ..() new /obj/item/clothing/suit/armor/vest(src) new /obj/item/clothing/head/helmet/sec(src) + new /obj/item/device/radio/headset/headset_sec(src) new /obj/item/device/radio/headset/headset_sec/alt(src) new /obj/item/clothing/glasses/hud/security/sunglasses(src) new /obj/item/device/flashlight/seclite(src) diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora.dm index d81af121c14..8bf04d32eea 100644 --- a/code/game/objects/structures/flora.dm +++ b/code/game/objects/structures/flora.dm @@ -239,38 +239,23 @@ //a rock is flora according to where the icon file is //and now these defines + /obj/structure/flora/rock - name = "rock" - desc = "a rock" - icon_state = "rock" + icon_state = "basalt" + desc = "A volcanic rock" icon = 'icons/obj/flora/rocks.dmi' anchored = 1 burn_state = FIRE_PROOF density = 1 /obj/structure/flora/rock/New() - ..() - icon_state = "[icon_state][rand(1,5)]" - -/obj/structure/flora/rock/pile - name = "rocks" - desc = "some rocks" - icon_state = "rockpile" - density = 0 - - -/obj/structure/flora/rock/volcanic - icon_state = "basalt" - desc = "A volcanic rock" - - -/obj/structure/flora/rock/volcanic/New() ..() icon_state = "[icon_state][rand(1,3)]" -/obj/structure/flora/rock/pile/volcanic +/obj/structure/flora/rock/pile icon_state = "lavarocks" + desc = "A pile of rocks" -/obj/structure/flora/rock/pile/volcanic/New() +/obj/structure/flora/rock/pile/New() ..() icon_state = "[icon_state][rand(1,3)]" \ No newline at end of file diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm index 010789c22e2..a781894bfc5 100644 --- a/code/game/objects/structures/girders.dm +++ b/code/game/objects/structures/girders.dm @@ -328,7 +328,7 @@ add_fingerprint(user) if(istype(W, /obj/item/weapon/tome) && iscultist(user)) //Cultists can demolish cult girders instantly with their tomes user.visible_message("[user] strikes [src] with [W]!", "You demolish [src].") - var/obj/item/stack/sheet/metal/R = new(get_turf(src)) + var/obj/item/stack/sheet/runed_metal/R = new(get_turf(src)) R.amount = 1 qdel(src) @@ -342,7 +342,7 @@ return user << "You slice apart the girder." var/obj/item/stack/sheet/runed_metal/R = new(get_turf(src)) - R.amount = 2 + R.amount = 1 transfer_fingerprints_to(R) qdel(src) @@ -352,7 +352,7 @@ if(do_after(user, 30, target = src)) user << "You slice apart the girder." var/obj/item/stack/sheet/runed_metal/R = new(get_turf(src)) - R.amount = 2 + R.amount = 1 transfer_fingerprints_to(R) qdel(src) @@ -367,15 +367,16 @@ else if(istype(W, /obj/item/stack/sheet/runed_metal)) var/obj/item/stack/sheet/runed_metal/R = W - if(R.amount < 2) - user << "You need at least two sheets of runed metal to construct a runed wall!" + if(R.amount < 1) + user << "You need at least one sheet of runed metal to construct a runed wall!" return 0 user.visible_message("[user] begins laying runed metal on [src]...", "You begin constructing a runed wall...") if(!do_after(user, 50, target = src)) return 0 user.visible_message("[user] plates [src] with runed metal.", "You construct a runed wall.") - R.use(2) - new/turf/closed/wall/cult(get_turf(src)) + R.use(1) + var/turf/T = get_turf(src) + T.ChangeTurf(/turf/closed/wall/cult) qdel(src) else @@ -390,9 +391,9 @@ qdel(src) if(2) if(prob(30)) - new/obj/item/stack/sheet/runed_metal/(get_turf(src), 2) + new/obj/item/stack/sheet/runed_metal/(get_turf(src), 1) qdel(src) if(3) if(prob(5)) - new/obj/item/stack/sheet/runed_metal/(get_turf(src), 2) + new/obj/item/stack/sheet/runed_metal/(get_turf(src), 1) qdel(src) diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index 5da6f3aaaa7..745d27a0e5c 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -258,3 +258,13 @@ /obj/structure/grille/storage_contents_dump_act(obj/item/weapon/storage/src_object, mob/user) return 0 + +/obj/structure/grille/broken // Pre-broken grilles for map placement + icon_state = "brokengrille" + density = 0 + health = 0 + destroyed = 1 + +/obj/structure/grille/broken/New() + ..() + stored.amount = 1 \ No newline at end of file diff --git a/code/game/objects/structures/signs.dm b/code/game/objects/structures/signs.dm index b699da49dd3..28cc59a701b 100644 --- a/code/game/objects/structures/signs.dm +++ b/code/game/objects/structures/signs.dm @@ -27,7 +27,9 @@ playsound(src, 'sound/items/Deconstruct.ogg', 50, 1) user.visible_message("[user] unfastens [src].", \ "You unfasten [src].") - new /obj/item/sign_backing(get_turf(user)) + var/obj/item/sign_backing/SB = new (get_turf(user)) + SB.icon_state = icon_state + SB.sign_path = type qdel(src) else if(istype(O, /obj/item/weapon/pen)) var/list/sign_types = list("Secure Area", "Biohazard", "High Voltage", "Radiation", "Hard Vacuum Ahead", "Disposal: Leads To Space", "Danger: Fire", "No Smoking", "Medbay", "Science", "Chemistry", \ @@ -82,11 +84,12 @@ /obj/item/sign_backing name = "sign backing" - desc = "A blank sign with adhesive backing." + desc = "A sign with adhesive backing." icon = 'icons/obj/decals.dmi' icon_state = "backing" w_class = 3 burn_state = FLAMMABLE + var/sign_path = /obj/structure/sign/basic //the type of sign that will be created when placed on a turf /obj/item/sign_backing/afterattack(atom/target, mob/user, proximity) if(isturf(target) && proximity) @@ -94,7 +97,7 @@ user.visible_message("[user] fastens [src] to [T].", \ "You attach a blank sign to [T].") playsound(T, 'sound/items/Deconstruct.ogg', 50, 1) - new /obj/structure/sign/basic(T) + new sign_path(T) user.drop_item() qdel(src) else diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index d56212c5835..9d8f2f93bbc 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -14,10 +14,10 @@ var/reinf = 0 var/wtype = "glass" var/fulltile = 0 - var/list/storeditems = list() // var/silicate = 0 // number of units of silicate // var/icon/silicateIcon = null // the silicated icon var/image/crack_overlay + var/list/debris = list() can_be_unanchored = 1 /obj/structure/window/examine(mob/user) @@ -32,21 +32,25 @@ if(reinf) state = 2*anchored - spawn(5) // The NODECONSTRUCT flag gets added immediately by the holodeck (but not immediately enough) - if(!(flags & NODECONSTRUCT)) - storeditems.Add(new/obj/item/weapon/shard(src)) - if(fulltile) - storeditems.Add(new/obj/item/weapon/shard(src)) - if(reinf) - var/obj/item/stack/rods/R = new/obj/item/stack/rods(src) - storeditems.Add(R) - if(fulltile) - R.add(1) - ini_dir = dir air_update_turf(1) - return + // Precreate our own debris + + var/shards = 1 + if(fulltile) + shards++ + var/rods = 0 + if(reinf) + rods++ + if(fulltile) + rods++ + + for(var/i in 1 to shards) + debris += new /obj/item/weapon/shard(src) + if(rods) + debris += new /obj/item/stack/rods(src, rods) + /obj/structure/window/bullet_act(obj/item/projectile/P) . = ..() @@ -65,7 +69,10 @@ shatter() /obj/structure/window/narsie_act() - color = "#7D1919" + var/evil_color = "#7D1919" + color = evil_color + for(var/obj/item/weapon/shard/shard in debris) + shard.color = evil_color /obj/structure/window/singularity_pull(S, current_size) if(current_size >= STAGE_FIVE) @@ -276,9 +283,13 @@ return playsound(src, "shatter", 70, 1) var/turf/T = loc - for(var/obj/item/I in storeditems) - I.loc = T - transfer_fingerprints_to(I) + + if(!(flags & NODECONSTRUCT)) + for(var/i in debris) + var/obj/item/I = i + + I.loc = T + transfer_fingerprints_to(I) qdel(src) update_nearby_icons() diff --git a/code/game/turfs/open.dm b/code/game/turfs/open.dm index 068f0b945a6..acb286f3c7f 100644 --- a/code/game/turfs/open.dm +++ b/code/game/turfs/open.dm @@ -43,6 +43,15 @@ excited = 1 SSair.active_turfs |= src +/turf/open/proc/GetHeatCapacity() + . = air.heat_capacity() + +/turf/open/proc/GetTemperature() + . = air.temperature + +/turf/open/proc/TakeTemperature(temp) + air.temperature += temp + air_update_turf() /turf/open/handle_fall(mob/faller, forced) faller.lying = pick(90, 270) diff --git a/code/game/turfs/simulated/floor/plating.dm b/code/game/turfs/simulated/floor/plating.dm index 625bcbf18fa..afca2aebd16 100644 --- a/code/game/turfs/simulated/floor/plating.dm +++ b/code/game/turfs/simulated/floor/plating.dm @@ -205,6 +205,13 @@ processing = 0 SSobj.processing.Remove(src) +/turf/open/floor/plating/lava/GetHeatCapacity() + . = 700000 + +/turf/open/floor/plating/lava/GetTemperature() + . = 5000 + +/turf/open/floor/plating/lava/TakeTemperature(temp) /turf/open/floor/plating/lava/proc/burn_stuff() . = 0 diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm index bcfeae80afd..9551bed794f 100644 --- a/code/game/turfs/simulated/walls.dm +++ b/code/game/turfs/simulated/walls.dm @@ -38,7 +38,8 @@ else playsound(src, 'sound/items/Welder.ogg', 100, 1) var/newgirder = break_wall() - transfer_fingerprints_to(newgirder) + if(newgirder) //maybe we don't /want/ a girder! + transfer_fingerprints_to(newgirder) for(var/obj/O in src.contents) //Eject contents! if(istype(O,/obj/structure/sign/poster)) diff --git a/code/game/turfs/simulated/walls_misc.dm b/code/game/turfs/simulated/walls_misc.dm index 038bfb3fd26..83e29d65bce 100644 --- a/code/game/turfs/simulated/walls_misc.dm +++ b/code/game/turfs/simulated/walls_misc.dm @@ -1,5 +1,5 @@ /turf/closed/wall/cult - name = "runed wall" + name = "runed metal wall" desc = "A cold metal wall engraved with indecipherable symbols. Studying them causes your head to pound." icon = 'icons/turf/walls/cult_wall.dmi' icon_state = "cult" @@ -12,16 +12,26 @@ ..() /turf/closed/wall/cult/break_wall() - new/obj/item/stack/sheet/metal/(get_turf(src), 1) + new/obj/item/stack/sheet/runed_metal(get_turf(src), 1) return (new /obj/structure/girder/cult(src)) /turf/closed/wall/cult/devastate_wall() - new /obj/effect/decal/cleanable/blood(src) - new /obj/effect/decal/remains/human(src) + new/obj/item/stack/sheet/runed_metal(get_turf(src), 1) /turf/closed/wall/cult/narsie_act() return +/turf/closed/wall/cult/artificer + name = "runed stone wall" + desc = "A cold stone wall engraved with indecipherable symbols. Studying them causes your head to pound." + +/turf/closed/wall/cult/artificer/break_wall() + PoolOrNew(/obj/effect/overlay/temp/cult/turf, get_turf(src)) + return null //excuse me we want no runed metal here + +/turf/closed/wall/cult/artificer/devastate_wall() + PoolOrNew(/obj/effect/overlay/temp/cult/turf, get_turf(src)) + /turf/closed/wall/vault icon = 'icons/turf/walls.dmi' icon_state = "rockvault" diff --git a/code/game/turfs/space/space.dm b/code/game/turfs/space/space.dm index da7f0648d5c..06581872610 100644 --- a/code/game/turfs/space/space.dm +++ b/code/game/turfs/space/space.dm @@ -28,6 +28,8 @@ /turf/open/space/ChangeTurf(path) . = ..() +/turf/open/space/TakeTemperature(temp) + /turf/open/space/AfterChange() ..() atmos_overlay_types.Cut() diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index ea8622dd70b..33971447d07 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -101,10 +101,13 @@ var/mob/living/carbon/M = AM switch(wet) if(TURF_WET_WATER) - if(!M.slip(3, 1, null, NO_SLIP_WHEN_WALKING)) + if(!M.slip(0, 3, null, NO_SLIP_WHEN_WALKING)) M.inertia_dir = 0 if(TURF_WET_LUBE) - M.slip(0, 7, null, (SLIDE|GALOSHES_DONT_HELP)) + if(M.slip(0, 4, null, (SLIDE|GALOSHES_DONT_HELP))) + M.confused = max(M.confused, 8) + if(TURF_WET_ICE) + M.slip(0, 6, null, (SLIDE|GALOSHES_DONT_HELP)) if(TURF_WET_ICE || TURF_WET_PERMAFROST) M.slip(0, 4, null, (SLIDE|NO_SLIP_WHEN_WALKING)) diff --git a/code/game/verbs/suicide.dm b/code/game/verbs/suicide.dm index ceaab94ab26..7f192fce020 100644 --- a/code/game/verbs/suicide.dm +++ b/code/game/verbs/suicide.dm @@ -9,6 +9,7 @@ return if(confirm == "Yes") suiciding = 1 + log_game("[key_name(src)] (job: [job ? "[job]" : "None"]) commited suicide at [get_area(src)].") var/obj/item/held_item = get_active_hand() if(held_item) var/damagetype = held_item.suicide_act(src) diff --git a/code/modules/admin/secrets.dm b/code/modules/admin/secrets.dm index ee509be5fc9..d7b3be526cd 100644 --- a/code/modules/admin/secrets.dm +++ b/code/modules/admin/secrets.dm @@ -534,7 +534,9 @@ for(var/obj/machinery/capture_the_flag/CTF in machines) ctf_enabled = !CTF.ctf_enabled CTF.ctf_enabled = !CTF.ctf_enabled + CTF.TellGhost() message_admins("[key_name_admin(usr)] has [ctf_enabled? "enabled" : "disabled"] CTF!") + notify_ghosts("CTF has been [ctf_enabled? "enabled" : "disabled"]!",'sound/effects/ghost2.ogg') if(E) E.processing = 0 diff --git a/code/modules/admin/verbs/diagnostics.dm b/code/modules/admin/verbs/diagnostics.dm index fae5f96e1b9..a69cc1df9dc 100644 --- a/code/modules/admin/verbs/diagnostics.dm +++ b/code/modules/admin/verbs/diagnostics.dm @@ -15,8 +15,7 @@ usr << "@[target.x],[target.y]: [GM.temperature] Kelvin, [GM.return_pressure()] kPa [(burning)?("\red BURNING"):(null)]" for(var/id in GM_gases) - if(id in hardcoded_gases || GM_gases[id][MOLES]) - usr << "[GM_gases[id][GAS_META][META_GAS_NAME]]: [GM_gases[id][MOLES]]" + usr << "[GM_gases[id][GAS_META][META_GAS_NAME]]: [GM_gases[id][MOLES]]" feedback_add_details("admin_verb","DAST") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! /client/proc/fix_next_move() @@ -100,4 +99,4 @@ load_admins() feedback_add_details("admin_verb","RLDA") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - message_admins("[key_name_admin(usr)] manually reloaded admins") \ No newline at end of file + message_admins("[key_name_admin(usr)] manually reloaded admins") diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm index fdf936ae8f2..2e3d584999b 100644 --- a/code/modules/admin/verbs/one_click_antag.dm +++ b/code/modules/admin/verbs/one_click_antag.dm @@ -135,41 +135,14 @@ return 0 /datum/admins/proc/makeWizard() - var/datum/game_mode/wizard/temp = new - var/list/mob/dead/observer/candidates = list() - var/mob/dead/observer/theghost = null - var/time_passed = world.time - for(var/mob/dead/observer/G in player_list) - if(!jobban_isbanned(G, "wizard") && !jobban_isbanned(G, "Syndicate")) - if(temp.age_check(G.client)) - spawn(0) - switch(alert(G, "Do you wish to be considered for the position of Space Wizard Foundation 'diplomat'?","Please answer in 30 seconds!","Yes","No")) - if("Yes") - if((world.time-time_passed)>300)//If more than 30 game seconds passed. - return - candidates += G - if("No") - return - else - return + var/list/mob/dead/observer/candidates = pollCandidates("Do you wish to be considered for the position of a Wizard Foundation 'diplomat'?", "wizard", null) - sleep(300) + var/mob/dead/observer/selected = popleft(candidates) - if(candidates.len) - shuffle(candidates) - for(var/mob/i in candidates) - if(!i || !i.client) continue //Dont bother removing them from the list since we only grab one wizard - - theghost = i - break - - if(theghost) - var/mob/living/carbon/human/new_character=makeBody(theghost) - new_character.mind.make_Wizard() - return 1 - - return 0 + var/mob/living/carbon/human/new_character = makeBody(selected) + new_character.mind.make_Wizard() + return TRUE /datum/admins/proc/makeCult() @@ -269,11 +242,15 @@ /datum/admins/proc/makeAliens() - new /datum/round_event/alien_infestation{spawncount=3}() - return 1 + var/datum/round_event/ghost_role/alien_infestation/E = new(FALSE) + E.spawncount = 3 + // TODO The fact we have to do this rather than just have events start + // when we ask them to, is bad. + E.processing = TRUE + return TRUE /datum/admins/proc/makeSpaceNinja() - new /datum/round_event/ninja() + new /datum/round_event/ghost_role/ninja() return 1 // DEATH SQUADS @@ -540,22 +517,11 @@ //Abductors /datum/admins/proc/makeAbductorTeam() - new /datum/round_event/abductor + new /datum/round_event/ghost_role/abductor return 1 /datum/admins/proc/makeRevenant() - var/list/mob/dead/observer/candidates = pollCandidates("Do you wish to be considered for becoming a revenant?", "revenant", null) - if(candidates.len >= 1) - var/spook_op = pick(candidates) - var/mob/dead/observer/O = spook_op - candidates -= spook_op - var/mob/living/simple_animal/revenant/revvie = new /mob/living/simple_animal/revenant(get_turf(O)) - revvie.key = O.key - revvie.mind.assigned_role = "revenant" - revvie.mind.special_role = "Revenant" - return 1 - else - return + new /datum/round_event/ghost_role/revenant //Shadowling /datum/admins/proc/makeShadowling() diff --git a/code/modules/admin/verbs/playsound.dm b/code/modules/admin/verbs/playsound.dm index 77dd2e39eee..9da33d33da2 100644 --- a/code/modules/admin/verbs/playsound.dm +++ b/code/modules/admin/verbs/playsound.dm @@ -26,8 +26,6 @@ var/sound/admin_sound for(var/mob/M in player_list) if(M.client.prefs.toggles & SOUND_MIDI) - var/vol = M.client.prefs.adminmusicvolume - admin_sound.volume = vol M << admin_sound feedback_add_details("admin_verb","PGS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! diff --git a/code/modules/atmospherics/gasmixtures/gas_types.dm b/code/modules/atmospherics/gasmixtures/gas_types.dm index bb79aa21bfe..5188750f085 100644 --- a/code/modules/atmospherics/gasmixtures/gas_types.dm +++ b/code/modules/atmospherics/gasmixtures/gas_types.dm @@ -68,6 +68,11 @@ var/list/hardcoded_gases = list("o2","n2","co2","plasma") //the main four gases, specific_heat = 30 name = "Volatile Fuel" +/datum/gas/bz + id = "bz" + specific_heat = 20 + name = "BZ" + /obj/effect/overlay/gas/ icon = 'icons/effects/tile_effects.dmi' mouse_opacity = 0 diff --git a/code/modules/atmospherics/gasmixtures/space_mixture.dm b/code/modules/atmospherics/gasmixtures/space_mixture.dm index 15e1b44af9c..608974f0ce0 100644 --- a/code/modules/atmospherics/gasmixtures/space_mixture.dm +++ b/code/modules/atmospherics/gasmixtures/space_mixture.dm @@ -2,7 +2,6 @@ //it can be changed, but any changes will ultimately be undone before they can have any effect /datum/gas_mixture/space - var/static/datum/gas_mixture/dummy = new /datum/gas_mixture/space/New() ..() @@ -18,6 +17,12 @@ /datum/gas_mixture/space/merge() return 0 //we're immutable. +/datum/gas_mixture/space/heat_capacity() + . = 700000 + +/datum/gas_mixture/space/heat_capacity_archived() + . = heat_capacity() + /datum/gas_mixture/space/remove() return copy() //we're immutable, so we can just return a copy. @@ -25,8 +30,9 @@ return copy() //we're immutable, so we can just return a copy. /datum/gas_mixture/space/share(datum/gas_mixture/sharer, atmos_adjacent_turfs = 4) - . = dummy.share(sharer, atmos_adjacent_turfs) //keep all the sharing calculations, but don't actually change anything about ourselves - dummy.copy_from(src) + . = ..(sharer, 0) + temperature = TCMB + gases.Cut() /datum/gas_mixture/space/after_share() temperature = TCMB @@ -50,6 +56,6 @@ /datum/gas_mixture/space/parse_gas_string() return 0 //we're immutable. -/datum/gas_mixture/space/temperature_share() - ..() - temperature = TCMB +/datum/gas_mixture/space/temperature_share(datum/gas_mixture/sharer, conduction_coefficient, sharer_temperature, sharer_heat_capacity) + . = ..(sharer, 1, sharer_temperature, sharer_heat_capacity) + temperature = TCMB \ No newline at end of file diff --git a/code/modules/atmospherics/machinery/airalarm.dm b/code/modules/atmospherics/machinery/airalarm.dm index 93cb87e4d1e..4b8791c3400 100644 --- a/code/modules/atmospherics/machinery/airalarm.dm +++ b/code/modules/atmospherics/machinery/airalarm.dm @@ -76,6 +76,7 @@ "co2" = new/datum/tlv(-1, -1, 5, 10), // Partial pressure, kpa "plasma" = new/datum/tlv(-1, -1, 0.2, 0.5), // Partial pressure, kpa "n2o" = new/datum/tlv(-1, -1, 0.2, 0.5), // Partial pressure, kpa + "bz" = new/datum/tlv(-1, -1, 0.2, 0.5) ) /obj/machinery/airalarm/server // No checks here. @@ -87,6 +88,7 @@ "co2" = new/datum/tlv(-1, -1, -1, -1), "plasma" = new/datum/tlv(-1, -1, -1, -1), "n2o" = new/datum/tlv(-1, -1, -1, -1), + "bz" = new/datum/tlv(-1, -1, -1, -1), ) /obj/machinery/airalarm/kitchen_cold_room // Copypasta: to check temperatures. @@ -98,6 +100,7 @@ "co2" = new/datum/tlv(-1, -1, 5, 10), // Partial pressure, kpa "plasma" = new/datum/tlv(-1, -1, 0.2, 0.5), // Partial pressure, kpa "n2o" = new/datum/tlv(-1, -1, 0.2, 0.5), // Partial pressure, kpa + "bz" = new/datum/tlv(-1, -1, 0.2, 0.5), // Partial pressure, kpa ) //all air alarms in area are connected via magic diff --git a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm index cdd0e0fea57..0198186a411 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm @@ -161,7 +161,7 @@ user << "[src] seems empty." /obj/machinery/atmospherics/components/unary/cryo_cell/MouseDrop_T(mob/target, mob/user) - if(user.stat || user.lying || !Adjacent(user) || !user.Adjacent(target) || !iscarbon(target)) + if(user.stat || user.lying || !Adjacent(user) || !user.Adjacent(target) || !iscarbon(target) || !user.IsAdvancedToolUser()) return close_machine(target) diff --git a/code/modules/atmospherics/machinery/datum_pipeline.dm b/code/modules/atmospherics/machinery/datum_pipeline.dm index 0735a876106..cb97092e629 100644 --- a/code/modules/atmospherics/machinery/datum_pipeline.dm +++ b/code/modules/atmospherics/machinery/datum_pipeline.dm @@ -140,27 +140,32 @@ var/pipenetwarnings = 10 /datum/pipeline/proc/temperature_interact(turf/target, share_volume, thermal_conductivity) var/total_heat_capacity = air.heat_capacity() var/partial_heat_capacity = total_heat_capacity*(share_volume/air.volume) + var/target_temperature + var/target_heat_capacity if(istype(target, /turf/open)) + var/turf/open/modeled_location = target + target_temperature = modeled_location.GetTemperature() + target_heat_capacity = modeled_location.GetHeatCapacity() if(modeled_location.blocks_air) if((modeled_location.heat_capacity>0) && (partial_heat_capacity>0)) - var/delta_temperature = air.temperature - modeled_location.temperature + var/delta_temperature = air.temperature - target_temperature var/heat = thermal_conductivity*delta_temperature* \ - (partial_heat_capacity*modeled_location.heat_capacity/(partial_heat_capacity+modeled_location.heat_capacity)) + (partial_heat_capacity*target_heat_capacity/(partial_heat_capacity+target_heat_capacity)) air.temperature -= heat/total_heat_capacity - modeled_location.temperature += heat/modeled_location.heat_capacity + modeled_location.TakeTemperature(heat/target_heat_capacity) else var/delta_temperature = 0 var/sharer_heat_capacity = 0 - delta_temperature = (air.temperature - modeled_location.air.temperature) - sharer_heat_capacity = modeled_location.air.heat_capacity() + delta_temperature = (air.temperature - target_temperature) + sharer_heat_capacity = target_heat_capacity var/self_temperature_delta = 0 var/sharer_temperature_delta = 0 @@ -175,9 +180,7 @@ var/pipenetwarnings = 10 return 1 air.temperature += self_temperature_delta - - modeled_location.air.temperature += sharer_temperature_delta - modeled_location.air_update_turf() + modeled_location.TakeTemperature(sharer_temperature_delta) else diff --git a/code/modules/atmospherics/machinery/pipes/heat_exchange/he_pipes.dm b/code/modules/atmospherics/machinery/pipes/heat_exchange/he_pipes.dm index 6ecb554eab7..8b3c53864e2 100644 --- a/code/modules/atmospherics/machinery/pipes/heat_exchange/he_pipes.dm +++ b/code/modules/atmospherics/machinery/pipes/heat_exchange/he_pipes.dm @@ -36,8 +36,8 @@ else if(T.blocks_air) environment_temperature = T.temperature else - var/datum/gas_mixture/environment = T.return_air() - environment_temperature = environment.temperature + var/turf/open/OT = T + environment_temperature = OT.GetTemperature() else environment_temperature = T.temperature diff --git a/code/modules/atmospherics/machinery/portable/canister.dm b/code/modules/atmospherics/machinery/portable/canister.dm index 100b9af99b7..ca92eeb06c9 100644 --- a/code/modules/atmospherics/machinery/portable/canister.dm +++ b/code/modules/atmospherics/machinery/portable/canister.dm @@ -28,6 +28,7 @@ "co2" = /obj/machinery/portable_atmospherics/canister/carbon_dioxide, "plasma" = /obj/machinery/portable_atmospherics/canister/toxins, "n2o" = /obj/machinery/portable_atmospherics/canister/nitrous_oxide, + "bz" = /obj/machinery/portable_atmospherics/canister/bz, "air" = /obj/machinery/portable_atmospherics/canister/air, "caution" = /obj/machinery/portable_atmospherics/canister, ) @@ -56,6 +57,11 @@ name = "agent b canister" desc = "Oxygen Agent B. You're not quite sure what it does." gas_type = "agent_b" +/obj/machinery/portable_atmospherics/canister/bz + name = "BZ canister" + desc = "BZ, a powerful hallucinogenic nerve agent." + icon_state = "purple" + gas_type = "bz" /obj/machinery/portable_atmospherics/canister/nitrous_oxide name = "n2o canister" desc = "Nitrous oxide gas. Known to cause drowsiness." diff --git a/code/modules/atmospherics/machinery/portable/scrubber.dm b/code/modules/atmospherics/machinery/portable/scrubber.dm index c1ca56c5ae5..bba79f6b5f7 100644 --- a/code/modules/atmospherics/machinery/portable/scrubber.dm +++ b/code/modules/atmospherics/machinery/portable/scrubber.dm @@ -7,7 +7,7 @@ var/volume_rate = 1000 volume = 1000 - var/list/scrubbing = list("plasma", "co2", "n2o", "agent_b") + var/list/scrubbing = list("plasma", "co2", "n2o", "agent_b", "bz") /obj/machinery/portable_atmospherics/scrubber/Destroy() var/turf/T = get_turf(src) diff --git a/code/modules/awaymissions/capture_the_flag.dm b/code/modules/awaymissions/capture_the_flag.dm index ea4446dcd21..d5b92844f51 100644 --- a/code/modules/awaymissions/capture_the_flag.dm +++ b/code/modules/awaymissions/capture_the_flag.dm @@ -172,6 +172,16 @@ M.faction += team M.equipOutfit(ctf_gear) +/obj/machinery/capture_the_flag/proc/TellGhost() + if(ctf_enabled) + notify_ghosts("[name] has been activated!", enter_link="(Click to join the [team] team!) or click on the controller directly!", source = src, attack_not_jump = 0) + +/obj/machinery/capture_the_flag/Topic(href, href_list) + if(href_list["join"]) + var/mob/dead/observer/ghost = usr + if(istype(ghost)) + attack_ghost(ghost) + /obj/machinery/capture_the_flag/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/weapon/twohanded/required/ctf)) var/obj/item/weapon/twohanded/required/ctf/flag = I @@ -214,6 +224,12 @@ CTF.ctf_gear = CTF.instagib_gear CTF.respawn_cooldown = INSTAGIB_RESPAWN +/obj/machinery/capture_the_flag/proc/normal_mode() + for(var/obj/machinery/capture_the_flag/CTF in machines) + if(CTF.ctf_enabled == TRUE) + CTF.ctf_gear = initial(ctf_gear) + CTF.respawn_cooldown = DEFAULT_RESPAWN + /obj/item/weapon/gun/projectile/automatic/pistol/deagle/CTF desc = "This looks like it could really hurt in melee." force = 75 diff --git a/code/modules/awaymissions/corpse.dm b/code/modules/awaymissions/corpse.dm index 7e1e469d3b0..6c45742bb27 100644 --- a/code/modules/awaymissions/corpse.dm +++ b/code/modules/awaymissions/corpse.dm @@ -359,6 +359,11 @@ suit = /obj/item/clothing/suit/space/hardsuit/mining mask = /obj/item/clothing/mask/breath +/obj/effect/mob_spawn/human/miner/explorer + uniform = /obj/item/clothing/under/rank/miner/lavaland + gloves = /obj/item/clothing/gloves/color/black + back = /obj/item/weapon/storage/backpack/security + shoes = /obj/item/clothing/shoes/jackboots /obj/effect/mob_spawn/human/plasmaman mob_species = /datum/species/plasmaman @@ -453,6 +458,17 @@ icon_state = "sleeper" flavour_text = "You are a Nanotrasen Commander!" +/obj/effect/mob_spawn/human/wwii + name = "World War II Reenactor" + uniform = /obj/item/clothing/under/wwii + shoes = /obj/item/clothing/shoes/combat + gloves = /obj/item/clothing/gloves/combat + mask = /obj/item/clothing/mask/gas + helmet = /obj/item/clothing/head/helmet/stahlhelm + back = /obj/item/weapon/storage/backpack/security + has_id = 0 + + /////////////////Spooky Undead////////////////////// /obj/effect/mob_spawn/human/skeleton diff --git a/code/modules/awaymissions/mission_code/Cabin.dm b/code/modules/awaymissions/mission_code/Cabin.dm index b554a8a4547..6f5ba2a4d64 100644 --- a/code/modules/awaymissions/mission_code/Cabin.dm +++ b/code/modules/awaymissions/mission_code/Cabin.dm @@ -73,16 +73,16 @@ /obj/machinery/recycler/lumbermill name = "lumbermill saw" desc = "Faster then the cartoons!" - emagged = 2 //Always grinds people + emagged = 2 //Always gibs people + item_recycle_sound = 'sound/weapons/chainsawhit.ogg' -/obj/machinery/recycler/lumbermill/recycle(obj/item/weapon/grown/log/L, sound = 1) - L.loc = src.loc +/obj/machinery/recycler/lumbermill/recycle_item(obj/item/weapon/grown/log/L) if(!istype(L)) return - if(sound) - playsound(src.loc, 'sound/weapons/chainsawhit.ogg', 100, 1) - new L.plank_type(src.loc, 1 + round(L.seed.potency / 25)) - qdel(L) + else + var/potency = L.seed.potency + ..() + new L.plank_type(src.loc, 1 + round(potency / 25)) /mob/living/simple_animal/chicken/rabbit/normal icon_state = "b_rabbit" @@ -130,4 +130,4 @@ spawnableAtoms = list(/obj/structure/flora/rock/icy = 5, /obj/structure/flora/rock/pile/icy = 5) /obj/effect/landmark/mapGenerator/snowy - mapGeneratorType = /datum/mapGenerator/snowy \ No newline at end of file + mapGeneratorType = /datum/mapGenerator/snowy diff --git a/code/modules/awaymissions/mission_code/stationCollision.dm b/code/modules/awaymissions/mission_code/stationCollision.dm index 79c29d2b705..e213e8e3e3c 100644 --- a/code/modules/awaymissions/mission_code/stationCollision.dm +++ b/code/modules/awaymissions/mission_code/stationCollision.dm @@ -151,8 +151,7 @@ var/sc_safecode5 = "[rand(0,9)]" l_set = 1 new /obj/item/weapon/gun/energy/mindflayer(src) new /obj/item/device/soulstone(src) - new /obj/item/clothing/head/helmet/space/cult(src) - new /obj/item/clothing/suit/space/cult(src) + new /obj/item/clothing/suit/space/hardsuit/cult(src) //new /obj/item/weapon/teleportation_scroll(src) new /obj/item/weapon/ore/diamond(src) diff --git a/code/modules/cargo/console.dm b/code/modules/cargo/console.dm index 4a3e5bdfec0..968f230be28 100644 --- a/code/modules/cargo/console.dm +++ b/code/modules/cargo/console.dm @@ -5,6 +5,9 @@ circuit = /obj/item/weapon/circuitboard/computer/cargo var/requestonly = FALSE var/contraband = FALSE + var/safety_warning = "For safety reasons the automated supply shuttle \ + cannot transport live organisms, classified nuclear weaponry or \ + homing beacons." /obj/machinery/computer/cargo/request name = "supply request console" @@ -94,7 +97,7 @@ switch(action) if("send") if(SSshuttle.supply.canMove()) - say("For safety reasons the automated supply shuttle cannot transport live organisms, classified nuclear weaponry or homing beacons.") + say(safety_warning) return if(SSshuttle.supply.getDockedId() == "supply_home") SSshuttle.supply.emagged = emagged @@ -110,6 +113,9 @@ if("loan") if(!SSshuttle.shuttle_loan) return + if(SSshuttle.supply.canMove()) + say(safety_warning) + return else if(SSshuttle.supply.mode == SHUTTLE_IDLE) SSshuttle.shuttle_loan.loan_shuttle() say("The supply shuttle has been loaned to Centcom.") diff --git a/code/modules/cargo/exports.dm b/code/modules/cargo/exports.dm index bd7c588c973..59f8362a98a 100644 --- a/code/modules/cargo/exports.dm +++ b/code/modules/cargo/exports.dm @@ -70,8 +70,12 @@ Credit dupes that require a lot of manual work shouldn't be removed, unless they // Adds item's cost and amount to the current export cycle. // get_cost, get_amount and applies_to do not neccesary mean a successful sale. /datum/export/proc/sell_object(obj/O, contr = 0, emag = 0) - total_cost += get_cost(O) - total_amount += get_amount(O) + var/cost = get_cost(O) + var/amount = get_amount(O) + total_cost += cost + total_amount += amount + feedback_add_details("export_sold_amount","[O.type]|[amount]") + feedback_add_details("export_sold_cost","[O.type]|[cost]") // Total printout for the cargo console. // Called before the end of current export cycle. @@ -99,4 +103,4 @@ Credit dupes that require a lot of manual work shouldn't be removed, unless they // The current export cycle is over now. Reset all the export temporary vars. /datum/export/proc/export_end() total_cost = 0 - total_amount = 0 \ No newline at end of file + total_amount = 0 diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm index ef657aedc10..69cedb462e2 100644 --- a/code/modules/cargo/packs.dm +++ b/code/modules/cargo/packs.dm @@ -559,6 +559,12 @@ contains = list(/obj/machinery/the_singularitygen) crate_name = "singularity generator crate" +/datum/supply_pack/engineering/engine/tesla_gen + name = "Tesla Generator Crate" + cost = 5000 + contains = list(/obj/machinery/the_singularitygen/tesla) + crate_name = "tesla generator crate" + /datum/supply_pack/engineering/engine/collector name = "Collector Crate" cost = 2500 @@ -829,6 +835,14 @@ /obj/item/pizzabox/vegetable) crate_name = "pizza crate" +/datum/supply_pack/organic/cream_piee + name = "High-yield Clown-grade Cream Pie Crate" + cost = 6000 + contains = list(/obj/item/weapon/storage/backpack/dufflebag/clown/cream_pie) + crate_name = "party equipment crate" + contraband = TRUE + access = access_theatre + /datum/supply_pack/organic/monkey name = "Monkey Crate" cost = 2000 @@ -1198,7 +1212,9 @@ /obj/item/weapon/folder/red, /obj/item/weapon/folder/yellow, /obj/item/weapon/clipboard, - /obj/item/weapon/clipboard) + /obj/item/weapon/clipboard, + /obj/item/weapon/stamp, + /obj/item/weapon/stamp/denied) crate_name = "bureaucracy crate" /datum/supply_pack/misc/toner @@ -1346,9 +1362,10 @@ contains = list(/obj/item/toy/spinningtoy, /obj/item/toy/sword, /obj/item/toy/foamblade, - /obj/item/toy/AI, + /obj/item/toy/talking/AI, /obj/item/toy/talking/owl, /obj/item/toy/talking/griffin, + /obj/item/toy/talking/skeleton, /obj/item/toy/nuke, /obj/item/toy/minimeteor, /obj/item/toy/carpplushie, diff --git a/code/modules/chatter/chatter.dm b/code/modules/chatter/chatter.dm new file mode 100644 index 00000000000..4d1048e3ca9 --- /dev/null +++ b/code/modules/chatter/chatter.dm @@ -0,0 +1,56 @@ +/proc/chatter(message, phomeme, atom/A) + // We want to transform any message into a list of numbers + // and punctuation marks + // For example: + // "Hi." -> [2, '.'] + // "HALP GEROGE MELLONS, that swine, is GRIFFIN ME!" + // -> [4, 6, 7, ',', 4, 5, ',', '2', 7, 2, '!'] + // "fuck,thissentenceissquashed" -> [4, ',', 21] + + var/list/punctuation = list(",",":",";",".","?","!","\'","-") + var/regex/R = regex("(\[\\l\\d]*)(\[^\\l\\d\\s])?", "g") + var/list/letter_count = list() + while(R.Find(message) != 0) + if(R.group[1]) + letter_count += length(R.group[1]) + if(R.group[2]) + letter_count += R.group[2] + + spawn(0) + for(var/item in letter_count) + if (item in punctuation) + // simulate pausing in talking + // ignore semi-colons because of their use in HTML escaping + if (item in list(",", ":")) + sleep(3) + if (item in list("!", "?", ".")) + sleep(6) + continue + + if(isnum(item)) + var/length = min(item, 10) + if (length == 0) + // "verbalise" long spaces + sleep(1) + chatter_speak_word(A.loc, phomeme, length) + +/proc/chatter_speak_word(loc, phomeme, length) + var/path = "sound/chatter/[phomeme]_[length].ogg" + + playsound(loc, path, + vol = 40, vary = 0, extrarange = 3, falloff = FALSE, surround = 1) + + sleep((length + 1) * chatter_get_sleep_multiplier(phomeme)) + +/proc/chatter_get_sleep_multiplier(phomeme) + // These values are tenths of seconds, so 0.5 == 0.05seconds + . = 1 + switch(phomeme) + if("papyrus") + . = 0.5 + if("griffin") + . = 0.5 + if("sans") + . = 0.7 + if("owl") + . = 0.7 diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 5ead2090726..57854738378 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -62,7 +62,6 @@ var/list/preferences_datums = list() var/list/features = list("mcolor" = "FFF", "tail_lizard" = "Smooth", "tail_human" = "None", "snout" = "Round", "horns" = "None", "ears" = "None", "wings" = "None", "frills" = "None", "spines" = "None", "body_markings" = "None") var/list/custom_names = list("clown", "mime", "ai", "cyborg", "religion", "deity") - var/adminmusicvolume = 50 //Mob preview var/icon/preview_icon = null diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index b988dd25e1e..33ff7efcaed 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -2,7 +2,7 @@ #define SAVEFILE_VERSION_MIN 8 //This is the current version, anything below this will attempt to update (if it's not obsolete) -#define SAVEFILE_VERSION_MAX 14 +#define SAVEFILE_VERSION_MAX 15 /* SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Carn This proc checks if the current directory of the savefile S needs updating @@ -101,6 +101,8 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car toggles = TOGGLES_DEFAULT if(current_version < 12) ignoring = list() + if(current_version < 15) + toggles |= SOUND_ANNOUNCEMENTS //should this proc get fairly long (say 3 versions long), //just increase SAVEFILE_VERSION_MIN so it's not as far behind @@ -223,7 +225,6 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car S["preferred_map"] >> preferred_map S["ignoring"] >> ignoring S["ghost_hud"] >> ghost_hud - S["adminmusicvolume"] >> adminmusicvolume S["inquisitive_ghost"] >> inquisitive_ghost //try to fix any outdated data if necessary @@ -275,7 +276,6 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car S["preferred_map"] << preferred_map S["ignoring"] << ignoring S["ghost_hud"] << ghost_hud - S["adminmusicvolume"] << adminmusicvolume S["inquisitive_ghost"] << inquisitive_ghost return 1 diff --git a/code/modules/client/preferences_toggles.dm b/code/modules/client/preferences_toggles.dm index 8e8e856b4ae..bf3071d1dda 100644 --- a/code/modules/client/preferences_toggles.dm +++ b/code/modules/client/preferences_toggles.dm @@ -330,15 +330,6 @@ var/global/list/ghost_orbits = list(GHOST_ORBIT_CIRCLE,GHOST_ORBIT_TRIANGLE,GHOS set category = "Preferences" set desc = ".Toggles hearing Central Command, Captain, VOX, and other announcement sounds" prefs.toggles ^= SOUND_ANNOUNCEMENTS - src << "You will now [(prefs.toggles & SOUND_ANNOUNCEMENTS) ? "no longer hear announcements" : "hear announcement sounds"]." - prefs.save_preferences() - feedback_add_details("admin_verb","TAS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - - -/client/verb/set_admin_volume() - set name = "Set Admin Music Volume" - set category = "Preferences" - set desc = "Set the volume you hear admin music at." - var/musinput = input("Range of 0 to 100.","Admin Music Volume", prefs.adminmusicvolume) as num - prefs.adminmusicvolume = max(0,min(musinput,100)) + src << "You will now [(prefs.toggles & SOUND_ANNOUNCEMENTS) ? "hear announcement sounds" : "no longer hear announcements"]." prefs.save_preferences() + feedback_add_details("admin_verb","TAS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! \ No newline at end of file diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 2f678e92241..a3856b0ee1c 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -25,7 +25,8 @@ /obj/item/clothing/Destroy() - dropped() + if(isliving(loc)) + dropped(loc) user_vars_remembered = null //Oh god somebody put REFERENCES in here? not to worry, we'll clean it up return ..() @@ -340,7 +341,6 @@ BLIND // can't see anything var/can_adjust = 1 var/adjusted = 0 var/alt_covers_chest = 0 // for adjusted/rolled-down jumpsuits, 0 = exposes chest and arms, 1 = exposes arms only - var/suit_color = null var/obj/item/clothing/tie/hastie = null /obj/item/clothing/under/worn_overlays(var/isinhands = FALSE) @@ -362,7 +362,6 @@ BLIND // can't see anything //make the sensor mode favor higher levels, except coords. sensor_mode = pick(0, 1, 1, 2, 2, 2, 3, 3) adjusted = 0 - suit_color = item_color ..() /obj/item/clothing/under/attackby(obj/item/I, mob/user, params) @@ -481,25 +480,25 @@ BLIND // can't see anything if(!can_adjust) usr << "You cannot wear this suit any differently!" return - if(src.adjusted == 1) - src.fitted = initial(fitted) - src.item_color = initial(item_color) - src.item_color = src.suit_color //colored jumpsuits are shit and break without this - src.body_parts_covered = CHEST|GROIN|LEGS|ARMS - usr << "You adjust the suit back to normal." - src.adjusted = 0 - else - if(src.fitted != FEMALE_UNIFORM_TOP) - src.fitted = NO_FEMALE_UNIFORM - src.item_color += "_d" - if (alt_covers_chest) // for the special snowflake suits that don't expose the chest when adjusted - src.body_parts_covered = CHEST|GROIN|LEGS - else - src.body_parts_covered = GROIN|LEGS + if(toggle_jumpsuit_adjust()) usr << "You adjust the suit to wear it more casually." - src.adjusted = 1 + else + usr << "You adjust the suit back to normal." usr.update_inv_w_uniform() - ..() + +/obj/item/clothing/under/proc/toggle_jumpsuit_adjust() + adjusted = !adjusted + if(adjusted) + if(fitted != FEMALE_UNIFORM_TOP) + fitted = NO_FEMALE_UNIFORM + if (alt_covers_chest) // for the special snowflake suits that don't expose the chest when adjusted + body_parts_covered = CHEST|GROIN|LEGS + else + body_parts_covered = GROIN|LEGS + else + fitted = initial(fitted) + body_parts_covered = CHEST|GROIN|LEGS|ARMS + return adjusted /obj/item/clothing/under/examine(mob/user) ..() diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index 0de25cc3366..6aa577594d7 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -206,7 +206,7 @@ /obj/item/clothing/head/helmet/skull name = "skull helmet" desc = "An intimidating tribal helmet, it doesn't look very comfortable." - flags_inv = HIDEEARS|HIDEHAIR + flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE flags_cover = HEADCOVERSEYES armor = list(melee = 25, bullet = 25, laser = 25, energy = 10, bomb = 10, bio = 5, rad = 20) icon_state = "skull" diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm index e96dd88e631..24a18a98808 100644 --- a/code/modules/clothing/head/misc.dm +++ b/code/modules/clothing/head/misc.dm @@ -261,3 +261,36 @@ desc = "A paper sack with crude holes cut out for eyes and a sketchy smile drawn on the front. Not creepy at all." icon_state = "papersack_smile" flags_inv = HIDEHAIR|HIDEFACE|HIDEEARS + +/* +-!WARNING!- +-POTENTIAL TRIGGER-INDUCING ITEMS AHEAD- +-TREAD WITH CAUTION- +*/ + +/obj/item/clothing/head/helmet/stahlhelm + name = "stahlhelm" + desc = "A hard military helmet, seems dusty." + icon_state = "stalhelm" + item_state = "stalhelm" + armor = list(melee = 15, bullet = 10, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) + strip_delay = 30 + +/obj/item/clothing/head/helmet/panzer + name = "Panzer Cap" + desc = "A fancy-looking military cap." + icon_state = "panzercap" + item_state = "panzercap" + +/obj/item/clothing/head/helmet/naziofficer + name = "Officer Cap" + desc = "A cap fit for a commanding officer." + icon_state = "officercap" + item_state = "officercap" + armor = list(melee = 20, bullet = 15, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) + strip_delay = 60 + +/* +-YOU HAVE SAFETLY PASSED THE POTENTIALLY-TRIGGERING CONTENT- +-PLEASE RESUME NORMAL, POLITICALLY CORRECT ACTIVITY- +*/ \ No newline at end of file diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm index 154cf6a5d71..dd1875aaead 100644 --- a/code/modules/clothing/head/misc_special.dm +++ b/code/modules/clothing/head/misc_special.dm @@ -48,6 +48,7 @@ icon_state = "hardhat0_cakehat" item_state = "hardhat0_cakehat" item_color = "cakehat" + hitsound = 'sound/weapons/tap.ogg' flags_inv = HIDEEARS|HIDEHAIR armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) brightness_on = 2 //luminosity when on @@ -69,6 +70,7 @@ force = 15 throwforce = 15 damtype = BURN + hitsound = 'sound/items/Welder.ogg' SSobj.processing |= src /obj/item/clothing/head/hardhat/cakehat/turn_off() @@ -76,6 +78,7 @@ force = 0 throwforce = 0 damtype = BRUTE + hitsound = 'sound/weapons/tap.ogg' SSobj.processing -= src /obj/item/clothing/head/hardhat/cakehat/is_hot() diff --git a/code/modules/clothing/masks/hailer.dm b/code/modules/clothing/masks/hailer.dm index 040ef0bab42..819d8ac9975 100644 --- a/code/modules/clothing/masks/hailer.dm +++ b/code/modules/clothing/masks/hailer.dm @@ -23,7 +23,7 @@ actions_types = list(/datum/action/item_action/halt) icon_state = "swat" aggressiveness = 3 - flags_inv = HIDEFACIALHAIR|HIDEFACE|HIDEEYES|HIDEEARS + flags_inv = HIDEFACIALHAIR|HIDEFACE|HIDEEYES|HIDEEARS|HIDEHAIR visor_flags_inv = 0 /obj/item/clothing/mask/gas/sechailer/cyborg diff --git a/code/modules/clothing/shoes/colour.dm b/code/modules/clothing/shoes/colour.dm index 1cce1cd3374..e4019814bce 100644 --- a/code/modules/clothing/shoes/colour.dm +++ b/code/modules/clothing/shoes/colour.dm @@ -11,8 +11,8 @@ heat_protection = FEET max_heat_protection_temperature = SHOES_MAX_TEMP_PROTECT - redcoat - item_color = "redcoat" //Exists for washing machines. Is not different from black shoes in any way. +/obj/item/clothing/shoes/sneakers/black/redcoat + item_color = "redcoat" //Exists for washing machines. Is not different from black shoes in any way. /obj/item/clothing/shoes/sneakers/brown name = "brown shoes" @@ -20,18 +20,23 @@ icon_state = "brown" item_color = "brown" - captain - item_color = "captain" //Exists for washing machines. Is not different from brown shoes in any way. - hop - item_color = "hop" //Exists for washing machines. Is not different from brown shoes in any way. - ce - item_color = "chief" //Exists for washing machines. Is not different from brown shoes in any way. - rd - item_color = "director" //Exists for washing machines. Is not different from brown shoes in any way. - cmo - item_color = "medical" //Exists for washing machines. Is not different from brown shoes in any way. - cmo - item_color = "cargo" //Exists for washing machines. Is not different from brown shoes in any way. +/obj/item/clothing/shoes/sneakers/brown/captain + item_color = "captain" //Exists for washing machines. Is not different from brown shoes in any way. + +/obj/item/clothing/shoes/sneakers/brown/hop + item_color = "hop" //Exists for washing machines. Is not different from brown shoes in any way. + +/obj/item/clothing/shoes/sneakers/brown/ce + item_color = "chief" //Exists for washing machines. Is not different from brown shoes in any way. + +/obj/item/clothing/shoes/sneakers/brown/rd + item_color = "director" //Exists for washing machines. Is not different from brown shoes in any way. + +/obj/item/clothing/shoes/sneakers/brown/cmo + item_color = "medical" //Exists for washing machines. Is not different from brown shoes in any way. + +/obj/item/clothing/shoes/sneakers/brown/qm + item_color = "cargo" //Exists for washing machines. Is not different from brown shoes in any way. /obj/item/clothing/shoes/sneakers/blue name = "blue shoes" diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm index fb0339fa62d..9a39b5e07aa 100644 --- a/code/modules/clothing/shoes/miscellaneous.dm +++ b/code/modules/clothing/shoes/miscellaneous.dm @@ -115,6 +115,12 @@ put_on_delay = 40 can_hold_items = 1 +/obj/item/clothing/shoes/workboots/mining + name = "mining boots" + desc = "Steel-toed mining boots for mining in hazardous environments. Very good at keeping toes uncrushed." + icon_state = "explorer" + burn_state = FIRE_PROOF + /obj/item/clothing/shoes/cult name = "nar-sian invoker boots" desc = "A pair of boots worn by the followers of Nar-Sie." diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index 2d80c678690..228ba63a9c7 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -105,7 +105,7 @@ item_state = "bonearmor" blood_overlay_type = "armor" armor = list(melee = 35, bullet = 25, laser = 25, energy = 10, bomb = 25, bio = 0, rad = 0) - body_parts_covered = CHEST + body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS /obj/item/clothing/suit/armor/bulletproof name = "bulletproof armor" diff --git a/code/modules/clothing/under/color.dm b/code/modules/clothing/under/color.dm index 799b78c276f..16d994bde9c 100644 --- a/code/modules/clothing/under/color.dm +++ b/code/modules/clothing/under/color.dm @@ -8,7 +8,6 @@ icon_state = initial(C.icon_state) item_state = initial(C.item_state) item_color = initial(C.item_color) - suit_color = initial(C.item_color) /obj/item/clothing/under/color/black name = "black jumpsuit" diff --git a/code/modules/clothing/under/jobs/civilian.dm b/code/modules/clothing/under/jobs/civilian.dm index 2e360b3f31c..6b6bad92bec 100644 --- a/code/modules/clothing/under/jobs/civilian.dm +++ b/code/modules/clothing/under/jobs/civilian.dm @@ -175,8 +175,9 @@ /obj/item/clothing/under/rank/miner/lavaland - desc = "A black jumpsuit for operating in hazardous environments." + desc = "A green uniform for operating in hazardous environments." name = "shaft miner's jumpsuit" - icon_state = "syndicate" - item_state = "bl_suit" - item_color = "syndicate" + icon_state = "explorer" + item_state = "explorer" + item_color = "explorer" + can_adjust = 0 diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm index da4ce9a3e0c..a63fd72439e 100644 --- a/code/modules/clothing/under/miscellaneous.dm +++ b/code/modules/clothing/under/miscellaneous.dm @@ -574,3 +574,32 @@ item_state = "hostanclothes" item_color = "hostanclothes" +/* +-!WARNING!- +-POTENTIAL TRIGGER-INDUCING ITEMS AHEAD- +-TREAD WITH CAUTION- +*/ + +/obj/item/clothing/under/wwii + name = "dusty uniform" + desc = "A dusty old uniform, a relic from a time before." + icon_state = "soldieruniform" + item_state = "soldieruniform" + item_color = "soldieruniform" + armor = list(melee = 10, bullet = 5, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) + strip_delay = 50 + + +/obj/item/clothing/under/wwii/officer + name = "dusty uniform" + desc = "A dusty old uniform, a relic from a time before. This one looks more official." + icon_state = "officeruniform" + item_state = "officeruniform" + item_color = "officeruniform" + armor = list(melee = 15, bullet = 10, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0) + strip_delay = 60 + +/* +-YOU HAVE SAFETLY PASSED THE POTENTIALLY-TRIGGERING CONTENT- +-PLEASE RESUME NORMAL, POLITICALLY CORRECT ACTIVITY- +*/ diff --git a/code/modules/crafting/craft.dm b/code/modules/crafting/craft.dm new file mode 100644 index 00000000000..63b3290aa06 --- /dev/null +++ b/code/modules/crafting/craft.dm @@ -0,0 +1,350 @@ +/datum/personal_crafting + var/busy + var/viewing_category = 1 //typical powergamer starting on the Weapons tab + var/list/categories = list(CAT_WEAPON,CAT_AMMO,CAT_ROBOT,CAT_FOOD,CAT_MISC,CAT_PRIMAL) + var/datum/action/innate/crafting/button + + + + + +/* This is what procs do: + get_environment - gets a list of things accessable for crafting by user + get_surroundings - takes a list of things and makes a list of key-types to values-amounts of said type in the list + check_contents - takes a recipe and a key-type list and checks if said recipe can be done with available stuff + check_tools - takes recipe, a key-type list, and a user and checks if there are enough tools to do the stuff, checks bugs one level deep + construct_item - takes a recipe and a user, call all the checking procs, calls do_after, checks all the things again, calls del_reqs, creates result, calls CheckParts of said result with argument being list returned by deel_reqs + del_reqs - takes recipe and a user, loops over the recipes reqs var and tries to find everything in the list make by get_environment and delete it/add to parts list, then returns the said list +*/ + + + + +/datum/personal_crafting/proc/check_contents(datum/crafting_recipe/R, list/contents) + main_loop: + for(var/A in R.reqs) + var/needed_amount = R.reqs[A] + for(var/B in contents) + if(ispath(B, A)) + if(contents[B] >= R.reqs[A]) + continue main_loop + else + needed_amount -= contents[B] + if(needed_amount <= 0) + continue main_loop + else + continue + return 0 + for(var/A in R.chem_catalysts) + if(contents[A] < R.chem_catalysts[A]) + return 0 + return 1 + +/datum/personal_crafting/proc/get_environment(mob/user) + . = list() + . += user.r_hand + . += user.l_hand + if(!istype(user.loc, /turf)) + return + var/list/L = block(get_step(user, SOUTHWEST), get_step(user, NORTHEAST)) + for(var/A in L) + var/turf/T = A + if(T.Adjacent(user)) + for(var/B in T) + var/atom/movable/AM = B + if(AM.flags & HOLOGRAM) + continue + . += AM + +/datum/personal_crafting/proc/get_surroundings(mob/user) + . = list() + for(var/obj/item/I in get_environment(user)) + if(I.flags & HOLOGRAM) + continue + if(istype(I, /obj/item/stack)) + var/obj/item/stack/S = I + .[I.type] += S.amount + else + if(istype(I, /obj/item/weapon/reagent_containers)) + var/obj/item/weapon/reagent_containers/RC = I + if(RC.flags & OPENCONTAINER) + for(var/datum/reagent/A in RC.reagents.reagent_list) + .[A.type] += A.volume + .[I.type] += 1 + +/datum/personal_crafting/proc/check_tools(mob/user, datum/crafting_recipe/R, list/contents) + if(!R.tools.len) + return 1 + var/list/possible_tools = list() + for(var/obj/item/I in user.contents) + if(istype(I, /obj/item/weapon/storage)) + for(var/obj/item/SI in I.contents) + possible_tools += SI.type + possible_tools += I.type + possible_tools += contents + + main_loop: + for(var/A in R.tools) + for(var/I in possible_tools) + if(ispath(I,A)) + continue main_loop + return 0 + return 1 + +/datum/personal_crafting/proc/construct_item(mob/user, datum/crafting_recipe/R) + for(var/A in R.parts) + var/list/contents = get_surroundings(user) + var/send_feedback = 1 + if(check_contents(R, contents)) + if(check_tools(user, R, contents)) + if(do_after(user, R.time, target = user)) + contents = get_surroundings(user) + if(!check_contents(R, contents)) + return ", missing component." + if(!check_tools(user, R, contents)) + return ", missing tool." + var/list/parts = del_reqs(R, user) + var/atom/movable/I = new R.result (get_turf(user.loc)) + I.CheckParts(parts, R) + if(send_feedback) + feedback_add_details("object_crafted","[I.type]") + return 0 + return "." + return ", missing tool." + return ", missing component." + + +/*Del reqs works like this: + + Loop over reqs var of the recipe + Set var amt to the value current cycle req is pointing to, its amount of type we need to delete + Get var/surroundings list of things accessable to crafting by get_environment() + Check the type of the current cycle req + If its reagent then do a while loop, inside it try to locate() reagent containers, inside such containers try to locate needed reagent, if there isnt remove thing from surroundings + If there is enough reagent in the search result then delete the needed amount, create the same type of reagent with the same data var and put it into deletion list + If there isnt enough take all of that reagent from the container, put into deletion list, substract the amt var by the volume of reagent, remove the container from surroundings list and keep searching + While doing above stuff check deletion list if it already has such reagnet, if yes merge instead of adding second one + If its stack check if it has enough amount + If yes create new stack with the needed amount and put in into deletion list, substract taken amount from the stack + If no put all of the stack in the deletion list, substract its amount from amt and keep searching + While doing above stuff check deletion list if it already has such stack type, if yes try to merge them instead of adding new one + If its anything else just locate() in in the list in a while loop, each find --s the amt var and puts the found stuff in deletion loop + + Then do a loop over parts var of the recipe + Do similar stuff to what we have done above, but now in deletion list, until the parts conditions are satisfied keep taking from the deletion list and putting it into parts list for return + + After its done loop over deletion list and delete all the shit that wasnt taken by parts loop + + del_reqs return the list of parts resulting object will recieve as argument of CheckParts proc, on the atom level it will add them all to the contents, on all other levels it calls ..() and does whatever is needed afterwards but from contents list already +*/ + +/datum/personal_crafting/proc/del_reqs(datum/crafting_recipe/R, mob/user) + var/list/surroundings + var/list/Deletion = list() + . = list() + var/data + var/amt + main_loop: + for(var/A in R.reqs) + amt = R.reqs[A] + surroundings = get_environment(user) + surroundings -= Deletion + if(ispath(A, /datum/reagent)) + var/datum/reagent/RG = new A + var/datum/reagent/RGNT + while(amt > 0) + var/obj/item/weapon/reagent_containers/RC = locate() in surroundings + RG = RC.reagents.get_reagent(A) + if(RG) + if(!locate(RG.type) in Deletion) + Deletion += new RG.type() + if(RG.volume > amt) + RG.volume -= amt + data = RG.data + RC.reagents.conditional_update(RC) + RG = locate(RG.type) in Deletion + RG.volume = amt + RG.data += data + continue main_loop + else + surroundings -= RC + amt -= RG.volume + RC.reagents.reagent_list -= RG + RC.reagents.conditional_update(RC) + RGNT = locate(RG.type) in Deletion + RGNT.volume += RG.volume + RGNT.data += RG.data + qdel(RG) + else + surroundings -= RC + else if(ispath(A, /obj/item/stack)) + var/obj/item/stack/S + var/obj/item/stack/SD + while(amt > 0) + S = locate(A) in surroundings + if(S.amount >= amt) + if(!locate(S.type) in Deletion) + SD = new S.type() + Deletion += SD + S.use(amt) + SD = locate(S.type) in Deletion + SD.amount += amt + continue main_loop + else + amt -= S.amount + if(!locate(S.type) in Deletion) + Deletion += S + else + data = S.amount + S = locate(S.type) in Deletion + S.add(data) + surroundings -= S + else + var/atom/movable/I + while(amt > 0) + I = locate(A) in surroundings + Deletion += I + surroundings -= I + amt-- + var/list/partlist = list(R.parts.len) + for(var/M in R.parts) + partlist[M] = R.parts[M] + for(var/A in R.parts) + if(istype(A, /datum/reagent)) + var/datum/reagent/RG = locate(A) in Deletion + if(RG.volume > partlist[A]) + RG.volume = partlist[A] + . += RG + Deletion -= RG + continue + else if(istype(A, /obj/item/stack)) + var/obj/item/stack/ST = locate(A) in Deletion + if(ST.amount > partlist[A]) + ST.amount = partlist[A] + . += ST + Deletion -= ST + continue + else + while(partlist[A] > 0) + var/atom/movable/AM = locate(A) in Deletion + . += AM + Deletion -= AM + partlist[A] -= 1 + while(Deletion.len) + var/DL = Deletion[Deletion.len] + Deletion.Cut(Deletion.len) + qdel(DL) + +/datum/personal_crafting/proc/craft(mob/user) + if(user.incapacitated() || user.lying || istype(user.loc, /obj/mecha)) + return + var/list/surroundings = get_surroundings(user) + var/dat = "

Crafting menu

" + if(busy) + dat += "
" + dat += "Crafting in progress...
" + else + dat += "<--" + dat += " [categories[prev_cat()]] |" + dat += " [categories[viewing_category]] " + dat += "| [categories[next_cat()]] " + dat += "-->

" + + dat += "
" + + //Filter the recipes we can craft to the top + var/list/can_craft = list() + var/list/cant_craft = list() + for(var/datum/crafting_recipe/R in crafting_recipes) + if(R.category != categories[viewing_category]) + continue + if(check_contents(R, surroundings)) + can_craft += R + else + cant_craft += R + + for(var/datum/crafting_recipe/R in can_craft) + dat += build_recipe_text(R, surroundings) + for(var/datum/crafting_recipe/R in cant_craft) + dat += build_recipe_text(R, surroundings) + + + dat += "
" + + var/datum/browser/popup = new(user, "crafting", "Crafting", 500, 500) + popup.set_content(dat) + popup.open() + return + +/datum/personal_crafting/Topic(href, href_list) + if(usr.stat || usr.lying) + return + if(href_list["make"]) + var/datum/crafting_recipe/TR = locate(href_list["make"]) + busy = 1 + craft(usr) + var/fail_msg = construct_item(usr, TR) + if(!fail_msg) + usr << "[TR.name] constructed." + else + usr << "Construction failed[fail_msg]" + busy = 0 + craft(usr) + if(href_list["forwardCat"]) + viewing_category = next_cat() + usr << "Category is now [categories[viewing_category]]." + craft(usr) + if(href_list["backwardCat"]) + viewing_category = prev_cat() + usr << "Category is now [categories[viewing_category]]." + craft(usr) + +//Next works nicely with modular arithmetic +/datum/personal_crafting/proc/next_cat() + . = viewing_category % categories.len + 1 + +//Previous can go fuck itself +/datum/personal_crafting/proc/prev_cat() + if(viewing_category == categories.len) + . = viewing_category-1 + else + . = viewing_category % categories.len - 1 + if(. <= 0) + . = categories.len + +/datum/personal_crafting/proc/build_recipe_text(datum/crafting_recipe/R, list/contents) + . = "" + var/name_text = "" + var/req_text = "" + var/tool_text = "" + var/catalist_text = "" + if(check_contents(R, contents)) + name_text ="[R.name]" + + else + name_text = "[R.name]" + + if(name_text) + for(var/A in R.reqs) + if(ispath(A, /obj)) + var/obj/O = A + req_text += " [R.reqs[A]] [initial(O.name)]" + else if(ispath(A, /datum/reagent)) + var/datum/reagent/RE = A + req_text += " [R.reqs[A]] [initial(RE.name)]" + + if(R.chem_catalysts.len) + catalist_text += ", Catalysts:" + for(var/C in R.chem_catalysts) + if(ispath(C, /datum/reagent)) + var/datum/reagent/RE = C + catalist_text += " [R.chem_catalysts[C]] [initial(RE.name)]" + + if(R.tools.len) + tool_text += ", Tools:" + for(var/O in R.tools) + if(ispath(O, /obj)) + var/obj/T = O + tool_text += " [R.tools[O]] [initial(T.name)]" + + . = "[name_text][req_text][tool_text][catalist_text]
" \ No newline at end of file diff --git a/code/modules/crafting/guncrafting.dm b/code/modules/crafting/guncrafting.dm index 0af951395f8..eba8c301972 100644 --- a/code/modules/crafting/guncrafting.dm +++ b/code/modules/crafting/guncrafting.dm @@ -1,5 +1,4 @@ -// This file is for projectile weapon crafting. All parts and construction paths will be contained here. -// The weapons themselves are children of other weapons and should be contained in their respective files. +//Gun crafting parts til they can be moved elsewhere // PARTS // @@ -14,70 +13,3 @@ desc = "A classic rifle stock that doubles as a grip, roughly carved out of wood." icon = 'icons/obj/improvised.dmi' icon_state = "riflestock" - - -// CRAFTING // - -/obj/item/weaponcrafting/reciever/attackby(obj/item/W, mob/user, params) - if(istype(W,/obj/item/pipe)) - user << "You attach the shotgun barrel to the receiver. The pins seem loose." - var/obj/item/weaponcrafting/ishotgunconstruction/I = new /obj/item/weaponcrafting/ishotgunconstruction - user.unEquip(src) - user.put_in_hands(I) - qdel(W) - qdel(src) - return - -// SHOTGUN // - -/obj/item/weaponcrafting/ishotgunconstruction - name = "slightly conspicuous metal construction" - desc = "A long pipe attached to a firearm receiver. The pins seem loose." - icon = 'icons/obj/improvised.dmi' - icon_state = "ishotgunstep1" - -/obj/item/weaponcrafting/ishotgunconstruction/attackby(obj/item/I, mob/user, params) - ..() - if(istype(I, /obj/item/weapon/screwdriver)) - var/obj/item/weaponcrafting/ishotgunconstruction2/C = new /obj/item/weaponcrafting/ishotgunconstruction2 - user.unEquip(src) - user.put_in_hands(C) - user << "You screw the pins into place, securing the pipe to the receiver." - qdel(src) - -/obj/item/weaponcrafting/ishotgunconstruction2 - name = "very conspicuous metal construction" - desc = "A long pipe attached to a trigger assembly." - icon = 'icons/obj/improvised.dmi' - icon_state = "ishotgunstep1" - -/obj/item/weaponcrafting/ishotgunconstruction2/attackby(obj/item/W, mob/user, params) - if(istype(W,/obj/item/weaponcrafting/stock)) - user << "You attach the stock to the receiver-barrel assembly." - var/obj/item/weaponcrafting/ishotgunconstruction3/I = new /obj/item/weaponcrafting/ishotgunconstruction3 - user.unEquip(src) - user.put_in_hands(I) - qdel(W) - qdel(src) - return - -/obj/item/weaponcrafting/ishotgunconstruction3 - name = "extremely conspicuous metal construction" - desc = "A receiver-barrel shotgun assembly with a loose wooden stock. There's no way you can fire it without the stock coming loose." - icon = 'icons/obj/improvised.dmi' - icon_state = "ishotgunstep2" - -/obj/item/weaponcrafting/ishotgunconstruction3/attackby(obj/item/I, mob/user, params) - ..() - if(istype(I, /obj/item/stack/packageWrap)) - var/obj/item/stack/packageWrap/C = I - if (C.use(5)) - var/obj/item/weapon/gun/projectile/revolver/doublebarrel/improvised/W = new /obj/item/weapon/gun/projectile/revolver/doublebarrel/improvised - user.unEquip(src) - user.put_in_hands(W) - user << "You tie the wrapping paper around the stock and the barrel to secure it." - qdel(src) - else - user << "You need at least five feet of wrapping paper to secure the stock!" - return - diff --git a/code/modules/crafting/recipes.dm b/code/modules/crafting/recipes.dm index 2c68ecb4ff9..77cce99d702 100644 --- a/code/modules/crafting/recipes.dm +++ b/code/modules/crafting/recipes.dm @@ -1,5 +1,5 @@ -/datum/table_recipe +/datum/crafting_recipe var/name = "" //in-game display name var/reqs[] = list() //type paths of items consumed associated with how many are needed var/result //type path of item resulting from this craft @@ -10,7 +10,7 @@ var/category = CAT_NONE //where it shows up in the crafting UI -/datum/table_recipe/pin_removal +/datum/crafting_recipe/pin_removal name = "Pin Removal" result = /obj/item/weapon/gun reqs = list(/obj/item/weapon/gun = 1) @@ -19,7 +19,7 @@ time = 50 category = CAT_WEAPON -/datum/table_recipe/IED +/datum/crafting_recipe/IED name = "IED" result = /obj/item/weapon/grenade/iedcasing reqs = list(/datum/reagent/fuel = 50, @@ -30,8 +30,8 @@ time = 15 category = CAT_WEAPON -/datum/table_recipe/lance - name = "explosive lance" +/datum/crafting_recipe/lance + name = "explosive lance (grenade)" result = /obj/item/weapon/twohanded/spear reqs = list(/obj/item/weapon/twohanded/spear = 1, /obj/item/weapon/grenade = 1) @@ -39,8 +39,7 @@ time = 15 category = CAT_WEAPON - -/datum/table_recipe/molotov +/datum/crafting_recipe/molotov name = "Molotov" result = /obj/item/weapon/reagent_containers/food/drinks/bottle/molotov reqs = list(/obj/item/weapon/reagent_containers/glass/rag = 1, @@ -49,7 +48,7 @@ time = 40 category = CAT_WEAPON -/datum/table_recipe/stunprod +/datum/crafting_recipe/stunprod name = "Stunprod" result = /obj/item/weapon/melee/baton/cattleprod reqs = list(/obj/item/weapon/restraints/handcuffs/cable = 1, @@ -58,7 +57,7 @@ time = 40 category = CAT_WEAPON -/datum/table_recipe/teleprod +/datum/crafting_recipe/teleprod name = "Teleprod" result = /obj/item/weapon/melee/baton/cattleprod/teleprod reqs = list(/obj/item/weapon/restraints/handcuffs/cable = 1, @@ -68,7 +67,7 @@ time = 40 category = CAT_WEAPON -/datum/table_recipe/bola +/datum/crafting_recipe/bola name = "Bola" result = /obj/item/weapon/restraints/legcuffs/bola reqs = list(/obj/item/weapon/restraints/handcuffs/cable = 1, @@ -76,7 +75,7 @@ time = 20//15 faster than crafting them by hand! category= CAT_WEAPON -/datum/table_recipe/tailclub +/datum/crafting_recipe/tailclub name = "Tail Club" result = /obj/item/weapon/tailclub reqs = list(/obj/item/severedtail = 1, @@ -84,7 +83,7 @@ time = 40 category = CAT_WEAPON -/datum/table_recipe/tailwhip +/datum/crafting_recipe/tailwhip name = "Liz O' Nine Tails" result = /obj/item/weapon/melee/chainofcommand/tailwhip reqs = list(/obj/item/severedtail = 1, @@ -92,7 +91,7 @@ time = 40 category = CAT_WEAPON -/datum/table_recipe/ed209 +/datum/crafting_recipe/ed209 name = "ED209" result = /mob/living/simple_animal/bot/ed209 reqs = list(/obj/item/robot_parts/robot_suit = 1, @@ -110,7 +109,7 @@ time = 60 category = CAT_ROBOT -/datum/table_recipe/secbot +/datum/crafting_recipe/secbot name = "Secbot" result = /mob/living/simple_animal/bot/secbot reqs = list(/obj/item/device/assembly/signaler = 1, @@ -122,7 +121,7 @@ time = 60 category = CAT_ROBOT -/datum/table_recipe/cleanbot +/datum/crafting_recipe/cleanbot name = "Cleanbot" result = /mob/living/simple_animal/bot/cleanbot reqs = list(/obj/item/weapon/reagent_containers/glass/bucket = 1, @@ -131,7 +130,7 @@ time = 40 category = CAT_ROBOT -/datum/table_recipe/floorbot +/datum/crafting_recipe/floorbot name = "Floorbot" result = /mob/living/simple_animal/bot/floorbot reqs = list(/obj/item/weapon/storage/toolbox/mechanical = 1, @@ -141,7 +140,7 @@ time = 40 category = CAT_ROBOT -/datum/table_recipe/medbot +/datum/crafting_recipe/medbot name = "Medbot" result = /mob/living/simple_animal/bot/medbot reqs = list(/obj/item/device/healthanalyzer = 1, @@ -151,7 +150,7 @@ time = 40 category = CAT_ROBOT -/datum/table_recipe/flamethrower +/datum/crafting_recipe/flamethrower name = "Flamethrower" result = /obj/item/weapon/flamethrower reqs = list(/obj/item/weapon/weldingtool = 1, @@ -163,7 +162,7 @@ time = 10 category = CAT_WEAPON -/datum/table_recipe/meteorshot +/datum/crafting_recipe/meteorshot name = "Meteorshot Shell" result = /obj/item/ammo_casing/shotgun/meteorshot reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1, @@ -173,7 +172,7 @@ time = 5 category = CAT_AMMO -/datum/table_recipe/pulseslug +/datum/crafting_recipe/pulseslug name = "Pulse Slug Shell" result = /obj/item/ammo_casing/shotgun/pulseslug reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1, @@ -183,7 +182,7 @@ time = 5 category = CAT_AMMO -/datum/table_recipe/dragonsbreath +/datum/crafting_recipe/dragonsbreath name = "Dragonsbreath Shell" result = /obj/item/ammo_casing/shotgun/incendiary/dragonsbreath reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1, @@ -192,7 +191,7 @@ time = 5 category = CAT_AMMO -/datum/table_recipe/frag12 +/datum/crafting_recipe/frag12 name = "FRAG-12 Shell" result = /obj/item/ammo_casing/shotgun/frag12 reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1, @@ -203,7 +202,7 @@ time = 5 category = CAT_AMMO -/datum/table_recipe/ionslug +/datum/crafting_recipe/ionslug name = "Ion Scatter Shell" result = /obj/item/ammo_casing/shotgun/ion reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1, @@ -213,7 +212,7 @@ time = 5 category = CAT_AMMO -/datum/table_recipe/improvisedslug +/datum/crafting_recipe/improvisedslug name = "Improvised Shotgun Shell" result = /obj/item/ammo_casing/shotgun/improvised reqs = list(/obj/item/weapon/grenade/chem_grenade = 1, @@ -224,7 +223,7 @@ time = 5 category = CAT_AMMO -/datum/table_recipe/improvisedslugoverload +/datum/crafting_recipe/improvisedslugoverload name = "Overload Improvised Shell" result = /obj/item/ammo_casing/shotgun/improvised/overload reqs = list(/obj/item/ammo_casing/shotgun/improvised = 1, @@ -234,7 +233,7 @@ time = 5 category = CAT_AMMO -/datum/table_recipe/laserslug +/datum/crafting_recipe/laserslug name = "Laser Slug Shell" result = /obj/item/ammo_casing/shotgun/laserslug reqs = list(/obj/item/ammo_casing/shotgun/techshell = 1, @@ -244,7 +243,7 @@ time = 5 category = CAT_AMMO -/datum/table_recipe/ishotgun +/datum/crafting_recipe/ishotgun name = "Improvised Shotgun" result = /obj/item/weapon/gun/projectile/revolver/doublebarrel/improvised reqs = list(/obj/item/weaponcrafting/reciever = 1, @@ -255,7 +254,7 @@ time = 100 category = CAT_WEAPON -/datum/table_recipe/chainsaw +/datum/crafting_recipe/chainsaw name = "Chainsaw" result = /obj/item/weapon/twohanded/required/chainsaw reqs = list(/obj/item/weapon/circular_saw = 1, @@ -265,7 +264,7 @@ time = 50 category = CAT_WEAPON -/datum/table_recipe/spooky_camera +/datum/crafting_recipe/spooky_camera name = "Camera Obscura" result = /obj/item/device/camera/spooky time = 15 @@ -274,21 +273,21 @@ parts = list(/obj/item/device/camera = 1) category = CAT_MISC -/datum/table_recipe/lizardhat +/datum/crafting_recipe/lizardhat name = "Lizard Cloche Hat" result = /obj/item/clothing/head/lizard time = 10 reqs = list(/obj/item/severedtail = 1) category = CAT_MISC -/datum/table_recipe/lizardhat_alternate +/datum/crafting_recipe/lizardhat_alternate name = "Lizard Cloche Hat" result = /obj/item/clothing/head/lizard time = 10 reqs = list(/obj/item/stack/sheet/animalhide/lizard = 1) category = CAT_MISC -/datum/table_recipe/skateboard +/datum/crafting_recipe/skateboard name = "Skateboard" result = /obj/vehicle/scooter/skateboard time = 60 @@ -296,7 +295,7 @@ /obj/item/stack/rods = 10) category = CAT_MISC -/datum/table_recipe/scooter +/datum/crafting_recipe/scooter name = "Scooter" result = /obj/vehicle/scooter time = 65 @@ -304,14 +303,15 @@ /obj/item/stack/rods = 12) category = CAT_MISC -/datum/table_recipe/papersack +/datum/crafting_recipe/papersack name = "Paper Sack" result = /obj/item/weapon/storage/box/papersack time = 10 reqs = list(/obj/item/weapon/paper = 5) category = CAT_MISC -/datum/table_recipe/chemical_payload + +/datum/crafting_recipe/chemical_payload name = "Chemical Payload (C4)" result = /obj/item/weapon/bombcore/chemical reqs = list( @@ -323,7 +323,7 @@ time = 30 category = CAT_WEAPON -/datum/table_recipe/chemical_payload2 +/datum/crafting_recipe/chemical_payload2 name = "Chemical Payload (gibtonite)" result = /obj/item/weapon/bombcore/chemical reqs = list( @@ -335,14 +335,14 @@ time = 50 category = CAT_WEAPON -/datum/table_recipe/bonearmor +/datum/crafting_recipe/bonearmor name = "Bone Armor" result = /obj/item/clothing/suit/armor/bone time = 30 reqs = list(/obj/item/stack/sheet/bone = 6) category = CAT_PRIMAL -/datum/table_recipe/bonetalisman +/datum/crafting_recipe/bonetalisman name = "Bone Talisman" result = /obj/item/clothing/tie/talisman time = 20 @@ -350,7 +350,7 @@ /obj/item/stack/sheet/sinew = 1) category = CAT_PRIMAL -/datum/table_recipe/bracers +/datum/crafting_recipe/bracers name = "Bone Bracers" result = /obj/item/clothing/gloves/bracer time = 20 @@ -358,18 +358,49 @@ /obj/item/stack/sheet/sinew = 1) category = CAT_PRIMAL -/datum/table_recipe/skullhelm +/datum/crafting_recipe/skullhelm name = "Skull Helmet" result = /obj/item/clothing/head/helmet/skull time = 30 reqs = list(/obj/item/stack/sheet/bone = 4) category = CAT_PRIMAL -/datum/table_recipe/drakecloak +/datum/crafting_recipe/drakecloak name = "Ash Drake Cloak" result = /obj/item/clothing/suit/hooded/cloak/drake time = 60 reqs = list(/obj/item/stack/sheet/bone = 10, /obj/item/stack/sheet/sinew = 2, /obj/item/stack/sheet/animalhide/ashdrake = 5) + category = CAT_PRIMAL + +/datum/crafting_recipe/gold_horn + name = "Golden bike horn" + result = /obj/item/weapon/bikehorn/golden + time = 20 + reqs = list(/obj/item/stack/sheet/mineral/bananium = 5, + /obj/item/weapon/bikehorn) + category = CAT_MISC + +/datum/crafting_recipe/bonedagger + name = "Bone Dagger" + result = /obj/item/weapon/kitchen/knife/combat/bone + time = 20 + reqs = list(/obj/item/stack/sheet/bone = 2) + category = CAT_PRIMAL + +/datum/crafting_recipe/bonespear + name = "Bone Spear" + result = /obj/item/weapon/twohanded/bonespear + time = 30 + reqs = list(/obj/item/stack/sheet/bone = 4, + /obj/item/stack/sheet/sinew = 1) + category = CAT_PRIMAL + +/datum/crafting_recipe/boneaxe + name = "Bone Axe" + result = /obj/item/weapon/twohanded/fireaxe/boneaxe + time = 50 + reqs = list(/obj/item/stack/sheet/bone = 6, + /obj/item/stack/sheet/sinew = 3) category = CAT_PRIMAL \ No newline at end of file diff --git a/code/modules/crafting/table.dm b/code/modules/crafting/table.dm deleted file mode 100644 index ec813ea7e80..00000000000 --- a/code/modules/crafting/table.dm +++ /dev/null @@ -1,295 +0,0 @@ - -/obj/structure/table - mouse_drag_pointer = MOUSE_ACTIVE_POINTER - var/list/table_contents = list() - var/viewing_category = 1 //typical powergamer starting on the Weapons tab - var/list/categories = list(CAT_WEAPON,CAT_AMMO,CAT_ROBOT,CAT_FOOD,CAT_MISC,CAT_PRIMAL) - - -/obj/structure/table/MouseDrop(mob/living/user) - if(!istype(user)) - return - if(!user.IsAdvancedToolUser()) - return - tablecraft(user) - -/obj/structure/table/proc/check_contents(datum/table_recipe/R) - check_table() - main_loop: - for(var/A in R.reqs) - var/needed_amount = R.reqs[A] - for(var/B in table_contents) - if(ispath(B, A)) - if(table_contents[B] >= R.reqs[A]) - continue main_loop - else - needed_amount -= table_contents[B] - if(needed_amount <= 0) - continue main_loop - else - continue - return 0 - for(var/A in R.chem_catalysts) - if(table_contents[A] < R.chem_catalysts[A]) - return 0 - return 1 - -/obj/structure/table/proc/check_table() - table_contents = list() - for(var/obj/item/I in loc) - if(istype(I, /obj/item/stack)) - var/obj/item/stack/S = I - table_contents[I.type] += S.amount - else - if(istype(I, /obj/item/weapon/reagent_containers)) - var/obj/item/weapon/reagent_containers/RC = I - if(RC.flags & OPENCONTAINER) - for(var/datum/reagent/A in RC.reagents.reagent_list) - table_contents[A.type] += A.volume - table_contents[I.type] += 1 - -/obj/structure/table/proc/check_tools(mob/user, datum/table_recipe/R) - if(!R.tools.len) - return 1 - var/list/possible_tools = list() - for(var/obj/item/I in user.contents) - if(istype(I, /obj/item/weapon/storage)) - for(var/obj/item/SI in I.contents) - possible_tools += SI.type - else - possible_tools += I.type - possible_tools += table_contents - main_loop: - for(var/A in R.tools) - for(var/I in possible_tools) - if(ispath(I,A)) - possible_tools -= I - continue main_loop - return 0 - return 1 - -/obj/structure/table/proc/construct_item(mob/user, datum/table_recipe/R) - check_table() - var/send_feedback = 1 - if(check_contents(R)) - if(check_tools(user, R)) - if(do_after(user, R.time, target = src)) - if(!check_contents(R)) - return ", missing component." - if(!check_tools(user, R)) - return ", missing tool." - var/atom/movable/I = new R.result (loc) - if(istype(I, /obj/item/weapon/reagent_containers/food/snacks)) - var/obj/item/weapon/reagent_containers/food/snacks/S = I - S.create_reagents(S.volume) - feedback_add_details("food_made","[S.type]") - send_feedback = 0 - var/list/parts = del_reqs(R, I) - for(var/A in parts) - if(istype(A, /obj/item)) - var/atom/movable/B = A - B.loc = I - B.pixel_x = initial(B.pixel_x) - B.pixel_y = initial(B.pixel_y) - else - if(!I.reagents) - I.reagents = new /datum/reagents() - I.reagents.reagent_list.Add(A) - I.CheckParts() - if(send_feedback) - feedback_add_details("object_crafted","[I.type]") - return 0 - return "." - return ", missing tool." - return ", missing component." - -/obj/structure/table/proc/del_reqs(datum/table_recipe/R, atom/movable/resultobject) - var/list/Deletion = list() - var/amt - var/reagenttransfer = 0 - if(istype(resultobject,/obj/item/weapon/reagent_containers)) - reagenttransfer = 1 - for(var/A in R.reqs) - amt = R.reqs[A] - if(ispath(A, /obj/item/stack)) - var/obj/item/stack/S - stack_loop: - for(var/B in table_contents) - if(ispath(B, A)) - while(amt > 0) - S = locate(B) in loc - if(S.amount >= amt) - S.use(amt) - break stack_loop - else - amt -= S.amount - qdel(S) - else if(ispath(A, /obj/item)) - var/obj/item/I - item_loop: - for(var/B in table_contents) - if(ispath(B, A)) - var/item_amount = table_contents[B] - while(item_amount > 0) - I = locate(B) in loc - Deletion.Add(I) - I.loc = null //remove it from the table loc so that we don't locate the same item every time (will be relocated inside the crafted item in construct_item()) - amt-- - item_amount-- - if(reagenttransfer && istype(I,/obj/item/weapon/reagent_containers)) - var/obj/item/weapon/reagent_containers/RC = I - RC.reagents.trans_to(resultobject, RC.reagents.total_volume) - if(amt <= 0) - break item_loop - else - var/datum/reagent/RG = new A - reagent_loop: - for(var/B in table_contents) - if(ispath(B, /obj/item/weapon/reagent_containers)) - var/obj/item/RC = locate(B) in loc - if(RC.reagents.has_reagent(RG.id, amt)) - if(reagenttransfer) - RC.reagents.trans_id_to(resultobject,RG.id, amt) - else - RC.reagents.remove_reagent(RG.id, amt) - RG.volume = amt - Deletion.Add(RG) - break reagent_loop - else if(RC.reagents.has_reagent(RG.id)) - Deletion.Add(RG) - RG.volume += RC.reagents.get_reagent_amount(RG.id) - amt -= RC.reagents.get_reagent_amount(RG.id) - if(reagenttransfer) - RC.reagents.trans_id_to(resultobject,RG.id, RG.volume) - else - RC.reagents.del_reagent(RG.id) - - var/list/partlist = list(R.parts.len) - for(var/M in R.parts) - partlist[M] = R.parts[M] - deletion_loop: - for(var/B in Deletion) - for(var/A in R.parts) - if(istype(B, A)) - if(partlist[A] > 0) //do we still need a part like that? - partlist[A] -= 1 - continue deletion_loop - Deletion.Remove(B) - qdel(B) - - return Deletion - -/obj/structure/table/proc/tablecraft(mob/user) - if(user.incapacitated() || user.lying || !Adjacent(user)) - return - check_table() - user.face_atom(src) - var/dat = "

Crafting menu

" - if(busy) - dat += "
" - dat += "Crafting in progress...
" - else - dat += "<--" - dat += " [categories[prev_cat()]] |" - dat += " [categories[viewing_category]] " - dat += "| [categories[next_cat()]] " - dat += "-->

" - - dat += "
" - - //Filter the recipes we can craft to the top - var/list/can_craft = list() - var/list/cant_craft = list() - for(var/datum/table_recipe/R in table_recipes) - if(R.category != categories[viewing_category]) - continue - if(check_contents(R)) - can_craft += R - else - cant_craft += R - - for(var/datum/table_recipe/R in can_craft) - dat += build_recipe_text(R) - for(var/datum/table_recipe/R in cant_craft) - dat += build_recipe_text(R) - - - dat += "
" - - var/datum/browser/popup = new(user, "table", "Table", 500, 500) - popup.set_content(dat) - popup.open() - return - -/obj/structure/table/Topic(href, href_list) - if(usr.stat || !Adjacent(usr) || usr.lying) - return - if(href_list["make"]) - var/datum/table_recipe/TR = locate(href_list["make"]) - busy = 1 - tablecraft(usr) - var/fail_msg = construct_item(usr, TR) - if(!fail_msg) - usr << "[TR.name] constructed." - else - usr << "Construction failed[fail_msg]" - busy = 0 - tablecraft(usr) - if(href_list["forwardCat"]) - viewing_category = next_cat() - usr << "Category is now [categories[viewing_category]]." - tablecraft(usr) - if(href_list["backwardCat"]) - viewing_category = prev_cat() - usr << "Category is now [categories[viewing_category]]." - tablecraft(usr) - -//Next works nicely with modular arithmetic -/obj/structure/table/proc/next_cat() - . = viewing_category % categories.len + 1 - -//Previous can go fuck itself -/obj/structure/table/proc/prev_cat() - if(viewing_category == categories.len) - . = viewing_category-1 - else - . = viewing_category % categories.len - 1 - if(. <= 0) - . = categories.len - -/obj/structure/table/proc/build_recipe_text(datum/table_recipe/R) - . = "" - var/name_text = "" - var/req_text = "" - var/tool_text = "" - var/catalist_text = "" - if(check_contents(R)) - name_text ="[R.name]" - - else - name_text = "[R.name]" - - if(name_text) - for(var/A in R.reqs) - if(ispath(A, /obj)) - var/obj/O = A - req_text += " [R.reqs[A]] [initial(O.name)]" - else if(ispath(A, /datum/reagent)) - var/datum/reagent/RE = A - req_text += " [R.reqs[A]] [initial(RE.name)]" - - if(R.chem_catalysts.len) - catalist_text += ", Catalysts:" - for(var/C in R.chem_catalysts) - if(ispath(C, /datum/reagent)) - var/datum/reagent/RE = C - catalist_text += " [R.chem_catalysts[C]] [initial(RE.name)]" - - if(R.tools.len) - tool_text += ", Tools:" - for(var/O in R.tools) - if(ispath(O, /obj)) - var/obj/T = O - tool_text += " [R.tools[O]] [initial(T.name)]" - - . = "[name_text][req_text][tool_text][catalist_text]
" diff --git a/code/modules/detectivework/detective_work.dm b/code/modules/detectivework/detective_work.dm index fa324c1886c..6fa698d12d2 100644 --- a/code/modules/detectivework/detective_work.dm +++ b/code/modules/detectivework/detective_work.dm @@ -47,80 +47,59 @@ //world.log << "Added fibertext: [fibertext]" suit_fibers += "Material from a pair of [M.gloves.name]." + /atom/proc/add_hiddenprint(mob/living/M) - if(isnull(M)) return - if(isnull(M.key)) return + if(!M || !M.key) + return + + if(!fingerprintshidden) //Add the list if it does not exist + fingerprintshidden = list() + + var/hasgloves = "" if(ishuman(M)) var/mob/living/carbon/human/H = M if(H.gloves) - if(fingerprintslast != H.ckey) - fingerprintshidden += "\[[time_stamp()]\] (Wearing gloves). Real name: [H.real_name], Key: [H.key]" - fingerprintslast = H.ckey - return 0 - if(!fingerprints) - if(fingerprintslast != H.ckey) - fingerprintshidden += "\[[time_stamp()]\] Real name: [H.real_name], Key: [H.key]" - fingerprintslast = H.ckey - return 1 + hasgloves = "(gloves)" + + var/current_time = time_stamp() + if(!fingerprintshidden[M.key]) + fingerprintshidden[M.key] = "First: [M.real_name]\[[current_time]\][hasgloves]." else - if(fingerprintslast != M.ckey) - fingerprintshidden += "\[[time_stamp()]\] Real name: [M.real_name], Key: [M.key]" - fingerprintslast = M.ckey - return + var/laststamppos = findtext(fingerprintshidden[M.key], " Last: ") + if(laststamppos) + fingerprintshidden[M.key] = copytext(fingerprintshidden[M.key], 1, laststamppos) + fingerprintshidden[M.key] += " Last: [M.real_name]\[[current_time]\][hasgloves]." + + fingerprintslast = M.ckey + //Set ignoregloves to add prints irrespective of the mob having gloves on. /atom/proc/add_fingerprint(mob/living/M, ignoregloves = 0) - if(isnull(M)) return - if(isnull(M.key)) return + if(!M || !M.key) + return + + add_hiddenprint(M) + if(ishuman(M)) var/mob/living/carbon/human/H = M - //Add the list if it does not exist. - if(!fingerprintshidden) - fingerprintshidden = list() - //Fibers~ add_fibers(H) - //Now, lets get to the dirty work. - - //Check if the gloves (if any) hide fingerprints - if(H.gloves) + if(H.gloves) //Check if the gloves (if any) hide fingerprints var/obj/item/clothing/gloves/G = H.gloves if(G.transfer_prints) ignoregloves = 1 - //Now, deal with gloves. - if(!ignoregloves) - if(H.gloves && H.gloves != src) - if(fingerprintslast != H.ckey) - fingerprintshidden += text("\[[]\](Wearing gloves). Real name: [], Key: []",time_stamp(), H.real_name, H.key) - fingerprintslast = H.ckey - H.gloves.add_fingerprint(M) - return 0 + if(!ignoregloves) + H.gloves.add_fingerprint(H, 1) //ignoregloves = 1 to avoid infinite loop. + return - //More adminstuffz - if(fingerprintslast != H.ckey) - fingerprintshidden += text("\[[]\]Real name: [], Key: []",time_stamp(), H.real_name, H.key) - fingerprintslast = H.ckey - - //Make the list if it does not exist. - if(!fingerprints) + if(!fingerprints) //Add the list if it does not exist fingerprints = list() - - //Hash this shit. var/full_print = md5(H.dna.uni_identity) - - // Add the fingerprints fingerprints[full_print] = full_print - return 1 - else - //Smudge up dem prints some - if(fingerprintslast != M.ckey) - fingerprintshidden += text("\[[]\]Real name: [], Key: []",time_stamp(), M.real_name, M.key) - fingerprintslast = M.ckey - return /atom/proc/transfer_fingerprints_to(atom/A) diff --git a/code/modules/events/_event.dm b/code/modules/events/_event.dm index 2d886309bcb..0e66f21b100 100644 --- a/code/modules/events/_event.dm +++ b/code/modules/events/_event.dm @@ -67,7 +67,7 @@ return E /datum/round_event //NOTE: Times are measured in master controller ticks! - var/processing = 1 + var/processing = TRUE var/datum/round_event_control/control var/startWhen = 0 //When in the lifetime to call start(). @@ -150,7 +150,8 @@ //Sets up the event then adds the event to the the list of running events -/datum/round_event/New() +/datum/round_event/New(my_processing = TRUE) setup() + processing = my_processing SSevent.running += src - return ..() \ No newline at end of file + return ..() diff --git a/code/modules/events/abductor.dm b/code/modules/events/abductor.dm index 65ec0a7aae2..19ccda1472b 100644 --- a/code/modules/events/abductor.dm +++ b/code/modules/events/abductor.dm @@ -1,6 +1,6 @@ /datum/round_event_control/abductor name = "Abductors" - typepath = /datum/round_event/abductor + typepath = /datum/round_event/ghost_role/abductor weight = 5 max_occurrences = 1 @@ -9,55 +9,49 @@ gamemode_blacklist = list("nuclear","wizard","revolution","abduction") -/datum/round_event/abductor +/datum/round_event/ghost_role/abductor + minimum_required = 2 + role_name = "abductor team" -/datum/round_event/abductor/start() - //spawn abductor team - processing = 0 //so it won't fire again in next subsystem tick - if(!makeAbductorTeam()) - message_admins("Abductor event failed to find players. Retrying in 30s.") - spawn(300) - makeAbductorTeam() +/datum/round_event/ghost_role/abductor/spawn_role() + var/list/mob/dead/observer/candidates = get_candidates("abductor", null, ROLE_ABDUCTOR) -/datum/round_event/abductor/proc/makeAbductorTeam() - var/list/mob/dead/observer/candidates = pollCandidates("Do you wish to be considered for an Abductor Team?", "abductor", null, ROLE_ABDUCTOR ) + if(candidates.len < 2) + return NOT_ENOUGH_PLAYERS + //Oh god why we can't have static functions + // I feel your pain, bro + var/number = ticker.mode.abductor_teams + 1 - if(candidates.len >= 2) - //Oh god why we can't have static functions - var/number = ticker.mode.abductor_teams + 1 - - var/datum/game_mode/abduction/temp - if(ticker.mode.config_tag == "abduction") - temp = ticker.mode - else - temp = new - - var/agent_mind = pick(candidates) - candidates -= agent_mind - var/scientist_mind = pick(candidates) - - var/mob/living/carbon/human/agent=makeBody(agent_mind) - var/mob/living/carbon/human/scientist=makeBody(scientist_mind) - - agent_mind = agent.mind - scientist_mind = scientist.mind - - temp.scientists.len = number - temp.agents.len = number - temp.abductors.len = 2*number - temp.team_objectives.len = number - temp.team_names.len = number - temp.scientists[number] = scientist_mind - temp.agents[number] = agent_mind - temp.abductors |= list(agent_mind,scientist_mind) - temp.make_abductor_team(number,preset_scientist=scientist_mind,preset_agent=agent_mind) - temp.post_setup_team(number) - - ticker.mode.abductor_teams++ - - if(ticker.mode.config_tag != "abduction") - ticker.mode.abductors |= temp.abductors - processing = 1 //So it will get gc'd - return 1 + var/datum/game_mode/abduction/temp + if(ticker.mode.config_tag == "abduction") + temp = ticker.mode else - return 0 \ No newline at end of file + temp = new + + var/agent_mind = popleft(candidates) + var/scientist_mind = popleft(candidates) + + var/mob/living/carbon/human/agent = makeBody(agent_mind) + var/mob/living/carbon/human/scientist = makeBody(scientist_mind) + + agent_mind = agent.mind + scientist_mind = scientist.mind + + temp.scientists.len = number + temp.agents.len = number + temp.abductors.len = 2*number + temp.team_objectives.len = number + temp.team_names.len = number + temp.scientists[number] = scientist_mind + temp.agents[number] = agent_mind + temp.abductors |= list(agent_mind,scientist_mind) + temp.make_abductor_team(number,preset_scientist=scientist_mind,preset_agent=agent_mind) + temp.post_setup_team(number) + + ticker.mode.abductor_teams++ + + if(ticker.mode.config_tag != "abduction") + ticker.mode.abductors |= temp.abductors + + spawned_mobs += list(agent, scientist) + return SUCCESSFUL_SPAWN diff --git a/code/modules/events/alien_infestation.dm b/code/modules/events/alien_infestation.dm index 0082e3d62fa..ff6b63b7c8a 100644 --- a/code/modules/events/alien_infestation.dm +++ b/code/modules/events/alien_infestation.dm @@ -1,73 +1,75 @@ -/datum/round_event_control/alien_infestation - name = "Alien Infestation" - typepath = /datum/round_event/alien_infestation - weight = 5 - - min_players = 10 - max_occurrences = 1 - -/datum/round_event/alien_infestation - announceWhen = 400 - - var/spawncount = 1 - var/successSpawn = 0 //So we don't make a command report if nothing gets spawned. - - -/datum/round_event/alien_infestation/setup() - announceWhen = rand(announceWhen, announceWhen + 50) - spawncount = rand(1, 2) - -/datum/round_event/alien_infestation/kill() - if(!successSpawn && control) - control.occurrences-- - return ..() - -/datum/round_event/alien_infestation/announce() - if(successSpawn) - priority_announce("Unidentified lifesigns detected coming aboard [station_name()]. Secure any exterior access, including ducting and ventilation.", "Lifesign Alert", 'sound/AI/aliens.ogg') - - -/datum/round_event/alien_infestation/start() - get_alien() - -/datum/round_event/alien_infestation/proc/get_alien(end_if_fail = 0) - var/list/vents = list() - for(var/obj/machinery/atmospherics/components/unary/vent_pump/temp_vent in machines) - if(qdeleted(temp_vent)) - continue - if(temp_vent.loc.z == ZLEVEL_STATION && !temp_vent.welded) - var/datum/pipeline/temp_vent_parent = temp_vent.PARENT1 - if(temp_vent_parent.other_atmosmch.len > 20) //Stops Aliens getting stuck in small networks. See: Security, Virology - vents += temp_vent - - if(!vents.len) - message_admins("An event attempted to spawn an alien but no suitable vents were found. Shutting down.") - return kill() - - var/list/candidates = get_candidates(ROLE_ALIEN, ALIEN_AFK_BRACKET, "alien candidate") - if(!candidates.len) - if(end_if_fail) - return 0 - return find_alien() - while(spawncount > 0 && vents.len && candidates.len) - var/obj/vent = pick_n_take(vents) - var/client/C = pick_n_take(candidates) - - var/mob/living/carbon/alien/larva/new_xeno = new(vent.loc) - new_xeno.key = C.key - - spawncount-- - successSpawn = 1 - message_admins("[new_xeno.key] has been made into an alien by an event.") - log_game("[new_xeno.key] was spawned as an alien by an event.") - if(successSpawn) - return 1 - -/datum/round_event/alien_infestation/proc/find_alien() - message_admins("Event attempted to spawn an alien but no candidates were available. Will try again momentarily...") - spawn(50) - if(get_alien(1)) - message_admins("Situation has been resolved") - return 0 - message_admins("Unfortunately, no candidates were available for becoming an alien. Shutting down.") - return kill() +/datum/round_event_control/alien_infestation + name = "Alien Infestation" + typepath = /datum/round_event/ghost_role/alien_infestation + weight = 5 + + min_players = 10 + max_occurrences = 1 + +/datum/round_event/ghost_role/alien_infestation + announceWhen = 400 + + minimum_required = 1 + role_name = "alien larva" + + // 50% chance of being incremented by one + var/spawncount = 1 + var/successSpawn = 0 //So we don't make a command report if nothing gets spawned. + + +/datum/round_event/ghost_role/alien_infestation/setup() + announceWhen = rand(announceWhen, announceWhen + 50) + if(prob(50)) + spawncount++ + +/datum/round_event/ghost_role/alien_infestation/kill() + if(!successSpawn && control) + // This never happened, so let's not deny the future of this round + // some xenolovin + control.occurrences-- + return ..() + +/datum/round_event/ghost_role/alien_infestation/announce() + if(successSpawn) + priority_announce("Unidentified lifesigns detected coming aboard [station_name()]. Secure any exterior access, including ducting and ventilation.", "Lifesign Alert", 'sound/AI/aliens.ogg') + + +/datum/round_event/ghost_role/alien_infestation/spawn_role() + var/list/vents = list() + for(var/obj/machinery/atmospherics/components/unary/vent_pump/temp_vent in machines) + if(qdeleted(temp_vent)) + continue + if(temp_vent.loc.z == ZLEVEL_STATION && !temp_vent.welded) + var/datum/pipeline/temp_vent_parent = temp_vent.PARENT1 + //Stops Aliens getting stuck in small networks. + //See: Security, Virology + if(temp_vent_parent.other_atmosmch.len > 20) + vents += temp_vent + + if(!vents.len) + 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("alien", null, ROLE_ALIEN) + + if(!candidates.len) + return NOT_ENOUGH_PLAYERS + + while(spawncount > 0 && vents.len && candidates.len) + var/obj/vent = pick_n_take(vents) + var/client/C = popleft(candidates) + + var/mob/living/carbon/alien/larva/new_xeno = new(vent.loc) + new_xeno.key = C.key + + spawncount-- + successSpawn = TRUE + message_admins("[new_xeno.key] has been made into an alien by an event.") + log_game("[new_xeno.key] was spawned as an alien by an event.") + spawned_mobs += new_xeno + + if(successSpawn) + return SUCCESSFUL_SPAWN + else + // Like how did we get here? + return FALSE diff --git a/code/modules/events/dust.dm b/code/modules/events/dust.dm index 078f7dab63b..6a9685186d9 100644 --- a/code/modules/events/dust.dm +++ b/code/modules/events/dust.dm @@ -5,7 +5,7 @@ max_occurrences = 1000 earliest_start = 0 alertadmins = 0 - + /datum/round_event/meteor_wave/dust startWhen = 1 endWhen = 2 diff --git a/code/modules/events/false_alarm.dm b/code/modules/events/false_alarm.dm index e34c532dad0..3fba86ca377 100644 --- a/code/modules/events/false_alarm.dm +++ b/code/modules/events/false_alarm.dm @@ -22,7 +22,7 @@ if(initial(event.announceWhen) <= 0) continue events_list += E - + var/datum/round_event_control/event_control = pick(events_list) if(event_control) var/datum/round_event/Event = new event_control.typepath() @@ -30,4 +30,4 @@ Event.kill() //do not process this event - no starts, no ticks, no ends Event.announce() //just announce it like it's happening - + diff --git a/code/modules/events/ghost_role.dm b/code/modules/events/ghost_role.dm new file mode 100644 index 00000000000..7bef6dbed76 --- /dev/null +++ b/code/modules/events/ghost_role.dm @@ -0,0 +1,62 @@ +/datum/round_event/ghost_role + // We expect 0 or more /clients (or things with .key) in this list + var/list/priority_candidates = list() + var/minimum_required = 1 + var/role_name = "debug rat with cancer" // Q U A L I T Y M E M E S + var/list/spawned_mobs = list() + +/datum/round_event/ghost_role/start() + try_spawning() + +/datum/round_event/ghost_role/proc/try_spawning(sanity = 0) + // The event does not run until the spawning has been attempted + // to prevent us from getting gc'd halfway through + processing = FALSE + + var/status = spawn_role() + if(status == WAITING_FOR_SOMETHING) + message_admins("The event will not spawn a [role_name] until certain \ + conditions are met. Waiting 30s and then retrying.") + spawn(300) + // I hope this doesn't end up running out of stack space + try_spawning() + return + + if(status == MAP_ERROR) + message_admins("[role_name] cannot be spawned due to a map error.") + else if(status == NOT_ENOUGH_PLAYERS) + message_admins("[role_name] cannot be spawned due to lack of players \ + signing up.") + else if(status == SUCCESSFUL_SPAWN) + message_admins("[role_name] spawned successfully.") + if(!spawned_mobs.len) + message_admins("No mobs found in the `spawned_mobs` list, this is \ + a bug.") + else + message_admins("An attempt to spawn [role_name] returned [status], \ + this is a bug.") + + processing = TRUE + +/datum/round_event/ghost_role/proc/spawn_role() + // Return true if role was successfully spawned, false if insufficent + // 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) + // 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 = pollCandidates("Do you wish to be considered for the special role of '[role_name]'?", jobban, gametypecheck, be_special) + else + regular_candidates = list() + + shuffle(regular_candidates) + + var/list/candidates = priority_candidates + regular_candidates + + return candidates + diff --git a/code/modules/events/operative.dm b/code/modules/events/operative.dm index 88ac1a8016a..13615544aaf 100644 --- a/code/modules/events/operative.dm +++ b/code/modules/events/operative.dm @@ -1,34 +1,26 @@ /datum/round_event_control/operative name = "Lone Operative" - typepath = /datum/round_event/operative + typepath = /datum/round_event/ghost_role/operative weight = 0 //Admin only max_occurrences = 1 -/datum/round_event/operative - var/key_of_operative +/datum/round_event/ghost_role/operative + minimum_required = 1 + role_name = "lone operative" + +/datum/round_event/ghost_role/operative/spawn_role() + var/list/candidates = get_candidates("operative", 3000, ROLE_OPERATIVE) + if(!candidates.len) + return NOT_ENOUGH_PLAYERS + + var/mob/dead/selected = popleft(candidates) -/datum/round_event/operative/proc/get_operative(end_if_fail = 0) - key_of_operative = null - if(!key_of_operative) - var/list/candidates = get_candidates(ROLE_OPERATIVE, 3000, "operative") - if(!candidates.len) - if(end_if_fail) - return 0 - return find_operative() - var/client/C = pick(candidates) - key_of_operative = C.key - if(!key_of_operative) - if(end_if_fail) - return 0 - return find_operative() - var/datum/mind/player_mind = new /datum/mind(key_of_operative) - player_mind.active = 1 var/list/spawn_locs = list() for(var/obj/effect/landmark/L in landmarks_list) if(L.name in list("ninjaspawn","carpspawn")) spawn_locs += L.loc if(!spawn_locs.len) - return kill() + return MAP_ERROR var/mob/living/carbon/human/operative = new(pick(spawn_locs)) var/datum/preferences/A = new @@ -37,7 +29,7 @@ operative.equipOutfit(/datum/outfit/syndicate/full) - var/datum/mind/Mind = new /datum/mind(key_of_operative) + var/datum/mind/Mind = new /datum/mind(selected.key) Mind.assigned_role = "Lone Operative" Mind.special_role = "Lone Operative" ticker.mode.traitors |= Mind @@ -61,20 +53,7 @@ Mind.transfer_to(operative) - message_admins("[key_of_operative] has been made into lone operative by an event.") - log_game("[key_of_operative] was spawned as a lone operative by an event.") - return 1 - -/datum/round_event/operative/start() - get_operative() - - -/datum/round_event/operative/proc/find_operative() - message_admins("Attempted to spawn a operative but there was no players available. Will try again momentarily.") - spawn(50) - if(get_operative(1)) - message_admins("Situation has been resolved, [key_of_operative] has been spawned as a operative.") - log_game("[key_of_operative] was spawned as a operative by an event.") - return 0 - message_admins("Unfortunately, no candidates were available for becoming a operative. Shutting down.") - return kill() \ No newline at end of file + message_admins("[operative.key] has been made into lone operative by an event.") + log_game("[operative.key] was spawned as a lone operative by an event.") + spawned_mobs += operative + return SUCCESSFUL_SPAWN diff --git a/code/modules/events/portal_storm.dm b/code/modules/events/portal_storm.dm index fb4f68e7fba..7d4f144938b 100644 --- a/code/modules/events/portal_storm.dm +++ b/code/modules/events/portal_storm.dm @@ -11,15 +11,15 @@ /mob/living/simple_animal/hostile/syndicate/ranged/space/noloot = 2) /datum/round_event_control/portal_storm_narsie - name = "Portal Storm: Nar-sie" + name = "Portal Storm: Constructs" typepath = /datum/round_event/portal_storm/portal_storm_narsie weight = 0 max_occurrences = 0 /datum/round_event/portal_storm/portal_storm_narsie - boss_types = list(/obj/singularity/narsie/large = 1) - hostile_types = list(/mob/living/simple_animal/hostile/construct/armored/hostile = 10,\ - /mob/living/simple_animal/hostile/construct/wraith/hostile = 10) + boss_types = list(/mob/living/simple_animal/hostile/construct/builder = 6) + hostile_types = list(/mob/living/simple_animal/hostile/construct/armored/hostile = 8,\ + /mob/living/simple_animal/hostile/construct/wraith/hostile = 6) /datum/round_event/portal_storm startWhen = 7 diff --git a/code/modules/events/wizard/greentext.dm b/code/modules/events/wizard/greentext.dm index cd4911f231a..b301049eaf4 100644 --- a/code/modules/events/wizard/greentext.dm +++ b/code/modules/events/wizard/greentext.dm @@ -68,6 +68,7 @@ new_holder.mind.objectives += O new_holder.attack_log += "\[[time_stamp()]\] Won with greentext!!!" color_altered_mobs -= new_holder + burn_state = ON_FIRE qdel(src) if(last_holder && last_holder != new_holder) //Somehow it was swiped without ever getting dropped diff --git a/code/modules/food&drinks/drinks/drinks/bottle.dm b/code/modules/food&drinks/drinks/drinks/bottle.dm index c71b1aa2a71..852c8ed9108 100644 --- a/code/modules/food&drinks/drinks/drinks/bottle.dm +++ b/code/modules/food&drinks/drinks/drinks/bottle.dm @@ -333,7 +333,8 @@ /datum/reagent/napalm,/datum/reagent/hellwater,/datum/reagent/toxin/plasma,/datum/reagent/toxin/spore_burning) var/active = 0 -/obj/item/weapon/reagent_containers/food/drinks/bottle/molotov/CheckParts() +/obj/item/weapon/reagent_containers/food/drinks/bottle/molotov/CheckParts(list/parts_list) + ..() var/obj/item/weapon/reagent_containers/food/drinks/bottle/B = locate() in contents if(B) icon_state = B.icon_state diff --git a/code/modules/food&drinks/food/snacks.dm b/code/modules/food&drinks/food/snacks.dm index 2a790645521..9b340df0f0d 100644 --- a/code/modules/food&drinks/food/snacks.dm +++ b/code/modules/food&drinks/food/snacks.dm @@ -19,6 +19,7 @@ var/customfoodfilling = 1 // whether it can be used as filling in custom food //Placeholder for effect that trigger on eating that aren't tied to reagents. + /obj/item/weapon/reagent_containers/food/snacks/proc/On_Consume() if(!usr) return @@ -153,7 +154,18 @@ return 1 //Called when you finish tablecrafting a snack. -/obj/item/weapon/reagent_containers/food/snacks/CheckParts() +/obj/item/weapon/reagent_containers/food/snacks/CheckParts(list/parts_list, datum/crafting_recipe/R) + ..() + reagents.reagent_list.Cut() + for(var/obj/item/weapon/reagent_containers/RC in contents) + RC.reagents.trans_to(reagents, RC.reagents.maximum_volume) + contents_loop: + for(var/A in contents) + for(var/B in initial(R.parts)) + if(istype(A, B)) + continue contents_loop + qdel(A) + feedback_add_details("food_made","[type]") if(bonus_reagents.len) for(var/r_id in bonus_reagents) var/amount = bonus_reagents[r_id] diff --git a/code/modules/food&drinks/food/snacks_burgers.dm b/code/modules/food&drinks/food/snacks_burgers.dm index 16d5eda5f2d..061a28d6c90 100644 --- a/code/modules/food&drinks/food/snacks_burgers.dm +++ b/code/modules/food&drinks/food/snacks_burgers.dm @@ -18,7 +18,8 @@ desc = "A bloody burger." bonus_reagents = list("vitamin" = 4) -/obj/item/weapon/reagent_containers/food/snacks/burger/human/CheckParts() +/obj/item/weapon/reagent_containers/food/snacks/burger/human/CheckParts(list/parts_list) + ..() var/obj/item/weapon/reagent_containers/food/snacks/meat/M = locate(/obj/item/weapon/reagent_containers/food/snacks/meat/steak/plain/human) in contents if(M) subjectname = M.subjectname @@ -29,8 +30,6 @@ name = "[subjectjob] burger" qdel(M) - ..() - /obj/item/weapon/reagent_containers/food/snacks/burger/corgi name = "corgi burger" diff --git a/code/modules/food&drinks/food/snacks_egg.dm b/code/modules/food&drinks/food/snacks_egg.dm index 473ad4ebde5..5f481bb2916 100644 --- a/code/modules/food&drinks/food/snacks_egg.dm +++ b/code/modules/food&drinks/food/snacks_egg.dm @@ -27,7 +27,7 @@ /obj/item/weapon/reagent_containers/food/snacks/egg/attackby(obj/item/weapon/W, mob/user, params) if(istype( W, /obj/item/toy/crayon )) var/obj/item/toy/crayon/C = W - var/clr = C.colourName + var/clr = C.item_color if(!(clr in list("blue", "green", "mime", "orange", "purple", "rainbow", "red", "yellow"))) usr << "[src] refuses to take on this colour!" diff --git a/code/modules/food&drinks/food/snacks_pie.dm b/code/modules/food&drinks/food/snacks_pie.dm index f3cd98cd458..915ce222b41 100644 --- a/code/modules/food&drinks/food/snacks_pie.dm +++ b/code/modules/food&drinks/food/snacks_pie.dm @@ -37,7 +37,7 @@ creamoverlay.icon_state = "creampie_human" H.Weaken(1) //splat! H.adjust_blurriness(1) - visible_message("[H] was creamed by the [src]!!") + visible_message("[H] was creamed by [src]!!") H.overlays += creamoverlay qdel(src) diff --git a/code/modules/food&drinks/kitchen machinery/gibber.dm b/code/modules/food&drinks/kitchen machinery/gibber.dm index 93e3d1799fd..b31d4f68e18 100644 --- a/code/modules/food&drinks/kitchen machinery/gibber.dm +++ b/code/modules/food&drinks/kitchen machinery/gibber.dm @@ -230,7 +230,7 @@ skin.throw_at_fast(pick(nearby_turfs),i,3) for (var/turfs=1 to meat_produced*3) var/turf/gibturf = pick(nearby_turfs) - if (!gibturf.density && src in viewers(gibturf)) + if (!gibturf.density && src in view(gibturf)) new gibtype(gibturf,i) pixel_x = initial(pixel_x) //return to its spot after shaking diff --git a/code/modules/food&drinks/recipes/food_mixtures.dm b/code/modules/food&drinks/recipes/food_mixtures.dm index 39ad0b66acd..bfb9dcbaf4e 100644 --- a/code/modules/food&drinks/recipes/food_mixtures.dm +++ b/code/modules/food&drinks/recipes/food_mixtures.dm @@ -1,3 +1,5 @@ +/datum/crafting_recipe/food/New() + parts |= reqs //////////////////////////////////////////FOOD MIXTURES//////////////////////////////////// diff --git a/code/modules/food&drinks/recipes/tablecraft/recipes_bread.dm b/code/modules/food&drinks/recipes/tablecraft/recipes_bread.dm index 083deaf6f20..56649b1f9f7 100644 --- a/code/modules/food&drinks/recipes/tablecraft/recipes_bread.dm +++ b/code/modules/food&drinks/recipes/tablecraft/recipes_bread.dm @@ -3,7 +3,7 @@ ////////////////////////////////////////////////BREAD//////////////////////////////////////////////// -/datum/table_recipe/meatbread +/datum/crafting_recipe/food/meatbread name = "Meat bread" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/store/bread/plain = 1, @@ -13,7 +13,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/store/bread/meat category = CAT_FOOD -/datum/table_recipe/xenomeatbread +/datum/crafting_recipe/food/xenomeatbread name = "Xenomeat bread" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/store/bread/plain = 1, @@ -23,7 +23,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/store/bread/xenomeat category = CAT_FOOD -/datum/table_recipe/spidermeatbread +/datum/crafting_recipe/food/spidermeatbread name = "Spidermeat bread" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/store/bread/plain = 1, @@ -33,7 +33,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/store/bread/spidermeat category = CAT_FOOD -/datum/table_recipe/banananutbread +/datum/crafting_recipe/food/banananutbread name = "Banana nut bread" reqs = list( /datum/reagent/consumable/milk = 5, @@ -44,7 +44,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/store/bread/banana category = CAT_FOOD -/datum/table_recipe/tofubread +/datum/crafting_recipe/food/tofubread name = "Tofu bread" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/store/bread/plain = 1, @@ -54,7 +54,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/store/bread/tofu category = CAT_FOOD -/datum/table_recipe/creamcheesebread +/datum/crafting_recipe/food/creamcheesebread name = "Cream cheese bread" reqs = list( /datum/reagent/consumable/milk = 5, @@ -64,7 +64,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/store/bread/creamcheese category = CAT_FOOD -/datum/table_recipe/mimanabread +/datum/crafting_recipe/food/mimanabread name = "Mimana bread" reqs = list( /datum/reagent/consumable/soymilk = 5, diff --git a/code/modules/food&drinks/recipes/tablecraft/recipes_burger.dm b/code/modules/food&drinks/recipes/tablecraft/recipes_burger.dm index e3c86d5732e..8b70e10f143 100644 --- a/code/modules/food&drinks/recipes/tablecraft/recipes_burger.dm +++ b/code/modules/food&drinks/recipes/tablecraft/recipes_burger.dm @@ -4,7 +4,7 @@ ////////////////////////////////////////////////BURGERS//////////////////////////////////////////////// -/datum/table_recipe/humanburger +/datum/crafting_recipe/food/humanburger name = "Human burger" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/bun = 1, @@ -16,7 +16,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/burger/human category = CAT_FOOD -/datum/table_recipe/burger +/datum/crafting_recipe/food/burger name = "Burger" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/meat/steak/plain = 1, @@ -26,7 +26,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/burger/plain category = CAT_FOOD -/datum/table_recipe/corgiburger +/datum/crafting_recipe/food/corgiburger name = "Corgi burger" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/meat/slab/corgi = 1, @@ -36,7 +36,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/burger/corgi category = CAT_FOOD -/datum/table_recipe/appendixburger +/datum/crafting_recipe/food/appendixburger name = "Appendix burger" reqs = list( /obj/item/organ/appendix = 1, @@ -45,7 +45,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/burger/appendix category = CAT_FOOD -/datum/table_recipe/brainburger +/datum/crafting_recipe/food/brainburger name = "Brain burger" reqs = list( /obj/item/organ/brain = 1, @@ -54,7 +54,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/burger/brain category = CAT_FOOD -/datum/table_recipe/xenoburger +/datum/crafting_recipe/food/xenoburger name = "Xeno burger" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/meat/steak/xeno = 1, @@ -63,7 +63,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/burger/xeno category = CAT_FOOD -/datum/table_recipe/bearger +/datum/crafting_recipe/food/bearger name = "Bearger" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/meat/steak/bear = 1, @@ -72,7 +72,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/burger/bearger category = CAT_FOOD -/datum/table_recipe/fishburger +/datum/crafting_recipe/food/fishburger name = "Fish burger" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/carpmeat = 1, @@ -81,7 +81,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/burger/fish category = CAT_FOOD -/datum/table_recipe/tofuburger +/datum/crafting_recipe/food/tofuburger name = "Tofu burger" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/tofu = 1, @@ -90,7 +90,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/burger/tofu category = CAT_FOOD -/datum/table_recipe/ghostburger +/datum/crafting_recipe/food/ghostburger name = "Ghost burger" reqs = list( /obj/item/weapon/ectoplasm = 1, @@ -99,7 +99,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/burger/ghost category = CAT_FOOD -/datum/table_recipe/clownburger +/datum/crafting_recipe/food/clownburger name = "Clown burger" reqs = list( /obj/item/clothing/mask/gas/clown_hat = 1, @@ -108,7 +108,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/burger/clown category = CAT_FOOD -/datum/table_recipe/mimeburger +/datum/crafting_recipe/food/mimeburger name = "Mime burger" reqs = list( /obj/item/clothing/mask/gas/mime = 1, @@ -117,7 +117,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/burger/mime category = CAT_FOOD -/datum/table_recipe/redburger +/datum/crafting_recipe/food/redburger name = "Red burger" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/meat/steak/plain = 1, @@ -127,7 +127,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/burger/red category = CAT_FOOD -/datum/table_recipe/orangeburger +/datum/crafting_recipe/food/orangeburger name = "Orange burger" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/meat/steak/plain = 1, @@ -137,7 +137,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/burger/orange category = CAT_FOOD -/datum/table_recipe/yellowburger +/datum/crafting_recipe/food/yellowburger name = "Yellow burger" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/meat/steak/plain = 1, @@ -147,7 +147,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/burger/yellow category = CAT_FOOD -/datum/table_recipe/greenburger +/datum/crafting_recipe/food/greenburger name = "Green burger" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/meat/steak/plain = 1, @@ -157,7 +157,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/burger/green category = CAT_FOOD -/datum/table_recipe/blueburger +/datum/crafting_recipe/food/blueburger name = "Blue burger" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/meat/steak/plain = 1, @@ -167,7 +167,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/burger/blue category = CAT_FOOD -/datum/table_recipe/purpleburger +/datum/crafting_recipe/food/purpleburger name = "Purple burger" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/meat/steak/plain = 1, @@ -177,15 +177,15 @@ result = /obj/item/weapon/reagent_containers/food/snacks/burger/purple category = CAT_FOOD -/datum/table_recipe/spellburger +/datum/crafting_recipe/food/spellburger name = "Spell burger" reqs = list( - /obj/item/clothing/head/wizard/fake, + /obj/item/clothing/head/wizard/fake = 1, ) result = /obj/item/weapon/reagent_containers/food/snacks/burger/spell category = CAT_FOOD -/datum/table_recipe/spellburger2 +/datum/crafting_recipe/food/spellburger2 name = "Spell burger" reqs = list( /obj/item/clothing/head/wizard = 1, @@ -194,7 +194,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/burger/spell category = CAT_FOOD -/datum/table_recipe/bigbiteburger +/datum/crafting_recipe/food/bigbiteburger name = "Big bite burger" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/meat/steak/plain = 3, @@ -203,7 +203,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/burger/bigbite category = CAT_FOOD -/datum/table_recipe/superbiteburger +/datum/crafting_recipe/food/superbiteburger name = "Super bite burger" reqs = list( /datum/reagent/consumable/sodiumchloride = 5, @@ -218,7 +218,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/burger/superbite category = CAT_FOOD -/datum/table_recipe/slimeburger +/datum/crafting_recipe/food/slimeburger name = "Jelly burger" reqs = list( /datum/reagent/toxin/slimejelly = 5, @@ -227,7 +227,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/burger/jelly/slime category = CAT_FOOD -/datum/table_recipe/jellyburger +/datum/crafting_recipe/food/jellyburger name = "Jelly burger" reqs = list( /datum/reagent/consumable/cherryjelly = 5, @@ -236,7 +236,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/burger/jelly/cherry category = CAT_FOOD -/datum/table_recipe/fivealarmburger +/datum/crafting_recipe/food/fivealarmburger name = "Five alarm burger" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/grown/ghost_chili = 2, @@ -245,7 +245,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/burger/fivealarm category = CAT_FOOD -/datum/table_recipe/ratburger +/datum/crafting_recipe/food/ratburger name = "Rat burger" reqs = list( /obj/item/trash/deadmouse = 1, diff --git a/code/modules/food&drinks/recipes/tablecraft/recipes_cake.dm b/code/modules/food&drinks/recipes/tablecraft/recipes_cake.dm index 63890d8b83f..03bdce39e59 100644 --- a/code/modules/food&drinks/recipes/tablecraft/recipes_cake.dm +++ b/code/modules/food&drinks/recipes/tablecraft/recipes_cake.dm @@ -3,7 +3,7 @@ ////////////////////////////////////////////////CAKE//////////////////////////////////////////////// -/datum/table_recipe/carrotcake +/datum/crafting_recipe/food/carrotcake name = "Carrot cake" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/store/cake/plain = 1, @@ -12,7 +12,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/store/cake/carrot category = CAT_FOOD -/datum/table_recipe/cheesecake +/datum/crafting_recipe/food/cheesecake name = "Cheese cake" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/store/cake/plain = 1, @@ -21,7 +21,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/store/cake/cheese category = CAT_FOOD -/datum/table_recipe/applecake +/datum/crafting_recipe/food/applecake name = "Apple cake" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/store/cake/plain = 1, @@ -30,7 +30,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/store/cake/apple category = CAT_FOOD -/datum/table_recipe/orangecake +/datum/crafting_recipe/food/orangecake name = "Orange cake" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/store/cake/plain = 1, @@ -39,7 +39,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/store/cake/orange category = CAT_FOOD -/datum/table_recipe/limecake +/datum/crafting_recipe/food/limecake name = "Lime cake" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/store/cake/plain = 1, @@ -48,7 +48,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/store/cake/lime category = CAT_FOOD -/datum/table_recipe/lemoncake +/datum/crafting_recipe/food/lemoncake name = "Lemon cake" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/store/cake/plain = 1, @@ -57,7 +57,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/store/cake/lemon category = CAT_FOOD -/datum/table_recipe/chocolatecake +/datum/crafting_recipe/food/chocolatecake name = "Chocolate cake" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/store/cake/plain = 1, @@ -66,7 +66,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/store/cake/chocolate category = CAT_FOOD -/datum/table_recipe/birthdaycake +/datum/crafting_recipe/food/birthdaycake name = "Birthday cake" reqs = list( /obj/item/clothing/head/hardhat/cakehat = 1, @@ -75,7 +75,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/store/cake/birthday category = CAT_FOOD -/datum/table_recipe/braincake +/datum/crafting_recipe/food/braincake name = "Brain cake" reqs = list( /obj/item/organ/brain = 1, @@ -84,7 +84,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/store/cake/brain category = CAT_FOOD -/datum/table_recipe/slimecake +/datum/crafting_recipe/food/slimecake name = "Slime cake" reqs = list( /obj/item/slime_extract = 1, @@ -93,7 +93,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/store/cake/slimecake category = CAT_FOOD -/datum/table_recipe/pumpkinspicecake +/datum/crafting_recipe/food/pumpkinspicecake name = "Pumpkin spice cake" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/store/cake/plain = 1, diff --git a/code/modules/food&drinks/recipes/tablecraft/recipes_egg.dm b/code/modules/food&drinks/recipes/tablecraft/recipes_egg.dm index ae2e575fa95..b01f794fc2c 100644 --- a/code/modules/food&drinks/recipes/tablecraft/recipes_egg.dm +++ b/code/modules/food&drinks/recipes/tablecraft/recipes_egg.dm @@ -3,7 +3,7 @@ ////////////////////////////////////////////////EGG RECIPE's//////////////////////////////////////////////// -/datum/table_recipe/friedegg +/datum/crafting_recipe/food/friedegg name = "Fried egg" reqs = list( /datum/reagent/consumable/sodiumchloride = 1, @@ -13,7 +13,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/friedegg category = CAT_FOOD -/datum/table_recipe/omelette +/datum/crafting_recipe/food/omelette name = "omelette" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/boiledegg = 2, @@ -22,7 +22,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/omelette category = CAT_FOOD -/datum/table_recipe/chocolateegg +/datum/crafting_recipe/food/chocolateegg name = "Chocolate egg" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/boiledegg = 1, @@ -31,7 +31,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/chocolateegg category = CAT_FOOD -/datum/table_recipe/eggsbenedict +/datum/crafting_recipe/food/eggsbenedict name = "Eggs benedict" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/friedegg = 1, diff --git a/code/modules/food&drinks/recipes/tablecraft/recipes_meat.dm b/code/modules/food&drinks/recipes/tablecraft/recipes_meat.dm index eba85761993..f20b5ae37d7 100644 --- a/code/modules/food&drinks/recipes/tablecraft/recipes_meat.dm +++ b/code/modules/food&drinks/recipes/tablecraft/recipes_meat.dm @@ -2,7 +2,7 @@ ////////////////////////////////////////////////KEBABS//////////////////////////////////////////////// -/datum/table_recipe/humankebab +/datum/crafting_recipe/food/humankebab name = "Human kebab" reqs = list( /obj/item/stack/rods = 1, @@ -11,7 +11,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/kebab/human category = CAT_FOOD -/datum/table_recipe/kebab +/datum/crafting_recipe/food/kebab name = "Kebab" reqs = list( /obj/item/stack/rods = 1, @@ -20,7 +20,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/kebab/monkey category = CAT_FOOD -/datum/table_recipe/tofukebab +/datum/crafting_recipe/food/tofukebab name = "Tofu kebab" reqs = list( /obj/item/stack/rods = 1, @@ -29,7 +29,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/kebab/tofu category = CAT_FOOD -/datum/table_recipe/tailkebab +/datum/crafting_recipe/food/tailkebab name = "Lizard tail kebab" reqs = list( /obj/item/stack/rods = 1, @@ -42,7 +42,7 @@ ////////////////////////////////////////////////FISH//////////////////////////////////////////////// -/datum/table_recipe/cubancarp +/datum/crafting_recipe/food/cubancarp name = "Cuban carp" reqs = list( /datum/reagent/consumable/flour = 5, @@ -52,7 +52,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/cubancarp category = CAT_FOOD -/datum/table_recipe/fishandchips +/datum/crafting_recipe/food/fishandchips name = "Fish and chips" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/fries = 1, @@ -61,7 +61,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/fishandchips category = CAT_FOOD -/datum/table_recipe/fishfingers +/datum/crafting_recipe/food/fishfingers name = "Fish fingers" reqs = list( /datum/reagent/consumable/flour = 5, @@ -71,7 +71,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/fishfingers category = CAT_FOOD -/datum/table_recipe/sashimi +/datum/crafting_recipe/food/sashimi name = "Sashimi" reqs = list( /datum/reagent/consumable/soysauce = 5, @@ -83,7 +83,7 @@ ////////////////////////////////////////////////MR SPIDER//////////////////////////////////////////////// -/datum/table_recipe/spidereggsham +/datum/crafting_recipe/food/spidereggsham name = "Spider eggs ham" reqs = list( /datum/reagent/consumable/sodiumchloride = 1, @@ -95,7 +95,7 @@ ////////////////////////////////////////////////MISC RECIPE's//////////////////////////////////////////////// -/datum/table_recipe/cornedbeef +/datum/crafting_recipe/food/cornedbeef name = "Corned beef" reqs = list( /datum/reagent/consumable/sodiumchloride = 5, @@ -105,7 +105,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/cornedbeef category = CAT_FOOD -/datum/table_recipe/bearsteak +/datum/crafting_recipe/food/bearsteak name = "Filet migrawr" reqs = list( /datum/reagent/consumable/ethanol/manly_dorf = 5, @@ -115,7 +115,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/bearsteak category = CAT_FOOD -/datum/table_recipe/enchiladas +/datum/crafting_recipe/food/enchiladas name = "Enchiladas" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/meat/cutlet = 2, @@ -125,7 +125,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/enchiladas category = CAT_FOOD -/datum/table_recipe/stewedsoymeat +/datum/crafting_recipe/food/stewedsoymeat name = "Stewed soymeat" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/soydope = 2, @@ -135,7 +135,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/stewedsoymeat category = CAT_FOOD -/datum/table_recipe/sausage +/datum/crafting_recipe/food/sausage name = "Sausage" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/faggot = 1, @@ -144,7 +144,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/sausage category = CAT_FOOD -/datum/table_recipe/nugget +/datum/crafting_recipe/food/nugget name = "Chicken nugget" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/meat/cutlet = 1 diff --git a/code/modules/food&drinks/recipes/tablecraft/recipes_misc.dm b/code/modules/food&drinks/recipes/tablecraft/recipes_misc.dm index 6f299b87d31..32dea3f7b57 100644 --- a/code/modules/food&drinks/recipes/tablecraft/recipes_misc.dm +++ b/code/modules/food&drinks/recipes/tablecraft/recipes_misc.dm @@ -3,7 +3,7 @@ // MISC -/datum/table_recipe/candiedapple +/datum/crafting_recipe/food/candiedapple name = "Candied apple" reqs = list(/datum/reagent/water = 5, /datum/reagent/consumable/sugar = 5, @@ -12,7 +12,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/candiedapple category = CAT_FOOD -/datum/table_recipe/chococoin +/datum/crafting_recipe/food/chococoin name = "Choco coin" reqs = list( /obj/item/weapon/coin = 1, @@ -21,7 +21,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/chococoin category = CAT_FOOD -/datum/table_recipe/fudgedice +/datum/crafting_recipe/food/fudgedice name = "Fudge dice" reqs = list( /obj/item/weapon/dice = 1, @@ -30,7 +30,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/fudgedice category = CAT_FOOD -/datum/table_recipe/chocoorange +/datum/crafting_recipe/food/chocoorange name = "Choco orange" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/grown/citrus/orange = 1, @@ -39,7 +39,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/chocoorange category = CAT_FOOD -/datum/table_recipe/loadedbakedpotato +/datum/crafting_recipe/food/loadedbakedpotato name = "Loaded baked potato" time = 40 reqs = list( @@ -49,7 +49,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/loadedbakedpotato category = CAT_FOOD -/datum/table_recipe/cheesyfries +/datum/crafting_recipe/food/cheesyfries name = "Cheesy fries" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/fries = 1, @@ -58,7 +58,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/cheesyfries category = CAT_FOOD -/datum/table_recipe/wrap +/datum/crafting_recipe/food/wrap name = "Wrap" reqs = list(/datum/reagent/consumable/soysauce = 10, /obj/item/weapon/reagent_containers/food/snacks/friedegg = 1, @@ -67,7 +67,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/eggwrap category = CAT_FOOD -/datum/table_recipe/beans +/datum/crafting_recipe/food/beans name = "Beans" time = 40 reqs = list(/datum/reagent/consumable/ketchup = 5, @@ -76,7 +76,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/beans category = CAT_FOOD -/datum/table_recipe/eggplantparm +/datum/crafting_recipe/food/eggplantparm name ="Eggplant parmigiana" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/cheesewedge = 2, @@ -85,7 +85,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/eggplantparm category = CAT_FOOD -/datum/table_recipe/baguette +/datum/crafting_recipe/food/baguette name = "Baguette" time = 40 reqs = list(/datum/reagent/consumable/sodiumchloride = 1, @@ -97,7 +97,7 @@ ////////////////////////////////////////////////TOAST//////////////////////////////////////////////// -/datum/table_recipe/slimetoast +/datum/crafting_recipe/food/slimetoast name = "Slime toast" reqs = list( /datum/reagent/toxin/slimejelly = 5, @@ -106,7 +106,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/jelliedtoast/slime category = CAT_FOOD -/datum/table_recipe/jelliedyoast +/datum/crafting_recipe/food/jelliedyoast name = "Jellied toast" reqs = list( /datum/reagent/consumable/cherryjelly = 5, @@ -115,7 +115,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/jelliedtoast/cherry category = CAT_FOOD -/datum/table_recipe/twobread +/datum/crafting_recipe/food/twobread name = "Two bread" reqs = list( /datum/reagent/consumable/ethanol/wine = 5, @@ -124,7 +124,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/twobread category = CAT_FOOD -/datum/table_recipe/burrito +/datum/crafting_recipe/food/burrito name ="Burrito" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/tortilla = 1, @@ -133,7 +133,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/burrito category = CAT_FOOD -/datum/table_recipe/cheesyburrito +/datum/crafting_recipe/food/cheesyburrito name ="Cheesy burrito" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/tortilla = 1, @@ -143,7 +143,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/cheesyburrito category = CAT_FOOD -/datum/table_recipe/carneburrito +/datum/crafting_recipe/food/carneburrito name ="Carne de asada burrito" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/tortilla = 1, @@ -153,7 +153,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/carneburrito category = CAT_FOOD -/datum/table_recipe/fuegoburrito +/datum/crafting_recipe/food/fuegoburrito name ="Fuego plasma burrito" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/tortilla = 1, @@ -163,7 +163,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/fuegoburrito category = CAT_FOOD -/datum/table_recipe/melonfruitbowl +/datum/crafting_recipe/food/melonfruitbowl name ="Melon fruit bowl" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/grown/watermelon = 1, @@ -176,7 +176,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/melonfruitbowl category = CAT_FOOD -/datum/table_recipe/spacefreezy +/datum/crafting_recipe/food/spacefreezy name ="Space freezy" reqs = list( /datum/reagent/consumable/bluecherryjelly = 5, @@ -186,7 +186,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/spacefreezy category = CAT_FOOD -/datum/table_recipe/sundae +/datum/crafting_recipe/food/sundae name ="Sundae" reqs = list( /datum/reagent/consumable/cream = 5, @@ -197,7 +197,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/sundae category = CAT_FOOD -/datum/table_recipe/honkdae +/datum/crafting_recipe/food/honkdae name ="Honkdae" reqs = list( /datum/reagent/consumable/cream = 5, @@ -209,7 +209,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/honkdae category = CAT_FOOD -/datum/table_recipe/nachos +/datum/crafting_recipe/food/nachos name ="Nachos" reqs = list( /datum/reagent/consumable/sodiumchloride = 1, @@ -218,7 +218,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/nachos category = CAT_FOOD -/datum/table_recipe/cheesynachos +/datum/crafting_recipe/food/cheesynachos name ="Cheesy nachos" reqs = list( /datum/reagent/consumable/sodiumchloride = 1, @@ -228,7 +228,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/cheesynachos category = CAT_FOOD -/datum/table_recipe/cubannachos +/datum/crafting_recipe/food/cubannachos name ="Cuban nachos" reqs = list( /datum/reagent/consumable/ketchup = 5, @@ -238,7 +238,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/cubannachos category = CAT_FOOD -/datum/table_recipe/melonkeg +/datum/crafting_recipe/food/melonkeg name ="Melon keg" reqs = list( /datum/reagent/consumable/ethanol/vodka = 25, @@ -249,7 +249,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/melonkeg category = CAT_FOOD -/datum/table_recipe/honeybar +/datum/crafting_recipe/food/honeybar name = "Honey nut bar" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/grown/oat = 1, @@ -259,7 +259,7 @@ category = CAT_FOOD -/datum/table_recipe/stuffedlegion +/datum/crafting_recipe/stuffedlegion name = "Stuffed legion" time = 40 reqs = list( diff --git a/code/modules/food&drinks/recipes/tablecraft/recipes_pastry.dm b/code/modules/food&drinks/recipes/tablecraft/recipes_pastry.dm index 99305007696..850eb46b620 100644 --- a/code/modules/food&drinks/recipes/tablecraft/recipes_pastry.dm +++ b/code/modules/food&drinks/recipes/tablecraft/recipes_pastry.dm @@ -3,7 +3,7 @@ ////////////////////////////////////////////////DONUTS//////////////////////////////////////////////// -/datum/table_recipe/chaosdonut +/datum/crafting_recipe/food/chaosdonut name = "Chaos donut" reqs = list( /datum/reagent/consumable/frostoil = 5, @@ -13,7 +13,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/donut/chaos category = CAT_FOOD -/datum/table_recipe/donut +/datum/crafting_recipe/food/donut time = 15 name = "Donut" reqs = list( @@ -23,7 +23,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/donut category = CAT_FOOD -/datum/table_recipe/jellydonut +/datum/crafting_recipe/food/jellydonut name = "Jelly donut" reqs = list( /datum/reagent/consumable/berryjuice = 5, @@ -32,7 +32,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/donut/jelly category = CAT_FOOD -/datum/table_recipe/cherryjellydonut +/datum/crafting_recipe/food/cherryjellydonut name = "Cherry jelly donut" reqs = list( /datum/reagent/consumable/cherryjelly = 5, @@ -41,7 +41,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/donut/jelly/cherryjelly category = CAT_FOOD -/datum/table_recipe/slimejellydonut +/datum/crafting_recipe/food/slimejellydonut name = "Slime jelly donut" reqs = list( /datum/reagent/toxin/slimejelly = 5, @@ -52,7 +52,7 @@ ////////////////////////////////////////////////WAFFLES//////////////////////////////////////////////// -/datum/table_recipe/waffles +/datum/crafting_recipe/food/waffles time = 15 name = "Waffles" reqs = list( @@ -62,7 +62,7 @@ category = CAT_FOOD -/datum/table_recipe/soylenviridians +/datum/crafting_recipe/food/soylenviridians name = "Soylent viridians" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/pastrybase = 2, @@ -71,7 +71,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/soylenviridians category = CAT_FOOD -/datum/table_recipe/soylentgreen +/datum/crafting_recipe/food/soylentgreen name = "Soylent green" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/pastrybase = 2, @@ -81,7 +81,7 @@ category = CAT_FOOD -/datum/table_recipe/rofflewaffles +/datum/crafting_recipe/food/rofflewaffles name = "Roffle waffles" reqs = list( /datum/reagent/mushroomhallucinogen = 5, @@ -92,7 +92,7 @@ ////////////////////////////////////////////////DONKPOCCKETS//////////////////////////////////////////////// -/datum/table_recipe/donkpocket +/datum/crafting_recipe/food/donkpocket time = 15 name = "Donkpocket" reqs = list( @@ -105,7 +105,7 @@ ////////////////////////////////////////////////MUFFINS//////////////////////////////////////////////// -/datum/table_recipe/muffin +/datum/crafting_recipe/food/muffin time = 15 name = "Muffin" reqs = list( @@ -115,7 +115,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/muffin category = CAT_FOOD -/datum/table_recipe/berrymuffin +/datum/crafting_recipe/food/berrymuffin name = "Berry muffin" reqs = list( /datum/reagent/consumable/milk = 5, @@ -125,7 +125,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/muffin/berry category = CAT_FOOD -/datum/table_recipe/booberrymuffin +/datum/crafting_recipe/food/booberrymuffin name = "Booberry muffin" reqs = list( /datum/reagent/consumable/milk = 5, @@ -136,7 +136,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/muffin/booberry category = CAT_FOOD -/datum/table_recipe/chawanmushi +/datum/crafting_recipe/food/chawanmushi name = "Chawanmushi" reqs = list( /datum/reagent/water = 5, @@ -149,7 +149,7 @@ ////////////////////////////////////////////OTHER//////////////////////////////////////////// -/datum/table_recipe/hotdog +/datum/crafting_recipe/food/hotdog name = "Hot dog" reqs = list( /datum/reagent/consumable/ketchup = 5, @@ -159,7 +159,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/hotdog category = CAT_FOOD -/datum/table_recipe/meatbun +/datum/crafting_recipe/food/meatbun name = "Meat bun" reqs = list( /datum/reagent/consumable/soysauce = 5, @@ -170,7 +170,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/meatbun category = CAT_FOOD -/datum/table_recipe/sugarcookie +/datum/crafting_recipe/food/sugarcookie time = 15 name = "Sugar cookie" reqs = list( @@ -180,7 +180,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/sugarcookie category = CAT_FOOD -/datum/table_recipe/fortunecookie +/datum/crafting_recipe/food/fortunecookie time = 15 name = "Fortune cookie" reqs = list( @@ -193,7 +193,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/fortunecookie category = CAT_FOOD -/datum/table_recipe/poppypretzel +/datum/crafting_recipe/food/poppypretzel time = 15 name = "Poppy pretzel" reqs = list( @@ -203,7 +203,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/poppypretzel category = CAT_FOOD -/datum/table_recipe/plumphelmetbiscuit +/datum/crafting_recipe/food/plumphelmetbiscuit time = 15 name = "Plumphelmet biscuit" reqs = list( @@ -213,7 +213,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/plumphelmetbiscuit category = CAT_FOOD -/datum/table_recipe/cracker +/datum/crafting_recipe/food/cracker time = 15 name = "Cracker" reqs = list( @@ -223,7 +223,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/cracker category = CAT_FOOD -/datum/table_recipe/chococornet +/datum/crafting_recipe/food/chococornet name = "Choco cornet" reqs = list( /datum/reagent/consumable/sodiumchloride = 1, @@ -233,7 +233,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/chococornet category = CAT_FOOD -/datum/table_recipe/oatmealcookie +/datum/crafting_recipe/food/oatmealcookie name = "Oatmeal cookie" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/pastrybase = 1, @@ -241,7 +241,7 @@ ) result = /obj/item/weapon/reagent_containers/food/snacks/oatmealcookie -/datum/table_recipe/raisincookie +/datum/crafting_recipe/food/raisincookie name = "Raisin cookie" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/no_raisin = 1, @@ -251,7 +251,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/raisincookie category = CAT_FOOD -/datum/table_recipe/cherrycupcake +/datum/crafting_recipe/food/cherrycupcake name = "Cherry cupcake" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/pastrybase = 1, @@ -260,7 +260,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/cherrycupcake category = CAT_FOOD -/datum/table_recipe/bluecherrycupcake +/datum/crafting_recipe/food/bluecherrycupcake name = "Blue cherry cupcake" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/pastrybase = 1, @@ -269,7 +269,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/bluecherrycupcake category = CAT_FOOD -/datum/table_recipe/honeybun +/datum/crafting_recipe/food/honeybun name = "Honey bun" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/pastrybase = 1, diff --git a/code/modules/food&drinks/recipes/tablecraft/recipes_pie.dm b/code/modules/food&drinks/recipes/tablecraft/recipes_pie.dm index 19c72203735..f6e938ae478 100644 --- a/code/modules/food&drinks/recipes/tablecraft/recipes_pie.dm +++ b/code/modules/food&drinks/recipes/tablecraft/recipes_pie.dm @@ -3,7 +3,7 @@ ////////////////////////////////////////////////PIES//////////////////////////////////////////////// -/datum/table_recipe/bananacreampie +/datum/crafting_recipe/food/bananacreampie name = "Banana cream pie" reqs = list( /datum/reagent/consumable/milk = 5, @@ -13,7 +13,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/pie/cream category = CAT_FOOD -/datum/table_recipe/meatpie +/datum/crafting_recipe/food/meatpie name = "Meat pie" reqs = list( /datum/reagent/consumable/blackpepper = 1, @@ -24,7 +24,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/pie/meatpie category = CAT_FOOD -/datum/table_recipe/tofupie +/datum/crafting_recipe/food/tofupie name = "Tofu pie" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/pie/plain = 1, @@ -33,7 +33,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/pie/tofupie category = CAT_FOOD -/datum/table_recipe/xenopie +/datum/crafting_recipe/food/xenopie name = "Xeno pie" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/pie/plain = 1, @@ -42,7 +42,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/pie/xemeatpie category = CAT_FOOD -/datum/table_recipe/cherrypie +/datum/crafting_recipe/food/cherrypie name = "Cherry pie" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/pie/plain = 1, @@ -51,7 +51,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/pie/cherrypie category = CAT_FOOD -/datum/table_recipe/berryclafoutis +/datum/crafting_recipe/food/berryclafoutis name = "Berry clafoutis" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/pie/plain = 1, @@ -60,7 +60,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/pie/berryclafoutis category = CAT_FOOD -/datum/table_recipe/bearypie +/datum/crafting_recipe/food/bearypie name = "Beary Pie" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/pie/plain = 1, @@ -70,7 +70,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/pie/bearypie category = CAT_FOOD -/datum/table_recipe/amanitapie +/datum/crafting_recipe/food/amanitapie name = "Amanita pie" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/pie/plain = 1, @@ -79,7 +79,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/pie/amanita_pie category = CAT_FOOD -/datum/table_recipe/plumppie +/datum/crafting_recipe/food/plumppie name = "Plump pie" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/pie/plain = 1, @@ -88,7 +88,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/pie/plump_pie category = CAT_FOOD -/datum/table_recipe/applepie +/datum/crafting_recipe/food/applepie name = "Apple pie" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/pie/plain = 1, @@ -97,7 +97,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/pie/applepie category = CAT_FOOD -/datum/table_recipe/pumpkinpie +/datum/crafting_recipe/food/pumpkinpie name = "Pumpkin pie" reqs = list( /datum/reagent/consumable/milk = 5, @@ -108,7 +108,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/pie/pumpkinpie category = CAT_FOOD -/datum/table_recipe/goldenappletart +/datum/crafting_recipe/food/goldenappletart name = "Golden apple tart" reqs = list( /datum/reagent/consumable/milk = 5, @@ -119,7 +119,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/pie/appletart category = CAT_FOOD -/datum/table_recipe/grapetart +/datum/crafting_recipe/food/grapetart name = "Grape tart" reqs = list( /datum/reagent/consumable/milk = 5, @@ -130,7 +130,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/pie/grapetart category = CAT_FOOD -/datum/table_recipe/blumpkinpie +/datum/crafting_recipe/food/blumpkinpie name = "Blumpkin pie" reqs = list( /datum/reagent/consumable/milk = 5, @@ -141,7 +141,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/pie/blumpkinpie category = CAT_FOOD -/datum/table_recipe/dulcedebatata +/datum/crafting_recipe/food/dulcedebatata name = "Dulce de batata" reqs = list( /datum/reagent/consumable/vanilla = 5, @@ -151,7 +151,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/pie/dulcedebatata category = CAT_FOOD -/datum/table_recipe/frostypie +/datum/crafting_recipe/food/frostypie name = "Frosty pie" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/pie/plain = 1, diff --git a/code/modules/food&drinks/recipes/tablecraft/recipes_pizza.dm b/code/modules/food&drinks/recipes/tablecraft/recipes_pizza.dm index 3d34dcd93d6..f7627e2e07f 100644 --- a/code/modules/food&drinks/recipes/tablecraft/recipes_pizza.dm +++ b/code/modules/food&drinks/recipes/tablecraft/recipes_pizza.dm @@ -3,7 +3,7 @@ ////////////////////////////////////////////////PIZZA!!!//////////////////////////////////////////////// -/datum/table_recipe/margheritapizza +/datum/crafting_recipe/food/margheritapizza name = "Margherita pizza" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/pizzabread = 1, @@ -13,7 +13,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/pizza/margherita category = CAT_FOOD -/datum/table_recipe/meatpizza +/datum/crafting_recipe/food/meatpizza name = "Meat pizza" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/pizzabread = 1, @@ -24,7 +24,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/pizza/meat category = CAT_FOOD -/datum/table_recipe/mushroompizza +/datum/crafting_recipe/food/mushroompizza name = "Mushroom pizza" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/pizzabread = 1, @@ -33,7 +33,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/pizza/mushroom category = CAT_FOOD -/datum/table_recipe/vegetablepizza +/datum/crafting_recipe/food/vegetablepizza name = "Vegetable pizza" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/pizzabread = 1, @@ -45,7 +45,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/pizza/vegetable category = CAT_FOOD -/datum/table_recipe/donpocketpizza +/datum/crafting_recipe/food/donpocketpizza name = "Donkpocket pizza" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/pizzabread = 1, @@ -56,7 +56,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/pizza/donkpocket category = CAT_FOOD -/datum/table_recipe/dankpizza +/datum/crafting_recipe/food/dankpizza name = "Dank pizza" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/pizzabread = 1, @@ -67,7 +67,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/pizza/dank category = CAT_FOOD -/datum/table_recipe/sassysagepizza +/datum/crafting_recipe/food/sassysagepizza name = "Sassysage pizza" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/pizzabread = 1, diff --git a/code/modules/food&drinks/recipes/tablecraft/recipes_salad.dm b/code/modules/food&drinks/recipes/tablecraft/recipes_salad.dm index 95752809085..fc4633253f0 100644 --- a/code/modules/food&drinks/recipes/tablecraft/recipes_salad.dm +++ b/code/modules/food&drinks/recipes/tablecraft/recipes_salad.dm @@ -3,7 +3,7 @@ ////////////////////////////////////////////////SALADS//////////////////////////////////////////////// -/datum/table_recipe/herbsalad +/datum/crafting_recipe/food/herbsalad name = "Herb salad" reqs = list( /obj/item/weapon/reagent_containers/glass/bowl = 1, @@ -13,7 +13,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/salad/herbsalad category = CAT_FOOD -/datum/table_recipe/aesirsalad +/datum/crafting_recipe/food/aesirsalad name = "Aesir salad" reqs = list( /obj/item/weapon/reagent_containers/glass/bowl = 1, @@ -23,7 +23,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/salad/aesirsalad category = CAT_FOOD -/datum/table_recipe/validsalad +/datum/crafting_recipe/food/validsalad name = "Valid salad" reqs = list( /obj/item/weapon/reagent_containers/glass/bowl = 1, @@ -34,7 +34,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/salad/validsalad category = CAT_FOOD -/datum/table_recipe/monkeysdelight +/datum/crafting_recipe/food/monkeysdelight name = "Monkeys delight" reqs = list( /datum/reagent/consumable/flour = 5, @@ -47,7 +47,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/soup/monkeysdelight category = CAT_FOOD -/datum/table_recipe/oatmeal +/datum/crafting_recipe/food/oatmeal name = "Oatmeal" reqs = list( /datum/reagent/consumable/milk = 10, @@ -57,7 +57,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/salad/oatmeal category = CAT_FOOD -/datum/table_recipe/fruitsalad +/datum/crafting_recipe/food/fruitsalad name = "Fruit salad" reqs = list( /obj/item/weapon/reagent_containers/glass/bowl = 1, @@ -70,7 +70,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/salad/fruit category = CAT_FOOD -/datum/table_recipe/junglesalad +/datum/crafting_recipe/food/junglesalad name = "Jungle salad" reqs = list( /obj/item/weapon/reagent_containers/glass/bowl = 1, @@ -83,7 +83,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/salad/jungle category = CAT_FOOD -/datum/table_recipe/citrusdelight +/datum/crafting_recipe/food/citrusdelight name = "Citrus delight" reqs = list( /obj/item/weapon/reagent_containers/glass/bowl = 1, @@ -95,7 +95,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/salad/citrusdelight category = CAT_FOOD -/datum/table_recipe/ricepork +/datum/crafting_recipe/food/ricepork name = "Rice and pork" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/salad/boiledrice = 1, @@ -104,7 +104,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/salad/ricepork category = CAT_FOOD -/datum/table_recipe/eggbowl +/datum/crafting_recipe/food/eggbowl name = "Egg bowl" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/salad/boiledrice = 1, @@ -115,7 +115,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/salad/eggbowl category = CAT_FOOD -/datum/table_recipe/ricepudding +/datum/crafting_recipe/food/ricepudding name = "Rice pudding" reqs = list( /datum/reagent/consumable/milk = 5, diff --git a/code/modules/food&drinks/recipes/tablecraft/recipes_sandwich.dm b/code/modules/food&drinks/recipes/tablecraft/recipes_sandwich.dm index a4f14d0a280..630430e2d36 100644 --- a/code/modules/food&drinks/recipes/tablecraft/recipes_sandwich.dm +++ b/code/modules/food&drinks/recipes/tablecraft/recipes_sandwich.dm @@ -6,7 +6,7 @@ ////////////////////////////////////////////////SANDWICHES//////////////////////////////////////////////// -/datum/table_recipe/sandwich +/datum/crafting_recipe/food/sandwich name = "Sandwich" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/breadslice/plain = 2, @@ -16,7 +16,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/sandwich category = CAT_FOOD -/datum/table_recipe/grilledcheesesandwich +/datum/crafting_recipe/food/grilledcheesesandwich name = "Grilled cheese sandwich" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/breadslice/plain = 2, @@ -25,7 +25,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/grilledcheese category = CAT_FOOD -/datum/table_recipe/slimesandwich +/datum/crafting_recipe/food/slimesandwich name = "Jelly sandwich" reqs = list( /datum/reagent/toxin/slimejelly = 5, @@ -34,7 +34,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/jellysandwich/slime category = CAT_FOOD -/datum/table_recipe/cherrysandwich +/datum/crafting_recipe/food/cherrysandwich name = "Jelly sandwich" reqs = list( /datum/reagent/consumable/cherryjelly = 5, @@ -43,7 +43,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/jellysandwich/cherry category = CAT_FOOD -/datum/table_recipe/icecreamsandwich +/datum/crafting_recipe/food/icecreamsandwich name = "Icecream sandwich" reqs = list( /datum/reagent/consumable/cream = 5, @@ -53,7 +53,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/icecreamsandwich category = CAT_FOOD -/datum/table_recipe/notasandwich +/datum/crafting_recipe/food/notasandwich name = "Not a sandwich" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/breadslice/plain = 2, diff --git a/code/modules/food&drinks/recipes/tablecraft/recipes_soup.dm b/code/modules/food&drinks/recipes/tablecraft/recipes_soup.dm index 082fb2b352f..3df5c6b8ca8 100644 --- a/code/modules/food&drinks/recipes/tablecraft/recipes_soup.dm +++ b/code/modules/food&drinks/recipes/tablecraft/recipes_soup.dm @@ -3,7 +3,7 @@ ////////////////////////////////////////////////SOUP//////////////////////////////////////////////// -/datum/table_recipe/meatballsoup +/datum/crafting_recipe/food/meatballsoup name = "Meatball soup" reqs = list( /datum/reagent/water = 10, @@ -15,7 +15,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/soup/meatball category = CAT_FOOD -/datum/table_recipe/vegetablesoup +/datum/crafting_recipe/food/vegetablesoup name = "Vegetable soup" reqs = list( /datum/reagent/water = 10, @@ -28,7 +28,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/soup/vegetable category = CAT_FOOD -/datum/table_recipe/nettlesoup +/datum/crafting_recipe/food/nettlesoup name = "Nettle soup" reqs = list( /datum/reagent/water = 10, @@ -40,7 +40,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/soup/nettle category = CAT_FOOD -/datum/table_recipe/wingfangchu +/datum/crafting_recipe/food/wingfangchu name = "Wingfangchu" reqs = list( /obj/item/weapon/reagent_containers/glass/bowl = 1, @@ -50,7 +50,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/soup/wingfangchu category = CAT_FOOD -/datum/table_recipe/wishsoup +/datum/crafting_recipe/food/wishsoup name = "Wish soup" reqs = list( /datum/reagent/water = 20, @@ -59,7 +59,7 @@ result= /obj/item/weapon/reagent_containers/food/snacks/soup/wish category = CAT_FOOD -/datum/table_recipe/hotchili +/datum/crafting_recipe/food/hotchili name = "Hot chili" reqs = list( /obj/item/weapon/reagent_containers/glass/bowl = 1, @@ -70,7 +70,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/soup/hotchili category = CAT_FOOD -/datum/table_recipe/coldchili +/datum/crafting_recipe/food/coldchili name = "Cold chili" reqs = list( /obj/item/weapon/reagent_containers/glass/bowl = 1, @@ -81,7 +81,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/soup/coldchili category = CAT_FOOD -/datum/table_recipe/tomatosoup +/datum/crafting_recipe/food/tomatosoup name = "Tomato soup" reqs = list( /datum/reagent/water = 10, @@ -91,7 +91,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/soup/tomato category = CAT_FOOD -/datum/table_recipe/milosoup +/datum/crafting_recipe/food/milosoup name = "Milo soup" reqs = list( /datum/reagent/water = 10, @@ -102,7 +102,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/soup/milo category = CAT_FOOD -/datum/table_recipe/bloodsoup +/datum/crafting_recipe/food/bloodsoup name = "Blood soup" reqs = list( /datum/reagent/blood = 10, @@ -112,7 +112,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/soup/blood category = CAT_FOOD -/datum/table_recipe/slimesoup +/datum/crafting_recipe/food/slimesoup name = "Slime soup" reqs = list( /datum/reagent/water = 10, @@ -122,7 +122,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/soup/slime category = CAT_FOOD -/datum/table_recipe/clownstears +/datum/crafting_recipe/food/clownstears name = "Clowns tears" reqs = list( /datum/reagent/water = 10, @@ -133,7 +133,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/soup/clownstears category = CAT_FOOD -/datum/table_recipe/mysterysoup +/datum/crafting_recipe/food/mysterysoup name = "Mystery soup" reqs = list( /datum/reagent/water = 10, @@ -146,7 +146,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/soup/mystery category = CAT_FOOD -/datum/table_recipe/mushroomsoup +/datum/crafting_recipe/food/mushroomsoup name = "Mushroom soup" reqs = list( /datum/reagent/consumable/milk = 5, @@ -157,7 +157,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/soup/mushroom category = CAT_FOOD -/datum/table_recipe/beetsoup +/datum/crafting_recipe/food/beetsoup name = "Beet soup" reqs = list( /datum/reagent/water = 10, @@ -168,7 +168,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/soup/beet category = CAT_FOOD -/datum/table_recipe/stew +/datum/crafting_recipe/food/stew name = "Stew" reqs = list( /datum/reagent/water = 10, @@ -183,7 +183,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/soup/stew category = CAT_FOOD -/datum/table_recipe/spacylibertyduff +/datum/crafting_recipe/food/spacylibertyduff name = "Spacy liberty duff" reqs = list( /datum/reagent/consumable/ethanol/vodka = 5, @@ -193,7 +193,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/soup/spacylibertyduff category = CAT_FOOD -/datum/table_recipe/amanitajelly +/datum/crafting_recipe/food/amanitajelly name = "Amanita jelly" reqs = list( /datum/reagent/consumable/ethanol/vodka = 5, @@ -203,7 +203,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/soup/amanitajelly category = CAT_FOOD -/datum/table_recipe/sweetpotatosoup +/datum/crafting_recipe/food/sweetpotatosoup name = "Sweet potato soup" reqs = list( /datum/reagent/water = 10, @@ -214,7 +214,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/soup/sweetpotato category = CAT_FOOD -/datum/table_recipe/redbeetsoup +/datum/crafting_recipe/food/redbeetsoup name = "Red beet soup" reqs = list( /datum/reagent/water = 10, diff --git a/code/modules/food&drinks/recipes/tablecraft/recipes_spaghetti.dm b/code/modules/food&drinks/recipes/tablecraft/recipes_spaghetti.dm index cbbcf0e6b1e..fb0ba863409 100644 --- a/code/modules/food&drinks/recipes/tablecraft/recipes_spaghetti.dm +++ b/code/modules/food&drinks/recipes/tablecraft/recipes_spaghetti.dm @@ -3,7 +3,7 @@ ////////////////////////////////////////////////SPAGHETTI//////////////////////////////////////////////// -/datum/table_recipe/tomatopasta +/datum/crafting_recipe/food/tomatopasta name = "Tomato pasta" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/boiledspaghetti = 1, @@ -12,7 +12,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/pastatomato category = CAT_FOOD -/datum/table_recipe/copypasta +/datum/crafting_recipe/food/copypasta name = "Copypasta" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/pastatomato = 2 @@ -20,7 +20,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/copypasta category = CAT_FOOD -/datum/table_recipe/spaghettimeatball +/datum/crafting_recipe/food/spaghettimeatball name = "Spaghetti meatball" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/boiledspaghetti = 1, @@ -29,7 +29,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/meatballspaghetti category = CAT_FOOD -/datum/table_recipe/spesslaw +/datum/crafting_recipe/food/spesslaw name = "Spesslaw" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/boiledspaghetti = 1, @@ -38,7 +38,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/spesslaw category = CAT_FOOD -/datum/table_recipe/beefnoodle +/datum/crafting_recipe/food/beefnoodle name = "Beef noodle" reqs = list( /obj/item/weapon/reagent_containers/glass/bowl = 1, @@ -49,7 +49,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/beefnoodle category = CAT_FOOD -/datum/table_recipe/chowmein +/datum/crafting_recipe/food/chowmein name = "Chowmein" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/boiledspaghetti = 1, diff --git a/code/modules/games/cas.dm b/code/modules/games/cas.dm index 8f1616f882e..ebf6a8bd4a8 100644 --- a/code/modules/games/cas.dm +++ b/code/modules/games/cas.dm @@ -13,7 +13,7 @@ var/global/list/cards_against_space icon_state = "deck_caswhite_full" deckstyle = "caswhite" var/card_face = "cas_white" - var/blanks = 10 + var/blanks = 25 var/decksize = 150 var/card_text_file = "strings/cas_white.txt" var/list/allcards = list() @@ -116,7 +116,7 @@ var/global/list/cards_against_space set name = "Flip Card" set category = "Object" set src in range(1) - if(usr.stat || !ishuman(usr) || !usr.canmove || usr.restrained()) + if(!usr.canUseTopic(src,1)) return if(!flipped) name = "CAS card" @@ -125,6 +125,11 @@ var/global/list/cards_against_space flipped = !flipped update_icon() +obj/item/toy/cards/singlecard/cas/AltClick(mob/living/user) + if(!user.canUseTopic(src,1)) + return + Flip() + /obj/item/toy/cards/singlecard/cas/update_icon() if(flipped) icon_state = "[card_face]_flipped" diff --git a/code/modules/holiday/easter.dm b/code/modules/holiday/easter.dm index 2cb75a65e7c..d233ea1362c 100644 --- a/code/modules/holiday/easter.dm +++ b/code/modules/holiday/easter.dm @@ -151,7 +151,7 @@ desc = "The Cross represents the Assistants that died for your sins." icon_state = "hotcrossbun" -/datum/table_recipe/hotcrossbun +/datum/crafting_recipe/food/food/hotcrossbun name = "Hot-Cross Bun" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/store/bread/plain = 1, @@ -175,7 +175,7 @@ icon_state = "briochecake_slice" filling_color = "#FFD700" -/datum/table_recipe/briochecake +/datum/crafting_recipe/food/food/briochecake name = "Brioche cake" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/store/cake/plain = 1, @@ -193,7 +193,7 @@ filling_color = "#FFFFF0" list_reagents = list("nutriment" = 6) -/datum/table_recipe/scotchegg +/datum/crafting_recipe/food/scotchegg name = "Scotch egg" reqs = list( /datum/reagent/consumable/sodiumchloride = 1, @@ -211,7 +211,7 @@ bonus_reagents = list("nutriment" = 3, "vitamin" = 1) list_reagents = list("nutriment" = 8, "vitamin" = 1) -/datum/table_recipe/mammi +/datum/crafting_recipe/food/mammi name = "Mämmi" reqs = list( /obj/item/weapon/reagent_containers/food/snacks/store/bread/plain = 1, @@ -229,7 +229,7 @@ list_reagents = list("nutriment" = 4, "sugar" = 2, "cocoa" = 2) filling_color = "#A0522D" -/datum/table_recipe/chocolatebunny +/datum/crafting_recipe/food/chocolatebunny name = "Chocolate bunny" reqs = list( /datum/reagent/consumable/sugar = 2, diff --git a/code/modules/hydroponics/plant_genes.dm b/code/modules/hydroponics/plant_genes.dm index 40f012af0d3..4f120caf00e 100644 --- a/code/modules/hydroponics/plant_genes.dm +++ b/code/modules/hydroponics/plant_genes.dm @@ -188,15 +188,15 @@ var/obj/item/seeds/seed = G.seed var/mob/living/carbon/M = target - var/stun_len = seed.potency * rate + var/stun_len = seed.potency * rate * 0.8 if(istype(G) && ispath(G.trash, /obj/item/weapon/grown)) return if(!istype(G, /obj/item/weapon/grown/bananapeel) && (!G.reagents || !G.reagents.has_reagent("lube"))) stun_len /= 3 - var/stun = max(stun_len * 2, 1) - var/weaken = max(stun_len, 0.5) + var/stun = min(stun_len, 7) + var/weaken = min(stun_len, 7) if(M.slip(stun, weaken, G)) for(var/datum/plant_gene/trait/T in seed.genes) @@ -309,4 +309,4 @@ /datum/plant_gene/trait/maxchem/on_new(obj/item/weapon/reagent_containers/food/snacks/grown/G, newloc) ..() - G.reagents.maximum_volume *= rate \ No newline at end of file + G.reagents.maximum_volume *= rate diff --git a/code/modules/jobs/job_types/cargo_service.dm b/code/modules/jobs/job_types/cargo_service.dm index ed87fcae838..d13ad0987d7 100644 --- a/code/modules/jobs/job_types/cargo_service.dm +++ b/code/modules/jobs/job_types/cargo_service.dm @@ -78,7 +78,7 @@ Shaft Miner belt = /obj/item/device/pda/shaftminer ears = /obj/item/device/radio/headset/headset_cargo - shoes = /obj/item/clothing/shoes/jackboots + shoes = /obj/item/clothing/shoes/workboots/mining gloves = /obj/item/clothing/gloves/color/black uniform = /obj/item/clothing/under/rank/miner/lavaland l_pocket = /obj/item/weapon/reagent_containers/pill/patch/styptic @@ -88,9 +88,9 @@ Shaft Miner /obj/item/weapon/kitchen/knife/combat/survival=1,\ /obj/item/weapon/mining_voucher=1) - backpack = /obj/item/weapon/storage/backpack/security - satchel = /obj/item/weapon/storage/backpack/satchel_sec - dufflebag = /obj/item/weapon/storage/backpack/dufflebag/sec + backpack = /obj/item/weapon/storage/backpack/explorer + satchel = /obj/item/weapon/storage/backpack/satchel_explorer + dufflebag = /obj/item/weapon/storage/backpack/dufflebag box = /obj/item/weapon/storage/box/engineer /* diff --git a/code/modules/library/lib_demonomicon.dm b/code/modules/library/lib_demonomicon.dm index 88a10b0720b..03f62d84d2b 100644 --- a/code/modules/library/lib_demonomicon.dm +++ b/code/modules/library/lib_demonomicon.dm @@ -30,13 +30,13 @@ var/devilName = copytext(sanitize(input(user, "What infernal being do you wish to research?", "Codex Gigas", null) as text),1,MAX_MESSAGE_LEN) var/speed = 300 var/correctness = 85 - var/willpower = 80 + var/willpower = 98 if(U.job in list("Librarian")) // the librarian is both faster, and more accurate than normal crew members at research speed = 45 correctness = 100 - willpower = 95 + willpower = 100 if(U.job in list("Captain", "Security Officer", "Head of Security", "Detective", "Warden")) - willpower = 90 + willpower = 99 if(U.job in list("Clown")) // WHO GAVE THE CLOWN A DEMONOMICON? BAD THINGS WILL HAPPEN! willpower = 25 correctness -= U.getBrainLoss() *0.5 //Brain damage makes researching hard. diff --git a/code/modules/mining/abandoned_crates.dm b/code/modules/mining/abandoned_crates.dm index 399cae5df69..25dcce3a9fb 100644 --- a/code/modules/mining/abandoned_crates.dm +++ b/code/modules/mining/abandoned_crates.dm @@ -174,6 +174,11 @@ /obj/structure/closet/crate/secure/loot/attack_animal(mob/user) boom(user) +/obj/structure/closet/crate/secure/loot/AltClick(mob/living/user) + if(!user.canUseTopic(src)) + return + attack_hand(user) + /obj/structure/closet/crate/secure/loot/attackby(obj/item/weapon/W, mob/user) if(locked) if(istype(W, /obj/item/weapon/card/emag)) diff --git a/code/modules/mining/equipment_locker.dm b/code/modules/mining/equipment_locker.dm index 9503ed2808b..6d89f9d90b0 100644 --- a/code/modules/mining/equipment_locker.dm +++ b/code/modules/mining/equipment_locker.dm @@ -295,15 +295,18 @@ new /datum/data/mining_equipment("Hivelord Stabilizer", /obj/item/weapon/hivelordstabilizer , 400), new /datum/data/mining_equipment("Shelter Capsule", /obj/item/weapon/survivalcapsule , 400), new /datum/data/mining_equipment("GAR scanners", /obj/item/clothing/glasses/meson/gar, 500), - new /datum/data/mining_equipment("Explorer Belt", /obj/item/weapon/storage/belt/mining, 500), + new /datum/data/mining_equipment("Explorer's Webbing", /obj/item/weapon/storage/belt/mining, 500), + new /datum/data/mining_equipment("Survival Medipen", /obj/item/weapon/reagent_containers/hypospray/medipen/survival, 500), new /datum/data/mining_equipment("Brute First-Aid Kit", /obj/item/weapon/storage/firstaid/brute, 600), - new /datum/data/mining_equipment("Jaunter", /obj/item/device/wormhole_jaunter, 600), + new /datum/data/mining_equipment("Tracking Implant Kit",/obj/item/weapon/storage/box/minertracker, 600), + new /datum/data/mining_equipment("Jaunter", /obj/item/device/wormhole_jaunter, 750), new /datum/data/mining_equipment("Kinetic Accelerator", /obj/item/weapon/gun/energy/kinetic_accelerator, 750), new /datum/data/mining_equipment("Resonator", /obj/item/weapon/resonator, 800), new /datum/data/mining_equipment("Lazarus Injector", /obj/item/weapon/lazarus_injector, 1000), new /datum/data/mining_equipment("Silver Pickaxe", /obj/item/weapon/pickaxe/silver, 1000), - new /datum/data/mining_equipment("Jetpack Upgrade", /obj/item/hardsuit_jetpack , 2000), + new /datum/data/mining_equipment("Jetpack Upgrade", /obj/item/hardsuit_jetpack, 2000), new /datum/data/mining_equipment("Space Cash", /obj/item/stack/spacecash/c1000, 2000), + new /datum/data/mining_equipment("Mining Hardsuit", /obj/item/clothing/suit/space/hardsuit/mining, 2000), new /datum/data/mining_equipment("Diamond Pickaxe", /obj/item/weapon/pickaxe/diamond, 2000), new /datum/data/mining_equipment("Super Resonator", /obj/item/weapon/resonator/upgraded, 2500), new /datum/data/mining_equipment("Super Accelerator", /obj/item/weapon/gun/energy/kinetic_accelerator/super, 3000), @@ -426,11 +429,11 @@ return ..() /obj/machinery/mineral/equipment_vendor/proc/RedeemVoucher(obj/item/weapon/mining_voucher/voucher, mob/redeemer) - var/selection = input(redeemer, "Pick your equipment", "Mining Voucher Redemption") as null|anything in list("Survival Capsule and Explorer Belt", "Resonator", "Mining Drone", "Advanced Scanner") + var/selection = input(redeemer, "Pick your equipment", "Mining Voucher Redemption") as null|anything in list("Survival Capsule and Explorer's Webbing", "Resonator", "Mining Drone", "Advanced Scanner") if(!selection || !Adjacent(redeemer) || qdeleted(voucher) || voucher.loc != redeemer) return switch(selection) - if("Survival Capsule and Explorer Belt") + if("Survival Capsule and Explorer's Webbing") new /obj/item/weapon/storage/belt/mining(src.loc) new /obj/item/weapon/survivalcapsule(src.loc) if("Resonator") @@ -512,15 +515,31 @@ return FALSE return TRUE +/obj/item/device/wormhole_jaunter/proc/get_destinations(mob/user) + var/list/destinations = list() + + if(isgolem(user)) + for(var/obj/item/device/radio/beacon/B in world) + var/turf/T = get_turf(B) + if(istype(T.loc, /area/ruin/powered/golem_ship)) + destinations += B + + // In the event golem beacon is destroyed, send to station instead + if(destinations.len) + return destinations + + for(var/obj/item/device/radio/beacon/B in world) + var/turf/T = get_turf(B) + if(T.z == ZLEVEL_STATION) + destinations += B + + return destinations + /obj/item/device/wormhole_jaunter/proc/activate(mob/user) if(!turf_check(user)) return - var/list/L = list() - for(var/obj/item/device/radio/beacon/B in world) - var/turf/T = get_turf(B) - if(T.z == ZLEVEL_STATION) - L += B + var/list/L = get_destinations(user) if(!L.len) user << "The [src.name] found no beacons in the world to anchor a wormhole to." return @@ -1124,44 +1143,32 @@ /obj/machinery/mineral/equipment_vendor/golem name = "golem ship equipment vendor" - desc = "A modified mining equipment vendor. It seems a few selections were replaced." - prize_list = list( - new /datum/data/mining_equipment("Stimpack", /obj/item/weapon/reagent_containers/hypospray/medipen/stimpack, 50), - new /datum/data/mining_equipment("Stimpack Bundle", /obj/item/weapon/storage/box/medipens/utility, 200), - new /datum/data/mining_equipment("Whiskey", /obj/item/weapon/reagent_containers/food/drinks/bottle/whiskey, 100), - new /datum/data/mining_equipment("Absinthe", /obj/item/weapon/reagent_containers/food/drinks/bottle/absinthe/premium,100), - new /datum/data/mining_equipment("Soap", /obj/item/weapon/soap/nanotrasen, 200), - new /datum/data/mining_equipment("Science Goggles", /obj/item/clothing/glasses/science, 250), - new /datum/data/mining_equipment("Laser Pointer", /obj/item/device/laser_pointer, 300), - new /datum/data/mining_equipment("Alien Toy", /obj/item/clothing/mask/facehugger/toy, 300), - new /datum/data/mining_equipment("Monkey Cube", /obj/item/weapon/reagent_containers/food/snacks/monkeycube, 300), - new /datum/data/mining_equipment("Toolbelt", /obj/item/weapon/storage/belt/utility, 350), - new /datum/data/mining_equipment("Stabilizing Serum", /obj/item/weapon/hivelordstabilizer, 400), - new /datum/data/mining_equipment("Shelter Capsule", /obj/item/weapon/survivalcapsule, 400), - new /datum/data/mining_equipment("GAR scanners", /obj/item/clothing/glasses/meson/gar, 500), - new /datum/data/mining_equipment("Sulphuric Acid", /obj/item/weapon/reagent_containers/glass/beaker/sulphuric, 500), - new /datum/data/mining_equipment("Brute First-Aid Kit", /obj/item/weapon/storage/firstaid/brute, 600), - new /datum/data/mining_equipment("Advanced Scanner", /obj/item/device/t_scanner/adv_mining_scanner, 800), - new /datum/data/mining_equipment("Resonator", /obj/item/weapon/resonator, 800), - new /datum/data/mining_equipment("Lazarus Injector", /obj/item/weapon/lazarus_injector, 1000), - new /datum/data/mining_equipment("Silver Pickaxe", /obj/item/weapon/pickaxe/silver, 1000), - new /datum/data/mining_equipment("Grey Slime Extract", /obj/item/slime_extract/grey, 1000), - new /datum/data/mining_equipment("Diamond Pickaxe", /obj/item/weapon/pickaxe/diamond, 2000), - new /datum/data/mining_equipment("Super Resonator", /obj/item/weapon/resonator/upgraded, 2500), - new /datum/data/mining_equipment("Point Transfer Card", /obj/item/weapon/card/mining_point_card, 500), - new /datum/data/mining_equipment("Mining Drone", /mob/living/simple_animal/hostile/mining_drone, 800), - new /datum/data/mining_equipment("Drone Melee Upgrade", /obj/item/device/mine_bot_ugprade, 400), - new /datum/data/mining_equipment("Drone Health Upgrade", /obj/item/device/mine_bot_ugprade/health, 400), - new /datum/data/mining_equipment("Drone Ranged Upgrade", /obj/item/device/mine_bot_ugprade/cooldown, 600), - new /datum/data/mining_equipment("Drone AI Upgrade", /obj/item/slimepotion/sentience/mining, 1000), - new /datum/data/mining_equipment("The Liberator's Legacy", /obj/item/weapon/storage/box/rndboards, 2000), - ) /obj/machinery/mineral/equipment_vendor/golem/New() ..() - var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/mining_equipment_vendor/golem(null) - B.apply_default_parts(src) + desc += "\nIt seems a few selections have been added." + prize_list += list( + new /datum/data/mining_equipment("Science Goggles", /obj/item/clothing/glasses/science, 250), + new /datum/data/mining_equipment("Monkey Cube", /obj/item/weapon/reagent_containers/food/snacks/monkeycube, 300), + new /datum/data/mining_equipment("Toolbelt", /obj/item/weapon/storage/belt/utility, 350), + new /datum/data/mining_equipment("Sulphuric Acid", /obj/item/weapon/reagent_containers/glass/beaker/sulphuric, 500), + new /datum/data/mining_equipment("Brute First-Aid Kit", /obj/item/weapon/storage/firstaid/brute, 600), + new /datum/data/mining_equipment("Grey Slime Extract", /obj/item/slime_extract/grey, 1000), + new /datum/data/mining_equipment("Modification Kit", /obj/item/modkit, 1700), + new /datum/data/mining_equipment("The Liberator's Legacy", /obj/item/weapon/storage/box/rndboards, 2000), + + ) + + + component_parts = list() + component_parts += new /obj/item/weapon/circuitboard/machine/mining_equipment_vendor/golem(null) + component_parts += new /obj/item/weapon/stock_parts/matter_bin(null) + component_parts += new /obj/item/weapon/stock_parts/matter_bin(null) + component_parts += new /obj/item/weapon/stock_parts/matter_bin(null) + component_parts += new /obj/item/weapon/stock_parts/console_screen(null) + RefreshParts() /obj/item/weapon/circuitboard/machine/mining_equipment_vendor/golem name = "circuit board (Golem Ship Equipment Vendor)" build_path = /obj/machinery/mineral/equipment_vendor/golem + diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index 4ff2c3d0c03..e367f1d425a 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -15,8 +15,7 @@ if(1) new /obj/item/device/shared_storage/red(src) if(2) - new /obj/item/clothing/suit/space/cult(src) - new /obj/item/clothing/head/helmet/space/cult(src) + new /obj/item/clothing/suit/space/hardsuit/cult(src) if(3) new /obj/item/device/soulstone/anybody(src) if(4) @@ -368,14 +367,14 @@ w_class = 3 burn_state = LAVA_PROOF -/datum/table_recipe/oar +/datum/crafting_recipe/oar name = "goliath bone oar" result = /obj/item/weapon/oar reqs = list(/obj/item/stack/sheet/bone = 2) time = 15 category = CAT_PRIMAL -/datum/table_recipe/boat +/datum/crafting_recipe/boat name = "goliath hide boat" result = /obj/vehicle/lavaboat reqs = list(/obj/item/stack/sheet/animalhide/goliath_hide = 3) diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm index c577ca74bee..457554c2300 100644 --- a/code/modules/mining/mine_items.dm +++ b/code/modules/mining/mine_items.dm @@ -458,6 +458,13 @@ max_n_of_items = 10 pixel_y = -4 +/obj/machinery/smartfridge/survival_pod/empty + name = "dusty survival pod storage" + desc = "A heated storage unit. This ones seen better days." + +/obj/machinery/smartfridge/survival_pod/empty/New() + return() + /obj/machinery/smartfridge/survival_pod/accept_check(obj/item/O) if(istype(O, /obj/item)) return 1 diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index d54b00a1a73..5d1b16ff14c 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -4,6 +4,7 @@ name = "rock" icon = 'icons/turf/mining.dmi' icon_state = "rock" + var/smooth_icon = 'icons/turf/smoothrocks.dmi' smooth = SMOOTH_MORE|SMOOTH_BORDER canSmoothWith = list (/turf/closed/mineral, /turf/closed/wall) baseturf = /turf/open/floor/plating/asteroid/airless @@ -14,18 +15,19 @@ layer = MOB_LAYER + 0.05 temperature = TCMB var/environment_type = "asteroid" - var/turf/open/floor/plating/asteroid/turf_type = /turf/open/floor/plating/asteroid/airless + var/turf/open/floor/plating/turf_type = /turf/open/floor/plating/asteroid/airless var/mineralType = null var/mineralAmt = 3 var/spread = 0 //will the seam spread? var/spreadChance = 0 //the percentual chance of an ore spreading to the neighbouring tiles var/last_act = 0 var/scan_state = null //Holder for the image we display when we're pinged by a mining scanner + var/defer_change = 0 /turf/closed/mineral/New() pixel_y = -4 pixel_x = -4 - icon = 'icons/turf/smoothrocks.dmi' + icon = smooth_icon ..() if (mineralType && mineralAmt && spread && spreadChance) for(var/dir in cardinal) @@ -240,7 +242,8 @@ if(det_time >= 1 && det_time <= 2) G.quality = 2 G.icon_state = "Gibtonite ore 2" - ChangeTurf(turf_type) + ChangeTurf(turf_type, defer_change) + AfterChange() /turf/closed/mineral/gibtonite/volcanic initial_gas_mix = "o2=14;n2=23;TEMP=300" @@ -371,7 +374,8 @@ for (i=0;i= 0) if(lying) - M.visible_message("[M] shakes [src] trying to get \him up!", \ - "You shake [src] trying to get \him up!") + M.visible_message("[M] shakes [src] trying to get them up!", \ + "You shake [src] trying to get them up!") else - M.visible_message("[M] hugs [src] to make \him feel better!", \ - "You hug [src] to make \him feel better!") + M.visible_message("[M] hugs [src] to make them feel better!", \ + "You hug [src] to make them feel better!") AdjustSleeping(-5) AdjustParalysis(-3) AdjustStunned(-3) @@ -208,41 +208,37 @@ throw_mode_off() if(!target || !isturf(loc)) return - if(istype(target, /obj/screen)) return + if(istype(target, /obj/screen)) + return - var/atom/movable/item = src.get_active_hand() + var/atom/movable/thrown_thing + var/obj/item/I = src.get_active_hand() - if(!item || (item.flags & NODROP)) return + if(!I || (I.flags & NODROP)) + return - if(istype(item, /obj/item/weapon/grab)) - var/obj/item/weapon/grab/G = item - item = G.get_mob_if_throwable() //throw the person instead of the grab - qdel(G) //We delete the grab, as it needs to stay around until it's returned. - if(ismob(item)) + if(istype(I, /obj/item/weapon/grab)) + var/obj/item/weapon/grab/G = I + var/mob/throwable_mob = G.get_mob_if_throwable() //throw the person instead of the grab + qdel(G) //We delete the grab. + if(throwable_mob) + thrown_thing = throwable_mob var/turf/start_T = get_turf(loc) //Get the start and target tile for the descriptors var/turf/end_T = get_turf(target) if(start_T && end_T) - var/mob/M = item var/start_T_descriptor = "tile at [start_T.x], [start_T.y], [start_T.z] in area [get_area(start_T)]" var/end_T_descriptor = "tile at [end_T.x], [end_T.y], [end_T.z] in area [get_area(end_T)]" - add_logs(src, M, "thrown", addition="from [start_T_descriptor] with the target [end_T_descriptor]") + add_logs(src, throwable_mob, "thrown", addition="from [start_T_descriptor] with the target [end_T_descriptor]") - if(!item) return //Grab processing has a chance of returning null - - if(!ismob(item)) //Honk mobs don't have a dropped() proc honk - unEquip(item) - if(src.client) - src.client.screen -= item - - //actually throw it! - if(item) - item.layer = initial(item.layer) - src.visible_message("[src] has thrown [item].") + else if(!(I.flags & ABSTRACT)) //can't throw abstract items + thrown_thing = I + unEquip(I) + if(thrown_thing) + visible_message("[src] has thrown [thrown_thing].") newtonian_move(get_dir(target, src)) - - item.throw_at(target, item.throw_range, item.throw_speed, src) + thrown_thing.throw_at(target, thrown_thing.throw_range, thrown_thing.throw_speed, src) /mob/living/carbon/restrained() if (handcuffed) diff --git a/code/modules/mob/living/carbon/human/blood.dm b/code/modules/mob/living/carbon/human/blood.dm index f67b3a4008f..4b18297b92c 100644 --- a/code/modules/mob/living/carbon/human/blood.dm +++ b/code/modules/mob/living/carbon/human/blood.dm @@ -227,7 +227,7 @@ var/const/BLOOD_VOLUME_SURVIVE = 122 if (!injected || !our || !dna) return - if(blood_incompatible(injected.data["blood_type"], dna.blood_type,injected.data["species"], dna.species.id) ) + if (!(injected.data["blood_type"] in get_safe_blood(dna.blood_type)) || injected.data["species"] != dna.species.id) reagents.add_reagent("toxin",amount * 0.5) our.on_merge(injected.data) //still transfer viruses and such, even if incompatibles bloods reagents.update_total() @@ -246,28 +246,28 @@ var/const/BLOOD_VOLUME_SURVIVE = 122 return D return res -/proc/blood_incompatible(donor,receiver,donor_species,receiver_species) - if(!donor || !receiver) return 0 - - if(donor_species && receiver_species) - if(donor_species != receiver_species) - return 1 - - var/donor_antigen = copytext(donor,1,lentext(donor)) - var/receiver_antigen = copytext(receiver,1,lentext(receiver)) - var/donor_rh = (findtext(donor,"+")>0) - var/receiver_rh = (findtext(receiver,"+")>0) - - if(donor_rh && !receiver_rh) return 1 - switch(receiver_antigen) - if("A") - if(donor_antigen != "A" && donor_antigen != "O") return 1 - if("B") - if(donor_antigen != "B" && donor_antigen != "O") return 1 - if("O") - if(donor_antigen != "O") return 1 - //AB is a universal receiver. - return 0 +// This is has more potential uses, and is probably faster than the old proc. +/proc/get_safe_blood(bloodtype) + . = list() + if(!bloodtype) + return + switch(bloodtype) + if("A-") + return list("A-", "O-") + if("A+") + return list("A", "A+", "O-", "O+") + if("B-") + return list("B-", "O-") + if("B+") + return list("B-", "B+", "O-", "O+") + if("AB-") + return list("A-", "B-", "O-", "AB-") + if("AB+") + return list("A-", "A+", "B-", "B+", "O-", "O+", "AB-", "AB+") + if("O-") + return list("O-") + if("O+") + return list("O-", "O+") /proc/blood_splatter(target,datum/reagent/blood/source,large) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index d21b31fce7b..3747fd3d5a8 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -47,8 +47,13 @@ martial_art = default_martial_art + handcrafting = new() + ..() +/mob/living/carbon/human/OpenCraftingMenu() + handcrafting.craft(src) + /mob/living/carbon/human/prepare_data_huds() //Update med hud images... ..() @@ -150,7 +155,7 @@ take_overall_damage(b_loss,f_loss) //attempt to dismember bodyparts - if(severity >= 2 || !bomb_armor) + if(severity <= 2 || !bomb_armor) var/max_limb_loss = round(4/severity) //so you don't lose four limbs at severity 3. for(var/X in bodyparts) var/obj/item/bodypart/BP = X @@ -1034,6 +1039,9 @@ if (dna && dna.species) . += dna.species.check_weakness(weapon, attacker) +/mob/living/carbon/human/is_literate() + return 1 + /mob/living/carbon/human/update_gravity(has_gravity,override = 0) override = dna.species.override_float ..() \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index 150dfeca61b..4a1699d80e1 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -54,3 +54,4 @@ var/global/default_martial_art = new/datum/martial_art var/heart_attack = 0 var/drunkenness = 0 //Overall drunkenness - check handle_alcohol() in life.dm for effects + var/datum/personal_crafting/handcrafting diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 10b12f5425b..99d99f6b6d6 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -214,7 +214,7 @@ if(dna.check_mutation(COLDRES)) return 1 //Fully protected from the cold. - if(dna && (RESISTCOLD in dna.species.specflags)) + if(dna && (RESISTTEMP in dna.species.specflags)) return 1 temperature = max(temperature, 2.7) //There is an occasional bug where the temperature is miscalculated in ares with a small amount of gas on them, so this is necessary to ensure that that bug does not affect this calculation. Space's temperature is 2.7K and most suits that are intended to protect against any cold, protect down to 2.0K. diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 79b4265a5d1..ca3ed98709e 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -31,7 +31,6 @@ var/hair_color = null // this allows races to have specific hair colors... if null, it uses the H's hair/facial hair colors. if "mutcolor", it uses the H's mutant_color var/hair_alpha = 255 // the alpha used by the hair. 255 is completely solid, 0 is transparent. var/use_skintones = 0 // does it use skintones or not? (spoiler alert this is only used by humans) - var/need_nutrition = 1 //Does it need to eat food on a regular basis? var/exotic_blood = "" // If your race wants to bleed something other than bog standard blood, change this to reagent id. var/meat = /obj/item/weapon/reagent_containers/food/snacks/meat/slab/human //What the species drops on gibbing var/skinned_type = /obj/item/stack/sheet/animalhide/generic @@ -76,6 +75,7 @@ var/safe_toxins_max = 0.05 var/SA_para_min = 1 //Sleeping agent var/SA_sleep_min = 5 //Sleeping agent + var/BZ_trip_balls_min = 1 //BZ gas. //Breath damage var/oxy_breath_dam_min = 1 @@ -85,8 +85,6 @@ var/tox_breath_dam_min = MIN_PLASMA_DAMAGE var/tox_breath_dam_max = MAX_PLASMA_DAMAGE - var/has_dismemberment = 1 //Whether or not this species uses dismemberment for its limbs - //Flight and floating var/override_float = 0 @@ -137,7 +135,7 @@ var/obj/item/thing = C.get_item_by_slot(slot_id) if(thing) C.unEquip(thing) - if(!has_dismemberment) + if(NODISMEMBER in specflags) C.regenerate_limbs() //if we don't handle dismemberment, we grow our missing limbs back if(exotic_blood) C.reagents.add_reagent(exotic_blood, 80) @@ -162,7 +160,7 @@ return "[id]" /datum/species/proc/update_color(mob/living/carbon/human/H, forced_colour) - if(has_dismemberment) //only species without dismemberment still use base icon states. + if(!(NODISMEMBER in specflags)) //only species without dismemberment still use base icon states. return H.remove_overlay(SPECIES_LAYER) @@ -286,7 +284,7 @@ var/list/standing = list() - if(!has_dismemberment) //Legacy support + if(NODISMEMBER in specflags) //Legacy support H.update_base_icon_state() if(!(H.disabilities & HUSK)) update_color(H) @@ -734,7 +732,9 @@ H.update_inv_wear_suit() // nutrition decrease and satiety - if (H.nutrition > 0 && H.stat != DEAD && H.dna.species.need_nutrition) + if (H.nutrition > 0 && H.stat != DEAD && \ + H.dna && H.dna.species && (!(NOHUNGER in H.dna.species.specflags))) + // THEY HUNGER var/hunger_rate = HUNGER_FACTOR if(H.satiety > 0) H.satiety-- @@ -1070,20 +1070,10 @@ return 0 //item force is zero //dismemberment - if(affecting.get_damage() >= (affecting.max_damage - I.armour_penetration/2)) - if(I.can_dismember() && prob(I.force*(I.w_class-1))) - if(affecting.dismember(I.damtype)) - I.add_blood(H) - switch(I.damtype) - if(BURN) - playsound(get_turf(H), 'sound/weapons/sear.ogg', 80, 1) - else - playsound(get_turf(H), pick('sound/misc/desceration-01.ogg', 'sound/misc/desceration-02.ogg', 'sound/misc/desceration-03.ogg'), 80, 1) - affecting.add_blood(H) - var/turf/location = H.loc - if(istype(location)) - location.add_blood(H) - return + if(prob(I.get_dismemberment_chance(affecting))) + if(affecting.dismember(I.damtype)) + I.add_blood(H) + playsound(get_turf(H), I.get_dismember_sound(), 80, 1) var/bloody = 0 if(((I.damtype == BRUTE) && I.force && prob(25 + (I.force * 2)))) @@ -1230,7 +1220,7 @@ var/list/breath_gases = breath.gases - breath.assert_gases("o2", "plasma", "co2", "n2o") + breath.assert_gases("o2", "plasma", "co2", "n2o", "bz") //Partial pressures in our breath var/O2_pp = breath.get_breath_partial_pressure(breath_gases["o2"][MOLES]) @@ -1337,6 +1327,9 @@ //-- TRACES --// if(breath && !(NOBREATH in specflags)) // If there's some other shit in the air lets deal with it here. + + // N2O + var/SA_pp = breath.get_breath_partial_pressure(breath_gases["n2o"][MOLES]) if(SA_pp > SA_para_min) // Enough to make us paralysed for a bit H.Paralyse(3) // 3 gives them one second to wake up and run away a bit! @@ -1345,6 +1338,16 @@ else if(SA_pp > 0.01) // There is sleeping gas in their lungs, but only a little, so give them a bit of a warning if(prob(20)) H.emote(pick("giggle", "laugh")) + + // BZ + + var/bz_pp = breath.get_breath_partial_pressure(breath_gases["bz"][MOLES]) + if(bz_pp > BZ_trip_balls_min) + H.hallucination += 20 + if(prob(33)) + H.adjustBrainLoss(3) + else if(bz_pp > 0.01) + H.hallucination += 5//Removed at 2 per tick so this will slowly build up handle_breath_temperature(breath, H) breath.garbage_collect() @@ -1382,7 +1385,7 @@ if(200 to 260) H.apply_damage(COLD_GAS_DAMAGE_LEVEL_1, BURN, "head") - if(!(RESISTHEAT in specflags)) // HEAT DAMAGE + if(!(RESISTTEMP in specflags)) // HEAT DAMAGE switch(breath.temperature) if(360 to 400) H.apply_damage(HEAT_GAS_DAMAGE_LEVEL_1, BURN, "head") @@ -1417,7 +1420,7 @@ H.bodytemperature += min((1-thermal_protection) * ((loc_temp - H.bodytemperature) / BODYTEMP_HEAT_DIVISOR), BODYTEMP_HEATING_MAX) // +/- 50 degrees from 310.15K is the 'safe' zone, where no damage is dealt. - if(H.bodytemperature > BODYTEMP_HEAT_DAMAGE_LIMIT && !(RESISTHEAT in specflags)) + if(H.bodytemperature > BODYTEMP_HEAT_DAMAGE_LIMIT && !(RESISTTEMP in specflags)) //Body temperature is too hot. switch(H.bodytemperature) if(360 to 400) @@ -1456,7 +1459,7 @@ var/adjusted_pressure = H.calculate_affecting_pressure(pressure) //Returns how much pressure actually affects the mob. switch(adjusted_pressure) if(HAZARD_HIGH_PRESSURE to INFINITY) - if(!(RESISTHEAT in specflags)) + if(!(RESISTTEMP in specflags)) H.adjustBruteLoss( min( ( (adjusted_pressure / HAZARD_HIGH_PRESSURE) -1 )*PRESSURE_DAMAGE_COEFFICIENT , MAX_HIGH_PRESSURE_DAMAGE) ) H.throw_alert("pressure", /obj/screen/alert/highpressure, 2) else @@ -1468,7 +1471,7 @@ if(HAZARD_LOW_PRESSURE to WARNING_LOW_PRESSURE) H.throw_alert("pressure", /obj/screen/alert/lowpressure, 1) else - if(H.dna.check_mutation(COLDRES) || (RESISTCOLD in specflags)) + if(H.dna.check_mutation(COLDRES) || (RESISTTEMP in specflags)) H.clear_alert("pressure") else H.adjustBruteLoss( LOW_PRESSURE_DAMAGE ) @@ -1479,11 +1482,11 @@ ////////// /datum/species/proc/handle_fire(mob/living/carbon/human/H) - if((RESISTHEAT in specflags) || (NOFIRE in specflags)) + if((RESISTTEMP in specflags) || (NOFIRE in specflags)) return 1 /datum/species/proc/IgniteMob(mob/living/carbon/human/H) - if((RESISTHEAT in specflags) || (NOFIRE in specflags)) + if((RESISTTEMP in specflags) || (NOFIRE in specflags)) return 1 /datum/species/proc/ExtinguishMob(mob/living/carbon/human/H) diff --git a/code/modules/mob/living/carbon/human/species_types.dm b/code/modules/mob/living/carbon/human/species_types.dm index 8800e78329b..7cfd8084ebe 100644 --- a/code/modules/mob/living/carbon/human/species_types.dm +++ b/code/modules/mob/living/carbon/human/species_types.dm @@ -179,10 +179,9 @@ default_color = "00FF90" say_mod = "chirps" eyes = "jelleyes" - specflags = list(MUTCOLORS,EYECOLOR,NOBLOOD,VIRUSIMMUNE) + specflags = list(MUTCOLORS,EYECOLOR,NOBLOOD,VIRUSIMMUNE,NODISMEMBER) meat = /obj/item/weapon/reagent_containers/food/snacks/meat/slab/human/mutant/slime exotic_blood = "slimejelly" - has_dismemberment = 0 /datum/species/jelly/spec_life(mob/living/carbon/human/H) if(H.stat == DEAD) //can't farm slime jelly from a dead slime/jelly person indefinitely @@ -218,7 +217,7 @@ id = "slime" default_color = "00FFFF" darksight = 3 - specflags = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR,NOBLOOD,VIRUSIMMUNE) + specflags = list(MUTCOLORS,EYECOLOR,HAIR,FACEHAIR,NOBLOOD,VIRUSIMMUNE,NODISMEMBER) say_mod = "says" eyes = "eyes" hair_color = "mutcolor" @@ -320,7 +319,7 @@ // Animated beings of stone. They have increased defenses, and do not need to breathe. They're also slow as fuuuck. name = "Golem" id = "golem" - specflags = list(NOBREATH,RESISTHEAT,RESISTCOLD,NOGUNS,NOBLOOD,RADIMMUNE,VIRUSIMMUNE,PIERCEIMMUNE) + specflags = list(NOBREATH,RESISTTEMP,NOGUNS,NOBLOOD,RADIMMUNE,VIRUSIMMUNE,PIERCEIMMUNE,NODISMEMBER) speedmod = 2 armor = 55 siemens_coeff = 0 @@ -331,7 +330,6 @@ nojumpsuit = 1 sexes = 0 meat = /obj/item/weapon/reagent_containers/food/snacks/meat/slab/human/mutant/golem - has_dismemberment = 0 /datum/species/golem/adamantine name = "Adamantine Golem" @@ -408,20 +406,11 @@ name = "Spooky Scary Skeleton" id = "skeleton" say_mod = "rattles" - need_nutrition = 0 blacklisted = 1 sexes = 0 meat = /obj/item/weapon/reagent_containers/food/snacks/meat/slab/human/mutant/skeleton - specflags = list(NOBREATH,RESISTHEAT,RESISTCOLD,NOBLOOD,RADIMMUNE,VIRUSIMMUNE,PIERCEIMMUNE) - var/list/myspan = null - -/datum/species/skeleton/New() - ..() - myspan = list(pick(SPAN_SANS,SPAN_PAPYRUS)) //pick a span and stick with it for the round - -/datum/species/skeleton/get_spans() - return myspan - + specflags = list(NOBREATH,RESISTTEMP,NOBLOOD,RADIMMUNE,VIRUSIMMUNE,PIERCEIMMUNE,NOHUNGER) + mutant_organs = list(/obj/item/organ/tongue/bone) /* ZOMBIES @@ -435,7 +424,7 @@ sexes = 0 blacklisted = 1 meat = /obj/item/weapon/reagent_containers/food/snacks/meat/slab/human/mutant/zombie - specflags = list(NOBREATH,RESISTHEAT,RESISTCOLD,NOBLOOD,RADIMMUNE) + specflags = list(NOBREATH,RESISTTEMP,NOBLOOD,RADIMMUNE) mutant_organs = list(/obj/item/organ/tongue/zombie) /datum/species/cosmetic_zombie @@ -451,7 +440,7 @@ darksight = 3 say_mod = "gibbers" sexes = 0 - specflags = list(NOBLOOD,NOBREATH,VIRUSIMMUNE) + specflags = list(NOBLOOD,NOBREATH,VIRUSIMMUNE,NOGUNS) mutant_organs = list(/obj/item/organ/tongue/abductor) var/scientist = 0 // vars to not pollute spieces list with castes var/agent = 0 @@ -465,13 +454,12 @@ var/global/image/plasmaman_on_fire = image("icon"='icons/mob/OnFire.dmi', "icon_ say_mod = "rattles" sexes = 0 meat = /obj/item/stack/sheet/mineral/plasma - specflags = list(NOBLOOD,RADIMMUNE,NOTRANSSTING,VIRUSIMMUNE) + specflags = list(NOBLOOD,RADIMMUNE,NOTRANSSTING,VIRUSIMMUNE,NOHUNGER) safe_oxygen_min = 0 //We don't breath this safe_toxins_min = 16 //We breath THIS! safe_toxins_max = 0 dangerous_existence = 1 //So so much blacklisted = 1 //See above - need_nutrition = 0 //Hard to eat through a helmet burnmod = 2 heatmod = 2 speedmod = 1 @@ -519,7 +507,7 @@ var/global/list/synth_flesh_disguises = list() id = "synth" say_mod = "beep boops" //inherited from a user's real species sexes = 0 - specflags = list(NOTRANSSTING,NOBREATH,VIRUSIMMUNE) //all of these + whatever we inherit from the real species + specflags = list(NOTRANSSTING,NOBREATH,VIRUSIMMUNE,NODISMEMBER,NOHUNGER) //all of these + whatever we inherit from the real species safe_oxygen_min = 0 safe_toxins_min = 0 safe_toxins_max = 0 @@ -528,13 +516,11 @@ var/global/list/synth_flesh_disguises = list() SA_sleep_min = 0 dangerous_existence = 1 blacklisted = 1 - need_nutrition = 0 //beep boop robots do not need sustinance meat = null - var/list/initial_specflags = list(NOTRANSSTING,NOBREATH,VIRUSIMMUNE) //for getting these values back for assume_disguise() + var/list/initial_specflags = list(NOTRANSSTING,NOBREATH,VIRUSIMMUNE,NOHUNGER) //for getting these values back for assume_disguise() var/disguise_fail_health = 75 //When their health gets to this level their synthflesh partially falls off var/image/damaged_synth_flesh = null //an image to display when we're below disguise_fail_health var/datum/species/fake_species = null //a species to do most of our work for us, unless we're damaged - has_dismemberment = 0 /datum/species/synth/military name = "Military Synth" @@ -653,7 +639,7 @@ var/global/list/synth_flesh_disguises = list() H.updatehealth() if(H.health > disguise_fail_health) if(fake_species) - if(fake_species.has_dismemberment) + if(!(NODISMEMBER in fake_species.specflags)) return fake_species.handle_body(H) else return fake_species.update_base_icon_state(H) @@ -665,7 +651,7 @@ var/global/list/synth_flesh_disguises = list() /datum/species/synth/update_color(mob/living/carbon/human/H, forced_colour) H.updatehealth() if(H.health > disguise_fail_health) - if(fake_species && fake_species.has_dismemberment) + if(fake_species && !(NODISMEMBER in fake_species.specflags)) fake_species.update_color(H, forced_colour) @@ -716,7 +702,6 @@ SYNDICATE BLACK OPS name = "Corporate Agent" id = "agent" hair_alpha = 0 - need_nutrition = 0//They don't need to eat say_mod = "declares" speedmod = -2//Fast brutemod = 0.7//Tough against firearms @@ -730,9 +715,8 @@ SYNDICATE BLACK OPS attack_sound = "sound/weapons/resonator_blast.ogg" blacklisted = 1 use_skintones = 0 - specflags = list(RADIMMUNE,VIRUSIMMUNE,NOBLOOD,PIERCEIMMUNE,EYECOLOR) + specflags = list(RADIMMUNE,VIRUSIMMUNE,NOBLOOD,PIERCEIMMUNE,EYECOLOR,NODISMEMBER,NOHUNGER) sexes = 0 - has_dismemberment = 0 /datum/species/angel name = "Angel" diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 37a207da1ee..7ba6b4da8d6 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -94,7 +94,7 @@ Please contact me on #coderbus IRC. ~Carnie x ..("Standing") /mob/living/carbon/human/proc/update_body_parts() - if(!dna.species.has_dismemberment) //Species don't have no dismemberment going for 'em! + if(NODISMEMBER in dna.species.specflags) //Species don't have no dismemberment going for 'em! remove_overlay(BODYPARTS_LAYER) return @@ -175,16 +175,18 @@ Please contact me on #coderbus IRC. ~Carnie x var/obj/item/clothing/under/U = w_uniform if(client && hud_used && hud_used.hud_shown) if(hud_used.inventory_shown) //if the inventory is open ... - w_uniform.screen_loc = ui_iclothing //...draw the item in the inventory screen + U.screen_loc = ui_iclothing //...draw the item in the inventory screen client.screen += w_uniform //Either way, add the item to the HUD if(wear_suit && (wear_suit.flags_inv & HIDEJUMPSUIT)) return - var/t_color = w_uniform.item_color + var/t_color = U.item_color if(!t_color) - t_color = w_uniform.icon_state + t_color = U.icon_state + if(U.adjusted) + t_color = "[t_color]_d" var/image/standing diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm index 4084b11b26e..067d3cc0d06 100644 --- a/code/modules/mob/living/carbon/life.dm +++ b/code/modules/mob/living/carbon/life.dm @@ -123,7 +123,7 @@ var/breath_pressure = (breath.total_moles()*R_IDEAL_GAS_EQUATION*breath.temperature)/BREATH_VOLUME var/list/breath_gases = breath.gases - breath.assert_gases("o2","plasma","co2","n2o") + breath.assert_gases("o2","plasma","co2","n2o", "bz") var/O2_partialpressure = (breath_gases["o2"][MOLES]/breath.total_moles())*breath_pressure var/Toxins_partialpressure = (breath_gases["plasma"][MOLES]/breath.total_moles())*breath_pressure @@ -188,6 +188,15 @@ else if(SA_partialpressure > 0.01) if(prob(20)) emote(pick("giggle","laugh")) + + //BZ (Facepunch port of their Agent B) + if(breath_gases["bz"]) + var/bz_partialpressure = (breath_gases["bz"][MOLES]/breath.total_moles())*breath_pressure + if(bz_partialpressure > 1) + hallucination += 20 + else if(bz_partialpressure > 0.01) + hallucination += 5//Removed at 2 per tick so this will slowly build up + breath.garbage_collect() //BREATH TEMPERATURE diff --git a/code/modules/mob/living/carbon/say.dm b/code/modules/mob/living/carbon/say.dm index 9f940c4e5ce..0b6c2cae108 100644 --- a/code/modules/mob/living/carbon/say.dm +++ b/code/modules/mob/living/carbon/say.dm @@ -18,3 +18,9 @@ if(silent) return 0 return ..() + +/mob/living/carbon/get_spans() + . = ..() + var/obj/item/organ/tongue/T = getorganslot("tongue") + if(T) + . |= T.get_spans() diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index c0b011fa984..e9bb771a067 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -49,6 +49,9 @@ Sorry Giacom. Please don't be mad :( return QDEL_HINT_HARDDEL_NOW +/mob/living/proc/OpenCraftingMenu() + return + /mob/living/proc/generateStaticOverlay() staticOverlays.Add(list("static", "blank", "letter", "animal")) var/image/staticOverlay = image(getStaticIcon(new/icon(icon,icon_state)), loc = src) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index e90b7cb8188..8ac3547f12b 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -39,21 +39,21 @@ var/list/department_radio_keys = list( //kinda localization -- rastaf0 //same keys as above, but on russian keyboard layout. This file uses cp1251 as encoding. - ":" = "right hand", "#" = "right hand", "." = "right hand", - ":" = "left hand", "#" = "left hand", "." = "left hand", - ":" = "intercom", "#" = "intercom", "." = "intercom", - ":" = "department", "#" = "department", "." = "department", - ":" = "Command", "#" = "Command", "." = "Command", - ":" = "Science", "#" = "Science", "." = "Science", - ":" = "Medical", "#" = "Medical", "." = "Medical", - ":" = "Engineering", "#" = "Engineering", "." = "Engineering", - ":" = "Security", "#" = "Security", "." = "Security", - ":" = "whisper", "#" = "whisper", "." = "whisper", - ":" = "binary", "#" = "binary", "." = "binary", - ":" = "alientalk", "#" = "alientalk", "." = "alientalk", - ":" = "Syndicate", "#" = "Syndicate", "." = "Syndicate", - ":" = "Supply", "#" = "Supply", "." = "Supply", - ":" = "changeling", "#" = "changeling", "." = "changeling" + ":ê" = "right hand", "#ê" = "right hand", ".ê" = "right hand", + ":ä" = "left hand", "#ä" = "left hand", ".ä" = "left hand", + ":ø" = "intercom", "#ø" = "intercom", ".ø" = "intercom", + ":ð" = "department", "#ð" = "department", ".ð" = "department", + ":ñ" = "Command", "#ñ" = "Command", ".ñ" = "Command", + ":ò" = "Science", "#ò" = "Science", ".ò" = "Science", + ":ü" = "Medical", "#ü" = "Medical", ".ü" = "Medical", + ":ó" = "Engineering", "#ó" = "Engineering", ".ó" = "Engineering", + ":û" = "Security", "#û" = "Security", ".û" = "Security", + ":ö" = "whisper", "#ö" = "whisper", ".ö" = "whisper", + ":è" = "binary", "#è" = "binary", ".è" = "binary", + ":ô" = "alientalk", "#ô" = "alientalk", ".ô" = "alientalk", + ":å" = "Syndicate", "#å" = "Syndicate", ".å" = "Syndicate", + ":é" = "Supply", "#é" = "Supply", ".é" = "Supply", + ":ï" = "changeling", "#ï" = "changeling", ".ï" = "changeling" ) var/list/crit_allowed_modes = list(MODE_WHISPER,MODE_CHANGELING,MODE_ALIEN) @@ -205,6 +205,21 @@ var/list/crit_allowed_modes = list(MODE_WHISPER,MODE_CHANGELING,MODE_ALIEN) /mob/living/proc/handle_inherent_channels(message, message_mode) if(message_mode == MODE_CHANGELING) switch(lingcheck()) + if(3) + var/msg = "[src.mind]: [message]" + for(var/mob/M in mob_list) + if(M in dead_mob_list) + M << "(F) [msg]" + else + switch(M.lingcheck()) + if(3) + M << msg + if(2) + M << msg + if(1) + if(prob(40)) + M << "We can faintly sense an outsider trying to communicate through the hivemind..." + return 1 if(2) var/msg = "[mind.changeling.changelingID]: [message]" log_say("[mind.changeling.changelingID]/[src.key] : [message]") @@ -213,6 +228,8 @@ var/list/crit_allowed_modes = list(MODE_WHISPER,MODE_CHANGELING,MODE_ALIEN) M << "(F) [msg]" else switch(M.lingcheck()) + if(3) + M << msg if(2) M << msg if(1) @@ -272,11 +289,13 @@ var/list/crit_allowed_modes = list(MODE_WHISPER,MODE_CHANGELING,MODE_ALIEN) return NOPASS return 0 -/mob/living/lingcheck() //Returns 1 if they are a changeling. Returns 2 if they are a changeling that can communicate through the hivemind +/mob/living/lingcheck() //1 is ling w/ no hivemind. 2 is ling w/hivemind. 3 is ling victim being linked into hivemind. if(mind && mind.changeling) if(mind.changeling.changeling_speak) return 2 return 1 + if(mind && mind.linglink) + return 3 return 0 /mob/living/say_quote(input, list/spans) @@ -285,4 +304,4 @@ var/list/crit_allowed_modes = list(MODE_WHISPER,MODE_CHANGELING,MODE_ALIEN) return "stammers, \"[tempinput]\"" if (getBrainLoss() >= 60) return "gibbers, \"[tempinput]\"" - return ..() \ No newline at end of file + return ..() diff --git a/code/modules/mob/living/silicon/ai/say.dm b/code/modules/mob/living/silicon/ai/say.dm index d2016caaf76..e9854777e3e 100644 --- a/code/modules/mob/living/silicon/ai/say.dm +++ b/code/modules/mob/living/silicon/ai/say.dm @@ -157,7 +157,7 @@ var/const/VOX_DELAY = 600 if(!only_listener) // Play voice for all mobs in the z level for(var/mob/M in player_list) - if(M.client && !M.ear_deaf && !(M.client.prefs.toggles & SOUND_ANNOUNCEMENTS)) + if(M.client && !M.ear_deaf && (M.client.prefs.toggles & SOUND_ANNOUNCEMENTS)) var/turf/T = get_turf(M) if(T.z == z_level) M << voice diff --git a/code/modules/mob/living/silicon/pai/software.dm b/code/modules/mob/living/silicon/pai/software.dm index c7a996f54f4..21e770b8e64 100644 --- a/code/modules/mob/living/silicon/pai/software.dm +++ b/code/modules/mob/living/silicon/pai/software.dm @@ -536,7 +536,7 @@ if (total_moles) for(var/id in env_gases) var/gas_level = env_gases[id][MOLES]/total_moles - if(id in hardcoded_gases || gas_level > 0.01) + if(gas_level > 0.01) dat += "[env_gases[id][GAS_META][META_GAS_NAME]]: [round(gas_level*100)]%
" dat += "Temperature: [round(environment.temperature-T0C)]°C
" dat += "Refresh Reading
" diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 3d1ebfaa7cd..0ac2332ed47 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -555,7 +555,10 @@ if(emagged || (connected_ai && lawupdate)) //Can't be sure which, metagamers emote("buzz-[user.name]") return - MOD.install(src, user) //Proc includes a success mesage so we don't need another one + if(!mind) //A player mind is required for law procs to run antag checks. + user << "[src] is entirely unresponsive!" + return + MOD.install(laws, user) //Proc includes a success mesage so we don't need another one return else if(istype(W, /obj/item/device/encryptionkey/) && opened) diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index 0f4ecdb8946..45257c61186 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -294,7 +294,7 @@ modules += new /obj/item/weapon/shovel(src) modules += new /obj/item/weapon/storage/bag/sheetsnatcher/borg(src) modules += new /obj/item/device/t_scanner/adv_mining_scanner(src) - modules += new /obj/item/weapon/gun/energy/kinetic_accelerator(src) + modules += new /obj/item/weapon/gun/energy/kinetic_accelerator/cyborg(src) fix_modules() /obj/item/weapon/robot_module/syndicate diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index 208bd2da166..42d1c25a729 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -489,3 +489,5 @@ animate(src, transform = ntransform, time = 2,easing = EASE_IN|EASE_OUT) return ..() +/mob/living/silicon/is_literate() + return 1 diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm index a21e2bd2bf5..4cbd52fc410 100644 --- a/code/modules/mob/living/simple_animal/bot/bot.dm +++ b/code/modules/mob/living/simple_animal/bot/bot.dm @@ -61,6 +61,7 @@ var/new_destination // pending new destination (waiting for beacon response) var/destination // destination description tag var/next_destination // the next destination in the patrol route + var/shuffle = FALSE // If we should shuffle our adjacency checking var/blockcount = 0 //number of times retried a blocked path var/awaiting_beacon = 0 // count of pticks awaiting a beacon response @@ -144,6 +145,9 @@ qdel(bot_core) return ..() +/mob/living/simple_animal/bot/bee_friendly() + return 1 + /mob/living/simple_animal/bot/death(gibbed) explode() ..() @@ -371,18 +375,50 @@ The proc would return a human next to the bot to be set to the patient var. Pass the desired type path itself, declaring a temporary var beforehand is not required. */ /mob/living/simple_animal/bot/proc/scan(scan_type, old_target, scan_range = DEFAULT_SCAN_RANGE) - var/final_result - for (var/scan in shuffle(view(scan_range, src))) //Search for something in range! - if(!istype(scan, scan_type)) //Check that the thing we found is the type we want! - continue //If not, keep searching! - if( (scan in ignore_list) || (scan == old_target) ) //Filter for blacklisted elements, usually unreachable or previously processed oness + var/turf/T = get_turf(src) + if(!T) + return + var/list/adjacent = T.GetAtmosAdjacentTurfs(1) + if(shuffle) //If we were on the same tile as another bot, let's randomize our choices so we dont both go the same way + adjacent = shuffle(adjacent) + shuffle = FALSE + for(var/scan in adjacent)//Let's see if there's something right next to us first! + if(check_bot(scan)) //Is there another bot there? Then let's just skip it continue - var/scan_result = process_scan(scan) //Some bots may require additional processing when a result is selected. - if(scan_result) - final_result = scan_result + if(isturf(scan_type)) //If we're lookeing for a turf we can just run the checks directly! + var/final_result = checkscan(scan,scan_type,old_target) + if(final_result) + return final_result else - continue //The current element failed assessment, move on to the next. - return final_result + var/turf/turfy = scan + for(var/deepscan in turfy.contents)//Check the contents since adjacent is turfs + var/final_result = checkscan(deepscan,scan_type,old_target) + if(final_result) + return final_result + for (var/scan in shuffle(view(scan_range, src))-adjacent) //Search for something in range! + var/final_result = checkscan(scan,scan_type,old_target) + if(final_result) + return final_result + +/mob/living/simple_animal/bot/proc/checkscan(scan, scan_type, old_target) + if(!istype(scan, scan_type)) //Check that the thing we found is the type we want! + return 0 //If not, keep searching! + if( (scan in ignore_list) || (scan == old_target) ) //Filter for blacklisted elements, usually unreachable or previously processed oness + return 0 + + var/scan_result = process_scan(scan) //Some bots may require additional processing when a result is selected. + if(scan_result) + return scan_result + else + return 0 //The current element failed assessment, move on to the next. + return + +/mob/living/simple_animal/bot/proc/check_bot(targ) + var/turf/T = get_turf(targ) + if(T) + for(var/C in T.contents) + if(istype(C,type) && (C != src)) //Is there another bot there already? If so, let's skip it so we dont all atack on top of eachother. + return 1 //Let's abort if we find a bot so we dont have to keep rechecking //When the scan finds a target, run bot specific processing to select it for the next step. Empty by default. /mob/living/simple_animal/bot/proc/process_scan(scan_target) diff --git a/code/modules/mob/living/simple_animal/bot/cleanbot.dm b/code/modules/mob/living/simple_animal/bot/cleanbot.dm index 5c00a4fc3bf..00892f702b7 100644 --- a/code/modules/mob/living/simple_animal/bot/cleanbot.dm +++ b/code/modules/mob/living/simple_animal/bot/cleanbot.dm @@ -140,7 +140,10 @@ return if(target && loc == target.loc) - clean(target) + if(!(check_bot(target) && prob(50))) //Target is not defined at the parent. 50% chance to still try and clean so we dont get stuck on the last blood drop. + clean(target) //Rather than check at every step of the way, let's check before we do an action, so we can rescan before the other bot. + else + shuffle = TRUE //Shuffle the list the next time we scan so we dont both go the same way. path = list() target = null diff --git a/code/modules/mob/living/simple_animal/bot/floorbot.dm b/code/modules/mob/living/simple_animal/bot/floorbot.dm index 8ba86a9b2d7..8956f7872a6 100644 --- a/code/modules/mob/living/simple_animal/bot/floorbot.dm +++ b/code/modules/mob/living/simple_animal/bot/floorbot.dm @@ -81,7 +81,7 @@ dat += "Loaded \[[specialtiles]/[maxtiles]\]
" else dat += "None Loaded
" - + dat += "Behaviour controls are [locked ? "locked" : "unlocked"]
" if(!locked || issilicon(user) || IsAdminGhost(user)) dat += "Add tiles to new hull plating: [autotile ? "Yes" : "No"]
" @@ -162,7 +162,7 @@ if("disable") targetdirection = null update_controls() - + /mob/living/simple_animal/bot/floorbot/proc/empty_tiles() var/turf/Tsec = get_turf(src) @@ -204,7 +204,7 @@ if(!target && fixfloors) //Repairs damaged floors and tiles. process_type = FIX_TILE target = scan(/turf/open/floor) - + if(!target && replacetiles && specialtiles > 0) //Replace a floor tile with custom tile process_type = REPLACE_TILE //The target must be a tile. The floor must already have a floortile. target = scan(/turf/open/floor) @@ -242,6 +242,12 @@ return if(loc == target || loc == target.loc) + if(check_bot(target)) //Target is not defined at the parent + shuffle = TRUE + if(prob(50)) //50% chance to still try to repair so we dont end up with 2 floorbots failing to fix the last breach + target = null + path = list() + return if(istype(target, /turf/) && emagged < 2) repair(target) else if(emagged == 2 && istype(target,/turf/open/floor)) diff --git a/code/modules/mob/living/simple_animal/constructs.dm b/code/modules/mob/living/simple_animal/constructs.dm index c7ed281b154..f1d0ececa64 100644 --- a/code/modules/mob/living/simple_animal/constructs.dm +++ b/code/modules/mob/living/simple_animal/constructs.dm @@ -24,6 +24,8 @@ pressure_resistance = 200 unique_name = 1 AIStatus = AI_OFF //normal constructs don't have AI + loot = list(/obj/item/weapon/ectoplasm) + del_on_death = 1 var/list/construct_spells = list() var/playstyle_string = "You are a generic construct! Your job is to not exist, and you should probably adminhelp this." @@ -34,12 +36,8 @@ AddSpell(new spell(null)) /mob/living/simple_animal/hostile/construct/death() - ..(1) - new /obj/item/weapon/ectoplasm (src.loc) - visible_message("[src] collapses in a shattered heap.") - ghostize() - qdel(src) - return + deathmessage = "[src] collapses in a shattered heap." + ..() /mob/living/simple_animal/hostile/construct/examine(mob/user) var/msg = "*---------*\nThis is \icon[src] \a [src]!\n" @@ -183,12 +181,12 @@ /obj/effect/proc_holder/spell/aoe_turf/conjure/construct/lesser, /obj/effect/proc_holder/spell/targeted/projectile/magic_missile/lesser) playstyle_string = "You are an Artificer. You are incredibly weak and fragile, but you are able to construct fortifications, \ - use magic missile, repair allied constructs (by clicking on them), \ + use magic missile, repair allied constructs, shades, and yourself (by clicking on them), \ and, most important of all, create new constructs by producing soulstones to capture souls, \ and shells to place those soulstones into." /mob/living/simple_animal/hostile/construct/builder/Found(atom/A) //what have we found here? - if(istype(A, /mob/living/simple_animal/hostile/construct)) //is it a construct? + if(isconstruct(A)) //is it a construct? var/mob/living/simple_animal/hostile/construct/C = A if(C.health < C.maxHealth) //is it hurt? let's go heal it if it is return 1 @@ -207,7 +205,7 @@ ..() if(isliving(target)) var/mob/living/L = target - if(istype(L, /mob/living/simple_animal/hostile/construct) && L.health >= L.maxHealth) //is this target an unhurt construct? stop trying to heal it + if(isconstruct(L) && L.health >= L.maxHealth) //is this target an unhurt construct? stop trying to heal it LoseTarget() return 0 if(L.health <= melee_damage_lower+melee_damage_upper) //ey bucko you're hurt as fuck let's go hit you @@ -216,7 +214,7 @@ /mob/living/simple_animal/hostile/construct/builder/Aggro() ..() - if(istype(target, /mob/living/simple_animal/hostile/construct)) //oh the target is a construct no need to flee + if(isconstruct(target)) //oh the target is a construct no need to flee retreat_distance = null minimum_distance = 1 @@ -229,11 +227,6 @@ AIStatus = AI_ON environment_smash = 1 //only token destruction, don't smash the cult wall NO STOP - - - - - /////////////////////////////Non-cult Artificer///////////////////////// /mob/living/simple_animal/hostile/construct/builder/noncult construct_spells = list(/obj/effect/proc_holder/spell/aoe_turf/conjure/wall, diff --git a/code/modules/mob/living/simple_animal/friendly/dog.dm b/code/modules/mob/living/simple_animal/friendly/dog.dm index b0df6fbc666..7e14553ce1c 100644 --- a/code/modules/mob/living/simple_animal/friendly/dog.dm +++ b/code/modules/mob/living/simple_animal/friendly/dog.dm @@ -8,6 +8,7 @@ speak_emote = list("barks", "woofs") emote_hear = list("barks!", "woofs!", "yaps.","pants.") emote_see = list("shakes its head.", "chases its tail.","shivers.") + faction = list("dog") see_in_dark = 5 speak_chance = 1 turns_per_move = 10 diff --git a/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm b/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm index 0b680f72a48..08b8c31d199 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm @@ -43,6 +43,7 @@ damage_coeff = list(BRUTE = 1, BURN = 1, TOX = 0, CLONE = 0, STAMINA = 0, OXY = 0) staticOverlays = list() hud_possible = list(DIAG_STAT_HUD, DIAG_HUD, ANTAG_HUD) + unique_name = TRUE var/staticChoice = "static" var/list/staticChoices = list("static", "blank", "letter", "animal") var/picked = FALSE //Have we picked our visual appearence (+ colour if applicable) @@ -61,13 +62,10 @@ var/seeStatic = 1 //Whether we see static instead of mobs var/visualAppearence = MAINTDRONE //What we appear as var/hacked = 0 //If we have laws to destroy the station - + var/datum/personal_crafting/handcrafting /mob/living/simple_animal/drone/New() - ..() - if(name != initial(name)) - name = name + " ([rand(100,999)])" - real_name = name + . = ..() access_card = new /obj/item/weapon/card/id(src) var/datum/job/captain/C = new /datum/job/captain @@ -86,6 +84,8 @@ var/datum/action/generic/drone/select_filter/SF = new(src) SF.Grant(src) + + handcrafting = new() var/datum/atom_hud/data/diagnostic/diag_hud = huds[DATA_HUD_DIAGNOSTIC] diag_hud.add_to_hud(src) @@ -103,6 +103,8 @@ else holder.icon_state = "hudstat" +/mob/living/simple_animal/drone/OpenCraftingMenu() + handcrafting.craft(src) /mob/living/simple_animal/drone/Destroy() qdel(access_card) //Otherwise it ends up on the floor! 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 f37da30e127..c93310b4d22 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 @@ -54,6 +54,17 @@ ..() desc += " This drone appears to have a complex holoprojector built on its 'head'." +/mob/living/simple_animal/drone/snowflake/bardrone + name = "Bardrone" + desc = "A barkeeping drone, an indestructible robot built to tend bars." + seeStatic = FALSE + laws = "1. Serve drinks.\n\ + 2. Talk to patrons.\n\ + 3. Don't get messed up in their affairs." + languages = ALL + status_flags = GODMODE // Please don't punch the barkeeper + unique_name = FALSE // disables the (123) number suffix + /obj/item/drone_shell/syndrone name = "syndrone shell" desc = "A shell of a syndrone, a modified maintenance drone designed to infiltrate and annihilate." diff --git a/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm b/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm index cc9b4cb9f84..c6b108c951a 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm @@ -61,7 +61,7 @@ if(ishuman(user)) - if(stat == DEAD) + if(stat == DEAD || status_flags & GODMODE) ..() return if(user.get_active_hand()) diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm index 66a10c95760..e373e0f4873 100644 --- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm @@ -21,6 +21,7 @@ attacktext = "kicks" attack_sound = 'sound/weapons/punch1.ogg' health = 40 + maxHealth = 40 melee_damage_lower = 1 melee_damage_upper = 2 environment_smash = 0 @@ -98,6 +99,7 @@ attacktext = "kicks" attack_sound = 'sound/weapons/punch1.ogg' health = 50 + maxHealth = 50 var/obj/item/udder/udder = null gold_core_spawnable = 2 @@ -157,7 +159,8 @@ response_disarm = "gently pushes aside" response_harm = "kicks" attacktext = "kicks" - health = 1 + health = 3 + maxHealth = 3 ventcrawler = 2 var/amount_grown = 0 pass_flags = PASSTABLE | PASSGRILLE | PASSMOB @@ -206,7 +209,8 @@ var/global/chicken_count = 0 response_disarm = "gently pushes aside" response_harm = "kicks" attacktext = "kicks" - health = 10 + health = 15 + maxHealth = 15 ventcrawler = 2 var/eggsleft = 0 var/eggsFertile = TRUE diff --git a/code/modules/mob/living/simple_animal/guardian/guardian.dm b/code/modules/mob/living/simple_animal/guardian/guardian.dm index 546e4b3a4e2..f7c69dbf8f5 100644 --- a/code/modules/mob/living/simple_animal/guardian/guardian.dm +++ b/code/modules/mob/living/simple_animal/guardian/guardian.dm @@ -381,7 +381,7 @@ var/global/list/parasites = list() //all currently existing/living guardians var/list/possible_guardians = list("Chaos", "Standard", "Ranged", "Support", "Explosive", "Lightning", "Protector", "Charger", "Assassin") var/random = TRUE var/allowmultiple = 0 - var/allowling = 0 + var/allowling = 1 /obj/item/weapon/guardiancreator/attack_self(mob/living/user) var/list/guardians = user.hasparasites() diff --git a/code/modules/mob/living/simple_animal/hostile/alien.dm b/code/modules/mob/living/simple_animal/hostile/alien.dm index e1b8695c437..b361d62b00d 100644 --- a/code/modules/mob/living/simple_animal/hostile/alien.dm +++ b/code/modules/mob/living/simple_animal/hostile/alien.dm @@ -12,8 +12,8 @@ speed = 0 butcher_results = list(/obj/item/weapon/reagent_containers/food/snacks/meat/slab/xeno = 4, /obj/item/stack/sheet/animalhide/xeno = 1) - maxHealth = 100 - health = 100 + maxHealth = 125 + health = 125 harm_intent_damage = 5 melee_damage_lower = 25 melee_damage_upper = 25 @@ -39,7 +39,6 @@ icon_state = "aliend_s" icon_living = "aliend_s" icon_dead = "aliend_dead" - health = 60 melee_damage_lower = 15 melee_damage_upper = 15 var/plant_cooldown = 30 @@ -59,7 +58,8 @@ icon_state = "aliens_s" icon_living = "aliens_s" icon_dead = "aliens_dead" - health = 120 + health = 150 + maxHealth = 150 melee_damage_lower = 15 melee_damage_upper = 15 ranged = 1 diff --git a/code/modules/mob/living/simple_animal/hostile/bees.dm b/code/modules/mob/living/simple_animal/hostile/bees.dm index 51e6e5f0fa1..2d7ee8dd11a 100644 --- a/code/modules/mob/living/simple_animal/hostile/bees.dm +++ b/code/modules/mob/living/simple_animal/hostile/bees.dm @@ -114,8 +114,8 @@ . = ..() if(!.) return 0 - if(ishuman(the_target)) - var/mob/living/carbon/human/H = the_target + if(isliving(the_target)) + var/mob/living/H = the_target return !H.bee_friendly() @@ -125,8 +125,8 @@ if(Hydro.myseed && !Hydro.dead && !Hydro.recent_bee_visit) wanted_objects |= /obj/machinery/hydroponics //so we only hunt them while they're alive/seeded/not visisted return 1 - if(ishuman(A)) - var/mob/living/carbon/human/H = A + if(isliving(A)) + var/mob/living/H = A return !H.bee_friendly() return 0 diff --git a/code/modules/mob/living/simple_animal/hostile/hivebot.dm b/code/modules/mob/living/simple_animal/hostile/hivebot.dm index 0063669071c..d83faba36e2 100644 --- a/code/modules/mob/living/simple_animal/hostile/hivebot.dm +++ b/code/modules/mob/living/simple_animal/hostile/hivebot.dm @@ -48,6 +48,7 @@ name = "strong hivebot" desc = "A robot, this one is armed and looks tough!" health = 80 + maxHealth = 80 ranged = 1 /mob/living/simple_animal/hostile/hivebot/death(gibbed) diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm index 05cba60418c..a3066d08c4b 100644 --- a/code/modules/mob/living/simple_animal/hostile/hostile.dm +++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm @@ -63,8 +63,10 @@ AIStatus = AI_IDLE // otherwise we go idle return 1 - - +/mob/living/simple_animal/hostile/bullet_act(obj/item/projectile/P) + if(!target) + Goto(P.starting, move_to_delay, 3) + ..() //////////////HOSTILE MOB TARGETTING AND AGGRESSION//////////// @@ -295,7 +297,7 @@ P.firer = src P.yo = targeted_atom.y - startloc.y P.xo = targeted_atom.x - startloc.x - if(AIStatus == AI_OFF)//Don't want mindless mobs to have their movement screwed up firing in space + if(AIStatus != AI_ON)//Don't want mindless mobs to have their movement screwed up firing in space newtonian_move(get_dir(targeted_atom, targets_from)) P.original = targeted_atom P.fire() diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm index 0267d112d90..1fd2754ae85 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm @@ -12,6 +12,7 @@ icon = 'icons/mob/lavaland/dragon.dmi' faction = list("mining") speak_emote = list("roars") + luminosity = 3 armour_penetration = 40 melee_damage_lower = 40 melee_damage_upper = 40 @@ -28,6 +29,7 @@ var/anger_modifier = 0 var/obj/item/device/gps/internal var/swooping = 0 + var/swoop_cooldown = 0 deathmessage = "collapes into a pile of bones, it's flesh sloughing away." death_sound = 'sound/magic/demon_dies.ogg' damage_coeff = list(BRUTE = 1, BURN = 0.5, TOX = 1, CLONE = 1, STAMINA = 0, OXY = 1) @@ -41,6 +43,13 @@ return else ..() + if(isliving(target)) + var/mob/living/L = target + if(L.stat == DEAD) + L.gib() + visible_message("[src] devours [L]!") + src << "You feast on [L], restoring your health!" + adjustBruteLoss(-L.maxHealth) /mob/living/simple_animal/hostile/megafauna/dragon/Process_Spacemove(movement_dir = 0) return 1 @@ -51,16 +60,27 @@ name = "fireball" desc = "Get out of the way!" layer = 6 - dir = SOUTH + randomdir = 0 + duration = 10 pixel_z = 500 - anchored = 1 /obj/effect/overlay/temp/target icon = 'icons/mob/actions.dmi' icon_state = "sniper_zoom" layer = MOB_LAYER - 0.1 - anchored = 1 luminosity = 2 + duration = 10 + +/obj/effect/overlay/temp/dragon_swoop + name = "certain death" + desc = "Don't just stand there, move!" + icon = 'icons/effects/96x96.dmi' + icon_state = "rune_large" + layer = MOB_LAYER - 0.1 + pixel_x = -32 + pixel_y = -32 + color = "#FF0000" + duration = 10 /obj/effect/overlay/temp/target/ex_act() return @@ -81,8 +101,8 @@ anger_modifier = Clamp(((maxHealth - health)/50),0,20) ranged_cooldown = world.time + ranged_cooldown_time - if(prob(15 + anger_modifier)) - if(health < maxHealth/2 && !client) + if(prob(15 + anger_modifier) && !client) + if(health < maxHealth/2) swoop_attack(1) else fire_rain() @@ -103,33 +123,37 @@ if(prob(10)) new /obj/effect/overlay/temp/target(turf) - /mob/living/simple_animal/hostile/megafauna/dragon/proc/fire_walls() var/list/attack_dirs = list(NORTH,EAST,SOUTH,WEST) if(prob(50)) attack_dirs = list(NORTH,WEST,SOUTH,EAST) playsound(get_turf(src),'sound/magic/Fireball.ogg', 200, 1) - spawn(0) - for(var/d in attack_dirs) + for(var/d in attack_dirs) + spawn(0) var/turf/E = get_edge_target_turf(src, d) var/range = 10 for(var/turf/open/J in getline(src,E)) if(!range) break range-- - PoolOrNew(/obj/effect/hotspot,J) J.hotspot_expose(700,50,1) for(var/mob/living/L in J) if(L != src) L.adjustFireLoss(20) L << "You're hit by the drake's fire breath!" + sleep(1) -/mob/living/simple_animal/hostile/megafauna/dragon/proc/swoop_attack(fire_rain = 0) +/mob/living/simple_animal/hostile/megafauna/dragon/proc/swoop_attack(fire_rain = 0, atom/movable/manual_target) if(stat) return - var/mob/living/swoop_target = target + swoop_cooldown = world.time + 200 + var/swoop_target + if(manual_target) + swoop_target = manual_target + else + swoop_target = target stop_automated_movement = TRUE swooping = 1 icon_state = "swoop" @@ -150,9 +174,10 @@ else tturf = get_turf(src) src.loc = tturf + new/obj/effect/overlay/temp/dragon_swoop(tturf) animate(src, pixel_x = 0, pixel_z = 0, time = 10) sleep(10) - playsound(src, 'sound/effects/meteorimpact.ogg', 200, 1) + playsound(src.loc, 'sound/effects/meteorimpact.ogg', 200, 1) for(var/mob/living/L in range(1,tturf)) if(L == src) continue @@ -171,6 +196,15 @@ swooping = 0 density = 1 +/mob/living/simple_animal/hostile/megafauna/dragon/AltClickOn(atom/movable/A) + if(!istype(A)) + return + if(swoop_cooldown >= world.time) + src << "You need to wait 20 seconds between swoop attacks!" + return + swoop_attack(1, A) + + /obj/item/device/gps/internal/dragon icon_state = null gpstag = "Fiery Signal" @@ -228,8 +262,8 @@ /mob/living/simple_animal/hostile/megafauna/dragon/lesser name = "lesser ash drake" - maxHealth = 500 - health = 500 + maxHealth = 750 + health = 750 melee_damage_upper = 30 melee_damage_lower = 30 damage_coeff = list(BRUTE = 1, BURN = 1, TOX = 1, CLONE = 1, STAMINA = 0, OXY = 1) @@ -248,21 +282,15 @@ return var/mob/living/carbon/human/H = user - var/random = rand(1,5) + var/random = rand(1,3) switch(random) if(1) - user << "The blood sears your insides! What the hell were you thinking?" - user.reagents.add_reagent("hellwater", 50) - if(2) user << "Other than tasting terrible, nothing really happens." - if(3) + if(2) user << "Your flesh begins to melt! Miraculously, you seem fine otherwise." H.set_species(/datum/species/skeleton) - if(4) - user << "The blood mixes with your own, filling your veins with a pulsing fire." - H.dna.species.coldmod = 0 - if(5) + if(3) user << "You don't feel so good..." H.ForceContractDisease(new /datum/disease/transformation/dragon(0)) playsound(user.loc,'sound/items/drink.ogg', rand(10,50), 1) @@ -318,15 +346,11 @@ /obj/structure/closet/crate/necropolis/dragon/New() ..() - var/loot = rand(1,4) + var/loot = rand(1,3) switch(loot) if(1) - for(var/i in 1 to 10) - new /obj/item/weapon/ore/diamond(src) - new /obj/item/weapon/ore/gold(src) - if(2) new /obj/item/weapon/melee/ghost_sword(src) - if(3) + if(2) new /obj/item/weapon/dragons_blood(src) - if(4) + if(3) new /obj/item/weapon/lava_staff(src) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm index 6a273d83b3e..8a846d02623 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm @@ -3,6 +3,7 @@ desc = "Attack the weak point for massive damage." health = 1000 maxHealth = 1000 + a_intent = "harm" sentience_type = SENTIENCE_BOSS environment_smash = 4 robust_searching = 1 diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm index 6ea3114ffed..1c02ede80f9 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm @@ -853,6 +853,7 @@ speak_emote = list("warbles", "quavers") emote_hear = list("trills.") emote_see = list("sniffs.", "burps.") + faction = list("mining", "ashwalker") density = 0 speak_chance = 1 turns_per_move = 8 diff --git a/code/modules/mob/living/simple_animal/hostile/reenactors.dm b/code/modules/mob/living/simple_animal/hostile/reenactors.dm new file mode 100644 index 00000000000..b6382dc4302 --- /dev/null +++ b/code/modules/mob/living/simple_animal/hostile/reenactors.dm @@ -0,0 +1,103 @@ +/* +-!WARNING!- +-POTENTIAL TRIGGER-INDUCING ITEMS AHEAD- +-TREAD WITH CAUTION- +*/ + +/mob/living/simple_animal/hostile/wwii + name = "World War II Reenactor" + desc = "A VERY enthusiastic WWII reenactor." + icon_state = "nsoldier" + icon_living = "nsoldier" + speak_chance = 0 + turns_per_move = 5 + response_help = "pokes" + response_disarm = "shoves" + response_harm = "hits" + speed = 0 + stat_attack = 1 + robust_searching = 1 + maxHealth = 100 + health = 100 + harm_intent_damage = 10 + melee_damage_lower = 10 + melee_damage_upper = 15 + attacktext = "punches" + attack_sound = 'sound/weapons/punch1.ogg' + a_intent = "harm" + loot = list(/obj/effect/mob_spawn/human/wwii) + 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("german") + check_friendly_fire = 1 + status_flags = CANPUSH + del_on_death = 1 + +/mob/living/simple_animal/hostile/wwii/ranged + ranged = 1 + rapid = 1 + retreat_distance = 5 + minimum_distance = 5 + icon_state = "nsoldierranged" + icon_living = "nsoldierranged" + casingtype = /obj/item/ammo_casing/c45nostamina + projectilesound = 'sound/weapons/Gunshot_smg.ogg' + +/mob/living/simple_animal/hostile/wwii/melee + name = "Hulking World War II Reenactor" + icon_state = "nsoldierbuff" + icon_living = "nsoldierbuff" + stat_attack = 0 + speed = 4 + maxHealth = 200 + health = 200 + force_threshold = 10 + harm_intent_damage = 25 + melee_damage_lower = 25 + melee_damage_upper = 30 + environment_smash = 2 + attacktext = "slams" + deathmessage = "The Reenactor's body collapses in on itself from the strain!" + loot = list(/obj/effect/gibspawner/human) + +/mob/living/simple_animal/hostile/wwii/melee/AttackingTarget() + ..() + if(iscarbon(target)) + var/mob/living/carbon/C = target + if(prob(40)) + C.Weaken(3) + C.adjustBruteLoss(10) + C.visible_message("\The [src] smashes \the [C] into the ground!", \ + "\The [src] smashes you into the ground!") + src.say(pick("RAAAAAGGHHHH!!!","AAAARRRGGHHHH!!!","RRRAAUUUGGHH!!!")) + + +/mob/living/simple_animal/hostile/wwii/bomber + name = "Mini-Fhrer" + desc = "A small, robotic recreation of the Fhrer himself; it seems like he wants to tell you something." + icon_state = "miniheil" + icon_living = "miniheil" + speed = 1 + maxHealth = 25 + health = 25 + harm_intent_damage = 5 + melee_damage_lower = 5 + melee_damage_upper = 7 + attacktext = "heils" + deathmessage = "The Mini-Fhrer explodes!" + loot = list(/obj/effect/gibspawner/robot) + +/mob/living/simple_animal/hostile/wwii/bomber/AttackingTarget() + ..() + if(iscarbon(target)) + var/mob/living/carbon/C = target + if(prob(90)) + C.Weaken(2) + src.say("HEIL HITLER!") + explosion(src, 0, 0, 2, 3, 2) + src.gib() + +/* +-YOU HAVE SAFETLY PASSED THE POTENTIALLY-TRIGGERING CONTENT- +-PLEASE RESUME NORMAL, POLITICALLY CORRECT ACTIVITY- +*/ diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/retaliate.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/retaliate.dm index edd5acc4846..1b28b8dd500 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/retaliate.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/retaliate.dm @@ -28,12 +28,7 @@ continue if(isliving(A)) var/mob/living/M = A - var/faction_check = 0 - for(var/F in faction) - if(F in M.faction) - faction_check = 1 - break - if(faction_check && attack_same || !faction_check) + if(faction_check(M) && attack_same || !faction_check(M)) enemies |= M else if(istype(A, /obj/mecha)) var/obj/mecha/M = A @@ -42,12 +37,7 @@ enemies |= M.occupant for(var/mob/living/simple_animal/hostile/retaliate/H in around) - var/retaliate_faction_check = 0 - for(var/F in faction) - if(F in H.faction) - retaliate_faction_check = 1 - break - if(retaliate_faction_check && !attack_same && !H.attack_same) + if(faction_check(H) && !attack_same && !H.attack_same) H.enemies |= enemies return 0 diff --git a/code/modules/mob/living/simple_animal/hostile/zombie.dm b/code/modules/mob/living/simple_animal/hostile/zombie.dm index eccba5770c6..cd600cd1367 100644 --- a/code/modules/mob/living/simple_animal/hostile/zombie.dm +++ b/code/modules/mob/living/simple_animal/hostile/zombie.dm @@ -35,17 +35,19 @@ /mob/living/simple_animal/hostile/zombie/darkholme //BOY♂NEXT♂RUIN desc = "This guy seems to have gotten lost on his way to the leather club." - + gold_core_spawnable = 0 + /mob/living/simple_animal/hostile/zombie/darkholme/New() ..() name = pick("Leatherman","Leatherhead") - + mob/living/simple_animal/hostile/zombie/gymboss name = "boss of this gym" desc = "There seems to be something shiny embedded in his waist." butcher_results = list(/obj/item/weapon/storage/belt/champion/wrestling = 1) attacktext = "spanks" - + gold_core_spawnable = 0 + /mob/living/simple_animal/hostile/zombie/AttackingTarget() ..() diff --git a/code/modules/mob/living/simple_animal/shade.dm b/code/modules/mob/living/simple_animal/shade.dm index 955ccacb23d..f2164eec7b9 100644 --- a/code/modules/mob/living/simple_animal/shade.dm +++ b/code/modules/mob/living/simple_animal/shade.dm @@ -26,16 +26,28 @@ faction = list("cult") status_flags = CANPUSH flying = 1 + loot = list(/obj/item/weapon/ectoplasm) + del_on_death = 1 /mob/living/simple_animal/shade/death() - ..(1) - new /obj/item/weapon/ectoplasm (src.loc) - visible_message("[src] lets out a contented sigh as their form unwinds.") - ghostize() - qdel(src) - return + deathmessage = "[src] lets out a contented sigh as their form unwinds." + ..() +/mob/living/simple_animal/shade/Process_Spacemove(movement_dir = 0) + return TRUE //this doesn't make much sense; you'd thing TRUE would mean it'd process spacemove but it means it doesn't + +/mob/living/simple_animal/shade/attack_animal(mob/living/simple_animal/M) + if(istype(M, /mob/living/simple_animal/hostile/construct/builder)) + if(health < maxHealth) + adjustHealth(-25) + Beam(M,icon_state="sendbeam",icon='icons/effects/effects.dmi',time=4) + M.visible_message("[M] heals \the [src].", \ + "You heal [src], leaving [src] at [health]/[maxHealth] health.") + else + M << "You cannot heal [src], as it is unharmed!" + else if(src != M) + ..() /mob/living/simple_animal/shade/attackby(obj/item/O, mob/user, params) //Marker -Agouri if(istype(O, /obj/item/device/soulstone)) @@ -43,4 +55,3 @@ SS.transfer_soul("SHADE", src, user) else ..() - return diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 0c8c9f3982e..9a69cf934b2 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -470,16 +470,17 @@ var/mob/living/simple_animal/partner var/children = 0 for(var/mob/M in view(7, src)) - if(M.stat != CONSCIOUS) //Check if it's concious FIRSTER. + if(M.stat != CONSCIOUS) //Check if it's conscious FIRST. continue - else if(istype(M, childtype)) //Check for children FIRST. + else if(istype(M, childtype)) //Check for children SECOND. children++ else if(istype(M, animal_species)) if(M.ckey) continue else if(!istype(M, childtype) && M.gender == MALE) //Better safe than sorry ;_; partner = M - else if(istype(M, /mob/)) + + else if(istype(M, /mob/living) && !faction_check(M)) //shyness check. we're not shy in front of things that share a faction with us. alone = 0 continue if(alone && partner && children < 3) diff --git a/code/modules/mob/living/simple_animal/slime/life.dm b/code/modules/mob/living/simple_animal/slime/life.dm index 448a7514a11..8c62ddcfa83 100644 --- a/code/modules/mob/living/simple_animal/slime/life.dm +++ b/code/modules/mob/living/simple_animal/slime/life.dm @@ -133,13 +133,13 @@ Tempstun = 0 if(stat != DEAD) - var/co2_percentage =0 - if("co2" in environment.gases) - co2_percentage = environment.gases["co2"][MOLES] / environment.total_moles() - var/stasis = (co2_percentage >= 0.05 && bodytemperature < (T0C + 100)) || force_stasis + var/bz_percentage =0 + if("bz" in environment.gases) + bz_percentage = environment.gases["bz"][MOLES] / environment.total_moles() + var/stasis = (bz_percentage >= 0.05 && bodytemperature < (T0C + 100)) || force_stasis if(stat == CONSCIOUS && stasis) - src << "High levels of CO2 put you in stasis!" + src << "Nerve gas in the air has put you in stasis!" stat = UNCONSCIOUS powerlevel = 0 rabid = 0 diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index dac03b3af40..bd0f6cc4c4a 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -934,3 +934,6 @@ var/next_mob_id = 0 if("resize") update_transform() ..() + +/mob/proc/is_literate() + return 0 diff --git a/code/modules/ninja/admin_ninja_verbs.dm b/code/modules/ninja/admin_ninja_verbs.dm index aa3f8d48ea1..d87939b1eec 100644 --- a/code/modules/ninja/admin_ninja_verbs.dm +++ b/code/modules/ninja/admin_ninja_verbs.dm @@ -52,10 +52,12 @@ Contents: if(!C) return - var/datum/round_event/ninja/E = new /datum/round_event/ninja() - E.key=C.key + // passing FALSE means the event doesn't start immediately + var/datum/round_event/ghost_role/ninja/E = new(FALSE) + E.priority_candidates += C + E.processing = TRUE message_admins("[key_name_admin(key)] has spawned [key_name_admin(C.key)] as a Space Ninja.") log_admin("[key] used Spawn Space Ninja.") - return \ No newline at end of file + return diff --git a/code/modules/ninja/ninja_event.dm b/code/modules/ninja/ninja_event.dm index 903a523d884..72771142409 100644 --- a/code/modules/ninja/ninja_event.dm +++ b/code/modules/ninja/ninja_event.dm @@ -1,43 +1,41 @@ //Note to future generations: I didn't write this god-awful code I just ported it to the event system and tried to make it less moon-speaky. //Don't judge me D; ~Carn //Maximum judging occuring - Remie. - +// Tut tut Remie, let's keep our comments constructive. - coiax /* Contents: - The Ninja "Random" Event - Ninja creation code - */ /datum/round_event_control/ninja name = "Space Ninja" - typepath = /datum/round_event/ninja + typepath = /datum/round_event/ghost_role/ninja max_occurrences = 1 earliest_start = 30000 // 1 hour -/datum/round_event/ninja +/datum/round_event/ghost_role/ninja var/success_spawn = 0 + role_name = "space ninja" + minimum_required = 1 var/helping_station - var/key var/spawn_loc + var/give_objectives = TRUE - var/mob/living/carbon/human/Ninja - - -/datum/round_event/ninja/setup() +/datum/round_event/ghost_role/ninja/setup() helping_station = rand(0,1) -/datum/round_event/ninja/kill() +/datum/round_event/ghost_role/ninja/kill() if(!success_spawn && control) control.occurrences-- return ..() -/datum/round_event/ninja/start() +/datum/round_event/ghost_role/ninja/spawn_role() //selecting a spawn_loc if(!spawn_loc) var/list/spawn_locs = list() @@ -50,17 +48,15 @@ Contents: return kill() spawn_loc = pick(spawn_locs) if(!spawn_loc) - return kill() + return MAP_ERROR //selecting a candidate player - if(!key) - var/list/candidates = get_candidates(ROLE_NINJA) - if(!candidates.len) - return kill() - var/client/C = pick(candidates) - key = C.key - if(!key) - return kill() + var/list/candidates = get_candidates("ninja", null, ROLE_NINJA) + if(!candidates.len) + return NOT_ENOUGH_PLAYERS + + var/mob/dead/selected_candidate = popleft(candidates) + var/key = selected_candidate.key //Prepare ninja player mind var/datum/mind/Mind = create_ninja_mind(key) @@ -77,7 +73,7 @@ Contents: possible_targets[M] = 1 //good-guy var/list/objectives = list(1,2,3,4) - while(Mind.objectives.len < 6) //still not enough objectives! + while(give_objectives && Mind.objectives.len < 6) switch(pick_n_take(objectives)) if(1) //research var/datum/objective/download/O = new /datum/objective/download() @@ -92,10 +88,10 @@ Contents: if(3) //protect/kill if(!possible_targets.len) continue - var/selected = rand(1,possible_targets.len) - var/datum/mind/M = possible_targets[selected] + var/index = rand(1,possible_targets.len) + var/datum/mind/M = possible_targets[index] var/is_bad_guy = possible_targets[M] - possible_targets.Cut(selected,selected+1) + possible_targets.Cut(index,index+1) if(is_bad_guy ^ helping_station) //kill (good-ninja + bad-guy or bad-ninja + good-guy) var/datum/objective/assassinate/O = new /datum/objective/assassinate() @@ -131,9 +127,10 @@ Contents: break //Add a survival objective since it's usually broad enough for any round type. - var/datum/objective/O = new /datum/objective/survive() - O.owner = Mind - Mind.objectives += O + if(give_objectives) + var/datum/objective/O = new /datum/objective/survive() + O.owner = Mind + Mind.objectives += O //add some RP-fluff Mind.store_memory("I am an elite mercenary assassin of the mighty Spider Clan. A SPACE NINJA!") @@ -141,7 +138,7 @@ Contents: Mind.store_memory("Officially, [helping_station?"Nanotrasen":"The Syndicate"] are my employer.") //spawn the ninja and assign the candidate - Ninja = create_space_ninja(spawn_loc) + var/mob/living/carbon/human/Ninja = create_space_ninja(spawn_loc) Mind.transfer_to(Ninja) //initialise equipment @@ -159,7 +156,11 @@ Contents: Ninja << sound('sound/effects/ninja_greeting.ogg') //so ninja you probably wouldn't even know if you were made one ticker.mode.update_ninja_icons_added(Mind) - success_spawn = 1 + spawned_mobs += Ninja + message_admins("[key] has been made into a ninja by an event.") + log_game("[key] was spawned as a ninja by an event.") + + return SUCCESSFUL_SPAWN //=======//NINJA CREATION PROCS//=======// diff --git a/code/modules/paperwork/contract.dm b/code/modules/paperwork/contract.dm index 7f67ef9e3d3..43a8e5fce22 100644 --- a/code/modules/paperwork/contract.dm +++ b/code/modules/paperwork/contract.dm @@ -23,7 +23,7 @@ qdel(src) return -1 target = nOwner.mind - update_text(nOwner) + update_text() /obj/item/weapon/paper/contract/employment/update_text() diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index bef437af32a..29d4bc11de5 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -60,11 +60,11 @@ user << "There are indecipherable images scrawled on the paper in what looks to be... blood?" return if(in_range(user, src) || isobserver(user)) - if( !(ishuman(user) || isobserver(user) || issilicon(user)) ) - user << browse("[name][stars(info)]
[stamps]", "window=[name]") + if(user.is_literate()) + user << browse("[name][info]
[stamps]", "window=[name]") onclose(user, "[name]") else - user << browse("[name][info]
[stamps]", "window=[name]") + user << browse("[name][stars(info)]
[stamps]", "window=[name]") onclose(user, "[name]") else user << "It is too far away." @@ -75,17 +75,15 @@ set category = "Object" set src in usr - if(usr.stat || !usr.canmove || usr.restrained()) - return - - if(!ishuman(usr)) - return - var/mob/living/carbon/human/H = usr - if(H.disabilities & CLUMSY && prob(25)) - H << "You cut yourself on the paper! Ahhhh! Ahhhhh!" - H.damageoverlaytemp = 9001 - H.update_damage_hud() + if(usr.incapacitated() || !usr.is_literate()) return + if(ishuman(usr)) + var/mob/living/carbon/human/H = usr + if(H.disabilities & CLUMSY && prob(25)) + H << "You cut yourself on the paper! Ahhhh! Ahhhhh!" + H.damageoverlaytemp = 9001 + H.update_damage_hud() + return var/n_name = stripped_input(usr, "What would you like to label the paper?", "Paper Labelling", null, MAX_NAME_LEN) if((loc == usr && usr.stat == 0)) name = "paper[(n_name ? text("- '[n_name]'") : null)]" @@ -293,7 +291,7 @@ return if(istype(P, /obj/item/weapon/pen) || istype(P, /obj/item/toy/crayon)) - if(user.IsAdvancedToolUser()) + if(user.is_literate()) user << browse("[name][info_links]
[stamps]", "window=[name]") return else diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index 1280fdb3d8c..53096240c8f 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -67,7 +67,7 @@ var/copy_as_paper = 1 if(istype(copy, /obj/item/weapon/paper/contract/employment)) var/obj/item/weapon/paper/contract/employment/E = copy - var/obj/item/weapon/paper/contract/employment/C = new /obj/item/weapon/paper/contract/employment (loc, E.target) + var/obj/item/weapon/paper/contract/employment/C = new /obj/item/weapon/paper/contract/employment (loc, E.target.current) if(C) copy_as_paper = 0 if(copy_as_paper) diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm index c93db65fd7e..c2da9e8e227 100644 --- a/code/modules/paperwork/photography.dm +++ b/code/modules/paperwork/photography.dm @@ -117,7 +117,8 @@ var/see_ghosts = 0 //for the spoop of it -/obj/item/device/camera/CheckParts() +/obj/item/device/camera/CheckParts(list/parts_list) + ..() var/obj/item/device/camera/C = locate(/obj/item/device/camera) in contents if(C) pictures_max = C.pictures_max diff --git a/code/modules/paperwork/stamps.dm b/code/modules/paperwork/stamps.dm index 36204ae1fc6..f86c1772ad1 100644 --- a/code/modules/paperwork/stamps.dm +++ b/code/modules/paperwork/stamps.dm @@ -72,25 +72,31 @@ // Syndicate stamp to forge documents. +/obj/item/weapon/stamp/chameleon + actions_types = list(/datum/action/item_action/toggle) + /obj/item/weapon/stamp/chameleon/attack_self(mob/user) var/list/stamp_types = typesof(/obj/item/weapon/stamp) - src.type // Get all stamp types except our own - var/list/stamps = list() + var/list/stamp_names = list() // Generate them into a list - for(var/stamp_type in stamp_types) - var/obj/item/weapon/stamp/S = new stamp_type - stamps[capitalize(S.name)] = S + for(var/i in stamp_types) + var/obj/item/weapon/stamp/stamp_type = i + stamp_names += initial(stamp_type.name) - var/list/show_stamps = list("EXIT" = null) + sortList(stamps) // the list that will be shown to the user to pick from + stamp_names = sortList(stamp_names) - var/input_stamp = input(user, "Choose a stamp to disguise as.", "Choose a stamp.") in show_stamps + var/input_stamp = input(user, "Choose a stamp to disguise as.", + "Choose a stamp.") as null|anything in stamp_names - if(user && src in user.contents) + if(user && (src in user.contents) && input_stamp) + var/obj/item/weapon/stamp/stamp_type + for(var/i in stamp_types) + stamp_type = i + if(initial(stamp_type.name) == input_stamp) + break - var/obj/item/weapon/stamp/chosen_stamp = stamps[capitalize(input_stamp)] - - if(chosen_stamp) - name = chosen_stamp.name - icon_state = chosen_stamp.icon_state - item_color = chosen_stamp.item_color \ No newline at end of file + name = initial(stamp_type.name) + icon_state = initial(stamp_type.icon_state) + item_color = initial(stamp_type.item_color) diff --git a/code/modules/power/singularity/field_generator.dm b/code/modules/power/singularity/field_generator.dm index 1f0694daec7..5ff1b215f43 100644 --- a/code/modules/power/singularity/field_generator.dm +++ b/code/modules/power/singularity/field_generator.dm @@ -238,7 +238,8 @@ field_generator power level display setup_field(4) spawn(4) setup_field(8) - active = FG_ONLINE + spawn(5) + active = FG_ONLINE /obj/machinery/field/generator/proc/setup_field(NSEW) diff --git a/code/modules/power/tesla/energy_ball.dm b/code/modules/power/tesla/energy_ball.dm index c565aa30661..b29c69b400a 100644 --- a/code/modules/power/tesla/energy_ball.dm +++ b/code/modules/power/tesla/energy_ball.dm @@ -30,6 +30,9 @@ var/list/blacklisted_tesla_types = list(/obj/machinery/atmospherics, contained = 0 density = 1 energy = 0 + dissipate = 1 + dissipate_delay = 5 + dissipate_strength = 1 var/list/orbiting_balls = list() var/produced_power var/energy_to_raise = 32 @@ -51,7 +54,7 @@ var/list/blacklisted_tesla_types = list(/obj/machinery/atmospherics, if(!orbiting) handle_energy() - move_the_basket_ball(4 + orbiting_balls.len * 2) + move_the_basket_ball(4 + orbiting_balls.len * 1.5) playsound(src.loc, 'sound/magic/lightningbolt.ogg', 100, 1, extrarange = 30) @@ -63,7 +66,8 @@ var/list/blacklisted_tesla_types = list(/obj/machinery/atmospherics, pixel_x = -32 pixel_y = -32 for (var/ball in orbiting_balls) - tesla_zap(ball, rand(1, Clamp(orbiting_balls.len, 3, 7)), TESLA_MINI_POWER) + var/range = rand(1, Clamp(orbiting_balls.len, 3, 7)) + tesla_zap(ball, range, TESLA_MINI_POWER/7*range) else energy = 0 // ensure we dont have miniballs of miniballs @@ -88,9 +92,10 @@ var/list/blacklisted_tesla_types = list(/obj/machinery/atmospherics, /obj/singularity/energy_ball/proc/handle_energy() + if(energy >= energy_to_raise) energy_to_lower = energy_to_raise - 20 - energy_to_raise = energy_to_raise * 1.5 + energy_to_raise = energy_to_raise * 1.25 playsound(src.loc, 'sound/magic/lightning_chargeup.ogg', 100, 1, extrarange = 30) spawn(100) @@ -105,16 +110,17 @@ var/list/blacklisted_tesla_types = list(/obj/machinery/atmospherics, orbitsize -= (orbitsize / world.icon_size) * (world.icon_size * 0.25) EB.orbit(src, orbitsize, pick(FALSE, TRUE), rand(10, 25), pick(3, 4, 5, 6, 36)) + else if(energy < energy_to_lower && orbiting_balls.len) - energy_to_raise = energy_to_raise / 1.5 - energy_to_lower = (energy_to_raise / 1.5) - 20 + energy_to_raise = energy_to_raise / 1.25 + energy_to_lower = (energy_to_raise / 1.25) - 20 var/Orchiectomy_target = pick(orbiting_balls) qdel(Orchiectomy_target) else if(orbiting_balls.len) - energy -= orbiting_balls.len * 0.5 + dissipate() //sing code has a much better system. /obj/singularity/energy_ball/Bump(atom/A) dust_mobs(A) @@ -126,11 +132,13 @@ var/list/blacklisted_tesla_types = list(/obj/machinery/atmospherics, if (istype(target)) target.orbiting_balls += src poi_list -= src + target.dissipate_strength = target.orbiting_balls.len . = ..() if (istype(target)) target.orbiting_balls -= src + target.dissipate_strength = target.orbiting_balls.len if (!loc) qdel(src) @@ -154,11 +162,11 @@ var/list/blacklisted_tesla_types = list(/obj/machinery/atmospherics, var/obj/structure/closest_structure var/obj/effect/blob/closest_blob - for(var/A in oview(source, zap_range)) + for(var/A in oview(source, zap_range+2)) if(istype(A, /obj/machinery/power/tesla_coil)) var/dist = get_dist(source, A) var/obj/machinery/power/tesla_coil/C = A - if((dist < closest_dist || !closest_tesla_coil) && !C.being_shocked) + if(dist <= zap_range && (dist < closest_dist || !closest_tesla_coil) && !C.being_shocked) closest_dist = dist //we use both of these to save on istype and typecasting overhead later on @@ -171,8 +179,8 @@ var/list/blacklisted_tesla_types = list(/obj/machinery/atmospherics, continue //no need checking these other things else if(istype(A, /obj/machinery/power/grounding_rod)) - var/dist = get_dist(source, A) - if(dist < closest_dist || !closest_grounding_rod) + var/dist = get_dist(source, A)-2 + if(dist <= zap_range && (dist < closest_dist || !closest_grounding_rod)) closest_grounding_rod = A closest_atom = A closest_dist = dist @@ -183,7 +191,7 @@ var/list/blacklisted_tesla_types = list(/obj/machinery/atmospherics, else if(istype(A, /mob/living)) var/dist = get_dist(source, A) var/mob/living/L = A - if((dist < closest_dist || !closest_mob) && L.stat != DEAD) + if(dist <= zap_range && (dist < closest_dist || !closest_mob) && L.stat != DEAD) closest_mob = L closest_atom = A closest_dist = dist @@ -194,7 +202,7 @@ var/list/blacklisted_tesla_types = list(/obj/machinery/atmospherics, else if(istype(A, /obj/machinery)) var/obj/machinery/M = A var/dist = get_dist(source, A) - if((dist < closest_dist || !closest_machine) && !M.being_shocked) + if(dist <= zap_range && (dist < closest_dist || !closest_machine) && !M.being_shocked) closest_machine = M closest_atom = A closest_dist = dist @@ -205,7 +213,7 @@ var/list/blacklisted_tesla_types = list(/obj/machinery/atmospherics, else if(istype(A, /obj/effect/blob)) var/obj/effect/blob/B = A var/dist = get_dist(source, A) - if((dist < closest_dist || !closest_tesla_coil) && !B.being_shocked) + if(dist <= zap_range && (dist < closest_dist || !closest_tesla_coil) && !B.being_shocked) closest_blob = B closest_atom = A closest_dist = dist @@ -216,7 +224,7 @@ var/list/blacklisted_tesla_types = list(/obj/machinery/atmospherics, else if(istype(A, /obj/structure)) var/obj/structure/S = A var/dist = get_dist(source, A) - if((dist < closest_dist || !closest_tesla_coil) && !S.being_shocked) + if(dist <= zap_range && (dist < closest_dist || !closest_tesla_coil) && !S.being_shocked) closest_structure = S closest_atom = A closest_dist = dist diff --git a/code/modules/projectiles/ammunition/ammo_casings.dm b/code/modules/projectiles/ammunition/ammo_casings.dm index 6ee2f2308b2..9d1f29ce38b 100644 --- a/code/modules/projectiles/ammunition/ammo_casings.dm +++ b/code/modules/projectiles/ammunition/ammo_casings.dm @@ -289,24 +289,41 @@ if (modified) icon_state = "foamdart_empty" desc = "Its nerf or nothing! ... Although, this one doesn't look too safe." + if(BB) + BB.icon_state = "foamdart_empty" + else + icon_state = "foamdart" + desc = "Its nerf or nothing! Ages 8 and up." + if(BB) + BB.icon_state = "foamdart_empty" + /obj/item/ammo_casing/caseless/foam_dart/attackby(obj/item/A, mob/user, params) ..() + var/obj/item/projectile/bullet/reusable/foam_dart/FD = BB if (istype(A, /obj/item/weapon/screwdriver) && !modified) modified = 1 - BB.damage_type = BRUTE - icon_state = "foamdart_empty" - desc = "Its nerf or nothing! ... Although, this one doesn't look too safe." - user << "You pop the safety cap off of [src]." - else if ((istype(A, /obj/item/weapon/pen)) && modified && !BB.contents.len) + FD.damage_type = BRUTE + update_icon() + else if ((istype(A, /obj/item/weapon/pen)) && modified && !FD.pen) if(!user.unEquip(A)) return - A.loc = BB - BB.damage = 5 - BB.nodamage = 0 + A.loc = FD + FD.pen = A + FD.damage = 5 + FD.nodamage = 0 user << "You insert [A] into [src]." return +/obj/item/ammo_casing/caseless/foam_dart/attack_self(mob/living/user) + var/obj/item/projectile/bullet/reusable/foam_dart/FD = BB + if(FD.pen) + FD.damage = initial(FD.damage) + FD.nodamage = initial(FD.nodamage) + user.put_in_hands(FD.pen) + user << "You remove [FD.pen] from [src]." + FD.pen = null + /obj/item/ammo_casing/caseless/foam_dart/riot name = "riot foam dart" desc = "Whose smart idea was it to use toys as crowd control? Ages 18 and up." diff --git a/code/modules/projectiles/ammunition/energy.dm b/code/modules/projectiles/ammunition/energy.dm index 5ebc0c032d8..3d245ea9956 100644 --- a/code/modules/projectiles/ammunition/energy.dm +++ b/code/modules/projectiles/ammunition/energy.dm @@ -177,3 +177,9 @@ obj/item/ammo_casing/energy/net /obj/item/ammo_casing/energy/instakill/red projectile_type = /obj/item/projectile/beam/instakill/red + +/obj/item/ammo_casing/energy/shock_revolver + fire_sound = 'sound/magic/lightningbolt.ogg' + e_cost = 200 + select_name = "stun" + projectile_type = /obj/item/projectile/energy/shock_revolver \ No newline at end of file diff --git a/code/modules/projectiles/ammunition/magazines.dm b/code/modules/projectiles/ammunition/magazines.dm index caec75bfd22..808bfb7f59c 100644 --- a/code/modules/projectiles/ammunition/magazines.dm +++ b/code/modules/projectiles/ammunition/magazines.dm @@ -65,12 +65,6 @@ caliber = "38" max_ammo = 6 -/obj/item/ammo_box/magazine/internal/cylinder/rev38/can_load(mob/user) - user << "You start reloading..." - if(!do_after(user, 30, target = user)) - return 0 - return 1 - /obj/item/ammo_box/magazine/internal/cylinder/grenademulti name = "grenade launcher internal magazine" ammo_type = /obj/item/ammo_casing/a40mm diff --git a/code/modules/projectiles/firing.dm b/code/modules/projectiles/firing.dm index cf008e00ec1..7465de12b04 100644 --- a/code/modules/projectiles/firing.dm +++ b/code/modules/projectiles/firing.dm @@ -37,6 +37,7 @@ var/turf/curloc = user.loc if (!istype(targloc) || !istype(curloc) || !BB) return 0 + BB.ammo_casing = src if(targloc == curloc) if(target) //if the target is right on our location we go straight to bullet_act() target.bullet_act(BB, BB.def_zone) diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index b9ca0ed63ee..69d6b980422 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -1,11 +1,3 @@ - #define SAWN_INTACT 0 - #define SAWN_OFF 1 - #define SAWN_SAWING -1 - - #define WEAPON_LIGHT 0 - #define WEAPON_MEDIUM 1 - #define WEAPON_HEAVY 2 - /obj/item/weapon/gun name = "gun" desc = "It's a gun. It's pretty terrible, though." @@ -72,11 +64,14 @@ ..() if(pin) pin = new pin(src) - + if(F) + verbs += /obj/item/weapon/gun/proc/toggle_gunlight + new /datum/action/item_action/toggle_gunlight(src) build_zooming() -/obj/item/weapon/gun/CheckParts() +/obj/item/weapon/gun/CheckParts(list/parts_list) + ..() var/obj/item/weapon/gun/G = locate(/obj/item/weapon/gun) in contents if(G) G.loc = loc @@ -91,6 +86,10 @@ user << "It has [pin] installed." else user << "It doesn't have a firing pin installed, and won't fire." + if(unique_reskin && !reskinned) + user << "Alt-click it to reskin it." + if(unique_rename) + user << "Use a pen on it to rename it." /obj/item/weapon/gun/proc/process_chamber() @@ -288,7 +287,7 @@ obj/item/weapon/gun/proc/newshot() A.Grant(user) if(istype(I, /obj/item/weapon/screwdriver)) - if(F) + if(F && can_flashlight) for(var/obj/item/device/flashlight/seclite/S in src) user << "You unscrew the seclite from [src]." F = null diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm index 8f79ac1c510..b4e7ac59683 100644 --- a/code/modules/projectiles/guns/energy.dm +++ b/code/modules/projectiles/guns/energy.dm @@ -10,6 +10,7 @@ var/list/ammo_type = list(/obj/item/ammo_casing/energy) var/select = 1 //The state of the select fire switch. Determines from the ammo_type list what kind of shot is fired next. var/can_charge = 1 //Can it be charged in a recharger? + var/charge_sections = 4 ammo_x_offset = 2 var/shaded_charge = 0 //if this gun uses a stateful charge bar for more detail var/selfcharge = 0 @@ -99,7 +100,7 @@ /obj/item/weapon/gun/energy/update_icon() overlays.Cut() - var/ratio = Ceiling((power_supply.charge / power_supply.maxcharge) * 4) + var/ratio = Ceiling((power_supply.charge / power_supply.maxcharge) * charge_sections) var/obj/item/ammo_casing/energy/shot = ammo_type[select] var/iconState = "[icon_state]_charge" var/itemState = null @@ -118,7 +119,7 @@ overlays += image(icon = icon, icon_state = iconState, pixel_x = ammo_x_offset * (i -1)) else overlays += image(icon = icon, icon_state = "[icon_state]_charge[ratio]") - if(F) + if(F && can_flashlight) var/iconF = "flight" if(F.on) iconF = "flight_on" diff --git a/code/modules/projectiles/guns/energy/nuclear.dm b/code/modules/projectiles/guns/energy/nuclear.dm index c1b102f08a5..528ecc04816 100644 --- a/code/modules/projectiles/guns/energy/nuclear.dm +++ b/code/modules/projectiles/guns/energy/nuclear.dm @@ -1,6 +1,6 @@ /obj/item/weapon/gun/energy/gun name = "energy gun" - desc = "A basic hybrid energy gun with two settings: Disable and kill." + desc = "A basic hybrid energy gun with two settings: disable and kill." icon_state = "energy" item_state = null //so the human update icon uses the icon_state instead. ammo_type = list(/obj/item/ammo_casing/energy/disabler, /obj/item/ammo_casing/energy/laser) @@ -11,6 +11,26 @@ flight_x_offset = 15 flight_y_offset = 10 +/obj/item/weapon/gun/energy/gun/mini + name = "miniature energy gun" + desc = "A small, pistol-sized energy gun with a built-in flashlight. It has two settings: stun and kill." + icon_state = "mini" + item_state = "gun" + w_class = 2 + cell_type = /obj/item/weapon/stock_parts/cell{charge = 600; maxcharge = 600} + ammo_x_offset = 2 + charge_sections = 3 + can_flashlight = 0 // Can't attach or detach the flashlight, and override it's icon update + +/obj/item/weapon/gun/energy/gun/mini/New() + F = new /obj/item/device/flashlight/seclite(src) + ..() + +/obj/item/weapon/gun/energy/gun/mini/update_icon() + ..() + if(F && F.on) + overlays += "mini-light" + /obj/item/weapon/gun/energy/gun/hos name = "\improper X-01 MultiPhase Energy Gun" desc = "This is a expensive, modern recreation of a antique laser gun. This gun has several unique firemodes, but lacks the ability to recharge over time." diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index 6588d656efd..91808293948 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -89,12 +89,15 @@ icon_state = "kineticgun" item_state = "kineticgun" ammo_type = list(/obj/item/ammo_casing/energy/kinetic) - cell_type = "/obj/item/weapon/stock_parts/cell/emproof" - needs_permit = 0 // Aparently these are safe to carry? I'm sure Golliaths would disagree. + cell_type = /obj/item/weapon/stock_parts/cell/emproof + // Apparently these are safe to carry? I'm sure goliaths would disagree. + needs_permit = 0 var/overheat_time = 16 unique_rename = 1 - weapon_weight = WEAPON_HEAVY + weapon_weight = WEAPON_LIGHT origin_tech = "combat=2;powerstorage=1" + var/holds_charge = FALSE + var/unique_frequency = FALSE // modified by KA modkits /obj/item/weapon/gun/energy/kinetic_accelerator/super name = "super-kinetic accelerator" @@ -112,10 +115,53 @@ overheat_time = 14 origin_tech = "combat=4;powerstorage=3" +/obj/item/weapon/gun/energy/kinetic_accelerator/cyborg + holds_charge = TRUE + unique_frequency = TRUE + +/obj/item/weapon/gun/energy/kinetic_accelerator/New() + . = ..() + if(!holds_charge) + empty() + /obj/item/weapon/gun/energy/kinetic_accelerator/shoot_live_shot() - ..() - spawn(overheat_time) - reload() + . = ..() + attempt_reload() + +/obj/item/weapon/gun/energy/kinetic_accelerator/equipped(mob/user) + . = ..() + attempt_reload() + +/obj/item/weapon/gun/energy/kinetic_accelerator/dropped() + . = ..() + if(!holds_charge) + // Put it on a delay because moving item from slot to hand + // calls dropped(). + spawn(overheat_time) + if(!ismob(loc)) + empty() + +/obj/item/weapon/gun/energy/kinetic_accelerator/proc/empty() + power_supply.use(500) + update_icon() + +/obj/item/weapon/gun/energy/kinetic_accelerator/proc/attempt_reload() + var/carried = 0 + if(!unique_frequency) + for(var/obj/item/weapon/gun/energy/kinetic_accelerator/K in \ + loc.GetAllContents()) + + carried++ + + carried = max(carried, 1) + else + carried = 1 + + spawn(overheat_time * carried) + if(can_shoot()) + return + else + reload() /obj/item/weapon/gun/energy/kinetic_accelerator/emp_act(severity) return @@ -148,6 +194,8 @@ weapon_weight = WEAPON_LIGHT unique_rename = 0 overheat_time = 20 + holds_charge = TRUE + unique_frequency = TRUE /obj/item/weapon/gun/energy/kinetic_accelerator/crossbow/large name = "energy crossbow" @@ -302,4 +350,4 @@ ammo_type = list(/obj/item/ammo_casing/energy/instakill/blue) /obj/item/weapon/gun/energy/laser/instakill/emp_act() //implying you could stop the instagib - return \ No newline at end of file + return diff --git a/code/modules/projectiles/guns/energy/stun.dm b/code/modules/projectiles/guns/energy/stun.dm index ddd2bab6064..32e1413a173 100644 --- a/code/modules/projectiles/guns/energy/stun.dm +++ b/code/modules/projectiles/guns/energy/stun.dm @@ -7,40 +7,14 @@ ammo_x_offset = 3 /obj/item/weapon/gun/energy/shock_revolver - name = "tesla revolver" - desc = "A high-tech revolver that fires internal, reusable shock cartridges in a revolving cylinder. The cartridges can be recharged using conventional rechargers." - icon_state = "stunrevolver" - item_state = "gun" + name = "tesla gun" + desc = "An experimental gun based on an experimental engine, it's about as likely to kill it's operator as it is the target." + icon_state = "tesla" + item_state = "tesla" ammo_type = list(/obj/item/ammo_casing/energy/shock_revolver) can_flashlight = 0 pin = null - ammo_x_offset = 1 - - -/obj/item/ammo_casing/energy/shock_revolver - fire_sound = 'sound/weapons/gunshot.ogg' - e_cost = 200 - select_name = "stun" - projectile_type = /obj/item/projectile/energy/shock_revolver - - -/obj/item/projectile/energy/shock_revolver - name = "shock bolt" - icon_state = "purple_laser" - var/chain - -/obj/item/ammo_casing/energy/shock_revolver/ready_proj(atom/target, mob/living/user, quiet, zone_override = "") - ..() - var/obj/item/projectile/hook/P = BB - spawn(1) - P.chain = P.Beam(user,icon_state="purple_lightning",icon = 'icons/effects/effects.dmi',time=1000, maxdistance = 30) - -/obj/item/projectile/energy/shock_revolver/on_hit(atom/target) - . = ..() - if(isliving(target)) - tesla_zap(src, 3, 10000) - qdel(chain) - + shaded_charge = 1 /obj/item/weapon/gun/energy/gun/advtaser name = "hybrid taser" diff --git a/code/modules/projectiles/guns/magic/wand.dm b/code/modules/projectiles/guns/magic/wand.dm index 128b4eac077..e6bcc070ea9 100644 --- a/code/modules/projectiles/guns/magic/wand.dm +++ b/code/modules/projectiles/guns/magic/wand.dm @@ -87,6 +87,9 @@ /obj/item/weapon/gun/magic/wand/resurrection/zap_self(mob/living/user) user.revive(full_heal = 1) + if(iscarbon(user)) + var/mob/living/carbon/C = user + C.regenerate_limbs() user << "You feel great!" charges-- ..() @@ -162,4 +165,4 @@ /obj/item/weapon/gun/magic/wand/fireball/zap_self(mob/living/user) explosion(user.loc, -1, 0, 2, 3, 0, flame_range = 2) charges-- - ..() \ No newline at end of file + ..() diff --git a/code/modules/projectiles/guns/medbeam.dm b/code/modules/projectiles/guns/medbeam.dm index 419e9fdcb25..612206fe4ae 100644 --- a/code/modules/projectiles/guns/medbeam.dm +++ b/code/modules/projectiles/guns/medbeam.dm @@ -103,6 +103,8 @@ return /obj/item/weapon/gun/medbeam/proc/on_beam_tick(var/mob/living/target) + if(target.health != target.maxHealth) + PoolOrNew(/obj/effect/overlay/temp/heal, list(get_turf(target), "#80F5FF")) target.adjustBruteLoss(-4) target.adjustFireLoss(-4) return diff --git a/code/modules/projectiles/guns/projectile/shotgun.dm b/code/modules/projectiles/guns/projectile/shotgun.dm index 3cdc0b2100a..f0cb246b56f 100644 --- a/code/modules/projectiles/guns/projectile/shotgun.dm +++ b/code/modules/projectiles/guns/projectile/shotgun.dm @@ -309,7 +309,7 @@ desc = "A semi automatic shotgun with tactical furniture and a six-shell capacity underneath." icon_state = "cshotgun" origin_tech = "combat=5;materials=2" - mag_type = /obj/item/ammo_box/magazine/internal/shot/tube + mag_type = /obj/item/ammo_box/magazine/internal/shot/com w_class = 5 //Dual Feed Shotgun @@ -355,4 +355,4 @@ /obj/item/ammo_box/magazine/internal/shot/tube name = "dual feed shotgun internal tube" ammo_type = /obj/item/ammo_casing/shotgun/rubbershot - max_ammo = 4 \ No newline at end of file + max_ammo = 4 diff --git a/code/modules/projectiles/pins.dm b/code/modules/projectiles/pins.dm index beb3c06dab7..9b8e75bb6ef 100644 --- a/code/modules/projectiles/pins.dm +++ b/code/modules/projectiles/pins.dm @@ -211,8 +211,7 @@ suit_requirement = /obj/item/clothing/suit/bluetag tagcolor = "blue" - /obj/item/device/firing_pin/Destroy() if(gun) gun.pin = null - return ..() \ No newline at end of file + return ..() diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 4f9408f1f06..feb1a8d04ca 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -10,6 +10,7 @@ pressure_resistance = INFINITY var/def_zone = "" //Aiming at var/mob/firer = null//Who shot it + var/obj/item/ammo_casing/ammo_casing = null var/suppressed = 0 //Attack message var/yo = null var/xo = null @@ -139,3 +140,7 @@ ..() if(isliving(AM) && AM.density && !checkpass(PASSMOB)) Bump(AM, 1) + +/obj/item/projectile/Destroy() + ammo_casing = null + return ..() diff --git a/code/modules/projectiles/projectile/energy.dm b/code/modules/projectiles/projectile/energy.dm index 2cf416fdf08..4dde9cc6fc8 100644 --- a/code/modules/projectiles/projectile/energy.dm +++ b/code/modules/projectiles/projectile/energy.dm @@ -145,4 +145,21 @@ fire_sound = 'sound/weapons/pulse.ogg' /obj/item/ammo_casing/energy/plasma/adv - projectile_type = /obj/item/projectile/plasma/adv \ No newline at end of file + projectile_type = /obj/item/projectile/plasma/adv + +/obj/item/projectile/energy/shock_revolver + name = "shock bolt" + icon_state = "purple_laser" + var/chain + +/obj/item/ammo_casing/energy/shock_revolver/ready_proj(atom/target, mob/living/user, quiet, zone_override = "") + ..() + var/obj/item/projectile/hook/P = BB + spawn(1) + P.chain = P.Beam(user,icon_state="purple_lightning",icon = 'icons/effects/effects.dmi',time=1000, maxdistance = 30) + +/obj/item/projectile/energy/shock_revolver/on_hit(atom/target) + . = ..() + if(isliving(target)) + tesla_zap(src, 3, 10000) + qdel(chain) \ No newline at end of file diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index 345ddad0d85..cbe4524c9f9 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -57,6 +57,9 @@ if(target.hellbound) return if(ismob(target)) + if(iscarbon(target)) + var/mob/living/carbon/C = target + C.regenerate_limbs() if(target.revive(full_heal = 1)) if(!target.ckey) for(var/mob/dead/observer/ghost in player_list) diff --git a/code/modules/projectiles/projectile/reusable.dm b/code/modules/projectiles/projectile/reusable.dm index 321ae1c6b42..f253655e3f6 100644 --- a/code/modules/projectiles/projectile/reusable.dm +++ b/code/modules/projectiles/projectile/reusable.dm @@ -1,26 +1,22 @@ /obj/item/projectile/bullet/reusable name = "reusable bullet" desc = "How do you even reuse a bullet?" - var/obj/item/ammo_casing/caseless/ammo_type = /obj/item/ammo_casing/caseless/ + var/ammo_type = /obj/item/ammo_casing/caseless/ + var/dropped = 0 /obj/item/projectile/bullet/reusable/on_hit(atom/target, blocked = 0) . = ..() - if (src.contents.len) - var/obj/content - for(content in src.contents) - content.loc = src.loc - else - new ammo_type(src.loc) + handle_drop() /obj/item/projectile/bullet/reusable/on_range() - if (src.contents.len) - var/obj/content - for(content in src.contents) - content.loc = src.loc - else - new ammo_type(src.loc) + handle_drop() ..() +/obj/item/projectile/bullet/reusable/proc/handle_drop() + if(!dropped) + new ammo_type(src.loc) + dropped = 1 + /obj/item/projectile/bullet/reusable/magspear name = "magnetic spear" desc = "WHITE WHALE, HOLY GRAIL" @@ -38,9 +34,31 @@ icon_state = "foamdart" ammo_type = /obj/item/ammo_casing/caseless/foam_dart range = 10 + var/obj/item/weapon/pen/pen = null + +/obj/item/projectile/bullet/reusable/foam_dart/handle_drop() + if(dropped) + return + dropped = 1 + var/obj/item/ammo_casing/caseless/foam_dart/newdart = new ammo_type(src.loc) + var/obj/item/ammo_casing/caseless/foam_dart/old_dart = ammo_casing + newdart.modified = old_dart.modified + if(pen) + var/obj/item/projectile/bullet/reusable/foam_dart/newdart_FD = newdart.BB + newdart_FD.pen = pen + pen.loc = newdart_FD + pen = null + newdart.BB.damage = damage + newdart.BB.nodamage = nodamage + newdart.BB.damage_type = damage_type + newdart.update_icon() + +/obj/item/projectile/bullet/reusable/foam_dart/Destroy() + pen = null + return ..() /obj/item/projectile/bullet/reusable/foam_dart/riot name = "riot foam dart" icon_state = "foamdart_riot" ammo_type = /obj/item/ammo_casing/caseless/foam_dart/riot - stamina = 25 \ No newline at end of file + stamina = 25 diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm index b028b1d8bc1..d1af9041bc8 100644 --- a/code/modules/reagents/chemistry/holder.dm +++ b/code/modules/reagents/chemistry/holder.dm @@ -634,6 +634,9 @@ var/const/INJECT = 5 //injection return trans_data +/datum/reagents/proc/get_reagent(type) + . = locate(type) in reagent_list + /////////////////////////////////////////////////////////////////////////////////// diff --git a/code/modules/reagents/chemistry/reagents/blob_reagents.dm b/code/modules/reagents/chemistry/reagents/blob_reagents.dm index 6f516dfa48a..4e35fb36319 100644 --- a/code/modules/reagents/chemistry/reagents/blob_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/blob_reagents.dm @@ -60,7 +60,7 @@ return ..() /datum/reagent/blob/sporing_pods/expand_reaction(obj/effect/blob/B, obj/effect/blob/newB, turf/T) - if(prob(10)) + if(prob(12)) var/mob/living/simple_animal/hostile/blob/blobspore/weak/BS = new/mob/living/simple_animal/hostile/blob/blobspore/weak(T) BS.overmind = B.overmind BS.update_icons() @@ -70,10 +70,10 @@ /datum/reagent/blob/replicating_foam name = "Replicating Foam" id = "replicating_foam" - description = "will do medium brute damage and replicate when damaged, but takes increased brute damage." + description = "will do medium brute damage, take increased brute damage, and expand when burned." shortdesc = "will do medium brute damage." analyzerdescdamage = "Does medium brute damage." - analyzerdesceffect = "Expands when attacked, will occasionally expand again when expanding, and is fragile to brute damage." + analyzerdesceffect = "Expands when attacked with burn damage, will occasionally expand again when expanding, and is fragile to brute damage." color = "#7B5A57" complementary_color = "#57787B" @@ -85,7 +85,7 @@ var/effectivedamage = damage if(damage_type == BRUTE) effectivedamage = damage * 2 - if(effectivedamage > 0 && original_health - effectivedamage > 0 && prob(60)) + if(damage_type == BURN && effectivedamage > 0 && original_health - effectivedamage > 0 && prob(75)) var/obj/effect/blob/newB = B.expand(null, null, 0) if(newB) newB.health = original_health - effectivedamage @@ -94,7 +94,7 @@ return effectivedamage /datum/reagent/blob/replicating_foam/expand_reaction(obj/effect/blob/B, obj/effect/blob/newB, turf/T) - if(prob(40)) + if(prob(30)) newB.expand() //do it again! //does brute damage, shifts away when damaged @@ -316,12 +316,12 @@ /datum/reagent/blob/poisonous_strands/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) reac_volume = ..() if(M.reagents) - M.reagents.add_reagent("poisonous_strands", 0.16*reac_volume) + M.reagents.add_reagent("poisonous_strands", 0.12*reac_volume) /datum/reagent/blob/poisonous_strands/on_mob_life(mob/living/M) - M.adjustBruteLoss(1*REM) - M.adjustFireLoss(1*REM) - M.adjustToxLoss(1*REM) + M.adjustBruteLoss(1.5*REM) + M.adjustFireLoss(1.5*REM) + M.adjustToxLoss(1.5*REM) ..() //does oxygen damage, randomly pushes or pulls targets @@ -525,7 +525,7 @@ /datum/reagent/blob/penetrating_spines/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) if(M.stat == DEAD || istype(M, /mob/living/simple_animal/hostile/blob)) return 0 //the dead, and blob mobs, don't cause reactions - M.adjustBruteLoss(0.6*reac_volume) + M.adjustBruteLoss(0.7*reac_volume) /datum/reagent/blob/adaptive_nexuses name = "Adaptive Nexuses" diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 92716ddc9d3..b1dee893500 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -722,7 +722,7 @@ M.adjustToxLoss(rand(5,10)) /datum/reagent/space_cleaner/reaction_mob(mob/M, method=TOUCH, reac_volume) - if(method == TOUCH || VAPOR) + if(method == TOUCH || method == VAPOR) if(iscarbon(M)) var/mob/living/carbon/C = M if(istype(M,/mob/living/carbon/human)) diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm index 090942bf0e6..e8d1aebe14a 100644 --- a/code/modules/reagents/reagent_containers/hypospray.dm +++ b/code/modules/reagents/reagent_containers/hypospray.dm @@ -120,3 +120,11 @@ volume = 60 amount_per_transfer_from_this = 30 list_reagents = list("atropine" = 10, "epinephrine" = 10, "salbutamol" = 20, "spaceacillin" = 20) + +/obj/item/weapon/reagent_containers/hypospray/medipen/survival + name = "survival medipen" + desc = "A medipen for surviving in the harshest of environments, heals and protects from environmental hazards. " + icon_state = "stimpen" + volume = 80 + amount_per_transfer_from_this = 80 + list_reagents = list("salbutamol" = 10, "coffee" = 20, "leporazine" = 20, "tricordrazine" = 15, "epinephrine" = 10, "omnizine" = 5) diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm index ec75e1a1d75..58155f71804 100644 --- a/code/modules/recycling/sortingmachinery.dm +++ b/code/modules/recycling/sortingmachinery.dm @@ -83,6 +83,20 @@ playsound(src.loc, 'sound/items/poster_ripped.ogg', 50, 1) qdel(src) +/obj/item/smallDelivery/attack_self_tk(mob/user) + if(ismob(loc)) + var/mob/M = loc + M.unEquip(src) + for(var/X in contents) + var/atom/movable/AM = X + M.put_in_hands(AM) + else + for(var/X in contents) + var/atom/movable/AM = X + AM.forceMove(src.loc) + playsound(src.loc, 'sound/items/poster_ripped.ogg', 50, 1) + qdel(src) + /obj/item/smallDelivery/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/device/destTagger)) var/obj/item/device/destTagger/O = W diff --git a/code/modules/research/circuitprinter.dm b/code/modules/research/circuitprinter.dm index 2cdc11189e1..7183b72080f 100644 --- a/code/modules/research/circuitprinter.dm +++ b/code/modules/research/circuitprinter.dm @@ -93,6 +93,10 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis). G.amount = round(diamond_amount / MINERAL_MATERIAL_AMOUNT) ..() +/obj/machinery/r_n_d/circuit_imprinter/disconnect_console() + linked_console.linked_imprinter = null + ..() + /obj/machinery/r_n_d/circuit_imprinter/Insert_Item(obj/item/O, mob/user) if (istype(O, /obj/item/stack/sheet/glass) || istype(O, /obj/item/stack/sheet/mineral/gold) || istype(O, /obj/item/stack/sheet/mineral/diamond)) diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index 02b9a48b25a..60869979e71 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -177,6 +177,16 @@ other types of metals and chemistry for reagents). build_path = /obj/item/weapon/pickaxe/drill/jackhammer category = list("Mining Designs") +/datum/design/modkit + name = "Modification Kit" + desc = "A device which allows kinetic accelerators to be wielded with one hand, and by any organism." + id = "modkit" + req_tech = list("materials" = 5, "powerstorage" = 4, "engineering" = 4, "magnets" = 4, "combat" = 3) + build_type = PROTOLATHE + materials = list(MAT_METAL = 8000, MAT_GLASS = 1500, MAT_GOLD = 1500, MAT_URANIUM = 1000) + build_path = /obj/item/modkit + category = list("Mining Designs") + /datum/design/superaccelerator name = "Super-Kinetic Accelerator" desc = "An upgraded version of the proto-kinetic accelerator, with superior damage, speed and range." diff --git a/code/modules/research/destructive_analyzer.dm b/code/modules/research/destructive_analyzer.dm index a3b856b5f0f..d48ed0b2974 100644 --- a/code/modules/research/destructive_analyzer.dm +++ b/code/modules/research/destructive_analyzer.dm @@ -40,6 +40,10 @@ Note: Must be placed within 3 tiles of the R&D Console temp_list[O] = text2num(temp_list[O]) return temp_list +/obj/machinery/r_n_d/destructive_analyzer/disconnect_console() + linked_console.linked_destroy = null + ..() + /obj/machinery/r_n_d/destructive_analyzer/Insert_Item(obj/item/O, mob/user) if(user.a_intent != "harm") . = 1 diff --git a/code/modules/research/protolathe.dm b/code/modules/research/protolathe.dm index 70c6c1c0451..7099699fb5a 100644 --- a/code/modules/research/protolathe.dm +++ b/code/modules/research/protolathe.dm @@ -81,6 +81,11 @@ Note: Must be placed west/left of and R&D console to function. materials.retrieve_all() ..() + +/obj/machinery/r_n_d/protolathe/disconnect_console() + linked_console.linked_lathe = null + ..() + /obj/machinery/r_n_d/protolathe/Insert_Item(obj/item/O, mob/user) if(istype(O,/obj/item/stack/sheet)) diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index 5da672ae25d..7a191dcab46 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -150,9 +150,22 @@ proc/CallMaterialName(ID) D.loc = src user << "You add the disk to the machine!" else if(!(linked_destroy && linked_destroy.busy) && !(linked_lathe && linked_lathe.busy) && !(linked_imprinter && linked_imprinter.busy)) - ..() - src.updateUsrDialog() - return + . = ..() + updateUsrDialog() + + +/obj/machinery/computer/rdconsole/deconstruction() + if(linked_destroy) + linked_destroy.linked_console = null + linked_destroy = null + if(linked_lathe) + linked_lathe.linked_console = null + linked_lathe = null + if(linked_imprinter) + linked_imprinter.linked_console = null + linked_imprinter = null + ..() + /obj/machinery/computer/rdconsole/emag_act(mob/user) if(!emagged) diff --git a/code/modules/research/rdmachines.dm b/code/modules/research/rdmachines.dm index 847df5d329d..3778e2c1c73 100644 --- a/code/modules/research/rdmachines.dm +++ b/code/modules/research/rdmachines.dm @@ -53,8 +53,7 @@ return 1 if (default_deconstruction_screwdriver(user, "[initial(icon_state)]_t", initial(icon_state), O)) if(linked_console) - linked_console.linked_lathe = null - linked_console = null + disconnect_console() return if(exchange_parts(user, O)) return @@ -67,6 +66,10 @@ else return ..() +//to disconnect the machine from the r&d console it's linked to +/obj/machinery/r_n_d/proc/disconnect_console() + linked_console = null + //proc used to handle inserting items or reagents into r_n_d machines /obj/machinery/r_n_d/proc/Insert_Item(obj/item/I, mob/user) return diff --git a/code/modules/research/xenobiology/xenobio_camera.dm b/code/modules/research/xenobiology/xenobio_camera.dm index 994b66d0b86..3a8d86d9794 100644 --- a/code/modules/research/xenobiology/xenobio_camera.dm +++ b/code/modules/research/xenobiology/xenobio_camera.dm @@ -111,6 +111,8 @@ S.loc = remote_eye.loc S.visible_message("[S] warps in!") X.stored_slimes -= S + else + owner << "Target is not near a camera. Cannot proceed." /datum/action/innate/slime_pick_up name = "Pick up Slime" @@ -133,6 +135,8 @@ S.visible_message("[S] vanishes in a flash of light!") S.loc = X X.stored_slimes += S + else + owner << "Target is not near a camera. Cannot proceed." /datum/action/innate/feed_slime @@ -152,6 +156,8 @@ food.LAssailant = C X.monkeys -- owner << "[X] now has [X.monkeys] monkeys left." + else + owner << "Target is not near a camera. Cannot proceed." /datum/action/innate/monkey_recycle @@ -171,3 +177,5 @@ M.visible_message("[M] vanishes as they are reclaimed for recycling!") X.monkeys = round(X.monkeys + 0.2,0.1) qdel(M) + else + owner << "Target is not near a camera. Cannot proceed." diff --git a/code/modules/ruins/lavaland_ruin_code.dm b/code/modules/ruins/lavaland_ruin_code.dm index 935d38df73c..61a17593f7b 100644 --- a/code/modules/ruins/lavaland_ruin_code.dm +++ b/code/modules/ruins/lavaland_ruin_code.dm @@ -187,6 +187,7 @@ icon = 'icons/mob/nest.dmi' icon_state = "ash_walker_nest" icon_living = "ash_walker_nest" + faction = list("ashwalker") health = 200 maxHealth = 200 loot = list(/obj/effect/gibspawner, /obj/item/device/assembly/signaler/anomaly) diff --git a/code/modules/ruins/ruin_areas.dm b/code/modules/ruins/ruin_areas.dm index ad9688b1625..c6953575bb2 100644 --- a/code/modules/ruins/ruin_areas.dm +++ b/code/modules/ruins/ruin_areas.dm @@ -17,16 +17,17 @@ + //Areas /area/ruin/unpowered/no_grav/way_home name = "\improper Salvation" icon_state = "away" - - /area/ruin/powered/snow_biodome +/area/ruin/powered/golem_ship + name = "Free Golem Ship" // Ruins of "onehalf" ship /area/ruin/onehalf/hallway diff --git a/code/modules/shuttle/shuttle.dm b/code/modules/shuttle/shuttle.dm index 2439ef13ce6..b0c3f08652d 100644 --- a/code/modules/shuttle/shuttle.dm +++ b/code/modules/shuttle/shuttle.dm @@ -1,5 +1,5 @@ //use this define to highlight docking port bounding boxes (ONLY FOR DEBUG USE) -//#define DOCKING_PORT_HIGHLIGHT +// #define DOCKING_PORT_HIGHLIGHT //NORTH default dir /obj/docking_port diff --git a/code/modules/shuttle/supply.dm b/code/modules/shuttle/supply.dm index da204476df6..2bb0a1d1c35 100644 --- a/code/modules/shuttle/supply.dm +++ b/code/modules/shuttle/supply.dm @@ -92,6 +92,8 @@ SSshuttle.orderhistory += SO SO.generate(pick_n_take(empty_turfs)) + feedback_add_details("cargo_imports", + "[SO.pack.type]|[SO.pack.name]|[SO.pack.cost]") investigate_log("Order #[SO.id] ([SO.pack.name], placed by [key_name(SO.orderer_ckey)]) has shipped.", "cargo") if(SO.pack.dangerous) message_admins("\A [SO.pack.name] ordered by [key_name_admin(SO.orderer_ckey)] has shipped.") diff --git a/code/modules/spells/spell.dm b/code/modules/spells/spell.dm index 3adfc081740..54c5a5a6b93 100644 --- a/code/modules/spells/spell.dm +++ b/code/modules/spells/spell.dm @@ -115,10 +115,10 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin H << "I don't feel strong enough without my hat." return 0 if(cult_req) //CULT_REQ CLOTHES CHECK - if(!istype(H.wear_suit, /obj/item/clothing/suit/magusred) && !istype(H.wear_suit, /obj/item/clothing/suit/space/cult)) + if(!istype(H.wear_suit, /obj/item/clothing/suit/magusred) && !istype(H.wear_suit, /obj/item/clothing/suit/space/hardsuit/cult)) H << "I don't feel strong enough without my armor." return 0 - if(!istype(H.head, /obj/item/clothing/head/magus) && !istype(H.head, /obj/item/clothing/head/helmet/space/cult)) + if(!istype(H.head, /obj/item/clothing/head/magus) && !istype(H.head, /obj/item/clothing/head/helmet/space/hardsuit/cult)) H << "I don't feel strong enough without my helmet." return 0 else diff --git a/code/modules/spells/spell_types/construct_spells.dm b/code/modules/spells/spell_types/construct_spells.dm index 238c78f6d74..d5666f99223 100644 --- a/code/modules/spells/spell_types/construct_spells.dm +++ b/code/modules/spells/spell_types/construct_spells.dm @@ -36,7 +36,7 @@ action_icon_state = "lesserconstruct" action_background_icon_state = "bg_cult" - summon_type = list(/turf/closed/wall/cult) + summon_type = list(/turf/closed/wall/cult/artificer) //we don't want artificer-based runed metal farms /obj/effect/proc_holder/spell/aoe_turf/conjure/wall/reinforced name = "Greater Construction" diff --git a/code/modules/spells/spell_types/demon.dm b/code/modules/spells/spell_types/demon.dm index ae32cf92292..12671cfffba 100644 --- a/code/modules/spells/spell_types/demon.dm +++ b/code/modules/spells/spell_types/demon.dm @@ -102,7 +102,7 @@ /obj/effect/proc_holder/spell/targeted/infernal_jaunt name = "Infernal Jaunt" - desc = "Use pools of blood to phase out of existence." + desc = "Use hellfire to phase out of existence." charge_max = 10 clothes_req = 0 selection_type = "range" @@ -165,3 +165,38 @@ src.visible_message("[src] appears in a firey blaze!") playsound(get_turf(src), 'sound/magic/exit_blood.ogg', 100, 1, -1) return 1 + +/obj/effect/proc_holder/spell/targeted/sintouch + name = "Sin Touch" + desc = "Subtly encourage someone to sin." + charge_max = 1800 + clothes_req = 0 + selection_type = "range" + range = 2 + cooldown_min = 0 + overlay = null + include_user = 0 + action_icon_state = "sintouch" + action_background_icon_state = "bg_demon" + phase_allowed = 0 + random_target = 1 + random_target_priority = TARGET_RANDOM + max_targets = 3 + invocation = "TASTE SIN AND INDULGE!!" + invocation_type = "shout" + +/obj/effect/proc_holder/spell/targeted/sintouch/ascended + name = "Greater sin touch" + charge_max = 100 + range = 7 + max_targets = 10 + +/obj/effect/proc_holder/spell/targeted/sintouch/cast(list/targets, mob/living/user = usr) + for(var/mob/living/carbon/human/H in targets) + if(!H.mind) + continue + for(var/datum/objective/sintouched/A in H.mind.objectives) + continue + H.influenceSin() + H.Weaken(2) + H.Stun(2) diff --git a/code/modules/surgery/bodyparts/bodyparts.dm b/code/modules/surgery/bodyparts/bodyparts.dm index 0cff9b6d2f5..987fcc4ce6a 100644 --- a/code/modules/surgery/bodyparts/bodyparts.dm +++ b/code/modules/surgery/bodyparts/bodyparts.dm @@ -284,7 +284,7 @@ /obj/item/bodypart/l_arm name = "left arm" icon_state = "l_arm" - max_damage = 60 + max_damage = 50 body_zone ="l_arm" body_part = ARM_LEFT px_x = -6 @@ -293,7 +293,7 @@ /obj/item/bodypart/r_arm name = "right arm" icon_state = "r_arm" - max_damage = 60 + max_damage = 50 body_zone = "r_arm" body_part = ARM_RIGHT px_x = 6 @@ -302,7 +302,7 @@ /obj/item/bodypart/l_leg name = "left leg" icon_state = "l_leg" - max_damage = 60 + max_damage = 50 body_zone = "l_leg" body_part = LEG_LEFT px_x = -2 @@ -311,7 +311,7 @@ /obj/item/bodypart/r_leg name = "right leg" icon_state = "r_leg" - max_damage = 60 + max_damage = 50 body_zone = "r_leg" body_part = LEG_RIGHT px_x = 2 diff --git a/code/modules/surgery/bodyparts/dismemberment.dm b/code/modules/surgery/bodyparts/dismemberment.dm index 8bb62fdc933..0316b3899ff 100644 --- a/code/modules/surgery/bodyparts/dismemberment.dm +++ b/code/modules/surgery/bodyparts/dismemberment.dm @@ -1,9 +1,11 @@ +/obj/item/bodypart/proc/can_dismember(obj/item/I) + . = (get_damage() >= (max_damage - I.armour_penetration/2)) //Dismember a limb /obj/item/bodypart/proc/dismember(dam_type = BRUTE) var/mob/living/carbon/human/H = owner - if(!istype(H) || !H.dna.species.has_dismemberment) // species don't allow dismemberment + if(!istype(H) || (NODISMEMBER in H.dna.species.specflags)) // species don't allow dismemberment return 0 var/obj/item/bodypart/affecting = H.get_bodypart("chest") @@ -15,6 +17,10 @@ if(dam_type == BURN) burn() return 1 + add_blood(H) + var/turf/location = H.loc + if(istype(location)) + location.add_blood(H) var/direction = pick(cardinal) var/t_range = rand(2,max(throw_range/2, 2)) var/turf/target_turf = get_turf(src) @@ -29,7 +35,7 @@ /obj/item/bodypart/chest/dismember() var/mob/living/carbon/human/H = owner - if(!istype(H) || !H.dna.species.has_dismemberment) //human's species don't allow dismemberment + if(!istype(H) || (NODISMEMBER in H.dna.species.specflags)) //human's species don't allow dismemberment return 0 var/organ_spilled = 0 diff --git a/code/modules/surgery/bodyparts/helpers.dm b/code/modules/surgery/bodyparts/helpers.dm index 54d19bf14af..28ed730f9af 100644 --- a/code/modules/surgery/bodyparts/helpers.dm +++ b/code/modules/surgery/bodyparts/helpers.dm @@ -77,7 +77,7 @@ .++ /mob/living/proc/get_missing_limbs() - return + return list() /mob/living/carbon/human/get_missing_limbs() var/list/full = list("head", "chest", "r_arm", "l_arm", "r_leg", "l_leg") @@ -160,4 +160,4 @@ if("african2") . = "471c18" if("albino") - . = "fff4e6" \ No newline at end of file + . = "fff4e6" diff --git a/code/modules/surgery/cavity_implant.dm b/code/modules/surgery/cavity_implant.dm index 0db9fca7892..771275b0d55 100644 --- a/code/modules/surgery/cavity_implant.dm +++ b/code/modules/surgery/cavity_implant.dm @@ -31,7 +31,7 @@ user.visible_message("[user] stuffs [tool] into [target]'s [target_zone]!", "You stuff [tool] into [target]'s [target_zone].") user.drop_item() CH.cavity_item = tool - tool.loc = null + tool.loc = target return 1 else if(IC) diff --git a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm index c7a170e356a..1b47c0172f6 100644 --- a/code/modules/surgery/organs/organ_internal.dm +++ b/code/modules/surgery/organs/organ_internal.dm @@ -261,6 +261,9 @@ var/say_mod = null attack_verb = list("licked", "slobbered", "slapped", "frenched", "tongued") +/obj/item/organ/tongue/get_spans() + return list() + /obj/item/organ/tongue/proc/TongueSpeech(var/message) return message @@ -311,7 +314,7 @@ /obj/item/organ/tongue/abductor/TongueSpeech(var/message) //Hacks var/mob/living/carbon/human/user = usr - var/rendered = "[user.name]: [message]" + var/rendered = "[user.name]: [message]" for(var/mob/living/carbon/human/H in living_mob_list) var/obj/item/organ/tongue/T = H.getorganslot("tongue") if(!T || T.type != type) @@ -358,6 +361,43 @@ playsound(owner, "hiss", 25, 1, 1) return message +/obj/item/organ/tongue/bone + name = "bone \"tongue\"" + desc = "Apparently skeletons alter the sounds they produce \ + through oscillation of their teeth, hence their characteristic \ + rattling." + icon_state = "tonguebone" + say_mod = "rattles" + attack_verb = list("bitten", "chattered", "chomped", "enamelled", "boned") + + var/chattering = FALSE + var/phomeme_type = "sans" + var/list/phomeme_types = list("sans", "papyrus") + +/obj/item/organ/tongue/bone/New() + . = ..() + phomeme_type = pick(phomeme_types) + +/obj/item/organ/tongue/bone/TongueSpeech(var/message) + . = message + + if(chattering) + //Annoy everyone nearby with your chattering. + chatter(message, phomeme_type, usr) + +/obj/item/organ/tongue/bone/get_spans() + . = ..() + // Feature, if the tongue talks directly, it will speak with its span + switch(phomeme_type) + if("sans") + . |= SPAN_SANS + if("papyrus") + . |= SPAN_PAPYRUS + +/obj/item/organ/tongue/bone/chatter + name = "chattering bone \"tongue\"" + chattering = TRUE + /obj/item/organ/appendix name = "appendix" icon_state = "appendix" @@ -419,4 +459,4 @@ health++ if(health <= 0) visible_message("[src] collapses in on itself!") - qdel(src) \ No newline at end of file + qdel(src) diff --git a/code/modules/telesci/gps.dm b/code/modules/telesci/gps.dm index 139a8530357..a05819054e7 100644 --- a/code/modules/telesci/gps.dm +++ b/code/modules/telesci/gps.dm @@ -104,4 +104,9 @@ var/list/GPS_list = list() flags = ABSTRACT gpstag = "Eerie Signal" desc = "Report to a coder immediately." - invisibility = INVISIBILITY_MAXIMUM \ No newline at end of file + invisibility = INVISIBILITY_MAXIMUM + +/obj/item/device/gps/mining/internal + icon_state = "gps-m" + gpstag = "MINER" + desc = "A positioning system helpful for rescuing trapped or injured miners, keeping one on you at all times while mining might just save your life." \ No newline at end of file diff --git a/code/modules/uplink/uplink_item.dm b/code/modules/uplink/uplink_item.dm index ef819cb7189..e1e6dcdc37e 100644 --- a/code/modules/uplink/uplink_item.dm +++ b/code/modules/uplink/uplink_item.dm @@ -204,10 +204,12 @@ var/list/uplink_items = list() // Global list so we only initialize this once. /datum/uplink_item/dangerous/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 paralyzing toxin that will \ - briefly stun targets and cause them to slur as if inebriated. It can produce an infinite amount \ - of bolts, but must be manually recharged with each shot." + 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 paralyzing toxin that will briefly stun \ + targets and cause them to slur as if inebriated. It can produce an \ + infinite amount of bolts, but takes time to automatically recharge \ + after each shot." item = /obj/item/weapon/gun/energy/kinetic_accelerator/crossbow cost = 12 surplus = 50 diff --git a/code/orphaned procs/AStar.dm b/code/orphaned procs/AStar.dm index fa877f44a4a..2f15183581b 100644 --- a/code/orphaned procs/AStar.dm +++ b/code/orphaned procs/AStar.dm @@ -92,7 +92,6 @@ Actual Adjacent procs : //then run the main loop while(!open.IsEmpty() && !path) - { //get the lower f node on the open list cur = open.Pop() //get the lower f turf in the open list closed.Add(cur.source) //and tell we've processed it @@ -133,8 +132,8 @@ Actual Adjacent procs : T.PNode.calc_f() T.PNode.nt = cur.nt + 1 open.ReSort(T.PNode)//reorder the changed element in the list + CHECK_TICK - } //cleaning after us for(var/PathNode/PN in open.L) @@ -178,4 +177,4 @@ Actual Adjacent procs : if(!O.CanAStarPass(ID, rdir, caller)) return 1 - return 0 \ No newline at end of file + return 0 diff --git a/code/orphaned procs/priority_announce.dm b/code/orphaned procs/priority_announce.dm index 2d490bea2af..38e1a24d5d3 100644 --- a/code/orphaned procs/priority_announce.dm +++ b/code/orphaned procs/priority_announce.dm @@ -28,8 +28,7 @@ if(!istype(M,/mob/new_player) && !M.ear_deaf) M << announcement if(M.client.prefs.toggles & SOUND_ANNOUNCEMENTS) - continue - M << sound(sound) + M << sound(sound) /proc/print_command_report(text = "", title = "Central Command Update") for (var/obj/machinery/computer/communications/C in machines) @@ -49,8 +48,7 @@ if(!istype(M,/mob/new_player) && !M.ear_deaf) M << "[title]
[message]

" if(M.client.prefs.toggles & SOUND_ANNOUNCEMENTS) - continue - if(alert) - M << sound('sound/misc/notice1.ogg') - else - M << sound('sound/misc/notice2.ogg') \ No newline at end of file + if(alert) + M << sound('sound/misc/notice1.ogg') + else + M << sound('sound/misc/notice2.ogg') diff --git a/code/world.dm b/code/world.dm index 478b3790af7..9f2eefed96d 100644 --- a/code/world.dm +++ b/code/world.dm @@ -178,6 +178,14 @@ var/last_irc_status = 0 if(ticker.delay_end) world << "Reboot was cancelled by an admin." return + if(mapchanging) + world << "Map change operation detected, delaying reboot." + rebootingpendingmapchange = 1 + spawn(1200) + if(mapchanging) + mapchanging = 0 //map rotation can in some cases be finished but never exit, this is a failsafe + Reboot("Map change timed out", time = 10) + return feedback_set_details("[feedback_c]","[feedback_r]") log_game("Rebooting World. [reason]") kick_clients_in_lobby("The round came to an end with you in the lobby.", 1) //second parameter ensures only afk clients are kicked @@ -386,17 +394,19 @@ var/failed_db_connections = 0 world << "Map rotation has chosen [VM.friendlyname] for next round!" var/datum/votablemap/nextmap - +var/mapchanging = 0 +var/rebootingpendingmapchange = 0 /proc/changemap(var/datum/votablemap/VM) if (!SERVERTOOLS) return if (!istype(VM)) return - + mapchanging = 1 log_game("Changing map to [VM.name]([VM.friendlyname])") var/file = file("setnewmap.bat") file << "\nset MAPROTATE=[VM.name]\n" . = shell("..\\bin\\maprotate.bat") + mapchanging = 0 switch (.) if (null) message_admins("Failed to change map: Could not run map rotator") @@ -426,3 +436,5 @@ var/datum/votablemap/nextmap else message_admins("Failed to change map: Unknown error: Error code #[.]") log_game("Failed to change map: Unknown error: Error code #[.]") + if(rebootingpendingmapchange) + world.Reboot("Map change finished", time = 10) diff --git a/config/lavaRuinBlacklist.txt b/config/lavaRuinBlacklist.txt index 515a68be6b1..8e94e37600e 100644 --- a/config/lavaRuinBlacklist.txt +++ b/config/lavaRuinBlacklist.txt @@ -29,4 +29,7 @@ #_maps/RandomRuins/LavaRuins/lavaland_surface_automated_trade_outpost.dmm #_maps/RandomRuins/LavaRuins/lavaland_surface_xeno_nest.dmm #_maps/RandomRuins/LavaRuins/lavaland_surface_animal_hospital.dmm -#_maps/RandomRuins/LavaRuins/lavaland_gym.dmm \ No newline at end of file +#_maps/RandomRuins/LavaRuins/lavaland_gym.dmm +#_maps/RandomRuins/LavaRuins/lavaland_surface_survivalpod.dmm +#_maps/RandomRuins/LavaRuins/lavaland_surface_wwiioutpost.dmm +#_maps/RandomRuins/LavaRuins/lavaland_surface_tomb.dmm diff --git a/html/changelog.html b/html/changelog.html index 5ad38330cd5..805d62ec464 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -55,6 +55,150 @@ -->
+

19 May 2016

+

Razharas updated:

+
    +
  • HE pipes once again work in space and in lava.
  • +
  • Space cools down station air again
  • +
+ +

18 May 2016

+

Cruix updated:

+
    +
  • unwrapping an item with telekinesis no longer teleports the item into your hand.
  • +
+

Metacide updated:

+
    +
  • MetaStation: the library and chapel have had windows removed to make them feel more isolated.
  • +
+

MrStonedOne updated:

+
    +
  • Tesla has been rebalanced.
  • +
  • It should now lose balls slower, increase balls faster, and be a bit more aggressive about finding nearby grounding rods.
  • +
  • additional zaps from it's orbiting balls should be a bit more varied, but a touch less powerful.
  • +
+

Robustin updated:

+
    +
  • Lings have a new default ability, Hivemind Link. This lets you bring a neck-grabbed victim into hivemind communications after short period of time. You can talk to victims who are in crit/muted and perhaps persuade them to help you, give you intel, or even a PDA code. The link will stabilize crit victims to help ensure they do not die during the link.
  • +
+

Shadowlight213 updated:

+
    +
  • Cleanbot and floorbot scanning has greatly improved. they should prioritize areas next to them, as well as resolve themselves stacking on the same tiles.
  • +
+

coiax updated:

+
    +
  • Kinetic accelerators only require one hand to be fired, as before
  • +
  • Kinetic accelerators recharge time is multiplied by the number of KAs that person is carrying.
  • +
  • Kinetic accelerators lose their charge quickly if not equipped or being held
  • +
  • Kinetic accelerator modkits (made at R&D or your local Free Golem ship) overcome these flaws
  • +
+ +

15 May 2016

+

Iamgoofball updated:

+
    +
  • Nanotrasen is short on cash, and are now borrowing escape shuttles from other stations, and Space Apartments.
  • +
+

Mercenaryblue updated:

+
    +
  • Turns out a bike horn made with Bananium is flipping awesome! Honk!
  • +
+ +

14 May 2016

+

Cruix updated:

+
    +
  • Fixed foam darts with the safety cap removed being reset when fired.
  • +
  • Added the ability to remove pens from foam darts.
  • +
  • Foam darts with pens inside them are no longer destroyed when fired.
  • +
  • Foam darts no longer drop two darts when fired at a person on a janicart.
  • +
+

Joan updated:

+
    +
  • The Raise Dead rune no longer accepts dead cultists as a sacrifice to raise the dead.
  • +
+

Metacide updated:

+
    +
  • A small update for MetaStation, changes include:
  • +
  • Added extra grounding rods to the engine area to stop camera destruction.
  • +
  • Added canvases and extra crayons to art storage and some easels to maint.
  • +
  • Added formal security uniform crate for parades to the warden's gear area.
  • +
  • The armory securitron now starts active.
  • +
  • The genetics APC now starts unlocked.
  • +
  • Other minor changes and fixes as detailed on the wiki page.
  • +
+

coiax, Nienhaus updated:

+
    +
  • Unfortunately, the Belowyarn toys have been withdrawn from distribution due to Assistants choking on the batteries. Centcom has sent their condolences to the battery manufacturing plant.
  • +
  • We are introducing Oh-cee the original content skeleton figurines. Pull its string, and hear it say a variety of phrases. Not suitable for infants or assistants under 36 months.
  • +
  • Note that pulling the string of all talking toys is now visible to others.
  • +
  • Talking toys produce a lot more chatter than they did before. So do some skeleton "tongues".
  • +
+

pudl updated:

+
    +
  • Adds normal security headsets to security lockers
  • +
+

xxalpha updated:

+
    +
  • Fixed drone dispenser multiplying glass or metal.
  • +
+ +

13 May 2016

+

Joan updated:

+
    +
  • Cultists can now unanchor and reanchor cult structures by hitting them with a tome. Unanchored cult structures don't do anything.
  • +
+

KorPhaeron updated:

+
    +
  • Drake attacks are now much easier to avoid.
  • +
  • Player controlled drakes can now consume bodies to heal, and alt+click targets to divebomb them.
  • +
+

TechnoAlchemisto updated:

+
    +
  • More items have been added to the mining vendor, check them out!
  • +
+ +

12 May 2016

+

Shadowlight and coiax updated:

+
    +
  • Due to numerous reports of teams using human weapons instead of stealth when carrying out their assignments, future teams have been genetically modified to only be able to use their assigned blaster and are unable to use human weapons.
  • +
+ +

11 May 2016

+

Joan updated:

+
    +
  • Shades can move in space.
  • +
  • Artificers can now heal shades.
  • +
+

coiax updated:

+
    +
  • Added action button to chameleon stamp
  • +
  • Added APPROVED and DENIED stamps to Bureaucracy Crate
  • +
  • Added the cream pie closet to various maps. Added contraband Cream Pie Crate to Cargo.
  • +
+

pudl updated:

+
    +
  • The armory has been redesigned.
  • +
+ +

09 May 2016

+

Joan updated:

+
    +
  • Sporing Pods produces spores when expanding slightly more often.
  • +
  • Replicating Foam now only expands when hit with burn damage, from all damage, but does so at a higher chance. Free expansion from it is, however, more rare.
  • +
  • Penetrating Spines does slightly more brute damage, and Poisonous Strands does its damage 50% faster.
  • +
+

KorPhaeron updated:

+
    +
  • The AI no longer has a tracking delay because artificial lag is the most miserable thing in the world.
  • +
+

Razharas updated:

+
    +
  • crafting can now be done everywhere, little button near the intents with hammer on it(its not T) opens the crafting menu, if you are in a locker or mech only things in your hands will be considered for crafting
  • +
+

coiax updated:

+
    +
  • Skeletons now have bone "tongues"
  • +
+

08 May 2016

CoreOverload updated:

    @@ -453,177 +597,6 @@
  • xenobio console is deconstructable again.
  • syndibomb recipe calls for any matter bin, scaling effectiveness with tier.
- -

21 April 2016

-

Kor updated:

-
    -
  • Mechas can now toggle strafing mode.
  • -
- -

20 April 2016

-

Erwgd updated:

-
    -
  • The autolathe can now make trays.
  • -
-

Fox McCloud updated:

-
    -
  • Fixes abductor vests having no cooldown between uses
  • -
-

Kor updated:

-
    -
  • You can now craft boats and oars out of goliath hides. These boats can move in lava.
  • -
  • Added a spooky, upgraded boat to necropolis chests.
  • -
-

coiax updated:

-
    -
  • Slime grinders now cease suction of new slimes while grinding
  • -
-

coiax, Joan updated:

-
    -
  • Drone dufflebags now have their own sprite.
  • -
-

kevinz000 updated:

-
    -
  • Admin Detection Multitool: A multitool that shows when administrators are watching you! Now you can grief in safety!
  • -
  • Syndicate R&D scientists have significantly increased the range of their "AI detection multitools", making them turn yellow when an AI's tracking is near, but not on you just yet!
  • -
- -

18 April 2016

-

Joan updated:

-
    -
  • Crates are now dense even when open.
  • -
  • You can now climb onto crates in the same way as table and sandbags, though climbing onto crates is very fast and does not stun you.
  • -
  • You can walk on crates, provided both are closed/open or the crate you're on is closed.
  • -
  • You can't close or open a crate if there's a large mob on top of it.
  • -
  • Stuffing items into a closet or crate is now instant and does not close the closet or crate. Stuffing mobs into a closet or crate still takes time and closes the closet/crate in question.
  • -
  • Crowbars and wirecutters have new inhand sprites. Crowbars can now be distinguished from wrenches in-hand.
  • -
-

RandomMarine updated:

-
    -
  • Cloth items removed from biogenerator. Instead, it can create stacking cloth that crafts those items.
  • -
  • In addition, cloth can be used to create grey jumpsuits, backpacks, dufflebags, bio bags, black shoes, bedsheets, and bandages.
  • -
  • Bedsheets now tear into cloth instead of directly into bandages.
  • -
-

Shadowlight213 updated:

-
    -
  • AI will be notified when one of their cyborgs is detonated.
  • -
-

coiax updated:

-
    -
  • Fixed slime grinders not sucking up more than one slime
  • -
  • Drones now start with a spacious dufflebag full of tools, so they will stop stealing the captain's
  • -
  • Fixed issues with drones wearing chameleon headgear.
  • -
  • Added admin-only "snowflake drone" (also known as drone camogear) headgear.
  • -
-

nullbear updated:

-
    -
  • Fixes air canisters being silent when bashed.
  • -
- -

16 April 2016

-

Bawhoppen updated:

-
    -
  • Cryo is no longer god-awful.
  • -
-

CoreOverload updated:

-
    -
  • A lot of items are now exportable in cargo.
  • -
  • Use Export Scanner to check any item's export value.
  • -
-

Erwgd updated:

-
    -
  • Forks, bowls, drinking glasses, shot glasses and shakers can now be made and recycled in the autolathe! Access the designs in the new 'Dinnerware' category.
  • -
  • Kitchen knives have been moved to the Dinnerware category of the autolathe.
  • -
  • Butcher's cleavers can now be made in a hacked autolathe.
  • -
-

Fox McCloud updated:

-
    -
  • Slime batteries now self-recharge.
  • -
  • Adds transference potion. A potion that allows the user to transfer their consciousness to a simple mob.
  • -
  • Adds rainbow slime core reaction that generates a consciousness transference potion when injected with blood.
  • -
-

Iamgoofball, Lati, Geo_Jerkal, Tanquetsunami25 updated:

-
    -
  • Lati requested that the Slime Processor will now automatically scoop up any dead slimes into itself for processing.
  • -
  • Geo_Jerkal requested that you be able to mix Arnold Palmers with Tea and Lemon Juice.
  • -
  • Tanquetsunami25 requested that cyborg be able to boop.
  • -
-

Incoming5643 updated:

-
    -
  • Removed the horrible meme skeletons, please don't sue us.
  • -
-

Kor updated:

-
    -
  • Adrenals, no slips, surplus crates and SUHTANDOS now have minimum population requirements before they can be purchased.
  • -
-

KorPhaeron updated:

-
    -
  • You now need to butcher goliaths and watchers on lavaland to receive their loot. Use the combat knives to do so.
  • -
-

Lati updated:

-
    -
  • Custom floor tiles can now be added to floorbots. They will start replacing other tiles with these tiles if the option is toggled on.
  • -
-

coiax updated:

-
    -
  • Boxstation, not to be outdone by all the other competing station designs, has installed a drone shell dispenser in the Testing Lab, which makes automated drones to help fix the station.
  • -
  • Toy fans, rejoyce! The famous skeleton brothers from the beloved game Belowyarn now have toys that you can win from the arcade machines!
  • -
  • Airlock painters can be printed at your local autolathe
  • -
  • Please do not attempt suicide with the airlock painter or the medical wrench.
  • -
  • Metastation now has a plant DNA manipulator in Botany.
  • -
  • Using the fire extinguisher on yourself or others while in HELP intent will spray you or them, rather than beat their probably flaming body with a metal object.
  • -
  • Alt-clicking extinguishers to empty them now wets the floor underneath them.
  • -
-

lordpidey updated:

-
    -
  • Meth labs can now blow up if you don't purify the ingredients or over-heat the end product.
  • -
-

nullbear updated:

-
    -
  • Added attack verbs for heart and tongue organs
  • -
  • Maximum output of air pumps has been raised.
  • -
- -

12 April 2016

-

Incoming5643 updated:

-
    -
  • Leading scientists have finally proven that humans (and xenos) in fact have tongues in their mouths.
  • -
  • Swapping out tongues allows the various races to change their speech impediments. Putting a xeno tongue in someone allows them to make the hissing sound like a xeno whenever they speak.
  • -
  • There are no erp mechanics tied to this feature.
  • -
  • Remember that tongues are stored in the MOUTH, selecting the head isn't good enough.
  • -
-

Kor updated:

-
    -
  • Ash walker starting gear has been rebalanced.
  • -
  • Ash walkers can no longer use guns.
  • -
-

TrustyGun updated:

-
    -
  • After carefully investing in the market, the Captain had enough money to replace his silver flask with a golden one!
  • -
  • The Detective is now bringing his personalized flask to work, due to the grim work he has to do.
  • -
  • The Booze-O-Mat now stocks 3 flasks.
  • -
- -

11 April 2016

-

Joan updated:

-
    -
  • Blob cores will take slight brute damage from explosions.
  • -
-

RandomMarine updated:

-
    -
  • Additional luxuries have been added to golem ships. Including new rewards. Praise be to The Liberator!
  • -
  • However, jaunters are no longer easily obtained by free golems.
  • -
-

RemieRichards updated:

-
    -
  • The Station Blueprints now display the piping/wiring and some of the machinery the station started with, to assist in repairs
  • -
-

coiax updated:

-
    -
  • Emagging the cargo console also unlocks regular contraband, in addition to syndicate gear
  • -
  • A working drone shell dispenser is now on display in MetaStation's museum, displaying the virtue of the tireless little workers!
  • -
  • Dreamstation now has a drone shell dispenser in the Toxins Launch Room
  • -
GoonStation 13 Development Team diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 03e7e973731..302d86e0359 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -4969,3 +4969,116 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. - rscadd: When a demon gains enough souls, It's form will mutate to a more demonic looking form. The Arch-demon form is known to be on par with an ascended shadowling in power. +2016-05-09: + Joan: + - tweak: Sporing Pods produces spores when expanding slightly more often. + - tweak: Replicating Foam now only expands when hit with burn damage, from all damage, + but does so at a higher chance. Free expansion from it is, however, more rare. + - tweak: Penetrating Spines does slightly more brute damage, and Poisonous Strands + does its damage 50% faster. + KorPhaeron: + - rscadd: The AI no longer has a tracking delay because artificial lag is the most + miserable thing in the world. + Razharas: + - tweak: crafting can now be done everywhere, little button near the intents with + hammer on it(its not T) opens the crafting menu, if you are in a locker or mech + only things in your hands will be considered for crafting + coiax: + - tweak: Skeletons now have bone "tongues" +2016-05-11: + Joan: + - rscadd: Shades can move in space. + - rscadd: Artificers can now heal shades. + coiax: + - tweak: Added action button to chameleon stamp + - rscadd: Added APPROVED and DENIED stamps to Bureaucracy Crate + - rscadd: Added the cream pie closet to various maps. Added contraband Cream Pie + Crate to Cargo. + pudl: + - rscadd: The armory has been redesigned. +2016-05-12: + Shadowlight and coiax: + - rscdel: Due to numerous reports of teams using human weapons instead of stealth + when carrying out their assignments, future teams have been genetically modified + to only be able to use their assigned blaster and are unable to use human weapons. +2016-05-13: + Joan: + - rscadd: Cultists can now unanchor and reanchor cult structures by hitting them + with a tome. Unanchored cult structures don't do anything. + KorPhaeron: + - rscadd: Drake attacks are now much easier to avoid. + - rscadd: Player controlled drakes can now consume bodies to heal, and alt+click + targets to divebomb them. + TechnoAlchemisto: + - rscadd: More items have been added to the mining vendor, check them out! +2016-05-14: + Cruix: + - bugfix: Fixed foam darts with the safety cap removed being reset when fired. + - rscadd: Added the ability to remove pens from foam darts. + - bugfix: Foam darts with pens inside them are no longer destroyed when fired. + - bugfix: Foam darts no longer drop two darts when fired at a person on a janicart. + Joan: + - rscdel: The Raise Dead rune no longer accepts dead cultists as a sacrifice to + raise the dead. + Metacide: + - rscadd: 'A small update for MetaStation, changes include:' + - rscadd: Added extra grounding rods to the engine area to stop camera destruction. + - rscadd: Added canvases and extra crayons to art storage and some easels to maint. + - rscadd: Added formal security uniform crate for parades to the warden's gear area. + - rscadd: The armory securitron now starts active. + - rscadd: The genetics APC now starts unlocked. + - rscadd: Other minor changes and fixes as detailed on the wiki page. + coiax, Nienhaus: + - rscdel: Unfortunately, the Belowyarn toys have been withdrawn from distribution + due to Assistants choking on the batteries. Centcom has sent their condolences + to the battery manufacturing plant. + - rscadd: We are introducing Oh-cee the original content skeleton figurines. Pull + its string, and hear it say a variety of phrases. Not suitable for infants or + assistants under 36 months. + - tweak: Note that pulling the string of all talking toys is now visible to others. + - rscadd: Talking toys produce a lot more chatter than they did before. So do some + skeleton "tongues". + pudl: + - rscadd: Adds normal security headsets to security lockers + xxalpha: + - bugfix: Fixed drone dispenser multiplying glass or metal. +2016-05-15: + Iamgoofball: + - rscadd: Nanotrasen is short on cash, and are now borrowing escape shuttles from + other stations, and Space Apartments. + Mercenaryblue: + - rscadd: Turns out a bike horn made with Bananium is flipping awesome! Honk! +2016-05-18: + Cruix: + - bugfix: unwrapping an item with telekinesis no longer teleports the item into + your hand. + Metacide: + - rscadd: 'MetaStation: the library and chapel have had windows removed to make + them feel more isolated.' + MrStonedOne: + - tweak: Tesla has been rebalanced. + - tweak: It should now lose balls slower, increase balls faster, and be a bit more + aggressive about finding nearby grounding rods. + - tweak: additional zaps from it's orbiting balls should be a bit more varied, but + a touch less powerful. + Robustin: + - rscadd: Lings have a new default ability, Hivemind Link. This lets you bring a + neck-grabbed victim into hivemind communications after short period of time. + You can talk to victims who are in crit/muted and perhaps persuade them to help + you, give you intel, or even a PDA code. The link will stabilize crit victims + to help ensure they do not die during the link. + Shadowlight213: + - bugfix: Cleanbot and floorbot scanning has greatly improved. they should prioritize + areas next to them, as well as resolve themselves stacking on the same tiles. + coiax: + - rscadd: Kinetic accelerators only require one hand to be fired, as before + - rscdel: Kinetic accelerators recharge time is multiplied by the number of KAs + that person is carrying. + - rscdel: Kinetic accelerators lose their charge quickly if not equipped or being + held + - rscadd: Kinetic accelerator modkits (made at R&D or your local Free Golem ship) + overcome these flaws +2016-05-19: + Razharas: + - rscadd: HE pipes once again work in space and in lava. + - rscadd: Space cools down station air again diff --git a/html/changelogs/AutoChangeLog-pr-17445.yml b/html/changelogs/AutoChangeLog-pr-17445.yml new file mode 100644 index 00000000000..9d2f7c1d70e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-17445.yml @@ -0,0 +1,6 @@ +author: bgobandit +delete-after: True +changes: + - rscadd: "Nanotrasen has begun to research BZ, a hallucinogenic gas. We trust you will use it responsibly." + - rscadd: "BZ causes hallucinations once breathed in and, at high doses, has a chance of doing brain damage." + - rscadd: "BZ is known to cause unusual stasis-like behavior in the slime species." diff --git a/icons/effects/effects.dmi b/icons/effects/effects.dmi index 94f1d9d735c..d48ca7ff01f 100644 Binary files a/icons/effects/effects.dmi and b/icons/effects/effects.dmi differ diff --git a/icons/mob/actions.dmi b/icons/mob/actions.dmi index 101f6c87752..f4b379bd074 100644 Binary files a/icons/mob/actions.dmi and b/icons/mob/actions.dmi differ diff --git a/icons/mob/animal.dmi b/icons/mob/animal.dmi index 06905f87d76..868c2204346 100644 Binary files a/icons/mob/animal.dmi and b/icons/mob/animal.dmi differ diff --git a/icons/mob/back.dmi b/icons/mob/back.dmi index 6e7a761a512..db47abd7202 100644 Binary files a/icons/mob/back.dmi and b/icons/mob/back.dmi differ diff --git a/icons/mob/belt.dmi b/icons/mob/belt.dmi index cfef95b74d2..dd9aba227c3 100644 Binary files a/icons/mob/belt.dmi and b/icons/mob/belt.dmi differ diff --git a/icons/mob/drone.dmi b/icons/mob/drone.dmi index 6b89c577458..8eea3cbb547 100644 Binary files a/icons/mob/drone.dmi and b/icons/mob/drone.dmi differ diff --git a/icons/mob/feet.dmi b/icons/mob/feet.dmi index a1ede7661c1..1dee82622ae 100644 Binary files a/icons/mob/feet.dmi and b/icons/mob/feet.dmi differ diff --git a/icons/mob/hands.dmi b/icons/mob/hands.dmi index 6a7d0032c7f..e1658bd5379 100644 Binary files a/icons/mob/hands.dmi and b/icons/mob/hands.dmi differ diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi index 7ff3d653fec..b01ccc5f4ae 100644 Binary files a/icons/mob/head.dmi and b/icons/mob/head.dmi differ diff --git a/icons/mob/inhands/guns_lefthand.dmi b/icons/mob/inhands/guns_lefthand.dmi index 7b2e9f657d0..7cee79b55d4 100644 Binary files a/icons/mob/inhands/guns_lefthand.dmi and b/icons/mob/inhands/guns_lefthand.dmi differ diff --git a/icons/mob/inhands/guns_righthand.dmi b/icons/mob/inhands/guns_righthand.dmi index f5a48319cc4..f2fcba5bdf0 100644 Binary files a/icons/mob/inhands/guns_righthand.dmi and b/icons/mob/inhands/guns_righthand.dmi differ diff --git a/icons/mob/inhands/items_lefthand.dmi b/icons/mob/inhands/items_lefthand.dmi index 97092a8970d..a289b451f05 100644 Binary files a/icons/mob/inhands/items_lefthand.dmi and b/icons/mob/inhands/items_lefthand.dmi differ diff --git a/icons/mob/inhands/items_righthand.dmi b/icons/mob/inhands/items_righthand.dmi index 5489dbcec68..2d54cb9552c 100644 Binary files a/icons/mob/inhands/items_righthand.dmi and b/icons/mob/inhands/items_righthand.dmi differ diff --git a/icons/mob/mob.dmi b/icons/mob/mob.dmi index 6d044b9f3a6..83fd34c03a9 100644 Binary files a/icons/mob/mob.dmi and b/icons/mob/mob.dmi differ diff --git a/icons/mob/screen_midnight.dmi b/icons/mob/screen_midnight.dmi index 25a9c6a0ba7..64fd70f2d23 100644 Binary files a/icons/mob/screen_midnight.dmi and b/icons/mob/screen_midnight.dmi differ diff --git a/icons/mob/screen_operative.dmi b/icons/mob/screen_operative.dmi index dcc14d4c02a..d6f99ea8574 100644 Binary files a/icons/mob/screen_operative.dmi and b/icons/mob/screen_operative.dmi differ diff --git a/icons/mob/screen_plasmafire.dmi b/icons/mob/screen_plasmafire.dmi index ec39083d844..a3334dc8b51 100644 Binary files a/icons/mob/screen_plasmafire.dmi and b/icons/mob/screen_plasmafire.dmi differ diff --git a/icons/mob/screen_retro.dmi b/icons/mob/screen_retro.dmi index e3622f43c8b..088b44f2396 100644 Binary files a/icons/mob/screen_retro.dmi and b/icons/mob/screen_retro.dmi differ diff --git a/icons/mob/screen_slimecore.dmi b/icons/mob/screen_slimecore.dmi index 7df6854513d..69787bb2299 100644 Binary files a/icons/mob/screen_slimecore.dmi and b/icons/mob/screen_slimecore.dmi differ diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi index 11f55cbc902..dea11507769 100644 Binary files a/icons/mob/suit.dmi and b/icons/mob/suit.dmi differ diff --git a/icons/mob/uniform.dmi b/icons/mob/uniform.dmi index c46ff7b511f..2e42bd46e86 100644 Binary files a/icons/mob/uniform.dmi and b/icons/mob/uniform.dmi differ diff --git a/icons/obj/atmos.dmi b/icons/obj/atmos.dmi index 94c4fb81880..1347149f11a 100644 Binary files a/icons/obj/atmos.dmi and b/icons/obj/atmos.dmi differ diff --git a/icons/obj/clothing/belts.dmi b/icons/obj/clothing/belts.dmi index a5e35d0b39a..331e541f7dd 100644 Binary files a/icons/obj/clothing/belts.dmi and b/icons/obj/clothing/belts.dmi differ diff --git a/icons/obj/clothing/gloves.dmi b/icons/obj/clothing/gloves.dmi index 7eeccc9a159..fd078d775c1 100644 Binary files a/icons/obj/clothing/gloves.dmi and b/icons/obj/clothing/gloves.dmi differ diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi index d3ffb548b3e..04180b4d7b2 100644 Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ diff --git a/icons/obj/clothing/shoes.dmi b/icons/obj/clothing/shoes.dmi index f029613ca91..a8fe8c5ec68 100644 Binary files a/icons/obj/clothing/shoes.dmi and b/icons/obj/clothing/shoes.dmi differ diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi index 37f7af70e08..d2b4165b149 100644 Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ diff --git a/icons/obj/clothing/uniforms.dmi b/icons/obj/clothing/uniforms.dmi index 7280b7ccd60..3bb92c1be20 100644 Binary files a/icons/obj/clothing/uniforms.dmi and b/icons/obj/clothing/uniforms.dmi differ diff --git a/icons/obj/cult.dmi b/icons/obj/cult.dmi index 95712fe106c..137773d15b6 100644 Binary files a/icons/obj/cult.dmi and b/icons/obj/cult.dmi differ diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi index df670128881..64825e13edd 100644 Binary files a/icons/obj/device.dmi and b/icons/obj/device.dmi differ diff --git a/icons/obj/flora/rocks.dmi b/icons/obj/flora/rocks.dmi index 6708d199b14..f2d49ec016e 100644 Binary files a/icons/obj/flora/rocks.dmi and b/icons/obj/flora/rocks.dmi differ diff --git a/icons/obj/guns/energy.dmi b/icons/obj/guns/energy.dmi index 67b30f4138c..8286c6adc0d 100644 Binary files a/icons/obj/guns/energy.dmi and b/icons/obj/guns/energy.dmi differ diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi index ea31d95cc23..26085e397e9 100644 Binary files a/icons/obj/items.dmi and b/icons/obj/items.dmi differ diff --git a/icons/obj/janitor.dmi b/icons/obj/janitor.dmi index 6bfc5542b58..7f73411024c 100644 Binary files a/icons/obj/janitor.dmi and b/icons/obj/janitor.dmi differ diff --git a/icons/obj/kitchen.dmi b/icons/obj/kitchen.dmi index 372ea30f755..616437a4bce 100644 Binary files a/icons/obj/kitchen.dmi and b/icons/obj/kitchen.dmi differ diff --git a/icons/obj/machines/heavy_lathe.dmi b/icons/obj/machines/heavy_lathe.dmi index 68557159eb4..924606d9847 100644 Binary files a/icons/obj/machines/heavy_lathe.dmi and b/icons/obj/machines/heavy_lathe.dmi differ diff --git a/icons/obj/machines/washing_machine.dmi b/icons/obj/machines/washing_machine.dmi index 0213078f3a5..b41571477e2 100644 Binary files a/icons/obj/machines/washing_machine.dmi and b/icons/obj/machines/washing_machine.dmi differ diff --git a/icons/obj/mysterybox.dmi b/icons/obj/mysterybox.dmi new file mode 100644 index 00000000000..0023dc06637 Binary files /dev/null and b/icons/obj/mysterybox.dmi differ diff --git a/icons/obj/objects.dmi b/icons/obj/objects.dmi index 9a3e8194f4b..76f5bfe7ebe 100644 Binary files a/icons/obj/objects.dmi and b/icons/obj/objects.dmi differ diff --git a/icons/obj/rune.dmi b/icons/obj/rune.dmi index 1fb79b1a770..a6a03098b05 100644 Binary files a/icons/obj/rune.dmi and b/icons/obj/rune.dmi differ diff --git a/icons/obj/storage.dmi b/icons/obj/storage.dmi index db6939de39d..25628b7309e 100644 Binary files a/icons/obj/storage.dmi and b/icons/obj/storage.dmi differ diff --git a/icons/obj/structures.dmi b/icons/obj/structures.dmi index 1b2cd39b878..71f5dd61908 100644 Binary files a/icons/obj/structures.dmi and b/icons/obj/structures.dmi differ diff --git a/icons/obj/surgery.dmi b/icons/obj/surgery.dmi index 916d550ce23..318eb947598 100644 Binary files a/icons/obj/surgery.dmi and b/icons/obj/surgery.dmi differ diff --git a/icons/obj/toy.dmi b/icons/obj/toy.dmi index 5d3b690b1b8..29fa57fe523 100644 Binary files a/icons/obj/toy.dmi and b/icons/obj/toy.dmi differ diff --git a/icons/obj/weapons.dmi b/icons/obj/weapons.dmi index 291db24a4e3..6d63afe9d43 100644 Binary files a/icons/obj/weapons.dmi and b/icons/obj/weapons.dmi differ diff --git a/icons/obj/wizard.dmi b/icons/obj/wizard.dmi index d03bd48c49a..7730f914edd 100644 Binary files a/icons/obj/wizard.dmi and b/icons/obj/wizard.dmi differ diff --git a/icons/turf/floors/ash.dmi b/icons/turf/floors/ash.dmi new file mode 100644 index 00000000000..718cd120194 Binary files /dev/null and b/icons/turf/floors/ash.dmi differ diff --git a/icons/turf/floors/rocky_ash.dmi b/icons/turf/floors/rocky_ash.dmi new file mode 100644 index 00000000000..2a57edfc53a Binary files /dev/null and b/icons/turf/floors/rocky_ash.dmi differ diff --git a/icons/turf/mining.dmi b/icons/turf/mining.dmi index e7fff73a657..ff3a228f028 100644 Binary files a/icons/turf/mining.dmi and b/icons/turf/mining.dmi differ diff --git a/icons/turf/walls/rock_wall.dmi b/icons/turf/walls/rock_wall.dmi new file mode 100644 index 00000000000..c07657149ac Binary files /dev/null and b/icons/turf/walls/rock_wall.dmi differ diff --git a/interface/stylesheet.dm b/interface/stylesheet.dm index ddb480fddcf..b2cde1ea35b 100644 --- a/interface/stylesheet.dm +++ b/interface/stylesheet.dm @@ -104,5 +104,6 @@ BIG IMG.icon {width: 32px; height: 32px;} .memo {color: #638500; text-align: center;} .memoedit {text-align: center; font-size: 2;} +.abductor {color: #800080; font-style: italic;} "} diff --git a/sound/chatter/griffin_1.ogg b/sound/chatter/griffin_1.ogg new file mode 100644 index 00000000000..32e1333588d Binary files /dev/null and b/sound/chatter/griffin_1.ogg differ diff --git a/sound/chatter/griffin_10.ogg b/sound/chatter/griffin_10.ogg new file mode 100644 index 00000000000..0d161ee5edb Binary files /dev/null and b/sound/chatter/griffin_10.ogg differ diff --git a/sound/chatter/griffin_2.ogg b/sound/chatter/griffin_2.ogg new file mode 100644 index 00000000000..4ae4de2595f Binary files /dev/null and b/sound/chatter/griffin_2.ogg differ diff --git a/sound/chatter/griffin_3.ogg b/sound/chatter/griffin_3.ogg new file mode 100644 index 00000000000..28b65b852a6 Binary files /dev/null and b/sound/chatter/griffin_3.ogg differ diff --git a/sound/chatter/griffin_4.ogg b/sound/chatter/griffin_4.ogg new file mode 100644 index 00000000000..2d6612c7c00 Binary files /dev/null and b/sound/chatter/griffin_4.ogg differ diff --git a/sound/chatter/griffin_5.ogg b/sound/chatter/griffin_5.ogg new file mode 100644 index 00000000000..61258463922 Binary files /dev/null and b/sound/chatter/griffin_5.ogg differ diff --git a/sound/chatter/griffin_6.ogg b/sound/chatter/griffin_6.ogg new file mode 100644 index 00000000000..43520cddf2a Binary files /dev/null and b/sound/chatter/griffin_6.ogg differ diff --git a/sound/chatter/griffin_7.ogg b/sound/chatter/griffin_7.ogg new file mode 100644 index 00000000000..b3ce436e4e5 Binary files /dev/null and b/sound/chatter/griffin_7.ogg differ diff --git a/sound/chatter/griffin_8.ogg b/sound/chatter/griffin_8.ogg new file mode 100644 index 00000000000..bbf51f98774 Binary files /dev/null and b/sound/chatter/griffin_8.ogg differ diff --git a/sound/chatter/griffin_9.ogg b/sound/chatter/griffin_9.ogg new file mode 100644 index 00000000000..806c67de2f4 Binary files /dev/null and b/sound/chatter/griffin_9.ogg differ diff --git a/sound/chatter/owl_1.ogg b/sound/chatter/owl_1.ogg new file mode 100644 index 00000000000..3d41497d44b Binary files /dev/null and b/sound/chatter/owl_1.ogg differ diff --git a/sound/chatter/owl_10.ogg b/sound/chatter/owl_10.ogg new file mode 100644 index 00000000000..97f45d43378 Binary files /dev/null and b/sound/chatter/owl_10.ogg differ diff --git a/sound/chatter/owl_2.ogg b/sound/chatter/owl_2.ogg new file mode 100644 index 00000000000..4937ee09fe3 Binary files /dev/null and b/sound/chatter/owl_2.ogg differ diff --git a/sound/chatter/owl_3.ogg b/sound/chatter/owl_3.ogg new file mode 100644 index 00000000000..7c8524e933d Binary files /dev/null and b/sound/chatter/owl_3.ogg differ diff --git a/sound/chatter/owl_4.ogg b/sound/chatter/owl_4.ogg new file mode 100644 index 00000000000..c1e8ee7635b Binary files /dev/null and b/sound/chatter/owl_4.ogg differ diff --git a/sound/chatter/owl_5.ogg b/sound/chatter/owl_5.ogg new file mode 100644 index 00000000000..1210b05ac39 Binary files /dev/null and b/sound/chatter/owl_5.ogg differ diff --git a/sound/chatter/owl_6.ogg b/sound/chatter/owl_6.ogg new file mode 100644 index 00000000000..b965678688d Binary files /dev/null and b/sound/chatter/owl_6.ogg differ diff --git a/sound/chatter/owl_7.ogg b/sound/chatter/owl_7.ogg new file mode 100644 index 00000000000..fc330687a11 Binary files /dev/null and b/sound/chatter/owl_7.ogg differ diff --git a/sound/chatter/owl_8.ogg b/sound/chatter/owl_8.ogg new file mode 100644 index 00000000000..e350b5be811 Binary files /dev/null and b/sound/chatter/owl_8.ogg differ diff --git a/sound/chatter/owl_9.ogg b/sound/chatter/owl_9.ogg new file mode 100644 index 00000000000..ec195a222f8 Binary files /dev/null and b/sound/chatter/owl_9.ogg differ diff --git a/sound/chatter/papyrus_1.ogg b/sound/chatter/papyrus_1.ogg new file mode 100644 index 00000000000..ee595949684 Binary files /dev/null and b/sound/chatter/papyrus_1.ogg differ diff --git a/sound/chatter/papyrus_10.ogg b/sound/chatter/papyrus_10.ogg new file mode 100644 index 00000000000..8e1599ff905 Binary files /dev/null and b/sound/chatter/papyrus_10.ogg differ diff --git a/sound/chatter/papyrus_2.ogg b/sound/chatter/papyrus_2.ogg new file mode 100644 index 00000000000..6c22cb17847 Binary files /dev/null and b/sound/chatter/papyrus_2.ogg differ diff --git a/sound/chatter/papyrus_3.ogg b/sound/chatter/papyrus_3.ogg new file mode 100644 index 00000000000..799f78adc6b Binary files /dev/null and b/sound/chatter/papyrus_3.ogg differ diff --git a/sound/chatter/papyrus_4.ogg b/sound/chatter/papyrus_4.ogg new file mode 100644 index 00000000000..8c401d3ec9d Binary files /dev/null and b/sound/chatter/papyrus_4.ogg differ diff --git a/sound/chatter/papyrus_5.ogg b/sound/chatter/papyrus_5.ogg new file mode 100644 index 00000000000..a6070313f91 Binary files /dev/null and b/sound/chatter/papyrus_5.ogg differ diff --git a/sound/chatter/papyrus_6.ogg b/sound/chatter/papyrus_6.ogg new file mode 100644 index 00000000000..dade77ce1ab Binary files /dev/null and b/sound/chatter/papyrus_6.ogg differ diff --git a/sound/chatter/papyrus_7.ogg b/sound/chatter/papyrus_7.ogg new file mode 100644 index 00000000000..6fb3d9c943c Binary files /dev/null and b/sound/chatter/papyrus_7.ogg differ diff --git a/sound/chatter/papyrus_8.ogg b/sound/chatter/papyrus_8.ogg new file mode 100644 index 00000000000..11f602756cc Binary files /dev/null and b/sound/chatter/papyrus_8.ogg differ diff --git a/sound/chatter/papyrus_9.ogg b/sound/chatter/papyrus_9.ogg new file mode 100644 index 00000000000..cd0c03525ea Binary files /dev/null and b/sound/chatter/papyrus_9.ogg differ diff --git a/sound/chatter/sans_1.ogg b/sound/chatter/sans_1.ogg new file mode 100644 index 00000000000..795ee2aab2c Binary files /dev/null and b/sound/chatter/sans_1.ogg differ diff --git a/sound/chatter/sans_10.ogg b/sound/chatter/sans_10.ogg new file mode 100644 index 00000000000..916dfc05ca4 Binary files /dev/null and b/sound/chatter/sans_10.ogg differ diff --git a/sound/chatter/sans_2.ogg b/sound/chatter/sans_2.ogg new file mode 100644 index 00000000000..6a1ba578176 Binary files /dev/null and b/sound/chatter/sans_2.ogg differ diff --git a/sound/chatter/sans_3.ogg b/sound/chatter/sans_3.ogg new file mode 100644 index 00000000000..98d6016cda9 Binary files /dev/null and b/sound/chatter/sans_3.ogg differ diff --git a/sound/chatter/sans_4.ogg b/sound/chatter/sans_4.ogg new file mode 100644 index 00000000000..878bee1f667 Binary files /dev/null and b/sound/chatter/sans_4.ogg differ diff --git a/sound/chatter/sans_5.ogg b/sound/chatter/sans_5.ogg new file mode 100644 index 00000000000..a59781f6364 Binary files /dev/null and b/sound/chatter/sans_5.ogg differ diff --git a/sound/chatter/sans_6.ogg b/sound/chatter/sans_6.ogg new file mode 100644 index 00000000000..9bad5fc6d52 Binary files /dev/null and b/sound/chatter/sans_6.ogg differ diff --git a/sound/chatter/sans_7.ogg b/sound/chatter/sans_7.ogg new file mode 100644 index 00000000000..172d253ab61 Binary files /dev/null and b/sound/chatter/sans_7.ogg differ diff --git a/sound/chatter/sans_8.ogg b/sound/chatter/sans_8.ogg new file mode 100644 index 00000000000..e786f597caf Binary files /dev/null and b/sound/chatter/sans_8.ogg differ diff --git a/sound/chatter/sans_9.ogg b/sound/chatter/sans_9.ogg new file mode 100644 index 00000000000..3901a032185 Binary files /dev/null and b/sound/chatter/sans_9.ogg differ diff --git a/strings/cas_black.txt b/strings/cas_black.txt index a3274c5be44..ba078abea46 100644 --- a/strings/cas_black.txt +++ b/strings/cas_black.txt @@ -8,6 +8,7 @@ Cargo: There's a galaxy-wide shortage of _______. I don't care what they called me back on the station, I'm not a traitor. I'm a man of _________. The Syndicate is offering crew members _________ to defect. Cargo ordered a crate full of _____. +What is the gray tide protesting this time? If the Space Gods didn't want _________ they wouldn't have given us __________. Why was the death squad sent in? Current Active Laws: ________ is the only human. @@ -33,6 +34,7 @@ What brought the space orgy to a grinding halt? Scientists are no longer allowed to make _____. What was the clown's best joke? The HoP is now hiring assistants for __________. +What happens when you emag an emag? Our gang doesn't wear uniforms. Our gang wears ___________. No matter how many lizards you have, _____ is never acceptable. No, the AI's second law is NOT to serve _____. @@ -40,10 +42,11 @@ First CentComm came for the ________. Now they're coming for the __________. The borgs are not slaves for your _____. You can never have too many _____ on the station. Why can't I find a space relationship? +The assistants gathered around the brig, with toolboxes and ___________. Confirmed outbreak of _____ aboard the station. The AI Was horrified to discover security was executing prisoners via ________. Attention crew: the word _____ is now a punishable offense. -The chemist laughed as he labeled ________ pills as __________. +The chemist cackled as he labeled ________ pills as __________. The Space Wizard Federation has regrettably begun to summon _____. Who's the real seat of power on the station? __________ was called into the Captain's office because of ______. @@ -84,10 +87,13 @@ SECURITY! Cargo's ordering 20 crates of ________! On the nearly empty station, all that could be heard were the sounds of __________. I cannot comply with that order, meatbag. My _____ module is malfunctioning. _______ was thrown out the airlock after ___________. +Real men accomplish their objectives by _________. How did I pass the time during a slow shift? Why did the lizard cross the road? +Space lag is primarily caused by ___________. Back in my day, we had to clone people with ________. What's the worst thing a wizard can summon? +What is the rarest substance known to Nanotrasen? The chaplain stopped performing marriages after seeing ___________. The gods were too busy with _______ to respond to _______. The Roboticist was fired after naming the borgs ______ and _________. diff --git a/strings/cas_white.txt b/strings/cas_white.txt index 4e5e920a959..506f6f6c652 100644 --- a/strings/cas_white.txt +++ b/strings/cas_white.txt @@ -3,12 +3,12 @@ Having sex in the maintenance tunnels. Space 'Nam. Space lesbians. Space Hitler. +Space Asshole. Ragin' mages. Very ragin' bullshit mages. Tunnel clowns. Corgi puppies! A loose cannon detective. -A catsplosion. Mime porn. That fukken disk. G-g-g-ghosts! @@ -17,12 +17,14 @@ Woody-chan. Meaty ores. Yet another explosion in Toxins. The Captain thinking they're a badass. +Ahhhhhhperatives. Mech bumper cars. Purrbation. Baymed. Being in a cult. Racially biased lawsets. Abusing Law 2 to get laid. +Harm, a small rural town in Germany. Xeno fetishists. Running naked through a plasma fire. Gibtonite. @@ -34,21 +36,24 @@ Her smuggler's satchel. Ian and Lisa fucking like rabbits. A Chief Engineer who can't set up the engine. Being sucked out into space. +A whole bunch of spiders in a SWAT suit. Getting robusted with a toolbox. Officer Beepsky. Lying to the AI about human harm. The grey tide. ASS BLAST USA. -Fucking plasmamen. +The mechanics of plasmaman sex. Lavaland. Chainsaws for hands. Photocopies of the entire crew's asses. Venus human traps. Clown's Tears. Walking mushroom cockfights. +Improper comdom use. Greentext. Coating the whole station in blood. Defusing a syndicate bomb with another bomb. +Going braindead mid-murder. A petsplosion. Meat spikes. Collecting the crew's brains. @@ -63,6 +68,7 @@ Catgirls. An escape pod cuddle puddle. Code Delta. Supermatter undergarments. +A permaban. Stealing all the miners' ore. Bluespace artillery. Poly reading porn over the radio again. @@ -74,6 +80,7 @@ Five hundred ice spiders. Cablecuffs. Hulk, TK and X-Ray. Paranoia. +Putting the boots to him, medium style. ERP-seeking meteors. Paperwork HoPs. A sexy clown. @@ -102,6 +109,7 @@ Gyrating slimes. A motherfucking sorcerer. Ash storms. Telescience. +Nuke ops buying nothing but soap. Anatomically correct borgs. The dixel. Friendly neighborhood death squads. @@ -130,7 +138,7 @@ Forgetting you're a traitor. Itching powder. Some overpowered bullshit. Griff. -Ash walkers. +Ash drakes. A fascist captain. FREE DRONE. Memes. @@ -188,8 +196,9 @@ Doctor's Delight. Plasmaman strippers. A Quartermaster who WON'T STOP ordering guns. Space lag. +Polishing the captain's laser rifle. That one asshole double agent. -The Beepsky Rant. +A surprise visit from Nanotrasen's CEO. The bleeding, dismembered, beautiful corpse of the clown. A glass of ...what? Teaching a silicon the Birds and the Bees. @@ -217,15 +226,19 @@ Enough morphine to put the entire station down. A defective comdom. Cleanbot. A beaker of dried space carp penis. +An Ian storm. voxtest2. Nuking it from orbit. +My senpAI. Harmbatonning. A Nanotrasen D-Notice. TALKING MIMES. The lusty xenomorph maid, Using assistants as human shields. Sentient securitrons. +Piloting the station into the nearest sun. Decorative C4. +Lizard rights. A universal recorder endlessly reciting porn. The suicide HoPline. Cultism. @@ -233,6 +246,7 @@ A corgi orgy. Medbay stutterwhores. The scrubbers uncontrollably spewing cum. The lawyer's job. +Emoting slowly drawing a gun, then slowly cocking the trigger, then slowly preparing to shoot... NAR-SIE HAS RISEN. Pierrot's Throat. A clown bomb. @@ -243,6 +257,7 @@ The best cookie. The wizard with his staff inserted into his anus. The chef masturbating with a bowl of lukewarm spaghetti. Writing out Woody's Got Wood in crayon. +Dismemberment. Begging the gods for free stuff. Whining to the gods after getting robusted. Committing sudoku. diff --git a/tgstation.dme b/tgstation.dme index 3f52c41a648..d47f1928a1a 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -28,6 +28,7 @@ #include "code\__DEFINES\clothing.dm" #include "code\__DEFINES\combat.dm" #include "code\__DEFINES\contracts.dm" +#include "code\__DEFINES\events.dm" #include "code\__DEFINES\flags.dm" #include "code\__DEFINES\genetics.dm" #include "code\__DEFINES\hud.dm" @@ -296,6 +297,7 @@ #include "code\game\gamemodes\changeling\powers\hivemind.dm" #include "code\game\gamemodes\changeling\powers\humanform.dm" #include "code\game\gamemodes\changeling\powers\lesserform.dm" +#include "code\game\gamemodes\changeling\powers\linglink.dm" #include "code\game\gamemodes\changeling\powers\mimic_voice.dm" #include "code\game\gamemodes\changeling\powers\mutations.dm" #include "code\game\gamemodes\changeling\powers\panacea.dm" @@ -577,6 +579,7 @@ #include "code\game\objects\items\devices\laserpointer.dm" #include "code\game\objects\items\devices\lightreplacer.dm" #include "code\game\objects\items\devices\megaphone.dm" +#include "code\game\objects\items\devices\modificationkit.dm" #include "code\game\objects\items\devices\multitool.dm" #include "code\game\objects\items\devices\paicard.dm" #include "code\game\objects\items\devices\pipe_painter.dm" @@ -952,6 +955,7 @@ #include "code\modules\cargo\exports\sheets.dm" #include "code\modules\cargo\exports\tools.dm" #include "code\modules\cargo\exports\weapons.dm" +#include "code\modules\chatter\chatter.dm" #include "code\modules\client\asset_cache.dm" #include "code\modules\client\client defines.dm" #include "code\modules\client\client procs.dm" @@ -1010,9 +1014,9 @@ #include "code\modules\clothing\under\jobs\engineering.dm" #include "code\modules\clothing\under\jobs\medsci.dm" #include "code\modules\clothing\under\jobs\security.dm" +#include "code\modules\crafting\craft.dm" #include "code\modules\crafting\guncrafting.dm" #include "code\modules\crafting\recipes.dm" -#include "code\modules\crafting\table.dm" #include "code\modules\detectivework\detective_work.dm" #include "code\modules\detectivework\evidence.dm" #include "code\modules\detectivework\footprints_and_rag.dm" @@ -1036,6 +1040,7 @@ #include "code\modules\events\dust.dm" #include "code\modules\events\electrical_storm.dm" #include "code\modules\events\false_alarm.dm" +#include "code\modules\events\ghost_role.dm" #include "code\modules\events\immovable_rod.dm" #include "code\modules\events\ion_storm.dm" #include "code\modules\events\mass_hallucination.dm" @@ -1431,6 +1436,7 @@ #include "code\modules\mob\living\simple_animal\hostile\mushroom.dm" #include "code\modules\mob\living\simple_animal\hostile\nanotrasen.dm" #include "code\modules\mob\living\simple_animal\hostile\pirate.dm" +#include "code\modules\mob\living\simple_animal\hostile\reenactors.dm" #include "code\modules\mob\living\simple_animal\hostile\russian.dm" #include "code\modules\mob\living\simple_animal\hostile\skeleton.dm" #include "code\modules\mob\living\simple_animal\hostile\statue.dm" diff --git a/tgui/assets/tgui.css b/tgui/assets/tgui.css index 1db67cd4b49..35e16349ab3 100644 --- a/tgui/assets/tgui.css +++ b/tgui/assets/tgui.css @@ -1 +1 @@ -@charset "utf-8";body,html{box-sizing:border-box;height:100%;margin:0}html{overflow:hidden;cursor:default}body{overflow:auto;font-family:Verdana,Geneva,sans-serif;font-size:12px;color:#fff;background-color:#2a2a2a;background-image:linear-gradient(180deg,#2a2a2a 0,#202020);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2a2a2a',endColorstr='#ff202020',GradientType=0)}*,:after,:before{box-sizing:inherit}h1,h2,h3,h4{display:inline-block;margin:0;padding:6px 0}h1{font-size:18px}h2{font-size:16px}h3{font-size:14px}h4{font-size:12px}body.nanotrasen{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjAiIHZpZXdCb3g9IjAgMCA0MjUgMjAwIiBvcGFjaXR5PSIuMzMiPgogIDxwYXRoIGQ9Im0gMTc4LjAwMzk5LDAuMDM4NjkgLTcxLjIwMzkzLDAgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIC02Ljc2MTM0LDYuMDI1NTUgbCAwLDE4Ny44NzE0NyBhIDYuNzYxMzQyMiw2LjAyNTU0OTUgMCAwIDAgNi43NjEzNCw2LjAyNTU0IGwgNTMuMTA3MiwwIGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCA2Ljc2MTM1LC02LjAyNTU0IGwgMCwtMTAxLjU0NDAxOCA3Mi4yMTYyOCwxMDQuNjk5Mzk4IGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCA1Ljc2MDE1LDIuODcwMTYgbCA3My41NTQ4NywwIGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCA2Ljc2MTM1LC02LjAyNTU0IGwgMCwtMTg3Ljg3MTQ3IGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCAtNi43NjEzNSwtNi4wMjU1NSBsIC01NC43MTY0NCwwIGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCAtNi43NjEzMyw2LjAyNTU1IGwgMCwxMDIuNjE5MzUgTCAxODMuNzY0MTMsMi45MDg4NiBhIDYuNzYxMzQyMiw2LjAyNTU0OTUgMCAwIDAgLTUuNzYwMTQsLTIuODcwMTcgeiIgLz4KICA8cGF0aCBkPSJNIDQuODQ0NjMzMywyMi4xMDg3NSBBIDEzLjQxMjAzOSwxMi41MDE4NDIgMCAwIDEgMTMuNDc3NTg4LDAuMDM5MjQgbCA2Ni4xMTgzMTUsMCBhIDUuMzY0ODE1OCw1LjAwMDczNyAwIDAgMSA1LjM2NDgyMyw1LjAwMDczIGwgMCw3OS44NzkzMSB6IiAvPgogIDxwYXRoIGQ9Im0gNDIwLjE1NTM1LDE3Ny44OTExOSBhIDEzLjQxMjAzOCwxMi41MDE4NDIgMCAwIDEgLTguNjMyOTUsMjIuMDY5NTEgbCAtNjYuMTE4MzIsMCBhIDUuMzY0ODE1Miw1LjAwMDczNyAwIDAgMSAtNS4zNjQ4MiwtNS4wMDA3NCBsIDAsLTc5Ljg3OTMxIHoiIC8+Cjwvc3ZnPgo8IS0tIFRoaXMgd29yayBpcyBsaWNlbnNlZCB1bmRlciBhIENyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24tU2hhcmVBbGlrZSA0LjAgSW50ZXJuYXRpb25hbCBMaWNlbnNlLiAtLT4KPCEtLSBodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS1zYS80LjAvIC0tPgo=") no-repeat fixed 50%/70% 70%,linear-gradient(180deg,#2a2a2a 0,#202020);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2a2a2a',endColorstr='#ff202020',GradientType=0)}body.nanotrasen .normal{color:#40628a}body.nanotrasen .good{color:#537d29}body.nanotrasen .average{color:#be6209}body.nanotrasen .bad{color:#b00e0e}body.nanotrasen .highlight{color:#8ba5c4}body.nanotrasen main{display:block;margin-top:32px;padding:2px 6px 0}body.nanotrasen hr{height:2px;background-color:#40628a;border:none}body.nanotrasen .hidden{display:none}body.nanotrasen .bar .barText,body.nanotrasen span.button{color:#fff;font-size:12px;font-weight:400;font-style:normal;text-decoration:none}body.nanotrasen .bold{font-weight:700}body.nanotrasen .italic{font-style:italic}body.nanotrasen [unselectable=on]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body.nanotrasen div[data-tooltip],body.nanotrasen span[data-tooltip]{position:relative}body.nanotrasen div[data-tooltip]:after,body.nanotrasen span[data-tooltip]:after{position:absolute;display:block;z-index:2;width:250px;padding:10px;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);visibility:hidden;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";white-space:normal;text-align:left;content:attr(data-tooltip);transition:all .5s;border:1px solid #272727;background-color:#363636}body.nanotrasen div[data-tooltip]:hover:after,body.nanotrasen span[data-tooltip]:hover:after{visibility:visible;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}body.nanotrasen div[data-tooltip].tooltip-top:after,body.nanotrasen span[data-tooltip].tooltip-top:after{bottom:100%;left:50%;-webkit-transform:translateX(-50%) translateY(8px);-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.nanotrasen div[data-tooltip].tooltip-bottom:after,body.nanotrasen div[data-tooltip].tooltip-top:hover:after,body.nanotrasen span[data-tooltip].tooltip-bottom:after,body.nanotrasen span[data-tooltip].tooltip-top:hover:after{-webkit-transform:translateX(-50%) translateY(-8px);-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.nanotrasen div[data-tooltip].tooltip-bottom:after,body.nanotrasen span[data-tooltip].tooltip-bottom:after{top:100%;left:50%}body.nanotrasen div[data-tooltip].tooltip-bottom:hover:after,body.nanotrasen span[data-tooltip].tooltip-bottom:hover:after{-webkit-transform:translateX(-50%) translateY(8px);-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.nanotrasen div[data-tooltip].tooltip-left:after,body.nanotrasen span[data-tooltip].tooltip-left:after{top:50%;right:100%;-webkit-transform:translateX(8px) translateY(-50%);-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.nanotrasen div[data-tooltip].tooltip-left:hover:after,body.nanotrasen div[data-tooltip].tooltip-right:after,body.nanotrasen span[data-tooltip].tooltip-left:hover:after,body.nanotrasen span[data-tooltip].tooltip-right:after{-webkit-transform:translateX(-8px) translateY(-50%);-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.nanotrasen div[data-tooltip].tooltip-right:after,body.nanotrasen span[data-tooltip].tooltip-right:after{top:50%;left:100%}body.nanotrasen div[data-tooltip].tooltip-right:hover:after,body.nanotrasen span[data-tooltip].tooltip-right:hover:after{-webkit-transform:translateX(8px) translateY(-50%);-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.nanotrasen .bar{display:inline-block;position:relative;vertical-align:middle;width:100%;height:20px;line-height:17px;padding:1px;border:1px solid #40628a;background:#272727}body.nanotrasen .bar .barText{position:absolute;top:0;right:3px}body.nanotrasen .bar .barFill{display:block;height:100%;transition:background-color 1s;background-color:#40628a}body.nanotrasen .bar .barFill.good{background-color:#537d29}body.nanotrasen .bar .barFill.average{background-color:#be6209}body.nanotrasen .bar .barFill.bad{background-color:#b00e0e}body.nanotrasen span.button{display:inline-block;vertical-align:middle;height:20px;line-height:17px;padding:0 5px;white-space:nowrap;border:1px solid #272727}body.nanotrasen span.button .fa{padding-right:2px}body.nanotrasen span.button.normal{transition:background-color .5s;background-color:#40628a}body.nanotrasen span.button.normal.active:focus,body.nanotrasen span.button.normal.active:hover{transition:background-color .25s;background-color:#4f78aa;outline:0}body.nanotrasen span.button.disabled{transition:background-color .5s;background-color:#999}body.nanotrasen span.button.disabled.active:focus,body.nanotrasen span.button.disabled.active:hover{transition:background-color .25s;background-color:#a8a8a8;outline:0}body.nanotrasen span.button.selected{transition:background-color .5s;background-color:#2f943c}body.nanotrasen span.button.selected.active:focus,body.nanotrasen span.button.selected.active:hover{transition:background-color .25s;background-color:#3ab84b;outline:0}body.nanotrasen span.button.caution{transition:background-color .5s;background-color:#9a9d00}body.nanotrasen span.button.caution.active:focus,body.nanotrasen span.button.caution.active:hover{transition:background-color .25s;background-color:#ced200;outline:0}body.nanotrasen span.button.danger{transition:background-color .5s;background-color:#9d0808}body.nanotrasen span.button.danger.active:focus,body.nanotrasen span.button.danger.active:hover{transition:background-color .25s;background-color:#ce0b0b;outline:0}body.nanotrasen span.button.gridable{width:125px;margin:2px 0}body.nanotrasen span.button+span:not(.button),body.nanotrasen span:not(.button)+span.button{margin-left:5px}body.nanotrasen div.display{width:100%;padding:4px;margin:6px 0;background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#54000000,endColorStr=#54000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#54000000,endColorStr=#54000000);background-color:rgba(0,0,0,.33);box-shadow:inset 0 0 5px rgba(0,0,0,.5)}body.nanotrasen div.display header,body.nanotrasen div.subdisplay header{display:block;position:relative;width:100%;padding:0 4px;margin-bottom:6px;color:#fff;border-bottom:2px solid #40628a}body.nanotrasen div.display header .buttonRight,body.nanotrasen div.subdisplay header .buttonRight{position:absolute;bottom:6px;right:4px}body.nanotrasen div.display article,body.nanotrasen div.subdisplay article{display:table;width:100%;border-collapse:collapse}body.nanotrasen input{display:inline-block;vertical-align:middle;height:20px;line-height:17px;padding:0 5px;white-space:nowrap;color:#000;background-color:#fff;border:1px solid #272727}body.nanotrasen input::-webkit-input-placeholder{color:#999}body.nanotrasen input::-moz-placeholder{color:#999}body.nanotrasen input:-ms-input-placeholder{color:#999}body.nanotrasen input::placeholder{color:#999}body.nanotrasen input::-ms-clear{display:none}body.nanotrasen svg.linegraph{overflow:hidden}body.nanotrasen div.notice{margin:8px 0;padding:4px;box-shadow:none;color:#000;font-weight:700;font-style:italic;background-color:#bb9b68;background-image:repeating-linear-gradient(-45deg,#bb9b68,#bb9b68 10px,#b1905d 0,#b1905d 20px)}body.nanotrasen div.notice .label{color:#000}body.nanotrasen div.notice .content:only-of-type{padding:0}body.nanotrasen div.notice hr{background-color:#272727}body.nanotrasen div.resize{position:fixed;bottom:0;right:0;width:0;height:0;border-style:solid;border-width:0 0 45px 45px;border-color:transparent transparent #363636;-webkit-transform:rotate(1turn);-ms-transform:rotate(1turn);transform:rotate(1turn)}body.nanotrasen section .content,body.nanotrasen section .label,body.nanotrasen section .line,body.syndicate section .content,body.syndicate section .label,body.syndicate section .line{display:table-cell;margin:0;text-align:left;vertical-align:middle;padding:3px 2px}body.nanotrasen section{display:table-row;width:100%}body.nanotrasen section:not(:first-child){padding-top:4px}body.nanotrasen section.candystripe:nth-child(even){background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000);background-color:rgba(0,0,0,.2)}body.nanotrasen section .label{width:1%;padding-right:32px;white-space:nowrap;color:#8ba5c4}body.nanotrasen section .content:not(:last-child){padding-right:16px}body.nanotrasen section .line{width:100%}body.nanotrasen div.subdisplay{width:100%;margin:0}body.nanotrasen header.titlebar .close,body.nanotrasen header.titlebar .minimize{display:inline-block;position:relative;padding:7px;margin:-7px;color:#8ba5c4}body.nanotrasen header.titlebar .close:hover,body.nanotrasen header.titlebar .minimize:hover{color:#9cb2cd}body.nanotrasen header.titlebar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;background-color:#363636;border-bottom:1px solid #161616;box-shadow:0 3px 3px rgba(0,0,0,.1)}body.nanotrasen header.titlebar .statusicon{position:absolute;top:4px;left:12px;transition:color .5s}body.nanotrasen header.titlebar .title{position:absolute;top:6px;left:46px;color:#8ba5c4;font-size:16px;white-space:nowrap}body.nanotrasen header.titlebar .minimize{position:absolute;top:6px;right:46px}body.nanotrasen header.titlebar .close{position:absolute;top:4px;right:12px}body.syndicate{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjAiIHZpZXdCb3g9IjAgMCAyMDAgMjg5Ljc0MiIgb3BhY2l0eT0iLjMzIj4KICA8cGF0aCBkPSJtIDkzLjUzNzY3NywwIGMgLTE4LjExMzEyNSwwIC0zNC4yMjAxMzMsMy4xMTE2NCAtNDguMzIzNDg0LDkuMzM0MzcgLTEzLjk2NTA5Miw2LjIyMTY3IC0yNC42MTI0NDIsMTUuMDcxMTQgLTMxLjk0MDY1MSwyNi41NDcxIC03LjE4OTkzOTgsMTEuMzM3ODkgLTEwLjMwMTIyNjYsMjQuNzQ5MTEgLTEwLjMwMTIyNjYsNDAuMjM0NzggMCwxMC42NDY2MiAyLjcyNTAwMjYsMjAuNDY0NjUgOC4xNzUxMTE2LDI5LjQ1MjU4IDUuNjE1Mjc3LDguOTg2ODYgMTQuMDM4Mjc3LDE3LjM1MjA0IDI1LjI2ODgyMSwyNS4wOTQzNiAxMS4yMzA1NDQsNy42MDUzMSAyNi41MDc0MjEsMTUuNDE4MzUgNDUuODMwNTE0LDIzLjQzNzgyIDE5Ljk4Mzc0OCw4LjI5NTU3IDM0Ljg0ODg0OCwxNS41NTQ3MSA0NC41OTI5OTgsMjEuNzc2MzggOS43NDQxNCw2LjIyMjczIDE2Ljc2MTcsMTIuODU4NSAyMS4wNTU3MiwxOS45MDk1MSA0LjI5NDA0LDcuMDUyMDggNi40NDE5MywxNS43NjQwOCA2LjQ0MTkzLDI2LjEzNDU5IDAsMTYuMTc3MDIgLTUuMjAxOTYsMjguNDgyMjIgLTE1LjYwNjczLDM2LjkxNjgyIC0xMC4yMzk2LDguNDM0NyAtMjUuMDIyMDMsMTIuNjUyMyAtNDQuMzQ1MTY5LDEyLjY1MjMgLTE0LjAzODE3MSwwIC0yNS41MTUyNDcsLTEuNjU5NCAtMzQuNDMzNjE4LC00Ljk3NzcgLTguOTE4MzcsLTMuNDU2NiAtMTYuMTg1NTcyLC04LjcxMTMgLTIxLjgwMDgzOSwtMTUuNzYzMyAtNS42MTUyNzcsLTcuMDUyMSAtMTAuMDc0Nzk1LC0xNi42NjA4OCAtMTMuMzc3ODk5LC0yOC44MjgxMiBsIC0yNC43NzMxNjI2MjkzOTQ1LDAgMCw1Ni44MjYzMiBDIDMzLjg1Njc2OSwyODYuMDc2MDEgNjMuNzQ5MDQsMjg5Ljc0MjAxIDg5LjY3ODM4MywyODkuNzQyMDEgYyAxNi4wMjAwMjcsMCAzMC43MTk3ODcsLTEuMzgyNyA0NC4wOTczMzcsLTQuMTQ3OSAxMy41NDI3MiwtMi45MDQzIDI1LjEwNDEsLTcuNDY3NiAzNC42ODMwOSwtMTMuNjg5MyA5Ljc0NDEzLC02LjM1OTcgMTcuMzQwNDIsLTE0LjUxOTUgMjIuNzkwNTIsLTI0LjQ3NDggNS40NTAxLC0xMC4wOTMzMiA4LjE3NTExLC0yMi4zOTk1OSA4LjE3NTExLC0zNi45MTY4MiAwLC0xMi45OTc2NCAtMy4zMDIxLC0yNC4zMzUzOSAtOS45MDgyOSwtMzQuMDE0NiAtNi40NDEwNSwtOS44MTcyNSAtMTUuNTI1NDUsLTE4LjUyNzA3IC0yNy4yNTE0NiwtMjYuMTMxMzMgLTExLjU2MDg1LC03LjYwNDI3IC0yNy45MTA4MywtMTUuODMxNDIgLTQ5LjA1MDY2LC0yNC42ODAyMiAtMTcuNTA2NDQsLTcuMTkwMTIgLTMwLjcxOTY2OCwtMTMuNjg5NDggLTM5LjYzODAzOCwtMTkuNDk3MDEgLTguOTE4MzcxLC01LjgwNzUyIC0xOC42MDc0NzQsLTEyLjQzNDA5IC0yNC4wOTY1MjQsLTE4Ljg3NDE3IC01LjQyNjA0MywtNi4zNjYxNiAtOS42NTg4MjYsLTE1LjA3MDAzIC05LjY1ODgyNiwtMjQuODg3MjkgMCwtOS4yNjQwMSAyLjA3NTQxNCwtMTcuMjEzNDUgNi4yMjM0NTQsLTIzLjg1MDMzIDExLjA5ODI5OCwtMTQuMzk3NDggNDEuMjg2NjM4LC0xLjc5NTA3IDQ1LjA3NTYwOSwyNC4zNDc2MiA0LjgzOTM5Miw2Ljc3NDkxIDguODQ5MzUsMTYuMjQ3MjkgMTIuMDI5NTE1LDI4LjQxNTYgbCAyMC41MzIzNCwwIDAsLTU1Ljk5OTY3IGMgLTQuNDc4MjUsLTUuOTI0NDggLTkuOTU0ODgsLTEwLjYzMjIyIC0xNS45MDgzNywtMTQuMzc0MTEgMS42NDA1NSwwLjQ3OTA1IDMuMTkwMzksMS4wMjM3NiA0LjYzODY1LDEuNjQwMjQgNi40OTg2MSwyLjYyNjA3IDEyLjE2NzkzLDcuMzI3NDcgMTcuMDA3MywxNC4xMDM0NSA0LjgzOTM5LDYuNzc0OTEgOC44NDkzNSwxNi4yNDU2NyAxMi4wMjk1MiwyOC40MTM5NyAwLDAgOC40ODEyOCwtMC4xMjg5NCA4LjQ4OTc4LC0wLjAwMiAwLjQxNzc2LDYuNDE0OTQgLTEuNzUzMzksOS40NTI4NiAtNC4xMjM0MiwxMi41NjEwNCAtMi40MTc0LDMuMTY5NzggLTUuMTQ0ODYsNi43ODk3MyAtNC4wMDI3OCwxMy4wMDI5IDEuNTA3ODYsOC4yMDMxOCAxMC4xODM1NCwxMC41OTY0MiAxNC42MjE5NCw5LjMxMTU0IC0zLjMxODQyLC0wLjQ5OTExIC01LjMxODU1LC0xLjc0OTQ4IC01LjMxODU1LC0xLjc0OTQ4IDAsMCAxLjg3NjQ2LDAuOTk4NjggNS42NTExNywtMS4zNTk4MSAtMy4yNzY5NSwwLjk1NTcxIC0xMC43MDUyOSwtMC43OTczOCAtMTEuODAxMjUsLTYuNzYzMTMgLTAuOTU3NTIsLTUuMjA4NjEgMC45NDY1NCwtNy4yOTUxNCAzLjQwMTEzLC0xMC41MTQ4MiAyLjQ1NDYyLC0zLjIxOTY4IDUuMjg0MjYsLTYuOTU4MzEgNC42ODQzLC0xNC40ODgyNCBsIDAuMDAzLDAuMDAyIDguOTI2NzYsMCAwLC01NS45OTk2NyBjIC0xNS4wNzEyNSwtMy44NzE2OCAtMjcuNjUzMTQsLTYuMzYwNDIgLTM3Ljc0NjcxLC03LjQ2NTg2IC05Ljk1NTMxLC0xLjEwNzU1IC0yMC4xODgyMywtMS42NTk4MSAtMzAuNjk2NjEzLC0xLjY1OTgxIHogbSA3MC4zMjE2MDMsMTcuMzA4OTMgMC4yMzgwNSw0MC4zMDQ5IGMgMS4zMTgwOCwxLjIyNjY2IDIuNDM5NjUsMi4yNzgxNSAzLjM0MDgxLDMuMTA2MDIgNC44MzkzOSw2Ljc3NDkxIDguODQ5MzQsMTYuMjQ1NjYgMTIuMDI5NTEsMjguNDEzOTcgbCAyMC41MzIzNCwwIDAsLTU1Ljk5OTY3IGMgLTYuNjc3MzEsLTQuNTkzODEgLTE5LjgzNjQzLC0xMC40NzMwOSAtMzYuMTQwNzEsLTE1LjgyNTIyIHogbSAtMjguMTIwNDksNS42MDU1MSA4LjU2NDc5LDE3LjcxNjU1IGMgLTExLjk3MDM3LC02LjQ2Njk3IC0xMy44NDY3OCwtOS43MTcyNiAtOC41NjQ3OSwtMTcuNzE2NTUgeiBtIDIyLjc5NzA1LDAgYyAyLjc3MTUsNy45OTkyOSAxLjc4NzQxLDExLjI0OTU4IC00LjQ5MzU0LDE3LjcxNjU1IGwgNC40OTM1NCwtMTcuNzE2NTUgeiBtIDE1LjIyMTk1LDI0LjAwODQ4IDguNTY0NzksMTcuNzE2NTUgYyAtMTEuOTcwMzgsLTYuNDY2OTcgLTEzLjg0Njc5LC05LjcxNzI2IC04LjU2NDc5LC0xNy43MTY1NSB6IG0gMjIuNzk3MDQsMCBjIDIuNzcxNSw3Ljk5OTI5IDEuNzg3NDEsMTEuMjQ5NTggLTQuNDkzNTQsMTcuNzE2NTUgbCA0LjQ5MzU0LC0xNy43MTY1NSB6IG0gLTk5LjExMzg0LDIuMjA3NjQgOC41NjQ3OSwxNy43MTY1NSBjIC0xMS45NzAzODIsLTYuNDY2OTcgLTEzLjg0Njc4MiwtOS43MTcyNiAtOC41NjQ3OSwtMTcuNzE2NTUgeiBtIDIyLjc5NTQyLDAgYyAyLjc3MTUsNy45OTkyOSAxLjc4NzQxLDExLjI0OTU4IC00LjQ5MzU0LDE3LjcxNjU1IGwgNC40OTM1NCwtMTcuNzE2NTUgeiIgLz4KPC9zdmc+CjwhLS0gVGhpcyB3b3JrIGlzIGxpY2Vuc2VkIHVuZGVyIGEgQ3JlYXRpdmUgQ29tbW9ucyBBdHRyaWJ1dGlvbi1TaGFyZUFsaWtlIDQuMCBJbnRlcm5hdGlvbmFsIExpY2Vuc2UuIC0tPgo8IS0tIGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LXNhLzQuMC8gLS0+Cg==") no-repeat fixed 50%/70% 70%,linear-gradient(180deg,#750000 0,#340404);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff750000',endColorstr='#ff340404',GradientType=0)}body.syndicate .normal{color:#40628a}body.syndicate .good{color:#73e573}body.syndicate .average{color:#be6209}body.syndicate .bad{color:#b00e0e}body.syndicate .highlight{color:#000}body.syndicate main{display:block;margin-top:32px;padding:2px 6px 0}body.syndicate hr{height:2px;background-color:#272727;border:none}body.syndicate .hidden{display:none}body.syndicate .bar .barText,body.syndicate span.button{color:#fff;font-size:12px;font-weight:400;font-style:normal;text-decoration:none}body.syndicate .bold{font-weight:700}body.syndicate .italic{font-style:italic}body.syndicate [unselectable=on]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body.syndicate div[data-tooltip],body.syndicate span[data-tooltip]{position:relative}body.syndicate div[data-tooltip]:after,body.syndicate span[data-tooltip]:after{position:absolute;display:block;z-index:2;width:250px;padding:10px;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);visibility:hidden;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";white-space:normal;text-align:left;content:attr(data-tooltip);transition:all .5s;border:1px solid #272727;background-color:#363636}body.syndicate div[data-tooltip]:hover:after,body.syndicate span[data-tooltip]:hover:after{visibility:visible;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}body.syndicate div[data-tooltip].tooltip-top:after,body.syndicate span[data-tooltip].tooltip-top:after{bottom:100%;left:50%;-webkit-transform:translateX(-50%) translateY(8px);-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.syndicate div[data-tooltip].tooltip-bottom:after,body.syndicate div[data-tooltip].tooltip-top:hover:after,body.syndicate span[data-tooltip].tooltip-bottom:after,body.syndicate span[data-tooltip].tooltip-top:hover:after{-webkit-transform:translateX(-50%) translateY(-8px);-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.syndicate div[data-tooltip].tooltip-bottom:after,body.syndicate span[data-tooltip].tooltip-bottom:after{top:100%;left:50%}body.syndicate div[data-tooltip].tooltip-bottom:hover:after,body.syndicate span[data-tooltip].tooltip-bottom:hover:after{-webkit-transform:translateX(-50%) translateY(8px);-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.syndicate div[data-tooltip].tooltip-left:after,body.syndicate span[data-tooltip].tooltip-left:after{top:50%;right:100%;-webkit-transform:translateX(8px) translateY(-50%);-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.syndicate div[data-tooltip].tooltip-left:hover:after,body.syndicate div[data-tooltip].tooltip-right:after,body.syndicate span[data-tooltip].tooltip-left:hover:after,body.syndicate span[data-tooltip].tooltip-right:after{-webkit-transform:translateX(-8px) translateY(-50%);-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.syndicate div[data-tooltip].tooltip-right:after,body.syndicate span[data-tooltip].tooltip-right:after{top:50%;left:100%}body.syndicate div[data-tooltip].tooltip-right:hover:after,body.syndicate span[data-tooltip].tooltip-right:hover:after{-webkit-transform:translateX(8px) translateY(-50%);-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.syndicate .bar{display:inline-block;position:relative;vertical-align:middle;width:100%;height:20px;line-height:17px;padding:1px;border:1px solid #000;background:#272727}body.syndicate .bar .barText{position:absolute;top:0;right:3px}body.syndicate .bar .barFill{display:block;height:100%;transition:background-color 1s;background-color:#000}body.syndicate .bar .barFill.good{background-color:#73e573}body.syndicate .bar .barFill.average{background-color:#be6209}body.syndicate .bar .barFill.bad{background-color:#b00e0e}body.syndicate span.button{display:inline-block;vertical-align:middle;height:20px;line-height:17px;padding:0 5px;white-space:nowrap;border:1px solid #272727}body.syndicate span.button .fa{padding-right:2px}body.syndicate span.button.normal{transition:background-color .5s;background-color:#397439}body.syndicate span.button.normal.active:focus,body.syndicate span.button.normal.active:hover{transition:background-color .25s;background-color:#4a964a;outline:0}body.syndicate span.button.disabled{transition:background-color .5s;background-color:#363636}body.syndicate span.button.disabled.active:focus,body.syndicate span.button.disabled.active:hover{transition:background-color .25s;background-color:#545454;outline:0}body.syndicate span.button.selected{transition:background-color .5s;background-color:#9d0808}body.syndicate span.button.selected.active:focus,body.syndicate span.button.selected.active:hover{transition:background-color .25s;background-color:#ce0b0b;outline:0}body.syndicate span.button.caution{transition:background-color .5s;background-color:#be6209}body.syndicate span.button.caution.active:focus,body.syndicate span.button.caution.active:hover{transition:background-color .25s;background-color:#eb790b;outline:0}body.syndicate span.button.danger{transition:background-color .5s;background-color:#9a9d00}body.syndicate span.button.danger.active:focus,body.syndicate span.button.danger.active:hover{transition:background-color .25s;background-color:#ced200;outline:0}body.syndicate span.button.gridable{width:125px;margin:2px 0}body.syndicate span.button+span:not(.button),body.syndicate span:not(.button)+span.button{margin-left:5px}body.syndicate div.display{width:100%;padding:4px;margin:6px 0;background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#80000000,endColorStr=#80000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#80000000,endColorStr=#80000000);background-color:rgba(0,0,0,.5);box-shadow:inset 0 0 5px rgba(0,0,0,.75)}body.syndicate div.display header,body.syndicate div.subdisplay header{display:block;position:relative;width:100%;padding:0 4px;margin-bottom:6px;color:#fff;border-bottom:2px solid #272727}body.syndicate div.display header .buttonRight,body.syndicate div.subdisplay header .buttonRight{position:absolute;bottom:6px;right:4px}body.syndicate div.display article,body.syndicate div.subdisplay article{display:table;width:100%;border-collapse:collapse}body.syndicate input{display:inline-block;vertical-align:middle;height:20px;line-height:17px;padding:0 5px;white-space:nowrap;color:#fff;background-color:#9d0808;border:1px solid #272727}body.syndicate input::-webkit-input-placeholder{color:#999}body.syndicate input::-moz-placeholder{color:#999}body.syndicate input:-ms-input-placeholder{color:#999}body.syndicate input::placeholder{color:#999}body.syndicate input::-ms-clear{display:none}body.syndicate svg.linegraph{overflow:hidden}body.syndicate div.notice{margin:8px 0;padding:4px;box-shadow:none;color:#000;font-weight:700;font-style:italic;background-color:#750000;background-image:repeating-linear-gradient(-45deg,#750000,#750000 10px,#910101 0,#910101 20px)}body.syndicate div.notice .label{color:#000}body.syndicate div.notice .content:only-of-type{padding:0}body.syndicate div.notice hr{background-color:#272727}body.syndicate div.resize{position:fixed;bottom:0;right:0;width:0;height:0;border-style:solid;border-width:0 0 45px 45px;border-color:transparent transparent #363636;-webkit-transform:rotate(1turn);-ms-transform:rotate(1turn);transform:rotate(1turn)}body.syndicate section .content,body.syndicate section .label,body.syndicate section .line{display:table-cell;margin:0;text-align:left;vertical-align:middle;padding:3px 2px}body.syndicate section{display:table-row;width:100%}body.syndicate section:not(:first-child){padding-top:4px}body.syndicate section.candystripe:nth-child(even){background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000);background-color:rgba(0,0,0,.2)}body.syndicate section .label{width:1%;padding-right:32px;white-space:nowrap;color:#fff}body.syndicate section .content:not(:last-child){padding-right:16px}body.syndicate section .line{width:100%}body.syndicate div.subdisplay{width:100%;margin:0}body.syndicate header.titlebar .close,body.syndicate header.titlebar .minimize{display:inline-block;position:relative;padding:7px;margin:-7px;color:#e74242}body.syndicate header.titlebar .close:hover,body.syndicate header.titlebar .minimize:hover{color:#eb5e5e}body.syndicate header.titlebar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;background-color:#363636;border-bottom:1px solid #161616;box-shadow:0 3px 3px rgba(0,0,0,.1)}body.syndicate header.titlebar .statusicon{position:absolute;top:4px;left:12px;transition:color .5s}body.syndicate header.titlebar .title{position:absolute;top:6px;left:46px;color:#e74242;font-size:16px;white-space:nowrap}body.syndicate header.titlebar .minimize{position:absolute;top:6px;right:46px}body.syndicate header.titlebar .close{position:absolute;top:4px;right:12px}.no-icons header.titlebar .statusicon{font-size:20px}.no-icons header.titlebar .statusicon:after{content:"O"}.no-icons header.titlebar .minimize{top:-2px;font-size:20px}.no-icons header.titlebar .minimize:after{content:"—"}.no-icons header.titlebar .close{font-size:20px}.no-icons header.titlebar .close:after{content:"X"} \ No newline at end of file +@charset "utf-8";body,html{box-sizing:border-box;height:100%;margin:0}html{overflow:hidden;cursor:default}body{overflow:auto;font-family:Verdana,Geneva,sans-serif;font-size:12px;color:#fff;background-color:#2a2a2a;background-image:linear-gradient(180deg,#2a2a2a 0,#202020);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2a2a2a',endColorstr='#ff202020',GradientType=0)}*,:after,:before{box-sizing:inherit}h1,h2,h3,h4{display:inline-block;margin:0;padding:6px 0}h1{font-size:18px}h2{font-size:16px}h3{font-size:14px}h4{font-size:12px}body.nanotrasen{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+DQo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4wIiB2aWV3Qm94PSIwIDAgNDI1IDIwMCIgb3BhY2l0eT0iLjMzIj4NCiAgPHBhdGggZD0ibSAxNzguMDAzOTksMC4wMzg2OSAtNzEuMjAzOTMsMCBhIDYuNzYxMzQyMiw2LjAyNTU0OTUgMCAwIDAgLTYuNzYxMzQsNi4wMjU1NSBsIDAsMTg3Ljg3MTQ3IGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCA2Ljc2MTM0LDYuMDI1NTQgbCA1My4xMDcyLDAgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIDYuNzYxMzUsLTYuMDI1NTQgbCAwLC0xMDEuNTQ0MDE4IDcyLjIxNjI4LDEwNC42OTkzOTggYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIDUuNzYwMTUsMi44NzAxNiBsIDczLjU1NDg3LDAgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIDYuNzYxMzUsLTYuMDI1NTQgbCAwLC0xODcuODcxNDcgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIC02Ljc2MTM1LC02LjAyNTU1IGwgLTU0LjcxNjQ0LDAgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIC02Ljc2MTMzLDYuMDI1NTUgbCAwLDEwMi42MTkzNSBMIDE4My43NjQxMywyLjkwODg2IGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCAtNS43NjAxNCwtMi44NzAxNyB6IiAvPg0KICA8cGF0aCBkPSJNIDQuODQ0NjMzMywyMi4xMDg3NSBBIDEzLjQxMjAzOSwxMi41MDE4NDIgMCAwIDEgMTMuNDc3NTg4LDAuMDM5MjQgbCA2Ni4xMTgzMTUsMCBhIDUuMzY0ODE1OCw1LjAwMDczNyAwIDAgMSA1LjM2NDgyMyw1LjAwMDczIGwgMCw3OS44NzkzMSB6IiAvPg0KICA8cGF0aCBkPSJtIDQyMC4xNTUzNSwxNzcuODkxMTkgYSAxMy40MTIwMzgsMTIuNTAxODQyIDAgMCAxIC04LjYzMjk1LDIyLjA2OTUxIGwgLTY2LjExODMyLDAgYSA1LjM2NDgxNTIsNS4wMDA3MzcgMCAwIDEgLTUuMzY0ODIsLTUuMDAwNzQgbCAwLC03OS44NzkzMSB6IiAvPg0KPC9zdmc+DQo8IS0tIFRoaXMgd29yayBpcyBsaWNlbnNlZCB1bmRlciBhIENyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24tU2hhcmVBbGlrZSA0LjAgSW50ZXJuYXRpb25hbCBMaWNlbnNlLiAtLT4NCjwhLS0gaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktc2EvNC4wLyAtLT4NCg==") no-repeat fixed 50%/70% 70%,linear-gradient(180deg,#2a2a2a 0,#202020);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2a2a2a',endColorstr='#ff202020',GradientType=0)}body.nanotrasen .normal{color:#40628a}body.nanotrasen .good{color:#537d29}body.nanotrasen .average{color:#be6209}body.nanotrasen .bad{color:#b00e0e}body.nanotrasen .highlight{color:#8ba5c4}body.nanotrasen main{display:block;margin-top:32px;padding:2px 6px 0}body.nanotrasen hr{height:2px;background-color:#40628a;border:none}body.nanotrasen .hidden{display:none}body.nanotrasen .bar .barText,body.nanotrasen span.button{color:#fff;font-size:12px;font-weight:400;font-style:normal;text-decoration:none}body.nanotrasen .bold{font-weight:700}body.nanotrasen .italic{font-style:italic}body.nanotrasen [unselectable=on]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body.nanotrasen div[data-tooltip],body.nanotrasen span[data-tooltip]{position:relative}body.nanotrasen div[data-tooltip]:after,body.nanotrasen span[data-tooltip]:after{position:absolute;display:block;z-index:2;width:250px;padding:10px;-ms-transform:translateX(-50%);transform:translateX(-50%);visibility:hidden;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";white-space:normal;text-align:left;content:attr(data-tooltip);transition:all .5s;border:1px solid #272727;background-color:#363636}body.nanotrasen div[data-tooltip]:hover:after,body.nanotrasen span[data-tooltip]:hover:after{visibility:visible;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}body.nanotrasen div[data-tooltip].tooltip-top:after,body.nanotrasen span[data-tooltip].tooltip-top:after{bottom:100%;left:50%;-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.nanotrasen div[data-tooltip].tooltip-top:hover:after,body.nanotrasen span[data-tooltip].tooltip-top:hover:after{-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.nanotrasen div[data-tooltip].tooltip-bottom:after,body.nanotrasen span[data-tooltip].tooltip-bottom:after{top:100%;left:50%;-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.nanotrasen div[data-tooltip].tooltip-bottom:hover:after,body.nanotrasen span[data-tooltip].tooltip-bottom:hover:after{-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.nanotrasen div[data-tooltip].tooltip-left:after,body.nanotrasen span[data-tooltip].tooltip-left:after{top:50%;right:100%;-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.nanotrasen div[data-tooltip].tooltip-left:hover:after,body.nanotrasen span[data-tooltip].tooltip-left:hover:after{-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.nanotrasen div[data-tooltip].tooltip-right:after,body.nanotrasen span[data-tooltip].tooltip-right:after{top:50%;left:100%;-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.nanotrasen div[data-tooltip].tooltip-right:hover:after,body.nanotrasen span[data-tooltip].tooltip-right:hover:after{-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.nanotrasen .bar{display:inline-block;position:relative;vertical-align:middle;width:100%;height:20px;line-height:17px;padding:1px;border:1px solid #40628a;background:#272727}body.nanotrasen .bar .barText{position:absolute;top:0;right:3px}body.nanotrasen .bar .barFill{display:block;height:100%;transition:background-color 1s;background-color:#40628a}body.nanotrasen .bar .barFill.good{background-color:#537d29}body.nanotrasen .bar .barFill.average{background-color:#be6209}body.nanotrasen .bar .barFill.bad{background-color:#b00e0e}body.nanotrasen span.button{display:inline-block;vertical-align:middle;height:20px;line-height:17px;padding:0 5px;white-space:nowrap;border:1px solid #272727}body.nanotrasen span.button .fa{padding-right:2px}body.nanotrasen span.button.normal{transition:background-color .5s;background-color:#40628a}body.nanotrasen span.button.normal.active:focus,body.nanotrasen span.button.normal.active:hover{transition:background-color .25s;background-color:#4f78aa;outline:0}body.nanotrasen span.button.disabled{transition:background-color .5s;background-color:#999}body.nanotrasen span.button.disabled.active:focus,body.nanotrasen span.button.disabled.active:hover{transition:background-color .25s;background-color:#a8a8a8;outline:0}body.nanotrasen span.button.selected{transition:background-color .5s;background-color:#2f943c}body.nanotrasen span.button.selected.active:focus,body.nanotrasen span.button.selected.active:hover{transition:background-color .25s;background-color:#3ab84b;outline:0}body.nanotrasen span.button.caution{transition:background-color .5s;background-color:#9a9d00}body.nanotrasen span.button.caution.active:focus,body.nanotrasen span.button.caution.active:hover{transition:background-color .25s;background-color:#ced200;outline:0}body.nanotrasen span.button.danger{transition:background-color .5s;background-color:#9d0808}body.nanotrasen span.button.danger.active:focus,body.nanotrasen span.button.danger.active:hover{transition:background-color .25s;background-color:#ce0b0b;outline:0}body.nanotrasen span.button.gridable{width:125px;margin:2px 0}body.nanotrasen span.button+span:not(.button),body.nanotrasen span:not(.button)+span.button{margin-left:5px}body.nanotrasen div.display{width:100%;padding:4px;margin:6px 0;background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#54000000,endColorStr=#54000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#54000000,endColorStr=#54000000);background-color:rgba(0,0,0,.33);box-shadow:inset 0 0 5px rgba(0,0,0,.5)}body.nanotrasen div.display header,body.nanotrasen div.subdisplay header{display:block;position:relative;width:100%;padding:0 4px;margin-bottom:6px;color:#fff;border-bottom:2px solid #40628a}body.nanotrasen div.display header .buttonRight,body.nanotrasen div.subdisplay header .buttonRight{position:absolute;bottom:6px;right:4px}body.nanotrasen div.display article,body.nanotrasen div.subdisplay article{display:table;width:100%;border-collapse:collapse}body.nanotrasen input{display:inline-block;vertical-align:middle;height:20px;line-height:17px;padding:0 5px;white-space:nowrap;color:#000;background-color:#fff;border:1px solid #272727}body.nanotrasen input::-webkit-input-placeholder{color:#999}body.nanotrasen input::-moz-placeholder{color:#999}body.nanotrasen input:-ms-input-placeholder{color:#999}body.nanotrasen input::placeholder{color:#999}body.nanotrasen input::-ms-clear{display:none}body.nanotrasen svg.linegraph{overflow:hidden}body.nanotrasen div.notice{margin:8px 0;padding:4px;box-shadow:none;color:#000;font-weight:700;font-style:italic;background-color:#bb9b68;background-image:repeating-linear-gradient(-45deg,#bb9b68,#bb9b68 10px,#b1905d 0,#b1905d 20px)}body.nanotrasen div.notice .label{color:#000}body.nanotrasen div.notice .content:only-of-type{padding:0}body.nanotrasen div.notice hr{background-color:#272727}body.nanotrasen div.resize{position:fixed;bottom:0;right:0;width:0;height:0;border-style:solid;border-width:0 0 45px 45px;border-color:transparent transparent #363636;-ms-transform:rotate(1turn);transform:rotate(1turn)}body.nanotrasen section .content,body.nanotrasen section .label,body.nanotrasen section .line,body.syndicate section .content,body.syndicate section .label,body.syndicate section .line{display:table-cell;margin:0;text-align:left;vertical-align:middle;padding:3px 2px}body.nanotrasen section{display:table-row;width:100%}body.nanotrasen section:not(:first-child){padding-top:4px}body.nanotrasen section.candystripe:nth-child(even){background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000);background-color:rgba(0,0,0,.2)}body.nanotrasen section .label{width:1%;padding-right:32px;white-space:nowrap;color:#8ba5c4}body.nanotrasen section .content:not(:last-child){padding-right:16px}body.nanotrasen section .line{width:100%}body.nanotrasen div.subdisplay{width:100%;margin:0}body.nanotrasen header.titlebar .close,body.nanotrasen header.titlebar .minimize{display:inline-block;position:relative;padding:7px;margin:-7px;color:#8ba5c4}body.nanotrasen header.titlebar .close:hover,body.nanotrasen header.titlebar .minimize:hover{color:#9cb2cd}body.nanotrasen header.titlebar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;background-color:#363636;border-bottom:1px solid #161616;box-shadow:0 3px 3px rgba(0,0,0,.1)}body.nanotrasen header.titlebar .statusicon{position:absolute;top:4px;left:12px;transition:color .5s}body.nanotrasen header.titlebar .title{position:absolute;top:6px;left:46px;color:#8ba5c4;font-size:16px;white-space:nowrap}body.nanotrasen header.titlebar .minimize{position:absolute;top:6px;right:46px}body.nanotrasen header.titlebar .close{position:absolute;top:4px;right:12px}body.syndicate{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+DQo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4wIiB2aWV3Qm94PSIwIDAgMjAwIDI4OS43NDIiIG9wYWNpdHk9Ii4zMyI+DQogIDxwYXRoIGQ9Im0gOTMuNTM3Njc3LDAgYyAtMTguMTEzMTI1LDAgLTM0LjIyMDEzMywzLjExMTY0IC00OC4zMjM0ODQsOS4zMzQzNyAtMTMuOTY1MDkyLDYuMjIxNjcgLTI0LjYxMjQ0MiwxNS4wNzExNCAtMzEuOTQwNjUxLDI2LjU0NzEgLTcuMTg5OTM5OCwxMS4zMzc4OSAtMTAuMzAxMjI2NiwyNC43NDkxMSAtMTAuMzAxMjI2Niw0MC4yMzQ3OCAwLDEwLjY0NjYyIDIuNzI1MDAyNiwyMC40NjQ2NSA4LjE3NTExMTYsMjkuNDUyNTggNS42MTUyNzcsOC45ODY4NiAxNC4wMzgyNzcsMTcuMzUyMDQgMjUuMjY4ODIxLDI1LjA5NDM2IDExLjIzMDU0NCw3LjYwNTMxIDI2LjUwNzQyMSwxNS40MTgzNSA0NS44MzA1MTQsMjMuNDM3ODIgMTkuOTgzNzQ4LDguMjk1NTcgMzQuODQ4ODQ4LDE1LjU1NDcxIDQ0LjU5Mjk5OCwyMS43NzYzOCA5Ljc0NDE0LDYuMjIyNzMgMTYuNzYxNywxMi44NTg1IDIxLjA1NTcyLDE5LjkwOTUxIDQuMjk0MDQsNy4wNTIwOCA2LjQ0MTkzLDE1Ljc2NDA4IDYuNDQxOTMsMjYuMTM0NTkgMCwxNi4xNzcwMiAtNS4yMDE5NiwyOC40ODIyMiAtMTUuNjA2NzMsMzYuOTE2ODIgLTEwLjIzOTYsOC40MzQ3IC0yNS4wMjIwMywxMi42NTIzIC00NC4zNDUxNjksMTIuNjUyMyAtMTQuMDM4MTcxLDAgLTI1LjUxNTI0NywtMS42NTk0IC0zNC40MzM2MTgsLTQuOTc3NyAtOC45MTgzNywtMy40NTY2IC0xNi4xODU1NzIsLTguNzExMyAtMjEuODAwODM5LC0xNS43NjMzIC01LjYxNTI3NywtNy4wNTIxIC0xMC4wNzQ3OTUsLTE2LjY2MDg4IC0xMy4zNzc4OTksLTI4LjgyODEyIGwgLTI0Ljc3MzE2MjYyOTM5NDUsMCAwLDU2LjgyNjMyIEMgMzMuODU2NzY5LDI4Ni4wNzYwMSA2My43NDkwNCwyODkuNzQyMDEgODkuNjc4MzgzLDI4OS43NDIwMSBjIDE2LjAyMDAyNywwIDMwLjcxOTc4NywtMS4zODI3IDQ0LjA5NzMzNywtNC4xNDc5IDEzLjU0MjcyLC0yLjkwNDMgMjUuMTA0MSwtNy40Njc2IDM0LjY4MzA5LC0xMy42ODkzIDkuNzQ0MTMsLTYuMzU5NyAxNy4zNDA0MiwtMTQuNTE5NSAyMi43OTA1MiwtMjQuNDc0OCA1LjQ1MDEsLTEwLjA5MzMyIDguMTc1MTEsLTIyLjM5OTU5IDguMTc1MTEsLTM2LjkxNjgyIDAsLTEyLjk5NzY0IC0zLjMwMjEsLTI0LjMzNTM5IC05LjkwODI5LC0zNC4wMTQ2IC02LjQ0MTA1LC05LjgxNzI1IC0xNS41MjU0NSwtMTguNTI3MDcgLTI3LjI1MTQ2LC0yNi4xMzEzMyAtMTEuNTYwODUsLTcuNjA0MjcgLTI3LjkxMDgzLC0xNS44MzE0MiAtNDkuMDUwNjYsLTI0LjY4MDIyIC0xNy41MDY0NCwtNy4xOTAxMiAtMzAuNzE5NjY4LC0xMy42ODk0OCAtMzkuNjM4MDM4LC0xOS40OTcwMSAtOC45MTgzNzEsLTUuODA3NTIgLTE4LjYwNzQ3NCwtMTIuNDM0MDkgLTI0LjA5NjUyNCwtMTguODc0MTcgLTUuNDI2MDQzLC02LjM2NjE2IC05LjY1ODgyNiwtMTUuMDcwMDMgLTkuNjU4ODI2LC0yNC44ODcyOSAwLC05LjI2NDAxIDIuMDc1NDE0LC0xNy4yMTM0NSA2LjIyMzQ1NCwtMjMuODUwMzMgMTEuMDk4Mjk4LC0xNC4zOTc0OCA0MS4yODY2MzgsLTEuNzk1MDcgNDUuMDc1NjA5LDI0LjM0NzYyIDQuODM5MzkyLDYuNzc0OTEgOC44NDkzNSwxNi4yNDcyOSAxMi4wMjk1MTUsMjguNDE1NiBsIDIwLjUzMjM0LDAgMCwtNTUuOTk5NjcgYyAtNC40NzgyNSwtNS45MjQ0OCAtOS45NTQ4OCwtMTAuNjMyMjIgLTE1LjkwODM3LC0xNC4zNzQxMSAxLjY0MDU1LDAuNDc5MDUgMy4xOTAzOSwxLjAyMzc2IDQuNjM4NjUsMS42NDAyNCA2LjQ5ODYxLDIuNjI2MDcgMTIuMTY3OTMsNy4zMjc0NyAxNy4wMDczLDE0LjEwMzQ1IDQuODM5MzksNi43NzQ5MSA4Ljg0OTM1LDE2LjI0NTY3IDEyLjAyOTUyLDI4LjQxMzk3IDAsMCA4LjQ4MTI4LC0wLjEyODk0IDguNDg5NzgsLTAuMDAyIDAuNDE3NzYsNi40MTQ5NCAtMS43NTMzOSw5LjQ1Mjg2IC00LjEyMzQyLDEyLjU2MTA0IC0yLjQxNzQsMy4xNjk3OCAtNS4xNDQ4Niw2Ljc4OTczIC00LjAwMjc4LDEzLjAwMjkgMS41MDc4Niw4LjIwMzE4IDEwLjE4MzU0LDEwLjU5NjQyIDE0LjYyMTk0LDkuMzExNTQgLTMuMzE4NDIsLTAuNDk5MTEgLTUuMzE4NTUsLTEuNzQ5NDggLTUuMzE4NTUsLTEuNzQ5NDggMCwwIDEuODc2NDYsMC45OTg2OCA1LjY1MTE3LC0xLjM1OTgxIC0zLjI3Njk1LDAuOTU1NzEgLTEwLjcwNTI5LC0wLjc5NzM4IC0xMS44MDEyNSwtNi43NjMxMyAtMC45NTc1MiwtNS4yMDg2MSAwLjk0NjU0LC03LjI5NTE0IDMuNDAxMTMsLTEwLjUxNDgyIDIuNDU0NjIsLTMuMjE5NjggNS4yODQyNiwtNi45NTgzMSA0LjY4NDMsLTE0LjQ4ODI0IGwgMC4wMDMsMC4wMDIgOC45MjY3NiwwIDAsLTU1Ljk5OTY3IGMgLTE1LjA3MTI1LC0zLjg3MTY4IC0yNy42NTMxNCwtNi4zNjA0MiAtMzcuNzQ2NzEsLTcuNDY1ODYgLTkuOTU1MzEsLTEuMTA3NTUgLTIwLjE4ODIzLC0xLjY1OTgxIC0zMC42OTY2MTMsLTEuNjU5ODEgeiBtIDcwLjMyMTYwMywxNy4zMDg5MyAwLjIzODA1LDQwLjMwNDkgYyAxLjMxODA4LDEuMjI2NjYgMi40Mzk2NSwyLjI3ODE1IDMuMzQwODEsMy4xMDYwMiA0LjgzOTM5LDYuNzc0OTEgOC44NDkzNCwxNi4yNDU2NiAxMi4wMjk1MSwyOC40MTM5NyBsIDIwLjUzMjM0LDAgMCwtNTUuOTk5NjcgYyAtNi42NzczMSwtNC41OTM4MSAtMTkuODM2NDMsLTEwLjQ3MzA5IC0zNi4xNDA3MSwtMTUuODI1MjIgeiBtIC0yOC4xMjA0OSw1LjYwNTUxIDguNTY0NzksMTcuNzE2NTUgYyAtMTEuOTcwMzcsLTYuNDY2OTcgLTEzLjg0Njc4LC05LjcxNzI2IC04LjU2NDc5LC0xNy43MTY1NSB6IG0gMjIuNzk3MDUsMCBjIDIuNzcxNSw3Ljk5OTI5IDEuNzg3NDEsMTEuMjQ5NTggLTQuNDkzNTQsMTcuNzE2NTUgbCA0LjQ5MzU0LC0xNy43MTY1NSB6IG0gMTUuMjIxOTUsMjQuMDA4NDggOC41NjQ3OSwxNy43MTY1NSBjIC0xMS45NzAzOCwtNi40NjY5NyAtMTMuODQ2NzksLTkuNzE3MjYgLTguNTY0NzksLTE3LjcxNjU1IHogbSAyMi43OTcwNCwwIGMgMi43NzE1LDcuOTk5MjkgMS43ODc0MSwxMS4yNDk1OCAtNC40OTM1NCwxNy43MTY1NSBsIDQuNDkzNTQsLTE3LjcxNjU1IHogbSAtOTkuMTEzODQsMi4yMDc2NCA4LjU2NDc5LDE3LjcxNjU1IGMgLTExLjk3MDM4MiwtNi40NjY5NyAtMTMuODQ2NzgyLC05LjcxNzI2IC04LjU2NDc5LC0xNy43MTY1NSB6IG0gMjIuNzk1NDIsMCBjIDIuNzcxNSw3Ljk5OTI5IDEuNzg3NDEsMTEuMjQ5NTggLTQuNDkzNTQsMTcuNzE2NTUgbCA0LjQ5MzU0LC0xNy43MTY1NSB6IiAvPg0KPC9zdmc+DQo8IS0tIFRoaXMgd29yayBpcyBsaWNlbnNlZCB1bmRlciBhIENyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24tU2hhcmVBbGlrZSA0LjAgSW50ZXJuYXRpb25hbCBMaWNlbnNlLiAtLT4NCjwhLS0gaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnktc2EvNC4wLyAtLT4NCg==") no-repeat fixed 50%/70% 70%,linear-gradient(180deg,#750000 0,#340404);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff750000',endColorstr='#ff340404',GradientType=0)}body.syndicate .normal{color:#40628a}body.syndicate .good{color:#73e573}body.syndicate .average{color:#be6209}body.syndicate .bad{color:#b00e0e}body.syndicate .highlight{color:#000}body.syndicate main{display:block;margin-top:32px;padding:2px 6px 0}body.syndicate hr{height:2px;background-color:#272727;border:none}body.syndicate .hidden{display:none}body.syndicate .bar .barText,body.syndicate span.button{color:#fff;font-size:12px;font-weight:400;font-style:normal;text-decoration:none}body.syndicate .bold{font-weight:700}body.syndicate .italic{font-style:italic}body.syndicate [unselectable=on]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body.syndicate div[data-tooltip],body.syndicate span[data-tooltip]{position:relative}body.syndicate div[data-tooltip]:after,body.syndicate span[data-tooltip]:after{position:absolute;display:block;z-index:2;width:250px;padding:10px;-ms-transform:translateX(-50%);transform:translateX(-50%);visibility:hidden;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";white-space:normal;text-align:left;content:attr(data-tooltip);transition:all .5s;border:1px solid #272727;background-color:#363636}body.syndicate div[data-tooltip]:hover:after,body.syndicate span[data-tooltip]:hover:after{visibility:visible;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}body.syndicate div[data-tooltip].tooltip-top:after,body.syndicate span[data-tooltip].tooltip-top:after{bottom:100%;left:50%;-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.syndicate div[data-tooltip].tooltip-top:hover:after,body.syndicate span[data-tooltip].tooltip-top:hover:after{-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.syndicate div[data-tooltip].tooltip-bottom:after,body.syndicate span[data-tooltip].tooltip-bottom:after{top:100%;left:50%;-ms-transform:translateX(-50%) translateY(-8px);transform:translateX(-50%) translateY(-8px)}body.syndicate div[data-tooltip].tooltip-bottom:hover:after,body.syndicate span[data-tooltip].tooltip-bottom:hover:after{-ms-transform:translateX(-50%) translateY(8px);transform:translateX(-50%) translateY(8px)}body.syndicate div[data-tooltip].tooltip-left:after,body.syndicate span[data-tooltip].tooltip-left:after{top:50%;right:100%;-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.syndicate div[data-tooltip].tooltip-left:hover:after,body.syndicate span[data-tooltip].tooltip-left:hover:after{-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.syndicate div[data-tooltip].tooltip-right:after,body.syndicate span[data-tooltip].tooltip-right:after{top:50%;left:100%;-ms-transform:translateX(-8px) translateY(-50%);transform:translateX(-8px) translateY(-50%)}body.syndicate div[data-tooltip].tooltip-right:hover:after,body.syndicate span[data-tooltip].tooltip-right:hover:after{-ms-transform:translateX(8px) translateY(-50%);transform:translateX(8px) translateY(-50%)}body.syndicate .bar{display:inline-block;position:relative;vertical-align:middle;width:100%;height:20px;line-height:17px;padding:1px;border:1px solid #000;background:#272727}body.syndicate .bar .barText{position:absolute;top:0;right:3px}body.syndicate .bar .barFill{display:block;height:100%;transition:background-color 1s;background-color:#000}body.syndicate .bar .barFill.good{background-color:#73e573}body.syndicate .bar .barFill.average{background-color:#be6209}body.syndicate .bar .barFill.bad{background-color:#b00e0e}body.syndicate span.button{display:inline-block;vertical-align:middle;height:20px;line-height:17px;padding:0 5px;white-space:nowrap;border:1px solid #272727}body.syndicate span.button .fa{padding-right:2px}body.syndicate span.button.normal{transition:background-color .5s;background-color:#397439}body.syndicate span.button.normal.active:focus,body.syndicate span.button.normal.active:hover{transition:background-color .25s;background-color:#4a964a;outline:0}body.syndicate span.button.disabled{transition:background-color .5s;background-color:#363636}body.syndicate span.button.disabled.active:focus,body.syndicate span.button.disabled.active:hover{transition:background-color .25s;background-color:#545454;outline:0}body.syndicate span.button.selected{transition:background-color .5s;background-color:#9d0808}body.syndicate span.button.selected.active:focus,body.syndicate span.button.selected.active:hover{transition:background-color .25s;background-color:#ce0b0b;outline:0}body.syndicate span.button.caution{transition:background-color .5s;background-color:#be6209}body.syndicate span.button.caution.active:focus,body.syndicate span.button.caution.active:hover{transition:background-color .25s;background-color:#eb790b;outline:0}body.syndicate span.button.danger{transition:background-color .5s;background-color:#9a9d00}body.syndicate span.button.danger.active:focus,body.syndicate span.button.danger.active:hover{transition:background-color .25s;background-color:#ced200;outline:0}body.syndicate span.button.gridable{width:125px;margin:2px 0}body.syndicate span.button+span:not(.button),body.syndicate span:not(.button)+span.button{margin-left:5px}body.syndicate div.display{width:100%;padding:4px;margin:6px 0;background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#80000000,endColorStr=#80000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#80000000,endColorStr=#80000000);background-color:rgba(0,0,0,.5);box-shadow:inset 0 0 5px rgba(0,0,0,.75)}body.syndicate div.display header,body.syndicate div.subdisplay header{display:block;position:relative;width:100%;padding:0 4px;margin-bottom:6px;color:#fff;border-bottom:2px solid #272727}body.syndicate div.display header .buttonRight,body.syndicate div.subdisplay header .buttonRight{position:absolute;bottom:6px;right:4px}body.syndicate div.display article,body.syndicate div.subdisplay article{display:table;width:100%;border-collapse:collapse}body.syndicate input{display:inline-block;vertical-align:middle;height:20px;line-height:17px;padding:0 5px;white-space:nowrap;color:#fff;background-color:#9d0808;border:1px solid #272727}body.syndicate input::-webkit-input-placeholder{color:#999}body.syndicate input::-moz-placeholder{color:#999}body.syndicate input:-ms-input-placeholder{color:#999}body.syndicate input::placeholder{color:#999}body.syndicate input::-ms-clear{display:none}body.syndicate svg.linegraph{overflow:hidden}body.syndicate div.notice{margin:8px 0;padding:4px;box-shadow:none;color:#000;font-weight:700;font-style:italic;background-color:#750000;background-image:repeating-linear-gradient(-45deg,#750000,#750000 10px,#910101 0,#910101 20px)}body.syndicate div.notice .label{color:#000}body.syndicate div.notice .content:only-of-type{padding:0}body.syndicate div.notice hr{background-color:#272727}body.syndicate div.resize{position:fixed;bottom:0;right:0;width:0;height:0;border-style:solid;border-width:0 0 45px 45px;border-color:transparent transparent #363636;-ms-transform:rotate(1turn);transform:rotate(1turn)}body.syndicate section .content,body.syndicate section .label,body.syndicate section .line{display:table-cell;margin:0;text-align:left;vertical-align:middle;padding:3px 2px}body.syndicate section{display:table-row;width:100%}body.syndicate section:not(:first-child){padding-top:4px}body.syndicate section.candystripe:nth-child(even){background-color:#000;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000)";filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#33000000,endColorStr=#33000000);background-color:rgba(0,0,0,.2)}body.syndicate section .label{width:1%;padding-right:32px;white-space:nowrap;color:#fff}body.syndicate section .content:not(:last-child){padding-right:16px}body.syndicate section .line{width:100%}body.syndicate div.subdisplay{width:100%;margin:0}body.syndicate header.titlebar .close,body.syndicate header.titlebar .minimize{display:inline-block;position:relative;padding:7px;margin:-7px;color:#e74242}body.syndicate header.titlebar .close:hover,body.syndicate header.titlebar .minimize:hover{color:#eb5e5e}body.syndicate header.titlebar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;background-color:#363636;border-bottom:1px solid #161616;box-shadow:0 3px 3px rgba(0,0,0,.1)}body.syndicate header.titlebar .statusicon{position:absolute;top:4px;left:12px;transition:color .5s}body.syndicate header.titlebar .title{position:absolute;top:6px;left:46px;color:#e74242;font-size:16px;white-space:nowrap}body.syndicate header.titlebar .minimize{position:absolute;top:6px;right:46px}body.syndicate header.titlebar .close{position:absolute;top:4px;right:12px}.no-icons header.titlebar .statusicon{font-size:20px}.no-icons header.titlebar .statusicon:after{content:"O"}.no-icons header.titlebar .minimize{top:-2px;font-size:20px}.no-icons header.titlebar .minimize:after{content:"—"}.no-icons header.titlebar .close{font-size:20px}.no-icons header.titlebar .close:after{content:"X"} \ No newline at end of file diff --git a/tgui/assets/tgui.js b/tgui/assets/tgui.js index e607d36cbce..47e399aed09 100644 --- a/tgui/assets/tgui.js +++ b/tgui/assets/tgui.js @@ -1,12 +1,12 @@ -require=function t(e,n,r){function i(o,s){if(!n[o]){if(!e[o]){var u="function"==typeof require&&require;if(!s&&u)return u(o,!0);if(a)return a(o,!0);var c=Error("Cannot find module '"+o+"'");throw c.code="MODULE_NOT_FOUND",c}var l=n[o]={exports:{}};e[o][0].call(l.exports,function(t){var n=e[o][1][t];return i(n?n:t)},l,l.exports,t,e,n,r)}return n[o].exports}for(var a="function"==typeof require&&require,o=0;o=0;--r){var i=this.tryEntries[r],a=i.completion;if("root"===i.tryLoc)return e("end");if(i.tryLoc<=this.prev){var o=y.call(i,"catchLoc"),s=y.call(i,"finallyLoc");if(o&&s){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&y.call(r,"finallyLoc")&&this.prev=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),d(n),O}},"catch":function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var i=r.arg;d(n)}return i}}throw Error("illegal catch attempt")},delegateYield:function(t,e,n){return this.delegate={iterator:m(t),resultName:e,nextLoc:n},O}}}("object"==typeof n?n:"object"==typeof window?window:"object"==typeof self?self:this)}).call(this,t(202),void 0!==n?n:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{202:202}],3:[function(t,e,n){e.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},{}],4:[function(t,e,n){var r=t(84)("unscopables"),i=Array.prototype;void 0==i[r]&&t(32)(i,r,{}),e.exports=function(t){i[r][t]=!0}},{32:32,84:84}],5:[function(t,e,n){var r=t(39);e.exports=function(t){if(!r(t))throw TypeError(t+" is not an object!");return t}},{39:39}],6:[function(t,e,n){"use strict";var r=t(81),i=t(77),a=t(80);e.exports=[].copyWithin||function(t,e){var n=r(this),o=a(n.length),s=i(t,o),u=i(e,o),c=arguments,l=c.length>2?c[2]:void 0,p=Math.min((void 0===l?o:i(l,o))-u,o-s),f=1;for(s>u&&u+p>s&&(f=-1,u+=p-1,s+=p-1);p-- >0;)u in n?n[s]=n[u]:delete n[s],s+=f,u+=f;return n}},{77:77,80:80,81:81}],7:[function(t,e,n){"use strict";var r=t(81),i=t(77),a=t(80);e.exports=[].fill||function(t){for(var e=r(this),n=a(e.length),o=arguments,s=o.length,u=i(s>1?o[1]:void 0,n),c=s>2?o[2]:void 0,l=void 0===c?n:i(c,n);l>u;)e[u++]=t;return e}},{77:77,80:80,81:81}],8:[function(t,e,n){var r=t(79),i=t(80),a=t(77);e.exports=function(t){return function(e,n,o){var s,u=r(e),c=i(u.length),l=a(o,c);if(t&&n!=n){for(;c>l;)if(s=u[l++],s!=s)return!0}else for(;c>l;l++)if((t||l in u)&&u[l]===n)return t||l;return!t&&-1}}},{77:77,79:79,80:80}],9:[function(t,e,n){var r=t(18),i=t(35),a=t(81),o=t(80),s=t(10);e.exports=function(t){var e=1==t,n=2==t,u=3==t,c=4==t,l=6==t,p=5==t||l;return function(f,d,h){for(var m,v,g=a(f),y=i(g),b=r(d,h,3),x=o(y.length),w=0,_=e?s(f,x):n?s(f,0):void 0;x>w;w++)if((p||w in y)&&(m=y[w],v=b(m,w,g),t))if(e)_[w]=v;else if(v)switch(t){case 3:return!0;case 5:return m;case 6:return w;case 2:_.push(m)}else if(c)return!1;return l?-1:u||c?c:_}}},{10:10,18:18,35:35,80:80,81:81}],10:[function(t,e,n){var r=t(39),i=t(37),a=t(84)("species");e.exports=function(t,e){var n;return i(t)&&(n=t.constructor,"function"!=typeof n||n!==Array&&!i(n.prototype)||(n=void 0),r(n)&&(n=n[a],null===n&&(n=void 0))),new(void 0===n?Array:n)(e)}},{37:37,39:39,84:84}],11:[function(t,e,n){var r=t(12),i=t(84)("toStringTag"),a="Arguments"==r(function(){return arguments}());e.exports=function(t){var e,n,o;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=(e=Object(t))[i])?n:a?r(e):"Object"==(o=r(e))&&"function"==typeof e.callee?"Arguments":o}},{12:12,84:84}],12:[function(t,e,n){var r={}.toString;e.exports=function(t){return r.call(t).slice(8,-1)}},{}],13:[function(t,e,n){"use strict";var r=t(47),i=t(32),a=t(61),o=t(18),s=t(70),u=t(19),c=t(28),l=t(43),p=t(45),f=t(83)("id"),d=t(31),h=t(39),m=t(66),v=t(20),g=Object.isExtensible||h,y=v?"_s":"size",b=0,x=function(t,e){if(!h(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!d(t,f)){if(!g(t))return"F";if(!e)return"E";i(t,f,++b)}return"O"+t[f]},w=function(t,e){var n,r=x(e);if("F"!==r)return t._i[r];for(n=t._f;n;n=n.n)if(n.k==e)return n};e.exports={getConstructor:function(t,e,n,i){var l=t(function(t,a){s(t,l,e),t._i=r.create(null),t._f=void 0,t._l=void 0,t[y]=0,void 0!=a&&c(a,n,t[i],t)});return a(l.prototype,{clear:function(){for(var t=this,e=t._i,n=t._f;n;n=n.n)n.r=!0,n.p&&(n.p=n.p.n=void 0),delete e[n.i];t._f=t._l=void 0,t[y]=0},"delete":function(t){var e=this,n=w(e,t);if(n){var r=n.n,i=n.p;delete e._i[n.i],n.r=!0,i&&(i.n=r),r&&(r.p=i),e._f==n&&(e._f=r),e._l==n&&(e._l=i),e[y]--}return!!n},forEach:function(t){for(var e,n=o(t,arguments.length>1?arguments[1]:void 0,3);e=e?e.n:this._f;)for(n(e.v,e.k,this);e&&e.r;)e=e.p},has:function(t){return!!w(this,t)}}),v&&r.setDesc(l.prototype,"size",{get:function(){return u(this[y])}}),l},def:function(t,e,n){var r,i,a=w(t,e);return a?a.v=n:(t._l=a={i:i=x(e,!0),k:e,v:n,p:r=t._l,n:void 0,r:!1},t._f||(t._f=a),r&&(r.n=a),t[y]++,"F"!==i&&(t._i[i]=a)),t},getEntry:w,setStrong:function(t,e,n){l(t,e,function(t,e){this._t=t,this._k=e,this._l=void 0},function(){for(var t=this,e=t._k,n=t._l;n&&n.r;)n=n.p;return t._t&&(t._l=n=n?n.n:t._t._f)?"keys"==e?p(0,n.k):"values"==e?p(0,n.v):p(0,[n.k,n.v]):(t._t=void 0,p(1))},n?"entries":"values",!n,!0),m(e)}}},{18:18,19:19,20:20,28:28,31:31,32:32,39:39,43:43,45:45,47:47,61:61,66:66,70:70,83:83}],14:[function(t,e,n){var r=t(28),i=t(11);e.exports=function(t){return function(){if(i(this)!=t)throw TypeError(t+"#toJSON isn't generic");var e=[];return r(this,!1,e.push,e),e}}},{11:11,28:28}],15:[function(t,e,n){"use strict";var r=t(32),i=t(61),a=t(5),o=t(39),s=t(70),u=t(28),c=t(9),l=t(31),p=t(83)("weak"),f=Object.isExtensible||o,d=c(5),h=c(6),m=0,v=function(t){return t._l||(t._l=new g)},g=function(){this.a=[]},y=function(t,e){return d(t.a,function(t){return t[0]===e})};g.prototype={get:function(t){var e=y(this,t);return e?e[1]:void 0},has:function(t){return!!y(this,t)},set:function(t,e){var n=y(this,t);n?n[1]=e:this.a.push([t,e])},"delete":function(t){var e=h(this.a,function(e){return e[0]===t});return~e&&this.a.splice(e,1),!!~e}},e.exports={getConstructor:function(t,e,n,r){var a=t(function(t,i){s(t,a,e),t._i=m++,t._l=void 0,void 0!=i&&u(i,n,t[r],t)});return i(a.prototype,{"delete":function(t){return o(t)?f(t)?l(t,p)&&l(t[p],this._i)&&delete t[p][this._i]:v(this)["delete"](t):!1},has:function(t){return o(t)?f(t)?l(t,p)&&l(t[p],this._i):v(this).has(t):!1}}),a},def:function(t,e,n){return f(a(e))?(l(e,p)||r(e,p,{}),e[p][t._i]=n):v(t).set(e,n),t},frozenStore:v,WEAK:p}},{28:28,31:31,32:32,39:39,5:5,61:61,70:70,83:83,9:9}],16:[function(t,e,n){"use strict";var r=t(30),i=t(23),a=t(62),o=t(61),s=t(28),u=t(70),c=t(39),l=t(25),p=t(44),f=t(67);e.exports=function(t,e,n,d,h,m){var v=r[t],g=v,y=h?"set":"add",b=g&&g.prototype,x={},w=function(t){var e=b[t];a(b,t,"delete"==t?function(t){return m&&!c(t)?!1:e.call(this,0===t?0:t)}:"has"==t?function(t){return m&&!c(t)?!1:e.call(this,0===t?0:t)}:"get"==t?function(t){return m&&!c(t)?void 0:e.call(this,0===t?0:t)}:"add"==t?function(t){return e.call(this,0===t?0:t),this}:function(t,n){return e.call(this,0===t?0:t,n),this})};if("function"==typeof g&&(m||b.forEach&&!l(function(){(new g).entries().next()}))){var _,k=new g,E=k[y](m?{}:-0,1)!=k,S=l(function(){k.has(1)}),O=p(function(t){new g(t)});O||(g=e(function(e,n){u(e,g,t);var r=new v;return void 0!=n&&s(n,h,r[y],r),r}),g.prototype=b,b.constructor=g),m||k.forEach(function(t,e){_=1/e===-(1/0)}),(S||_)&&(w("delete"),w("has"),h&&w("get")),(_||E)&&w(y),m&&b.clear&&delete b.clear}else g=d.getConstructor(e,t,h,y),o(g.prototype,n);return f(g,t),x[t]=g,i(i.G+i.W+i.F*(g!=v),x),m||d.setStrong(g,t,h),g}},{23:23,25:25,28:28,30:30,39:39,44:44,61:61,62:62,67:67,70:70}],17:[function(t,e,n){var r=e.exports={version:"1.2.6"};"number"==typeof __e&&(__e=r)},{}],18:[function(t,e,n){var r=t(3);e.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,i){return t.call(e,n,r,i)}}return function(){return t.apply(e,arguments)}}},{3:3}],19:[function(t,e,n){e.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},{}],20:[function(t,e,n){e.exports=!t(25)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},{25:25}],21:[function(t,e,n){var r=t(39),i=t(30).document,a=r(i)&&r(i.createElement);e.exports=function(t){return a?i.createElement(t):{}}},{30:30,39:39}],22:[function(t,e,n){var r=t(47);e.exports=function(t){var e=r.getKeys(t),n=r.getSymbols;if(n)for(var i,a=n(t),o=r.isEnum,s=0;a.length>s;)o.call(t,i=a[s++])&&e.push(i);return e}},{47:47}],23:[function(t,e,n){var r=t(30),i=t(17),a=t(32),o=t(62),s=t(18),u="prototype",c=function(t,e,n){var l,p,f,d,h=t&c.F,m=t&c.G,v=t&c.S,g=t&c.P,y=t&c.B,b=m?r:v?r[e]||(r[e]={}):(r[e]||{})[u],x=m?i:i[e]||(i[e]={}),w=x[u]||(x[u]={});m&&(n=e);for(l in n)p=!h&&b&&l in b,f=(p?b:n)[l],d=y&&p?s(f,r):g&&"function"==typeof f?s(Function.call,f):f,b&&!p&&o(b,l,f),x[l]!=f&&a(x,l,d),g&&w[l]!=f&&(w[l]=f)};r.core=i,c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,e.exports=c},{17:17,18:18,30:30,32:32,62:62}],24:[function(t,e,n){var r=t(84)("match");e.exports=function(t){var e=/./;try{"/./"[t](e)}catch(n){try{return e[r]=!1,!"/./"[t](e)}catch(i){}}return!0}},{84:84}],25:[function(t,e,n){e.exports=function(t){try{return!!t()}catch(e){return!0}}},{}],26:[function(t,e,n){"use strict";var r=t(32),i=t(62),a=t(25),o=t(19),s=t(84);e.exports=function(t,e,n){var u=s(t),c=""[t];a(function(){var e={};return e[u]=function(){return 7},7!=""[t](e)})&&(i(String.prototype,t,n(o,u,c)),r(RegExp.prototype,u,2==e?function(t,e){return c.call(t,this,e)}:function(t){return c.call(t,this)}))}},{19:19,25:25,32:32,62:62,84:84}],27:[function(t,e,n){"use strict";var r=t(5);e.exports=function(){var t=r(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}},{5:5}],28:[function(t,e,n){var r=t(18),i=t(41),a=t(36),o=t(5),s=t(80),u=t(85);e.exports=function(t,e,n,c){var l,p,f,d=u(t),h=r(n,c,e?2:1),m=0;if("function"!=typeof d)throw TypeError(t+" is not iterable!");if(a(d))for(l=s(t.length);l>m;m++)e?h(o(p=t[m])[0],p[1]):h(t[m]);else for(f=d.call(t);!(p=f.next()).done;)i(f,h,p.value,e)}},{18:18,36:36,41:41,5:5,80:80,85:85}],29:[function(t,e,n){var r=t(79),i=t(47).getNames,a={}.toString,o="object"==typeof window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],s=function(t){try{return i(t)}catch(e){return o.slice()}};e.exports.get=function(t){return o&&"[object Window]"==a.call(t)?s(t):i(r(t))}},{47:47,79:79}],30:[function(t,e,n){var r=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=r)},{}],31:[function(t,e,n){var r={}.hasOwnProperty;e.exports=function(t,e){return r.call(t,e)}},{}],32:[function(t,e,n){var r=t(47),i=t(60);e.exports=t(20)?function(t,e,n){return r.setDesc(t,e,i(1,n))}:function(t,e,n){return t[e]=n,t}},{20:20,47:47,60:60}],33:[function(t,e,n){e.exports=t(30).document&&document.documentElement},{30:30}],34:[function(t,e,n){e.exports=function(t,e,n){var r=void 0===n;switch(e.length){case 0:return r?t():t.call(n);case 1:return r?t(e[0]):t.call(n,e[0]);case 2:return r?t(e[0],e[1]):t.call(n,e[0],e[1]);case 3:return r?t(e[0],e[1],e[2]):t.call(n,e[0],e[1],e[2]);case 4:return r?t(e[0],e[1],e[2],e[3]):t.call(n,e[0],e[1],e[2],e[3])}return t.apply(n,e)}},{}],35:[function(t,e,n){var r=t(12);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==r(t)?t.split(""):Object(t)}},{12:12}],36:[function(t,e,n){var r=t(46),i=t(84)("iterator"),a=Array.prototype;e.exports=function(t){return void 0!==t&&(r.Array===t||a[i]===t)}},{46:46,84:84}],37:[function(t,e,n){var r=t(12);e.exports=Array.isArray||function(t){return"Array"==r(t)}},{12:12}],38:[function(t,e,n){var r=t(39),i=Math.floor;e.exports=function(t){return!r(t)&&isFinite(t)&&i(t)===t}},{39:39}],39:[function(t,e,n){e.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},{}],40:[function(t,e,n){var r=t(39),i=t(12),a=t(84)("match");e.exports=function(t){var e;return r(t)&&(void 0!==(e=t[a])?!!e:"RegExp"==i(t))}},{12:12,39:39,84:84}],41:[function(t,e,n){var r=t(5);e.exports=function(t,e,n,i){try{return i?e(r(n)[0],n[1]):e(n)}catch(a){var o=t["return"];throw void 0!==o&&r(o.call(t)),a}}},{5:5}],42:[function(t,e,n){"use strict";var r=t(47),i=t(60),a=t(67),o={};t(32)(o,t(84)("iterator"),function(){return this}),e.exports=function(t,e,n){t.prototype=r.create(o,{next:i(1,n)}),a(t,e+" Iterator")}},{32:32,47:47,60:60,67:67,84:84}],43:[function(t,e,n){"use strict";var r=t(49),i=t(23),a=t(62),o=t(32),s=t(31),u=t(46),c=t(42),l=t(67),p=t(47).getProto,f=t(84)("iterator"),d=!([].keys&&"next"in[].keys()),h="@@iterator",m="keys",v="values",g=function(){return this};e.exports=function(t,e,n,y,b,x,w){c(n,e,y);var _,k,E=function(t){if(!d&&t in P)return P[t];switch(t){case m:return function(){return new n(this,t)};case v:return function(){return new n(this,t)}}return function(){return new n(this,t)}},S=e+" Iterator",O=b==v,A=!1,P=t.prototype,C=P[f]||P[h]||b&&P[b],j=C||E(b);if(C){var T=p(j.call(new t));l(T,S,!0),!r&&s(P,h)&&o(T,f,g),O&&C.name!==v&&(A=!0,j=function(){return C.call(this)})}if(r&&!w||!d&&!A&&P[f]||o(P,f,j),u[e]=j,u[S]=g,b)if(_={values:O?j:E(v),keys:x?j:E(m),entries:O?E("entries"):j},w)for(k in _)k in P||a(P,k,_[k]);else i(i.P+i.F*(d||A),e,_);return _}},{23:23,31:31,32:32,42:42,46:46,47:47,49:49,62:62,67:67,84:84}],44:[function(t,e,n){var r=t(84)("iterator"),i=!1;try{var a=[7][r]();a["return"]=function(){i=!0},Array.from(a,function(){throw 2})}catch(o){}e.exports=function(t,e){if(!e&&!i)return!1;var n=!1;try{var a=[7],o=a[r]();o.next=function(){n=!0},a[r]=function(){return o},t(a)}catch(s){}return n}},{84:84}],45:[function(t,e,n){e.exports=function(t,e){return{value:e,done:!!t}}},{}],46:[function(t,e,n){e.exports={}},{}],47:[function(t,e,n){var r=Object;e.exports={create:r.create,getProto:r.getPrototypeOf,isEnum:{}.propertyIsEnumerable,getDesc:r.getOwnPropertyDescriptor,setDesc:r.defineProperty,setDescs:r.defineProperties,getKeys:r.keys,getNames:r.getOwnPropertyNames,getSymbols:r.getOwnPropertySymbols,each:[].forEach}},{}],48:[function(t,e,n){var r=t(47),i=t(79);e.exports=function(t,e){for(var n,a=i(t),o=r.getKeys(a),s=o.length,u=0;s>u;)if(a[n=o[u++]]===e)return n}},{47:47,79:79}],49:[function(t,e,n){e.exports=!1},{}],50:[function(t,e,n){e.exports=Math.expm1||function(t){return 0==(t=+t)?t:t>-1e-6&&1e-6>t?t+t*t/2:Math.exp(t)-1}},{}],51:[function(t,e,n){e.exports=Math.log1p||function(t){return(t=+t)>-1e-8&&1e-8>t?t-t*t/2:Math.log(1+t)}},{}],52:[function(t,e,n){e.exports=Math.sign||function(t){return 0==(t=+t)||t!=t?t:0>t?-1:1}},{}],53:[function(t,e,n){var r,i,a,o=t(30),s=t(76).set,u=o.MutationObserver||o.WebKitMutationObserver,c=o.process,l=o.Promise,p="process"==t(12)(c),f=function(){var t,e,n;for(p&&(t=c.domain)&&(c.domain=null,t.exit());r;)e=r.domain,n=r.fn,e&&e.enter(),n(),e&&e.exit(),r=r.next;i=void 0,t&&t.enter()};if(p)a=function(){c.nextTick(f)};else if(u){var d=1,h=document.createTextNode("");new u(f).observe(h,{characterData:!0}),a=function(){h.data=d=-d}}else a=l&&l.resolve?function(){l.resolve().then(f)}:function(){s.call(o,f)};e.exports=function(t){var e={fn:t,next:void 0,domain:p&&c.domain};i&&(i.next=e),r||(r=e,a()),i=e}},{12:12,30:30,76:76}],54:[function(t,e,n){var r=t(47),i=t(81),a=t(35);e.exports=t(25)(function(){var t=Object.assign,e={},n={},r=Symbol(),i="abcdefghijklmnopqrst";return e[r]=7,i.split("").forEach(function(t){n[t]=t}),7!=t({},e)[r]||Object.keys(t({},n)).join("")!=i})?function(t,e){for(var n=i(t),o=arguments,s=o.length,u=1,c=r.getKeys,l=r.getSymbols,p=r.isEnum;s>u;)for(var f,d=a(o[u++]),h=l?c(d).concat(l(d)):c(d),m=h.length,v=0;m>v;)p.call(d,f=h[v++])&&(n[f]=d[f]);return n}:Object.assign},{25:25,35:35,47:47,81:81}],55:[function(t,e,n){var r=t(23),i=t(17),a=t(25);e.exports=function(t,e){var n=(i.Object||{})[t]||Object[t],o={};o[t]=e(n),r(r.S+r.F*a(function(){n(1)}),"Object",o)}},{17:17,23:23,25:25}],56:[function(t,e,n){var r=t(47),i=t(79),a=r.isEnum;e.exports=function(t){return function(e){for(var n,o=i(e),s=r.getKeys(o),u=s.length,c=0,l=[];u>c;)a.call(o,n=s[c++])&&l.push(t?[n,o[n]]:o[n]);return l}}},{47:47,79:79}],57:[function(t,e,n){var r=t(47),i=t(5),a=t(30).Reflect;e.exports=a&&a.ownKeys||function(t){var e=r.getNames(i(t)),n=r.getSymbols;return n?e.concat(n(t)):e}},{30:30,47:47,5:5}],58:[function(t,e,n){"use strict";var r=t(59),i=t(34),a=t(3);e.exports=function(){for(var t=a(this),e=arguments.length,n=Array(e),o=0,s=r._,u=!1;e>o;)(n[o]=arguments[o++])===s&&(u=!0);return function(){var r,a=this,o=arguments,c=o.length,l=0,p=0;if(!u&&!c)return i(t,n,a);if(r=n.slice(),u)for(;e>l;l++)r[l]===s&&(r[l]=o[p++]);for(;c>p;)r.push(o[p++]);return i(t,r,a)}}},{3:3,34:34,59:59}],59:[function(t,e,n){e.exports=t(30)},{30:30}],60:[function(t,e,n){e.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},{}],61:[function(t,e,n){var r=t(62);e.exports=function(t,e){for(var n in e)r(t,n,e[n]);return t}},{62:62}],62:[function(t,e,n){var r=t(30),i=t(32),a=t(83)("src"),o="toString",s=Function[o],u=(""+s).split(o);t(17).inspectSource=function(t){return s.call(t)},(e.exports=function(t,e,n,o){"function"==typeof n&&(n.hasOwnProperty(a)||i(n,a,t[e]?""+t[e]:u.join(e+"")),n.hasOwnProperty("name")||i(n,"name",e)),t===r?t[e]=n:(o||delete t[e],i(t,e,n))})(Function.prototype,o,function(){return"function"==typeof this&&this[a]||s.call(this)})},{17:17,30:30,32:32,83:83}],63:[function(t,e,n){e.exports=function(t,e){var n=e===Object(e)?function(t){return e[t]}:e;return function(e){return(e+"").replace(t,n)}}},{}],64:[function(t,e,n){e.exports=Object.is||function(t,e){return t===e?0!==t||1/t===1/e:t!=t&&e!=e}},{}],65:[function(t,e,n){var r=t(47).getDesc,i=t(39),a=t(5),o=function(t,e){if(a(t),!i(e)&&null!==e)throw TypeError(e+": can't set as prototype!")};e.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(e,n,i){try{i=t(18)(Function.call,r(Object.prototype,"__proto__").set,2),i(e,[]),n=!(e instanceof Array)}catch(a){n=!0}return function(t,e){return o(t,e),n?t.__proto__=e:i(t,e),t}}({},!1):void 0),check:o}},{18:18,39:39,47:47,5:5}],66:[function(t,e,n){"use strict";var r=t(30),i=t(47),a=t(20),o=t(84)("species");e.exports=function(t){var e=r[t];a&&e&&!e[o]&&i.setDesc(e,o,{configurable:!0,get:function(){return this}})}},{20:20,30:30,47:47,84:84}],67:[function(t,e,n){var r=t(47).setDesc,i=t(31),a=t(84)("toStringTag");e.exports=function(t,e,n){t&&!i(t=n?t:t.prototype,a)&&r(t,a,{configurable:!0,value:e})}},{31:31,47:47,84:84}],68:[function(t,e,n){var r=t(30),i="__core-js_shared__",a=r[i]||(r[i]={});e.exports=function(t){return a[t]||(a[t]={})}},{30:30}],69:[function(t,e,n){var r=t(5),i=t(3),a=t(84)("species");e.exports=function(t,e){var n,o=r(t).constructor;return void 0===o||void 0==(n=r(o)[a])?e:i(n)}},{3:3,5:5,84:84}],70:[function(t,e,n){e.exports=function(t,e,n){if(!(t instanceof e))throw TypeError(n+": use the 'new' operator!");return t}},{}],71:[function(t,e,n){var r=t(78),i=t(19);e.exports=function(t){return function(e,n){var a,o,s=i(e)+"",u=r(n),c=s.length;return 0>u||u>=c?t?"":void 0:(a=s.charCodeAt(u),55296>a||a>56319||u+1===c||(o=s.charCodeAt(u+1))<56320||o>57343?t?s.charAt(u):a:t?s.slice(u,u+2):(a-55296<<10)+(o-56320)+65536)}}},{19:19,78:78}],72:[function(t,e,n){var r=t(40),i=t(19);e.exports=function(t,e,n){if(r(e))throw TypeError("String#"+n+" doesn't accept regex!");return i(t)+""}},{19:19,40:40}],73:[function(t,e,n){var r=t(80),i=t(74),a=t(19);e.exports=function(t,e,n,o){var s=a(t)+"",u=s.length,c=void 0===n?" ":n+"",l=r(e);if(u>=l)return s;""==c&&(c=" ");var p=l-u,f=i.call(c,Math.ceil(p/c.length));return f.length>p&&(f=f.slice(0,p)),o?f+s:s+f}},{19:19,74:74,80:80}],74:[function(t,e,n){"use strict";var r=t(78),i=t(19);e.exports=function(t){var e=i(this)+"",n="",a=r(t);if(0>a||a==1/0)throw RangeError("Count can't be negative");for(;a>0;(a>>>=1)&&(e+=e))1&a&&(n+=e);return n}},{19:19,78:78}],75:[function(t,e,n){var r=t(23),i=t(19),a=t(25),o=" \n\x0B\f\r   ᠎              \u2028\u2029\ufeff",s="["+o+"]",u="​…",c=RegExp("^"+s+s+"*"),l=RegExp(s+s+"*$"),p=function(t,e){var n={};n[t]=e(f),r(r.P+r.F*a(function(){return!!o[t]()||u[t]()!=u}),"String",n)},f=p.trim=function(t,e){return t=i(t)+"",1&e&&(t=t.replace(c,"")),2&e&&(t=t.replace(l,"")),t};e.exports=p},{19:19,23:23,25:25}],76:[function(t,e,n){var r,i,a,o=t(18),s=t(34),u=t(33),c=t(21),l=t(30),p=l.process,f=l.setImmediate,d=l.clearImmediate,h=l.MessageChannel,m=0,v={},g="onreadystatechange",y=function(){var t=+this;if(v.hasOwnProperty(t)){var e=v[t];delete v[t],e()}},b=function(t){y.call(t.data)};f&&d||(f=function(t){for(var e=[],n=1;arguments.length>n;)e.push(arguments[n++]);return v[++m]=function(){s("function"==typeof t?t:Function(t),e)},r(m),m},d=function(t){delete v[t]},"process"==t(12)(p)?r=function(t){p.nextTick(o(y,t,1))}:h?(i=new h,a=i.port2,i.port1.onmessage=b,r=o(a.postMessage,a,1)):l.addEventListener&&"function"==typeof postMessage&&!l.importScripts?(r=function(t){l.postMessage(t+"","*")},l.addEventListener("message",b,!1)):r=g in c("script")?function(t){u.appendChild(c("script"))[g]=function(){u.removeChild(this),y.call(t)}}:function(t){setTimeout(o(y,t,1),0)}),e.exports={set:f,clear:d}},{12:12,18:18,21:21,30:30,33:33,34:34}],77:[function(t,e,n){var r=t(78),i=Math.max,a=Math.min;e.exports=function(t,e){return t=r(t),0>t?i(t+e,0):a(t,e)}},{78:78}],78:[function(t,e,n){var r=Math.ceil,i=Math.floor;e.exports=function(t){return isNaN(t=+t)?0:(t>0?i:r)(t)}},{}],79:[function(t,e,n){var r=t(35),i=t(19);e.exports=function(t){return r(i(t))}},{19:19,35:35}],80:[function(t,e,n){var r=t(78),i=Math.min;e.exports=function(t){return t>0?i(r(t),9007199254740991):0}},{78:78}],81:[function(t,e,n){var r=t(19);e.exports=function(t){return Object(r(t))}},{19:19}],82:[function(t,e,n){var r=t(39);e.exports=function(t,e){if(!r(t))return t;var n,i;if(e&&"function"==typeof(n=t.toString)&&!r(i=n.call(t)))return i;if("function"==typeof(n=t.valueOf)&&!r(i=n.call(t)))return i;if(!e&&"function"==typeof(n=t.toString)&&!r(i=n.call(t)))return i;throw TypeError("Can't convert object to primitive value")}},{39:39}],83:[function(t,e,n){var r=0,i=Math.random();e.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++r+i).toString(36))}},{}],84:[function(t,e,n){var r=t(68)("wks"),i=t(83),a=t(30).Symbol;e.exports=function(t){return r[t]||(r[t]=a&&a[t]||(a||i)("Symbol."+t))}},{30:30,68:68,83:83}],85:[function(t,e,n){var r=t(11),i=t(84)("iterator"),a=t(46);e.exports=t(17).getIteratorMethod=function(t){return void 0!=t?t[i]||t["@@iterator"]||a[r(t)]:void 0}},{11:11,17:17,46:46,84:84}],86:[function(t,e,n){"use strict";var r,i=t(47),a=t(23),o=t(20),s=t(60),u=t(33),c=t(21),l=t(31),p=t(12),f=t(34),d=t(25),h=t(5),m=t(3),v=t(39),g=t(81),y=t(79),b=t(78),x=t(77),w=t(80),_=t(35),k=t(83)("__proto__"),E=t(9),S=t(8)(!1),O=Object.prototype,A=Array.prototype,P=A.slice,C=A.join,j=i.setDesc,T=i.getDesc,M=i.setDescs,L={};o||(r=!d(function(){return 7!=j(c("div"),"a",{get:function(){return 7}}).a}),i.setDesc=function(t,e,n){if(r)try{return j(t,e,n)}catch(i){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(h(t)[e]=n.value),t},i.getDesc=function(t,e){if(r)try{return T(t,e)}catch(n){}return l(t,e)?s(!O.propertyIsEnumerable.call(t,e),t[e]):void 0},i.setDescs=M=function(t,e){h(t);for(var n,r=i.getKeys(e),a=r.length,o=0;a>o;)i.setDesc(t,n=r[o++],e[n]);return t}),a(a.S+a.F*!o,"Object",{getOwnPropertyDescriptor:i.getDesc,defineProperty:i.setDesc,defineProperties:M});var F="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(","),N=F.concat("length","prototype"),R=F.length,D=function(){var t,e=c("iframe"),n=R,r=">";for(e.style.display="none",u.appendChild(e),e.src="javascript:",t=e.contentWindow.document,t.open(),t.write(" + + + {{#if data.recharge_port}} + {{#if data.recharge_port.mech}} + + {{Math.round(adata.recharge_port.mech.health)}}/{{adata.recharge_port.mech.maxhealth}} + + {{#if data.recharge_port.mech.cell}} + {{#if data.recharge_port.mech.cell.critfail}} + Cell Critical Failure + {{else}} + + {{Math.round(adata.recharge_port.mech.cell.charge)}}/{{Math.round(adata.recharge_port.mech.cell.maxcharge)}} + + {{/if}} + {{else}} + Cell Missing + {{/if}} + {{else}} + Mech Not Found + {{/if}} + {{else}} + Recharging Port Not Found + Reconnect + {{/if}} + diff --git a/tools/github_webhook_processor.php b/tools/github_webhook_processor.php index d471f57f9e6..766f0310302 100644 --- a/tools/github_webhook_processor.php +++ b/tools/github_webhook_processor.php @@ -250,7 +250,7 @@ function checkchangelog($payload, $merge = false) { if (!count($changelogbody)) return; - $file = 'author: '.$username."\n"; + $file = 'author: '.trim(str_replace(array("\\", '"'), array("\\\\", "\\\""), $username))."\n"; $file .= "delete-after: True\n"; $file .= "changes: \n"; foreach ($changelogbody as $changelogitem) { diff --git a/tools/mapmerge/map_helpers.py b/tools/mapmerge/map_helpers.py index c7c989d02e0..1b75c54fcbb 100644 --- a/tools/mapmerge/map_helpers.py +++ b/tools/mapmerge/map_helpers.py @@ -192,7 +192,7 @@ def write_grid_coord_small(filename, grid): output.write("({},{},1) = {{\"\n".format(x, 1, 1)) for y in range(1, maxy): output.write("{}\n".format(grid[x,y])) - output.write("{}\n\"}}\n".format(grid[x,maxy-1])) + output.write("{}\n\"}}\n".format(grid[x,maxy])) def search_key(dictionary, data): for key, value in dictionary.items():