From 07f695b4de5ec27ddf8a34c01def9480f8870270 Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Tue, 8 Dec 2015 05:50:18 -0600 Subject: [PATCH 001/310] Lava Rivers --- code/game/turfs/simulated/river.dm | 78 ++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 code/game/turfs/simulated/river.dm diff --git a/code/game/turfs/simulated/river.dm b/code/game/turfs/simulated/river.dm new file mode 100644 index 00000000000..8067e2a8aaf --- /dev/null +++ b/code/game/turfs/simulated/river.dm @@ -0,0 +1,78 @@ +#define RANDOM_UPPER_X 200 +#define RANDOM_UPPER_Y 200 + +#define RANDOM_LOWER_X 50 +#define RANDOM_LOWER_Y 50 + +/proc/spawn_lava_rivers(target_z = 5, nodes = 4) + var/list/river_nodes = list() + var/num_spawned = 0 + while(num_spawned < nodes) + var/turf/simulated/F = locate(rand(RANDOM_LOWER_X, RANDOM_UPPER_X), rand(RANDOM_LOWER_Y, RANDOM_UPPER_Y), target_z) + + river_nodes += new /obj/effect/landmark/river_waypoint(F) + num_spawned++ + + //make some randomly pathing rivers + for(var/obj/effect/landmark/river_waypoint/W in river_nodes) + if (W.z != target_z || W.connected) + continue + W.connected = 1 + var/turf/cur_turf = new /turf/simulated/floor/plating/lava/smooth(get_turf(W)) + var/turf/target_turf = get_turf(pick(river_nodes)) + + var/detouring = 0 + var/cur_dir = get_dir(cur_turf, target_turf) + while(cur_turf != target_turf) + + if(detouring) //randomly snake around a bit + if(prob(20)) + detouring = 0 + cur_dir = get_dir(cur_turf, target_turf) + else if(prob(20)) + detouring = 1 + if(prob(50)) + cur_dir = turn(cur_dir, 45) + else + cur_dir = turn(cur_dir, -45) + else + cur_dir = get_dir(cur_turf, target_turf) + + cur_turf = get_step(cur_turf, cur_dir) + + if(istype(cur_turf, /turf/simulated/floor/plating/asteroid) || istype(cur_turf, /turf/simulated/mineral)) + var/turf/simulated/floor/plating/lava/smooth/lava_turf = new(cur_turf) + lava_turf.Spread(30, 25) + else + detouring = 0 + cur_dir = get_dir(cur_turf, target_turf) + cur_turf = get_step(cur_turf, cur_dir) + continue + + + + + +/obj/effect/landmark/river_waypoint + name = "river waypoint" + var/connected = 0 + invisibility = 101 + + +/turf/simulated/floor/plating/lava/smooth/proc/Spread(probability = 30, prob_loss = 25) + if(probability <= 0) + return + + for(var/turf/simulated/F in orange(1, src)) + + var/turf/simulated/floor/plating/lava/smooth/L = new(F) + + if(L && prob(probability)) + L.Spread(probability - prob_loss) + + +#undef RANDOM_UPPER_X +#undef RANDOM_UPPER_Y + +#undef RANDOM_LOWER_X +#undef RANDOM_LOWER_Y \ No newline at end of file From 6b3503434675f627ca0ade5a57332da7cf87117a Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Tue, 15 Dec 2015 07:58:50 -0600 Subject: [PATCH 002/310] Rivers of anything --- code/game/turfs/simulated/river.dm | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/code/game/turfs/simulated/river.dm b/code/game/turfs/simulated/river.dm index 8067e2a8aaf..27ce2361dbe 100644 --- a/code/game/turfs/simulated/river.dm +++ b/code/game/turfs/simulated/river.dm @@ -4,7 +4,7 @@ #define RANDOM_LOWER_X 50 #define RANDOM_LOWER_Y 50 -/proc/spawn_lava_rivers(target_z = 5, nodes = 4) +/proc/spawn_rivers(target_z = 5, nodes = 4, turf_type = /turf/simulated/floor/plating/lava/smooth) var/list/river_nodes = list() var/num_spawned = 0 while(num_spawned < nodes) @@ -18,7 +18,7 @@ if (W.z != target_z || W.connected) continue W.connected = 1 - var/turf/cur_turf = new /turf/simulated/floor/plating/lava/smooth(get_turf(W)) + var/turf/cur_turf = new turf_type(get_turf(W)) var/turf/target_turf = get_turf(pick(river_nodes)) var/detouring = 0 @@ -40,9 +40,9 @@ cur_turf = get_step(cur_turf, cur_dir) - if(istype(cur_turf, /turf/simulated/floor/plating/asteroid) || istype(cur_turf, /turf/simulated/mineral)) - var/turf/simulated/floor/plating/lava/smooth/lava_turf = new(cur_turf) - lava_turf.Spread(30, 25) + if(!istype(cur_turf, /turf/simulated/wall) //Rivers will flow around walls + var/turf/simulated/river_turf = new turf_type(cur_turf) + river_turf.Spread(30, 25) else detouring = 0 cur_dir = get_dir(cur_turf, target_turf) @@ -59,13 +59,13 @@ invisibility = 101 -/turf/simulated/floor/plating/lava/smooth/proc/Spread(probability = 30, prob_loss = 25) +/turf/proc/Spread(probability = 30, prob_loss = 25) if(probability <= 0) return for(var/turf/simulated/F in orange(1, src)) - var/turf/simulated/floor/plating/lava/smooth/L = new(F) + var/turf/L = new src.type(F) if(L && prob(probability)) L.Spread(probability - prob_loss) From d15b2ed643df502cdc193ba252ec0505c96bcba0 Mon Sep 17 00:00:00 2001 From: bawhoppen Date: Sat, 26 Dec 2015 12:50:44 -0600 Subject: [PATCH 003/310] Revert "Spacemens will loudly announce that they are changing magazines" --- code/modules/projectiles/guns/projectile/automatic.dm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm index 80f135be1ba..681db297fc3 100644 --- a/code/modules/projectiles/guns/projectile/automatic.dm +++ b/code/modules/projectiles/guns/projectile/automatic.dm @@ -37,7 +37,6 @@ if(istype(AM, mag_type)) if(magazine) user << "You perform a tactical reload on \the [src], replacing the magazine." - user.say(pick("I'M RELOADING!!!", "NEW MAG IN!!!", "CHANGING MAG!!!", "COVER ME! I'M RELOADING!!!", "RELOADING!!!")) magazine.loc = get_turf(src.loc) magazine.update_icon() magazine = null @@ -233,4 +232,4 @@ fire_sound = 'sound/weapons/Gunshot_smg.ogg' can_suppress = 0 burst_size = 3 - fire_delay = 1 + fire_delay = 1 \ No newline at end of file From a2c7b435e9a12862d0294143c7aae96132b9ed60 Mon Sep 17 00:00:00 2001 From: Kyle Spier-Swenson Date: Sat, 26 Dec 2015 22:21:56 -0800 Subject: [PATCH 004/310] Fixes portable connector keeping air OH GOD I HOPE THIS DOESN'T BREAK SOMETHING. It shouldn't they link directly into the pipenet. --- .../ATMOSPHERICS/components/unary_devices/portables_connector.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/ATMOSPHERICS/components/unary_devices/portables_connector.dm b/code/ATMOSPHERICS/components/unary_devices/portables_connector.dm index d9e649c7a13..1c37e882211 100644 --- a/code/ATMOSPHERICS/components/unary_devices/portables_connector.dm +++ b/code/ATMOSPHERICS/components/unary_devices/portables_connector.dm @@ -6,6 +6,7 @@ can_unwrench = 1 var/obj/machinery/portable_atmospherics/connected_device use_power = 0 + volume = 0 level = 0 /obj/machinery/atmospherics/components/unary/portables_connector/visible From d57ec85154921cc697c1fa53575213e0b4047c37 Mon Sep 17 00:00:00 2001 From: Buggy123 Date: Sun, 27 Dec 2015 04:12:47 -0500 Subject: [PATCH 005/310] Buffed IEDS --- code/game/objects/items/weapons/grenades/ghettobomb.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/weapons/grenades/ghettobomb.dm b/code/game/objects/items/weapons/grenades/ghettobomb.dm index 0d1c1723f68..fb587674423 100644 --- a/code/game/objects/items/weapons/grenades/ghettobomb.dm +++ b/code/game/objects/items/weapons/grenades/ghettobomb.dm @@ -59,7 +59,7 @@ /obj/item/weapon/grenade/iedcasing/prime() //Blowing that can up update_mob() - explosion(src.loc,-1,-1,-1, flame_range = range) // no explosive damage, only a large fireball. + explosion(src.loc,-1,1,2, flame_range = range) // Small explosion that can break things, and a large fireball. qdel(src) /obj/item/weapon/grenade/iedcasing/examine(mob/user) From 594e0c9496f0b3b733cab2e4f6b21ffbb84609d8 Mon Sep 17 00:00:00 2001 From: Buggy123 Date: Sun, 27 Dec 2015 04:46:53 -0500 Subject: [PATCH 006/310] Added changelog entry. --- html/changelogs/Buggy123-IEDBUFF.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 html/changelogs/Buggy123-IEDBUFF.yml diff --git a/html/changelogs/Buggy123-IEDBUFF.yml b/html/changelogs/Buggy123-IEDBUFF.yml new file mode 100644 index 00000000000..d0febc693d1 --- /dev/null +++ b/html/changelogs/Buggy123-IEDBUFF.yml @@ -0,0 +1,6 @@ +author: Buggy123 + +delete-after:true + +changes: + - tweak: "Buffed IEDs. They now have a small explosion capable of destroying things." From 891dbe51704943bd128b27f6921baa79389a3add Mon Sep 17 00:00:00 2001 From: Buggy123 Date: Sun, 27 Dec 2015 06:06:50 -0500 Subject: [PATCH 007/310] Removed changelog entry, readding it via text in PR. --- html/changelogs/Buggy123-IEDBUFF.yml | 6 ------ 1 file changed, 6 deletions(-) delete mode 100644 html/changelogs/Buggy123-IEDBUFF.yml diff --git a/html/changelogs/Buggy123-IEDBUFF.yml b/html/changelogs/Buggy123-IEDBUFF.yml deleted file mode 100644 index d0febc693d1..00000000000 --- a/html/changelogs/Buggy123-IEDBUFF.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: Buggy123 - -delete-after:true - -changes: - - tweak: "Buffed IEDs. They now have a small explosion capable of destroying things." From 933bfcae0387ca8229ded8694a2b04a29c872b8c Mon Sep 17 00:00:00 2001 From: Buggy123 Date: Sun, 27 Dec 2015 19:46:30 -0500 Subject: [PATCH 008/310] Update ghettobomb.dm Reduced the buff, can no longer blow holes to space. --- code/game/objects/items/weapons/grenades/ghettobomb.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/weapons/grenades/ghettobomb.dm b/code/game/objects/items/weapons/grenades/ghettobomb.dm index fb587674423..8173551af10 100644 --- a/code/game/objects/items/weapons/grenades/ghettobomb.dm +++ b/code/game/objects/items/weapons/grenades/ghettobomb.dm @@ -59,7 +59,7 @@ /obj/item/weapon/grenade/iedcasing/prime() //Blowing that can up update_mob() - explosion(src.loc,-1,1,2, flame_range = range) // Small explosion that can break things, and a large fireball. + explosion(src.loc,-1,-1,1, flame_range = range) // Small explosion that can break things, and a large fireball. qdel(src) /obj/item/weapon/grenade/iedcasing/examine(mob/user) From fbd1175dd92b2e5cbb507d0790c9e6d420197034 Mon Sep 17 00:00:00 2001 From: Buggy123 Date: Sun, 27 Dec 2015 22:51:46 -0500 Subject: [PATCH 009/310] Increased the buff slightly, has a larger weak explosion now. --- code/game/objects/items/weapons/grenades/ghettobomb.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/weapons/grenades/ghettobomb.dm b/code/game/objects/items/weapons/grenades/ghettobomb.dm index 8173551af10..413e781efd4 100644 --- a/code/game/objects/items/weapons/grenades/ghettobomb.dm +++ b/code/game/objects/items/weapons/grenades/ghettobomb.dm @@ -59,7 +59,7 @@ /obj/item/weapon/grenade/iedcasing/prime() //Blowing that can up update_mob() - explosion(src.loc,-1,-1,1, flame_range = range) // Small explosion that can break things, and a large fireball. + explosion(src.loc,-1,-1,3, flame_range = range) // Small explosion that can break things, and a large fireball. qdel(src) /obj/item/weapon/grenade/iedcasing/examine(mob/user) From 863c0c410fd6374622cb0cf77b9ec916fe80ebee Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Mon, 28 Dec 2015 19:37:37 -0600 Subject: [PATCH 010/310] Adds follow links --- code/game/gamemodes/cult/cult.dm | 4 +++- code/modules/mob/living/simple_animal/guardian/guardian.dm | 6 ++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/code/game/gamemodes/cult/cult.dm b/code/game/gamemodes/cult/cult.dm index 10e43124d7f..c74245e2af5 100644 --- a/code/game/gamemodes/cult/cult.dm +++ b/code/game/gamemodes/cult/cult.dm @@ -21,8 +21,10 @@ else user.whisper(message) for(var/mob/M in mob_list) - if(iscultist(M) || (M in dead_mob_list)) + if(iscultist(M)) M << "[(ishuman(user) ? "Acolyte" : "Construct")] [user]: [message]" + if(M in dead_mob_list) + M << "(F) [(ishuman(user) ? "Acolyte" : "Construct")] [user]: [message]" log_say("[user.real_name]/[user.key] : [message]") diff --git a/code/modules/mob/living/simple_animal/guardian/guardian.dm b/code/modules/mob/living/simple_animal/guardian/guardian.dm index c4e5c7efb8c..00b54ecfe58 100644 --- a/code/modules/mob/living/simple_animal/guardian/guardian.dm +++ b/code/modules/mob/living/simple_animal/guardian/guardian.dm @@ -137,8 +137,10 @@ if(!input) return for(var/mob/M in mob_list) - if(M == summoner || (M in dead_mob_list)) + if(M == summoner) M << "[src]: [input]" + if(M in dead_mob_list) + M << "(F) [src]: [input]" src << "[src]: [input]" log_say("[src.real_name]/[src.key] : [input]") @@ -159,7 +161,7 @@ if(G.summoner == src) G << "[src]: [input]" else if (M in dead_mob_list) - M << "[src]: [input]" + M << " (F)[src]: [input]" src << "[src]: [input]" log_say("[src.real_name]/[src.key] : [text]") From d51a6d796948d87c3ce0881e0ac04fb0d5bb48a3 Mon Sep 17 00:00:00 2001 From: TrustyGun Date: Tue, 29 Dec 2015 16:52:21 -0500 Subject: [PATCH 011/310] Adds two new UI styles: Slimecore, and Operative --- code/__HELPERS/type2type.dm | 2 ++ code/modules/client/preferences.dm | 4 ++++ code/modules/client/preferences_savefile.dm | 3 ++- icons/mob/screen_operative.dmi | Bin 0 -> 21840 bytes icons/mob/screen_slimecore.dmi | Bin 0 -> 26321 bytes 5 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 icons/mob/screen_operative.dmi create mode 100644 icons/mob/screen_slimecore.dmi diff --git a/code/__HELPERS/type2type.dm b/code/__HELPERS/type2type.dm index 246d66e2cbe..fb24ac24859 100644 --- a/code/__HELPERS/type2type.dm +++ b/code/__HELPERS/type2type.dm @@ -300,6 +300,8 @@ switch(ui_style) if("Retro") return 'icons/mob/screen_retro.dmi' if("Plasmafire") return 'icons/mob/screen_plasmafire.dmi' + if("Slimecore") return 'icons/mob/screen_slimecore.dmi' + if("Operative") return 'icons/mob/screen_operative.dmi' else return 'icons/mob/screen_midnight.dmi' //colour formats diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 6124923d224..ca7deaef336 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -1011,6 +1011,10 @@ var/list/preferences_datums = list() UI_style = "Plasmafire" if("Plasmafire") UI_style = "Retro" + if("Retro") + UI_style = "Slimecore" + if("Slimecore") + UI_style = "Operative" else UI_style = "Midnight" diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index b6a823ea3fc..06fceecce71 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -192,7 +192,8 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car //Sanitize ooccolor = sanitize_ooccolor(sanitize_hexcolor(ooccolor, 6, 1, initial(ooccolor))) lastchangelog = sanitize_text(lastchangelog, initial(lastchangelog)) - UI_style = sanitize_inlist(UI_style, list("Midnight", "Plasmafire", "Retro"), initial(UI_style)) + UI_style = sanitize_inlist(UI_style, list("Midnight", "Plasmafire", "Retro","Slimecore" + ), initial(UI_style)) nanoui_fancy = sanitize_integer(nanoui_fancy, 0, 1, initial(nanoui_fancy)) default_slot = sanitize_integer(default_slot, 1, max_save_slots, initial(default_slot)) toggles = sanitize_integer(toggles, 0, 65535, initial(toggles)) diff --git a/icons/mob/screen_operative.dmi b/icons/mob/screen_operative.dmi new file mode 100644 index 0000000000000000000000000000000000000000..b62ab3fb9ec92bcf8ab9fea5896000bed4beb560 GIT binary patch literal 21840 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%0DFq?q} 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 literal 0 HcmV?d00001 diff --git a/icons/mob/screen_slimecore.dmi b/icons/mob/screen_slimecore.dmi new file mode 100644 index 0000000000000000000000000000000000000000..43c17abcd9796b87e9d0383691b04fb10613b7f7 GIT binary patch literal 26321 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 z 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 R$yWdX002ovPDHLkV1n(MY)SwC literal 0 HcmV?d00001 From a72a66cab2c18ef470ec82d5ffbd43f499e619d9 Mon Sep 17 00:00:00 2001 From: TrustyGun Date: Tue, 29 Dec 2015 19:47:39 -0500 Subject: [PATCH 012/310] Fixes literally everything --- code/modules/client/preferences_savefile.dm | 3 +-- code/modules/tooltip/tooltip.dm | 2 +- code/modules/tooltip/tooltip.html | 6 ++++++ icons/mob/screen_operative.dmi | Bin 21840 -> 25044 bytes icons/mob/screen_slimecore.dmi | Bin 26321 -> 20319 bytes 5 files changed, 8 insertions(+), 3 deletions(-) diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 06fceecce71..53c66f1f520 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -192,8 +192,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car //Sanitize ooccolor = sanitize_ooccolor(sanitize_hexcolor(ooccolor, 6, 1, initial(ooccolor))) lastchangelog = sanitize_text(lastchangelog, initial(lastchangelog)) - UI_style = sanitize_inlist(UI_style, list("Midnight", "Plasmafire", "Retro","Slimecore" - ), initial(UI_style)) + UI_style = sanitize_inlist(UI_style, list("Midnight", "Plasmafire", "Retro", "Slimecore", "Operative"), initial(UI_style)) nanoui_fancy = sanitize_integer(nanoui_fancy, 0, 1, initial(nanoui_fancy)) default_slot = sanitize_integer(default_slot, 1, max_save_slots, initial(default_slot)) toggles = sanitize_integer(toggles, 0, 65535, initial(toggles)) diff --git a/code/modules/tooltip/tooltip.dm b/code/modules/tooltip/tooltip.dm index eb306655402..1ef38cf1383 100644 --- a/code/modules/tooltip/tooltip.dm +++ b/code/modules/tooltip/tooltip.dm @@ -96,7 +96,7 @@ Notes: //Open a tooltip for user, at a location based on params -//Theme is a CSS class in tooltip.html, by default this wrapper chooses a CSS class based on the user's UI_style (Midnight, Plasmafire, Retro) +//Theme is a CSS class in tooltip.html, by default this wrapper chooses a CSS class based on the user's UI_style (Midnight, Plasmafire, Retro, etc) //Includes sanity.checks /proc/openToolTip(mob/user = null, atom/movable/tip_src = null, params = null,title = "",content = "",theme = "") if(istype(user)) diff --git a/code/modules/tooltip/tooltip.html b/code/modules/tooltip/tooltip.html index 04a471d4559..782ef5be7a1 100644 --- a/code/modules/tooltip/tooltip.html +++ b/code/modules/tooltip/tooltip.html @@ -61,6 +61,12 @@ .retro .wrap {border-color: #005E00;} .retro .content {color: #003366; border-color: #005E00; background-color: #00BD00;} + + .slimecore .wrap {border-color: #2B2B33;} + .slimecore .content {color: #6EA161; border-color: #2B2B33; background-color: #354E35;} + + .operative .wrap {border-color: #A10000;} + .operative .content {color: #0F0B0C ; border-color: #A10000; background-color: #382626;} diff --git a/icons/mob/screen_operative.dmi b/icons/mob/screen_operative.dmi index b62ab3fb9ec92bcf8ab9fea5896000bed4beb560..01c64e5a4fd22fdcfe8e3baa1f7865fcbdca04e3 100644 GIT binary patch literal 25044 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 z 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 G1pgl`tQ8Xg literal 21840 zcmY&J5p6~1R`y+@~^10`p^S=zhoYxLpPCd4A^>#x4%>W0R z=DgBJ5wb6yi7~7#`-(azFnp8YR^AKi8>vfE?lJSKOP*A?l#_hVo>8LMrTkr-t^974 zTM~NVm7=mZ)Iq-dAq&H|dr4IuCS%^uMx|9l==nGK+s}u;b?w78E^WyO=Dy?BP#Om* ze(6BiYTW0&+i$4iZu+WB{2Ll^vG*Ilq1$kKP_e^H)glAnyYe4KFRhn~MmeBz+-ZA1 zl-cWzbPkm7NBV>ts`o`)>u5V6d}d$OPW_r5`pzsVY?d?SizM=T7JKv6-!IJC58n3| zAO)yQl4H?^ZcUKUwjCPRE9L^x@pUVm?~I~OJL#`wHdwzLtDfmr z$?*ltshm)p2lO&R+yxZ%@GMi_fb8$+-T?qgvF8bPG?e%B?wSw10073;vlp=4E$<2C zpB&!m54?@to_YJ)c|HZW+c~;=Uw3`#4VAhsd0miZ|Ye&Z;A`PU|_lV?W;($rAj9EX_BB2YOwqJcg%iS(rHIII+ za@W|&f#KeVK7i))sHt~N>7bY*A)!hkya?HLMBB3r?z7oItlwYx6SxuV%d)v|9+=|w zrD1={6hBntHvFwv-_-Yy2ck0g^Z*tC_|w(Y81f@y&-rhNk=5U*p`-f1!|R|1NOqmS z?L)qnfS&;<619v9KE)q84Jgqh`Q55Xr4zJQ`}N|IsK={!>*6t9*SmIYKqoTjx9j8O zxn2{FxxAl*aa+3Rz3-=QJQG?`Da#b*AwCn@5jQzk-c~z(40HR{UIA<`38=YVuCg_Q z?{*9FSonAu=l&GO_p|r5|LMWH!j8yr2qP|8YA5ne5|LWEKP^~;L;%+Cm5SqYlRZ0Q ziKmBH&gC3iUYtzB0Zj>ONV_;`YNiUMQaiTMB3EK#~fwphFT_ z)GIq52}>}^_1VZf@NO`7S+y+KeMQH_xaFZMf9z|L>rFBe%(C3*RfeIKfo+~@CP7oC zh2GH}J3G;&}OF|G%GLhI2i{s4sMayqD)Z>`=nfrfs^6B?4s} zk=|Jzk;_>OUxTb;FC%-li4gkL8%lqQ%|v{x6{}Y)^F`Y=16T5MbAqBR zN<|ZNnE)1@^QRln?eWV*Q~YbQbH(}cy^Sw!Yl`qItno5vY!~^GSlq3>LvM>Wy zI9^RUW5(>OZc4kfSqi(&Yrvs*QIX!J<$c~YOY@Z2|5?-%>&bx{q~6L4Odue?OicP8 zs0{lbIL{Kk?A`-r3@^uk~uReSw{J4C(H04Wre4CX_Uf?4}AD$GU%>GvwLTz zv9=2+;Zzf!Szr72!P3@L&ul|UyjuW(&mWryo4R6C-RcpLF#me>cV#^}@LCT-z2Dad}Tlb%EG$NX?PF9D%Ih7b^#}k(AR!`)@qhO;wt&D-4y7E+y zR3B<=o$f<7<2p8n*b?>^jTOH37}tL7i3`+2I}QA5Kl>PrDmZr+U$-r1h`dG(Sj_CL z>gBJMxUV2T`10F7YaH&#_ebWvAPhgxl0Vv=8C9|tYd15k9lVkAm_5^Wk8TH&$3Xt^ zJ^vDJcLw#c3zz8KQ`*{aje<WTlB z#Hzg-SFiguYV;|ZSQSjd{0(;*9zw&Z?uPrKYoyE#wybsGX`?)+a<7k(_=G-2)7pW4 zLB9h<-lt(oi=Lg)B0KA2}=S@;1ZD*OG?3Hz4lXc`KAbuKAk&j@reOtpS zc#e64WfS1RBL-NG6g*@G+8FxqO^LT-^!*G$W?E>Tl!K1T^mhi0)+RO5DNBe`30}Z` z`Y_75U|n3gCUvkPE?;CR!T_;WlADZ}u_I*D;rhwSKIs;V_=6#!|G1Y1-kdkBPwJGu za^GW$>3^V(-f=~+ZU*47bz@tRHP49BQ9uCvh#P-wfi_fY;A6jpYlFl<)*^=WUhlc2 zWPb0L2uk2_>gnc2nio@0*s@>V(F35y$NdG%1Uz00#e@goa2V$4%hKa?XYVLgVt0Os2-2fT>THX9V)LiKr z>gfF*et%+t?0{YF4Zy;!QtAB;8V)SZu^SXDo`T>$|Ib~eh;&)=n05zEdu4MMJ-7_+ zVq{CT%eYiVFg@>pq(&YQzbz>%Vk{6uu&#t%z znoLr)!*egQ#OXC1rlSC#yj34$y&wN*0L;UPo%h@2`lLqqxbcP^19P<~*F09#V9sij z5Sw66U6S3Z_ZZNGg}G1S8>Jx3ep27f47WaV9fe-1bDYSpv{@nW_z){7tKd4nk0+{B zP?wMl`&$GsdrJi(Ca6$TS!z)wOHm;|=;g-lYp$SkUm(T{1NtTdWk!OO+$ni@%&zx* zNT4aaXB#0TdX`)|y2=I22T(b3031`JOB#yJmX&9FCoduQA=*8`j}D`xtrpWBu%R4v zS$~BV_4SZ;#iA}mK6^z`IOd?jwPo;X9eRAchD3b~9%}2AgREsH&cpKN@!oEJY_?t? z%Vh)C0kGd!zKOUM*~3*$M22xT_e9`Q`074T$<RkSAF`~!~z=ZP(iPlYAB`k@$V zbRh1N;dB{6Yl<`}QdHA9VMrmLbXU5dWJZVRv2D*idFq2HMnCNxui}kvS%`zuHp04C z$^Hfamta5h_ZUyLpcv*7^c&LkNOk7wHX}2>pDG5SrjU`h^E+gk377k|dG=$^@m0>n znQLW^>MDOXwuSFCvbvWCN+9P{XOmBkh3_Sw%4{d_q1nkOSV(a;wNWbn>t*!3TKaw) zzrWmo@3R|#8vQDNlA+0^0ihBmLZKMd%>bx4sb@nL<>hOgeY`)?lRy(qP`>~-j)AW+ z~ zgSw1%JdJSsKX~T_Qs(D(f8_76jC!S3X%1ME>p0SukbN9{5hf%dcR)`kpRnrJIB>My ziwchp{*~}=#H57S)yH$k+LigcmEA1gM_w-5G4BVI9Cfrap32TK%u6T%NYPt^E3()n z;7zXbXj$a_YOm&D@FHt|X)e#=_Nzt@!M=bwY#ookDw?})ya_mMI=oVmolE~e;Qxx?u7irSD^Jd8>wfk0^9*?LF(s9X@{_r;&S;O9wfu@WEuisa+&Jd-UShEj57>g0C_W=h3%YqA}|A=15Rgon_h&E1~YvWNok1EEH@Q2rK0 zW;vL4Rk=zycf7NGNU|4aDjctuc3W`MGTf`F-T^s-VGyV7+9OQy+edZCna%MOsfoGq zNs?(VMGTaGqSN;IB=a_Wm428Th3^nF{4!W)xRSivL`!}HsHF;0wUPkoKvm@LItEBH z)xbXN{0(`ElTeP|4+R1bG6sJ4Lsfh+4`KKVyctIWk0vm@%mwx&(yOi3kN@THnB?F) z4|p0656fTs-vk;-z&}2OO;hi#bm*%PXXc*K$l^SeMqqIG>yM2y5UW^!!1dkhiSW0d zCEhU+H^-rG-7x?kWywc+=d%yIT=jgS_beVRhb=fZk*wHjY@QRUfbrBf3Qc~NbZY{Q zK2e;*f2HZcvqaJDVisF1*}*n2&`4h?D<9i-w5Nnwr_{+dQ;$hC|oNz}Cuuv$l> zFSU-eL|V2Rue!$J8cbYt_+f!7L)VWqIUN_?H~dUFkH7Z@WCA_yEO8Bir39 zk}*W8s#~z5JDL%RJb+}$q2kjXV59fx7#Azg9T(yFN*z-jc8`zlYjM@FiY;`_eM!{%0P|Fx{_hYUmkp^Ao zX^NLJ0ZIT}?(75XoNzape~XKLJ%_^iW%*N|T6_l#bf{u71yu^#MM;j2d5}ep3N3bT zwc-QK`=iD1s>3-wx4zRRTVN;;=j{9t6wL;Gt;3)2iS0i8KM$8Vx269z;5mmeIy;s% zW|}s;jAFZCo!TwhlGQI(T2Fc#%~$z+S`gLeCIkB992e}o@;o|rKcZqE6 zt<1DJ0aQ+OC>zP`V!f{`1XJQyA z({bK=?I!!^RPHbs3qgAgYkSBPJS zwNmVbv~$wyFj~hfu;A$La|(xYRe*Vj-(f-x>%E4nk-cJJa96JXz^NKytN7Av+S8N# zKprbSf6jfh$SS2bzx>;Lupw{MwZ>x(PlSt{xr;9Bx_+~ci!xreQ*3?h+q+(cf-2a5fr^d{uIl5KfA=t-+ zD!|Cau6sK}elnt%;}2i7m)cRh{7==g&ljGq)8V+I$B;e2Gmk;gC`fV|hxL%{!J>9b zgy`5Qcw;cvrA&tjHEJM&GeI3oYq5z^&g5Ls>yEA0Ol?0d0n+kc zWCsN4+{GtXupI~ZP~x*4Qp^Fw?Ra$@14q?T6r|Pz^;!b;6lFToMk~CZ6b<$Y-h&G( z3tnDcpxy}i7OuwsRZl1R?+UNkc5Q0WRevH_6!@az(i8X7#0>t!Bu9G|8@Cm?_l=>y zXqx;PCyzeDKKyu-^vaDjiBbSuKp)lORi*FgxFkI`0J*F0KPZMD|M3G*=nI zuY^0baT%;vUOR&g1@60$q`c-PpA^A|h{ZTC4XFKZp6`-hSOx^I6;mJNET;M}NG;91 zX%TNQhv)c~S^TlRs73~p27~mj>h8E$w1|=(m=U~3(UY}?)-Hi-SsS*81%lSs8y;Yn zuAVqwYZ{9c2?@qwx!?T9K1zgNOVO`o76OPYe~X9nKk5NjNWvlOvwr70lk}>uA|@2> zP)ggIvi{z@1j%eLS_yXYbY-F7s!hz;Sj;{r!#T{RUidtx$5{y+y%Kd(*9lrf;L#@V z0GBUtL_g8P`m5C%kt8GMus%OzjJ3(ky^{tx#0iall^Z(UU7Sl=X<&(3K} zM0hXhtFZ#A%c61GU&cj0U^l!FX7G!jlIdKIbe3-vi#39rCwIKM%b{h*zD@Reo9Eml zcM2mTgJ_Q_<&{BP38xhTzY_Kzho}S1LkC|5M>D5S_THdt*~Y*xjM-Z37(PcW@Jc^_ z{K`$^*y#%~@nn6~QeZ1*yQD}9CV|xuwkhRvIm!+9IQo{OL_onC*VWO0?U1V2UMMOH zAQx@4BP&@N-1?MKzh%z3-**sbGMd!lrt|kVcup3b2JeJBUwEcQ`^u@0ZC|hhyU!7Z z;^Ih1lZH%TUSdilR8m$qDx-sFU%+TEkgcc`wo;?y`G2L8eDj?9kf^+v_Bwx90s-8) z=$LLY0)>w}<{>%SS|SH9u4;0EpGSw1v8=}z)-=xb^{n|7mPq^`ZTcDVI8n3`#a9P8 zRyi`liKJ+9jQ&lo4nLABak~iAdCjn+BRbBt@PC8F(8V(eI?*6?&WPQO2i+`15v$uq zvm#8k=Yy=ucxgK$+0qqMel=(PkF6B5;KbD($f}^FK*{qUvO2Jevtxwn)Yl4UjU}kk zEOq{-YDQ%O@ZE4|lW5DsW<^zytW(=TQo`wch}(w_x|aP8rr$PfO$ERNfA;Pfc2&07 z0?5%$pd`~m@@&I}3lGZg1~J+y?H=-n^8frFFJItcZmWx>cZcARHLAb4k$h*$H|J3V z(^I9-{O>P?8m0VY@NM&d{K|&tRzHJ&s*>-z+jMiwD-!aV{)T5osm-&t6Q)0a%w_#g zksoKgQ#0ce%p9iClPT_o54=xhj@Y}>uqr>)=PT@PtOVg`)sh|xZZUvkR{f!P%O|JJ zwB)&?Q(knWQs78C$vL)BDD+`wn@-BeJhAuqc=a8RFg)(j^m^}V+Af|K@M?}}d=O1+ zKUXp98(>VTk*0iJWyd}Q*Qka5y0RhVtbIJ+v`C@eh;4n=%pA$el&|&3KE#gTx>{ab5Y2<~@mct0W|BXZl@O%+(!Y}5CjT1VWZ7Xx zj{F5ull83i9Bq6!#y`7^_PCU)_2}DWZ0wf)7i!)n{~j5Ka#Yjhlk(n<8EDg^aVNuXlP;gQZg1m8T03+@UUZw!WX5K;`@{G?5lss z!yOcTb7wP8Z<&y-#(_xrW4|Cl|JlT~kRvPs<}yc4oXV6|Dy==$@{UG$6VFs__)S{{ zz2Mz|_#^vpJ3>X6H2lz9y=l`36wll%hffXxm)-yUm00oGUX3kRcl)6_X%5VDhpUNJ zeV*{wh{130Md+-uYLjt^! z*jS?e4DA(1B1^Xq0{UW|lm>g0lM)cTR zxutty-WL>fU~0;RUaC-IKFojD=y9X?V1Cf$Gq3BbZ@=N53nJam8}dc!_GlKWDPlaz zvc1};R}03JBrBgl_;HS+uJouvPl8Q(H%hywBwVfXHT`^i0`O%kw)laSNJ=I4-Z>K* zqvKnTbnbR^-J^E#2f~yGbp`n{B5cw$FhN(1ow6F3+mCI={V76)5#<1f10MXQ3ZCi1 z8VoLZ^ZYrtqwvBD$b!r^_KE`I*87PJV5q2Ol4713=`##Iy71Y$A>c>ux^+Cx$lkAB zzB$P|NOdz$3N$`GL%e%GGW1*TgOD?^5kjt;NNCvG7f(XgRjnxcmS_j|@eWAE74v)j z&&WXxI+?m!Sg`s=hD(KGYnR;N1|R*Zmaak^F5s{h3vI&>uz#-38b>5)ejJ72CEkC! z{ASw=Q~`tgPRUZ?J&HZYrk_siB&;!b{pI+n+OWFdwutV4doSR*hNtsE3b)Whrf^uF?_Ro4mu|_b?EO*7j5-J)qb)E2-YDE>vV;Fug2~sblziiIg;bL zH~%Jt6R8pYFDU;oXq$$=}teXx5~4aiw><6sWh2pY|~GvIa_K}3qNLOGe;|j(gGLJ zAvB7L&2opZW`QeTzYzCDzEW2rD!>CBt+W=MF?_+5v$ye9!_ln91{28<#lHM?BK$UC zIj|kvZXP7|%#Y*L&VtFx;u42XQS)2vJ@@Q$=gDnJGao{I(?EwcClk9tbO%0DFq?q} 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 diff --git a/icons/mob/screen_slimecore.dmi b/icons/mob/screen_slimecore.dmi index 43c17abcd9796b87e9d0383691b04fb10613b7f7..27c6602d6cdd3f25d68a846dde115d770ecca7b8 100644 GIT binary patch literal 20319 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 Q%ni7D+4NF@q206p0`+``2LJ#7 delta 26193 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 zⓈ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 Z{6A_{&_N8o$yWdX002ovPDHLkV1jETIQRen From 7fbfaef890b700381bd5844143d970a7fa400a76 Mon Sep 17 00:00:00 2001 From: Buggy123 Date: Wed, 30 Dec 2015 17:17:13 -0500 Subject: [PATCH 013/310] Nerfed holos: Owner always takes cloneloss --- .../mob/living/simple_animal/guardian/guardian.dm | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/code/modules/mob/living/simple_animal/guardian/guardian.dm b/code/modules/mob/living/simple_animal/guardian/guardian.dm index 14a03d2dbb9..5837571951d 100644 --- a/code/modules/mob/living/simple_animal/guardian/guardian.dm +++ b/code/modules/mob/living/simple_animal/guardian/guardian.dm @@ -72,18 +72,18 @@ loc = get_turf(summoner) -/mob/living/simple_animal/hostile/guardian/adjustBruteLoss(amount) //The spirit is invincible, but passes on damage to the summoner +/mob/living/simple_animal/hostile/guardian/adjustCloneLoss(amount) //The spirit is invincible, but passes on damage to the summoner var/damage = amount * damage_transfer if (summoner) if(loc == summoner) return - summoner.adjustBruteLoss(damage) + summoner.adjustCloneLoss(damage) if(damage) - summoner << "Your [name] is under attack! You take damage!" - summoner.visible_message("Blood sprays from [summoner] as [src] takes damage!") + summoner << "Your [name] is under attack! You feel weaker!" + summoner.visible_message("[summoner] weakens as [src] takes damage!") if(summoner.stat == UNCONSCIOUS) summoner << "Your body can't take the strain of sustaining [src] in this condition, it begins to fall apart!" - summoner.adjustCloneLoss(damage/2) + summoner.adjustCloneLoss(damage/2) //50% extra damage while in crit /mob/living/simple_animal/hostile/guardian/ex_act(severity, target) switch (severity) @@ -91,10 +91,10 @@ gib() return if (2) - adjustBruteLoss(60) + adjustCloneLoss(60) if(3) - adjustBruteLoss(30) + adjustCloneLoss(30) /mob/living/simple_animal/hostile/guardian/gib() if(summoner) @@ -311,6 +311,7 @@ C.adjustFireLoss(-5) C.adjustOxyLoss(-5) C.adjustToxLoss(-5) + C.adjustCloneLoss(-5) /mob/living/simple_animal/hostile/guardian/healer/ToggleMode() if(src.loc == summoner) From df2fd583a57daaac8abb5cb804ba1de3a4b66636 Mon Sep 17 00:00:00 2001 From: Buggy123 Date: Wed, 30 Dec 2015 17:20:46 -0500 Subject: [PATCH 014/310] reverted changes to avoid issues with guard PR --- code/game/objects/items/weapons/grenades/ghettobomb.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/weapons/grenades/ghettobomb.dm b/code/game/objects/items/weapons/grenades/ghettobomb.dm index 413e781efd4..b5e2d7c2069 100644 --- a/code/game/objects/items/weapons/grenades/ghettobomb.dm +++ b/code/game/objects/items/weapons/grenades/ghettobomb.dm @@ -59,7 +59,7 @@ /obj/item/weapon/grenade/iedcasing/prime() //Blowing that can up update_mob() - explosion(src.loc,-1,-1,3, flame_range = range) // Small explosion that can break things, and a large fireball. + explosion(src.loc,-1,-1,-1, flame_range = range) // Small explosion that can break things, and a large fireball. qdel(src) /obj/item/weapon/grenade/iedcasing/examine(mob/user) From 942ce3baef6b7a094c507208d4df0843de33bdf5 Mon Sep 17 00:00:00 2001 From: Buggy123 Date: Wed, 30 Dec 2015 17:21:45 -0500 Subject: [PATCH 015/310] Update ghettobomb.dm --- code/game/objects/items/weapons/grenades/ghettobomb.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/weapons/grenades/ghettobomb.dm b/code/game/objects/items/weapons/grenades/ghettobomb.dm index b5e2d7c2069..0d1c1723f68 100644 --- a/code/game/objects/items/weapons/grenades/ghettobomb.dm +++ b/code/game/objects/items/weapons/grenades/ghettobomb.dm @@ -59,7 +59,7 @@ /obj/item/weapon/grenade/iedcasing/prime() //Blowing that can up update_mob() - explosion(src.loc,-1,-1,-1, flame_range = range) // Small explosion that can break things, and a large fireball. + explosion(src.loc,-1,-1,-1, flame_range = range) // no explosive damage, only a large fireball. qdel(src) /obj/item/weapon/grenade/iedcasing/examine(mob/user) From 9bb5283e65f7f93a33d2318c132738e166d13b1b Mon Sep 17 00:00:00 2001 From: Buggy123 Date: Wed, 30 Dec 2015 17:31:36 -0500 Subject: [PATCH 016/310] Buffed IED - no explosion, but very large fireball --- code/game/objects/items/weapons/grenades/ghettobomb.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/weapons/grenades/ghettobomb.dm b/code/game/objects/items/weapons/grenades/ghettobomb.dm index 0d1c1723f68..88b7b54ba23 100644 --- a/code/game/objects/items/weapons/grenades/ghettobomb.dm +++ b/code/game/objects/items/weapons/grenades/ghettobomb.dm @@ -59,7 +59,7 @@ /obj/item/weapon/grenade/iedcasing/prime() //Blowing that can up update_mob() - explosion(src.loc,-1,-1,-1, flame_range = range) // no explosive damage, only a large fireball. + explosion(src.loc,-1,-1,-1, flame_range = 4) // no explosive damage, only a large fireball. qdel(src) /obj/item/weapon/grenade/iedcasing/examine(mob/user) From 829f68f39ce42372e3e964249e3c0bd295f39afd Mon Sep 17 00:00:00 2001 From: Buggy123 Date: Wed, 30 Dec 2015 17:34:51 -0500 Subject: [PATCH 017/310] Reverted Holo nerf for IED buff PR --- .../living/simple_animal/guardian/guardian.dm | 412 +----------------- 1 file changed, 3 insertions(+), 409 deletions(-) diff --git a/code/modules/mob/living/simple_animal/guardian/guardian.dm b/code/modules/mob/living/simple_animal/guardian/guardian.dm index 5837571951d..52a419b0f2a 100644 --- a/code/modules/mob/living/simple_animal/guardian/guardian.dm +++ b/code/modules/mob/living/simple_animal/guardian/guardian.dm @@ -1,412 +1,4 @@ -/mob/living/simple_animal/hostile/guardian - name = "Guardian Spirit" - real_name = "Guardian Spirit" - desc = "A mysterious being that stands by it's charge, ever vigilant." - speak_emote = list("intones") - response_help = "passes through" - response_disarm = "flails at" - response_harm = "punches" - icon = 'icons/mob/mob.dmi' - icon_state = "stand" - icon_living = "stand" - speed = 0 - a_intent = "harm" - stop_automated_movement = 1 - floating = 1 - attack_sound = 'sound/weapons/punch1.ogg' - atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) - minbodytemp = 0 - maxbodytemp = INFINITY - attacktext = "punches" - maxHealth = INFINITY //The spirit itself is invincible - health = INFINITY - environment_smash = 0 - melee_damage_lower = 15 - melee_damage_upper = 15 - butcher_results = list(/obj/item/weapon/ectoplasm = 1) - AIStatus = AI_OFF - var/animated_manifest = FALSE - var/cooldown = 0 - var/damage_transfer = 1 //how much damage from each attack we transfer to the owner - var/mob/living/summoner - var/range = 10 //how far from the user the spirit can be - var/playstyle_string = "You are a standard Guardian. You shouldn't exist!" - var/magic_fluff_string = " You draw the Coder, symbolizing bugs and errors. This shouldn't happen! Submit a bug report!" - var/tech_fluff_string = "BOOT SEQUENCE COMPLETE. ERROR MODULE LOADED. THIS SHOULDN'T HAPPEN. Submit a bug report!" - var/bio_fluff_string = "Your scarabs fail to mutate. This shouldn't happen! Submit a bug report!" -/mob/living/simple_animal/hostile/guardian/Life() //Dies if the summoner dies - ..() - if(summoner) - if(summoner.stat == DEAD) - src << "Your summoner has died!" - visible_message("The [src] dies along with its user!") - summoner.visible_message("[summoner]'s body is completely consumed by the strain of sustaining [src]!") - for(var/obj/item/W in summoner) - if(!summoner.unEquip(W)) - qdel(W) - summoner.dust() - ghostize() - qdel(src) - else - src << "Your summoner has died!" - visible_message("The [src] dies along with its user!") - ghostize() - qdel(src) - if(summoner) - if (get_dist(get_turf(summoner),get_turf(src)) <= range) - return - else - src << "You moved out of range, and were pulled back! You can only move [range] meters from [summoner.real_name]" - visible_message("The [src] jumps back to its user.") - loc = get_turf(summoner) - -/mob/living/simple_animal/hostile/guardian/Move() //Returns to summoner if they move out of range - ..() - if(summoner) - if (get_dist(get_turf(summoner),get_turf(src)) <= range) - return - else - src << "You moved out of range, and were pulled back! You can only move [range] meters from [summoner.real_name]" - visible_message("The [src] jumps back to its user.") - loc = get_turf(summoner) - - -/mob/living/simple_animal/hostile/guardian/adjustCloneLoss(amount) //The spirit is invincible, but passes on damage to the summoner - var/damage = amount * damage_transfer - if (summoner) - if(loc == summoner) - return - summoner.adjustCloneLoss(damage) - if(damage) - summoner << "Your [name] is under attack! You feel weaker!" - summoner.visible_message("[summoner] weakens as [src] takes damage!") - if(summoner.stat == UNCONSCIOUS) - summoner << "Your body can't take the strain of sustaining [src] in this condition, it begins to fall apart!" - summoner.adjustCloneLoss(damage/2) //50% extra damage while in crit - -/mob/living/simple_animal/hostile/guardian/ex_act(severity, target) - switch (severity) - if (1) - gib() - return - if (2) - adjustCloneLoss(60) - - if(3) - adjustCloneLoss(30) - -/mob/living/simple_animal/hostile/guardian/gib() - if(summoner) - summoner << "Your [src] was blown up!" - summoner.gib() - ghostize() - qdel(src) - -//Manifest, Recall, Communicate - -/mob/living/simple_animal/hostile/guardian/proc/Manifest() - if(cooldown > world.time) - return - if(loc == summoner) - loc = get_turf(summoner) - cooldown = world.time + 30 - if(animated_manifest) - var/end_icon = icon_state - icon_state = "parasite_forming" - spawn(6) - icon_state = end_icon - -/mob/living/simple_animal/hostile/guardian/proc/Recall() - if(cooldown > world.time) - return - loc = summoner - buckled = null - cooldown = world.time + 30 - -/mob/living/simple_animal/hostile/guardian/proc/Communicate() - var/input = stripped_input(src, "Please enter a message to tell your summoner.", "Guardian", "") - if(!input) return - - for(var/mob/M in mob_list) - if(M == summoner || (M in dead_mob_list)) - M << "[src]: [input]" - src << "[src]: [input]" - log_say("[src.real_name]/[src.key] : [input]") - -/mob/living/simple_animal/hostile/guardian/proc/ToggleMode() - src << "You dont have another mode!" - - -/mob/living/proc/guardian_comm() - set name = "Communicate" - set category = "Guardian" - set desc = "Communicate telepathically with your guardian." - var/input = stripped_input(src, "Please enter a message to tell your guardian.", "Message", "") - if(!input) return - - for(var/mob/M in mob_list) - if(istype (M, /mob/living/simple_animal/hostile/guardian)) - var/mob/living/simple_animal/hostile/guardian/G = M - if(G.summoner == src) - G << "[src]: [input]" - else if (M in dead_mob_list) - M << "[src]: [input]" - src << "[src]: [input]" - log_say("[src.real_name]/[src.key] : [text]") - - -/mob/living/proc/guardian_recall() - set name = "Recall Guardian" - set category = "Guardian" - set desc = "Forcibly recall your guardian." - for(var/mob/living/simple_animal/hostile/guardian/G in mob_list) - if(G.summoner == src) - G.Recall() - -/mob/living/proc/guardian_reset() - set name = "Reset Guardian Player (One Use)" - set category = "Guardian" - set desc = "Re-rolls which ghost will control your Guardian. One use." - for(var/mob/living/simple_animal/hostile/guardian/G in mob_list) - if(G.summoner == src) - var/list/mob/dead/observer/candidates = pollCandidates("Do you want to play as [G.real_name]?", "pAI", null, FALSE, 100) - var/mob/dead/observer/new_stand = null - if(candidates.len) - new_stand = pick(candidates) - G << "Your user reset you, and your body was taken over by a ghost. Looks like they weren't happy with your performance." - src << "Your guardian has been successfully reset." - message_admins("[key_name_admin(new_stand)] has taken control of ([key_name_admin(G)])") - G.ghostize() - G.key = new_stand.key - src.verbs -= /mob/living/proc/guardian_reset - else - src << "There were no ghosts willing to take control. Looks like you're stuck with your Guardian for now." - -/mob/living/simple_animal/hostile/guardian/proc/ToggleLight() - if(!luminosity) - SetLuminosity(3) - else - SetLuminosity(0) - - -//////////////////////////TYPES OF GUARDIANS - - -//Fire. Low damage, low resistance, sets mobs on fire when bumping - -/mob/living/simple_animal/hostile/guardian/fire - a_intent = "help" - melee_damage_lower = 10 - melee_damage_upper = 10 - attack_sound = 'sound/items/Welder.ogg' - attacktext = "sears" - damage_transfer = 0.8 - range = 10 - playstyle_string = "As a Chaos type, you have only light damage resistance, but will ignite any enemy you bump into. In addition, your melee attacks will randomly teleport enemies." - environment_smash = 1 - magic_fluff_string = "..And draw the Wizard, bringer of endless chaos!" - tech_fluff_string = "Boot sequence complete. Crowd control modules activated. Holoparasite swarm online." - bio_fluff_string = "Your scarab swarm finishes mutating and stirs to life, ready to sow havoc at random." - -/mob/living/simple_animal/hostile/guardian/fire/Life() //Dies if the summoner dies - ..() - if(summoner) - summoner.ExtinguishMob() - summoner.adjust_fire_stacks(-20) - -/mob/living/simple_animal/hostile/guardian/fire/AttackingTarget() - ..() - if(prob(45)) - if(istype(target, /atom/movable)) - var/atom/movable/M = target - if(!M.anchored && M != summoner) - do_teleport(M, M, 10) - -/mob/living/simple_animal/hostile/guardian/fire/Crossed(AM as mob|obj) - ..() - collision_ignite(AM) - -/mob/living/simple_animal/hostile/guardian/fire/Bumped(AM as mob|obj) - ..() - collision_ignite(AM) - -/mob/living/simple_animal/hostile/guardian/fire/Bump(AM as mob|obj) - ..() - collision_ignite(AM) - -/mob/living/simple_animal/hostile/guardian/fire/proc/collision_ignite(AM as mob|obj) - if(istype(AM, /mob/living/)) - var/mob/living/M = AM - if(AM != summoner && M.fire_stacks < 7) - M.fire_stacks = 7 - M.IgniteMob() - -/mob/living/simple_animal/hostile/guardian/fire/Bump(AM as mob|obj) - ..() - collision_ignite(AM) -//Standard - -/mob/living/simple_animal/hostile/guardian/punch - melee_damage_lower = 20 - melee_damage_upper = 20 - damage_transfer = 0.5 - playstyle_string = "As a standard type you have no special abilities, but have a high damage resistance and a powerful attack capable of smashing through walls." - environment_smash = 2 - magic_fluff_string = "..And draw the Assistant, faceless and generic, but never to be underestimated." - tech_fluff_string = "Boot sequence complete. Standard combat modules loaded. Holoparasite swarm online." - bio_fluff_string = "Your scarab swarm stirs to life, ready to tear apart your enemies." - var/battlecry = "AT" - -/mob/living/simple_animal/hostile/guardian/punch/verb/Battlecry() - set name = "Set Battlecry" - set category = "Guardian" - set desc = "Choose what you shout as you punch" - var/input = stripped_input(src,"What do you want your battlecry to be? Max length of 5 characters.", ,"", 6) - if(input) - battlecry = input - - - -/mob/living/simple_animal/hostile/guardian/punch/AttackingTarget() - ..() - if(istype(target, /mob/living)) - src.say("[src.battlecry][src.battlecry][src.battlecry][src.battlecry][src.battlecry][src.battlecry][src.battlecry][src.battlecry][src.battlecry][src.battlecry]\ - [src.battlecry][src.battlecry][src.battlecry][src.battlecry][src.battlecry]") - playsound(loc, src.attack_sound, 50, 1, 1) - playsound(loc, src.attack_sound, 50, 1, 1) - playsound(loc, src.attack_sound, 50, 1, 1) - playsound(loc, src.attack_sound, 50, 1, 1) - -//Healer - -/mob/living/simple_animal/hostile/guardian/healer - a_intent = "harm" - friendly = "heals" - speed = 0 - melee_damage_lower = 15 - melee_damage_upper = 15 - playstyle_string = "As a Support type, you may toggle your basic attacks to a healing mode. In addition, Alt-Clicking on an adjacent mob will warp them to your bluespace beacon after a short delay." - magic_fluff_string = "..And draw the CMO, a potent force of life...and death." - tech_fluff_string = "Boot sequence complete. Medical modules active. Bluespace modules activated. Holoparasite swarm online." - bio_fluff_string = "Your scarab swarm finishes mutating and stirs to life, capable of mending wounds and travelling via bluespace." - var/turf/simulated/floor/beacon - var/beacon_cooldown = 0 - var/toggle = FALSE - -/mob/living/simple_animal/hostile/guardian/healer/New() - ..() - var/datum/atom_hud/medsensor = huds[DATA_HUD_MEDICAL_ADVANCED] - medsensor.add_hud_to(src) - -/mob/living/simple_animal/hostile/guardian/healer/AttackingTarget() - ..() - if(toggle == TRUE) - if(src.loc == summoner) - src << "You must be manifested to heal!" - return - if(iscarbon(target)) - var/mob/living/carbon/C = target - C.adjustBruteLoss(-5) - C.adjustFireLoss(-5) - C.adjustOxyLoss(-5) - C.adjustToxLoss(-5) - C.adjustCloneLoss(-5) - -/mob/living/simple_animal/hostile/guardian/healer/ToggleMode() - if(src.loc == summoner) - if(toggle) - a_intent = "harm" - speed = 0 - damage_transfer = 0.7 - melee_damage_lower = 15 - melee_damage_upper = 15 - src << "You switch to combat mode." - toggle = FALSE - else - a_intent = "help" - speed = 1 - damage_transfer = 1 - melee_damage_lower = 0 - melee_damage_upper = 0 - src << "You switch to healing mode." - toggle = TRUE - else - src << "You have to be recalled to toggle modes!" - - -/mob/living/simple_animal/hostile/guardian/healer/verb/Beacon() - set name = "Place Bluespsace Beacon" - set category = "Guardian" - set desc = "Mark a floor as your beacon point, allowing you to warp targets to it. Your beacon will not work in unfavorable atmospheric conditions." - if(beacon_cooldownBeacon placed! You may now warp targets to it, including your user, via Alt+Click. " - if(beacon) - beacon.ChangeTurf(/turf/simulated/floor/plating) - beacon = F - beacon_cooldown = world.time+3000 - - else - src << "Your power is on cooldown. You must wait five minutes between placing beacons." - -/mob/living/simple_animal/hostile/guardian/healer/AltClickOn(atom/movable/A) - if(!istype(A)) - return - if(src.loc == summoner) - src << "You must be manifested to warp a target!" - return - if(!beacon) - src << "You need a beacon placed to warp things!" - return - if(!Adjacent(A)) - src << "You must be adjacent to your target!" - return - if((A.anchored)) - src << "Your target can not be anchored!" - return - src << "You begin to warp [A]" - if(do_mob(src, A, 50)) - if(!A.anchored) - if(src.beacon) //Check that the beacon still exists and is in a safe place. No instant kills. - if(beacon.air) - var/datum/gas_mixture/Z = beacon.air - if(Z.oxygen >= 16 && !Z.toxins && Z.carbon_dioxide < 10 && !Z.trace_gases.len) - if((Z.temperature > 270) && (Z.temperature < 360)) - var/pressure = Z.return_pressure() - if((pressure > 20) && (pressure < 550)) - do_teleport(A, beacon, 0) - else - src << "The beacon isn't in a safe location!" - else - src << "The beacon isn't in a safe location!" - else - src << "You need a beacon to warp things!" - else - src << "You need to hold still!" - - -///////////////////Ranged - -/obj/item/projectile/guardian - name = "crystal spray" - icon_state = "guardian" - damage = 5 - damage_type = BRUTE - armour_penetration = 100 - -/mob/living/simple_animal/hostile/guardian/ranged - a_intent = "help" - friendly = "quietly assesses" - melee_damage_lower = 10 - melee_damage_upper = 10 - damage_transfer = 0.9 projectiletype = /obj/item/projectile/guardian ranged_cooldown_cap = 0 projectilesound = 'sound/effects/hit_on_shattered_glass.ogg' @@ -625,6 +217,7 @@ G << "You are capable of manifesting or recalling to your master with verbs in the Guardian tab. You will also find a verb to communicate with them privately there." G << "While personally invincible, you will die if [user.real_name] does, and any damage dealt to you will have a portion passed on to them as you feed upon them to sustain yourself." G << "[G.playstyle_string]" + G.faction = user.faction user.verbs += /mob/living/proc/guardian_comm user.verbs += /mob/living/proc/guardian_recall user.verbs += /mob/living/proc/guardian_reset @@ -640,6 +233,7 @@ G.real_name = "[mob_name] [capitalize(colour)]" G.icon_living = "parasite[colour]" G.icon_state = "parasite[colour]" + G.icon_dead = "parasite[colour]" G.animated_manifest = TRUE user << "[G.tech_fluff_string]." G.speak_emote = list("states") @@ -647,6 +241,7 @@ user << "[G.bio_fluff_string]." G.attacktext = "swarms" G.speak_emote = list("chitters") + G.mind.name = "[G.real_name]" /obj/item/weapon/guardiancreator/choose random = FALSE @@ -685,7 +280,6 @@ name = "Holoparasite Guide" icon_state = "alienpaper_words" info = {"A list of Holoparasite Types
-
Chaos: Ignites mobs on touch. teleports them at random on attack. Automatically extinguishes the user if they catch fire.

From 6227456c57fe9715a25cc2e1efd8cbb1a9da11ec Mon Sep 17 00:00:00 2001 From: Buggy123 Date: Wed, 30 Dec 2015 17:36:35 -0500 Subject: [PATCH 018/310] Reverted for real this time --- .../living/simple_animal/guardian/guardian.dm | 417 ++++++++++++++++++ 1 file changed, 417 insertions(+) diff --git a/code/modules/mob/living/simple_animal/guardian/guardian.dm b/code/modules/mob/living/simple_animal/guardian/guardian.dm index 52a419b0f2a..0064a5250e5 100644 --- a/code/modules/mob/living/simple_animal/guardian/guardian.dm +++ b/code/modules/mob/living/simple_animal/guardian/guardian.dm @@ -1,4 +1,421 @@ +/mob/living/simple_animal/hostile/guardian + name = "Guardian Spirit" + real_name = "Guardian Spirit" + desc = "A mysterious being that stands by it's charge, ever vigilant." + speak_emote = list("intones") + response_help = "passes through" + response_disarm = "flails at" + response_harm = "punches" + icon = 'icons/mob/mob.dmi' + icon_state = "stand" + icon_living = "stand" + icon_dead = "stand" + speed = 0 + a_intent = "harm" + stop_automated_movement = 1 + floating = 1 + attack_sound = 'sound/weapons/punch1.ogg' + atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) + minbodytemp = 0 + maxbodytemp = INFINITY + attacktext = "punches" + maxHealth = INFINITY //The spirit itself is invincible + health = INFINITY + environment_smash = 0 + melee_damage_lower = 15 + melee_damage_upper = 15 + butcher_results = list(/obj/item/weapon/ectoplasm = 1) + AIStatus = AI_OFF + var/animated_manifest = FALSE + var/cooldown = 0 + var/damage_transfer = 1 //how much damage from each attack we transfer to the owner + var/mob/living/summoner + var/range = 10 //how far from the user the spirit can be + var/playstyle_string = "You are a standard Guardian. You shouldn't exist!" + var/magic_fluff_string = " You draw the Coder, symbolizing bugs and errors. This shouldn't happen! Submit a bug report!" + var/tech_fluff_string = "BOOT SEQUENCE COMPLETE. ERROR MODULE LOADED. THIS SHOULDN'T HAPPEN. Submit a bug report!" + var/bio_fluff_string = "Your scarabs fail to mutate. This shouldn't happen! Submit a bug report!" +/mob/living/simple_animal/hostile/guardian/Life() //Dies if the summoner dies + ..() + if(summoner) + if(summoner.stat == DEAD) + src << "Your summoner has died!" + visible_message("The [src] dies along with its user!") + summoner.visible_message("[summoner]'s body is completely consumed by the strain of sustaining [src]!") + for(var/obj/item/W in summoner) + if(!summoner.unEquip(W)) + qdel(W) + summoner.dust() + ghostize() + qdel(src) + else + src << "Your summoner has died!" + visible_message("The [src] dies along with its user!") + ghostize() + qdel(src) + if(summoner) + if (get_dist(get_turf(summoner),get_turf(src)) <= range) + return + else + src << "You moved out of range, and were pulled back! You can only move [range] meters from [summoner.real_name]" + visible_message("The [src] jumps back to its user.") + loc = get_turf(summoner) + +/mob/living/simple_animal/hostile/guardian/Move() //Returns to summoner if they move out of range + ..() + if(summoner) + if (get_dist(get_turf(summoner),get_turf(src)) <= range) + return + else + src << "You moved out of range, and were pulled back! You can only move [range] meters from [summoner.real_name]" + visible_message("The [src] jumps back to its user.") + loc = get_turf(summoner) + +/mob/living/mob/living/simple_animal/hostile/guardian/canSuicide() + return 0 + +/mob/living/simple_animal/hostile/guardian/death() + ..() + summoner << "Your [name] died somehow!" + summoner.death() + +/mob/living/simple_animal/hostile/guardian/adjustBruteLoss(amount) //The spirit is invincible, but passes on damage to the summoner + var/damage = amount * damage_transfer + if (summoner) + if(loc == summoner) + return + summoner.adjustBruteLoss(damage) + if(damage) + summoner << "Your [name] is under attack! You take damage!" + summoner.visible_message("Blood sprays from [summoner] as [src] takes damage!") + if(summoner.stat == UNCONSCIOUS) + summoner << "Your body can't take the strain of sustaining [src] in this condition, it begins to fall apart!" + summoner.adjustCloneLoss(damage/2) + +/mob/living/simple_animal/hostile/guardian/ex_act(severity, target) + switch (severity) + if (1) + gib() + return + if (2) + adjustBruteLoss(60) + + if(3) + adjustBruteLoss(30) + +/mob/living/simple_animal/hostile/guardian/gib() + if(summoner) + summoner << "Your [src] was blown up!" + summoner.gib() + ghostize() + qdel(src) + +//Manifest, Recall, Communicate + +/mob/living/simple_animal/hostile/guardian/proc/Manifest() + if(cooldown > world.time) + return + if(loc == summoner) + loc = get_turf(summoner) + cooldown = world.time + 30 + if(animated_manifest) + var/end_icon = icon_state + icon_state = "parasite_forming" + spawn(6) + icon_state = end_icon + +/mob/living/simple_animal/hostile/guardian/proc/Recall() + if(cooldown > world.time) + return + loc = summoner + buckled = null + cooldown = world.time + 30 + +/mob/living/simple_animal/hostile/guardian/proc/Communicate() + var/input = stripped_input(src, "Please enter a message to tell your summoner.", "Guardian", "") + if(!input) return + + for(var/mob/M in mob_list) + if(M == summoner || (M in dead_mob_list)) + M << "[src]: [input]" + src << "[src]: [input]" + log_say("[src.real_name]/[src.key] : [input]") + +/mob/living/simple_animal/hostile/guardian/proc/ToggleMode() + src << "You dont have another mode!" + + +/mob/living/proc/guardian_comm() + set name = "Communicate" + set category = "Guardian" + set desc = "Communicate telepathically with your guardian." + var/input = stripped_input(src, "Please enter a message to tell your guardian.", "Message", "") + if(!input) return + + for(var/mob/M in mob_list) + if(istype (M, /mob/living/simple_animal/hostile/guardian)) + var/mob/living/simple_animal/hostile/guardian/G = M + if(G.summoner == src) + G << "[src]: [input]" + else if (M in dead_mob_list) + M << "[src]: [input]" + src << "[src]: [input]" + log_say("[src.real_name]/[src.key] : [text]") + + +/mob/living/proc/guardian_recall() + set name = "Recall Guardian" + set category = "Guardian" + set desc = "Forcibly recall your guardian." + for(var/mob/living/simple_animal/hostile/guardian/G in mob_list) + if(G.summoner == src) + G.Recall() + +/mob/living/proc/guardian_reset() + set name = "Reset Guardian Player (One Use)" + set category = "Guardian" + set desc = "Re-rolls which ghost will control your Guardian. One use." + + src.verbs -= /mob/living/proc/guardian_reset + for(var/mob/living/simple_animal/hostile/guardian/G in mob_list) + if(G.summoner == src) + var/list/mob/dead/observer/candidates = pollCandidates("Do you want to play as [G.real_name]?", "pAI", null, FALSE, 100) + var/mob/dead/observer/new_stand = null + if(candidates.len) + new_stand = pick(candidates) + G << "Your user reset you, and your body was taken over by a ghost. Looks like they weren't happy with your performance." + src << "Your guardian has been successfully reset." + message_admins("[key_name_admin(new_stand)] has taken control of ([key_name_admin(G)])") + G.ghostize(0) + G.key = new_stand.key + else + src << "There were no ghosts willing to take control. Looks like you're stuck with your Guardian for now." + verbs += /mob/living/proc/guardian_reset + +/mob/living/simple_animal/hostile/guardian/proc/ToggleLight() + if(!luminosity) + SetLuminosity(3) + else + SetLuminosity(0) + + +//////////////////////////TYPES OF GUARDIANS + + +//Fire. Low damage, low resistance, sets mobs on fire when bumping + +/mob/living/simple_animal/hostile/guardian/fire + a_intent = "help" + melee_damage_lower = 10 + melee_damage_upper = 10 + attack_sound = 'sound/items/Welder.ogg' + attacktext = "sears" + damage_transfer = 0.8 + range = 10 + playstyle_string = "As a Chaos type, you have only light damage resistance, but will ignite any enemy you bump into. In addition, your melee attacks will randomly teleport enemies." + environment_smash = 1 + magic_fluff_string = "..And draw the Wizard, bringer of endless chaos!" + tech_fluff_string = "Boot sequence complete. Crowd control modules activated. Holoparasite swarm online." + bio_fluff_string = "Your scarab swarm finishes mutating and stirs to life, ready to sow havoc at random." + +/mob/living/simple_animal/hostile/guardian/fire/Life() //Dies if the summoner dies + ..() + if(summoner) + summoner.ExtinguishMob() + summoner.adjust_fire_stacks(-20) + +/mob/living/simple_animal/hostile/guardian/fire/AttackingTarget() + ..() + if(prob(45)) + if(istype(target, /atom/movable)) + var/atom/movable/M = target + if(!M.anchored && M != summoner) + do_teleport(M, M, 10) + +/mob/living/simple_animal/hostile/guardian/fire/Crossed(AM as mob|obj) + ..() + collision_ignite(AM) + +/mob/living/simple_animal/hostile/guardian/fire/Bumped(AM as mob|obj) + ..() + collision_ignite(AM) + +/mob/living/simple_animal/hostile/guardian/fire/Bump(AM as mob|obj) + ..() + collision_ignite(AM) + +/mob/living/simple_animal/hostile/guardian/fire/proc/collision_ignite(AM as mob|obj) + if(istype(AM, /mob/living/)) + var/mob/living/M = AM + if(AM != summoner && M.fire_stacks < 7) + M.fire_stacks = 7 + M.IgniteMob() + +/mob/living/simple_animal/hostile/guardian/fire/Bump(AM as mob|obj) + ..() + collision_ignite(AM) +//Standard + +/mob/living/simple_animal/hostile/guardian/punch + melee_damage_lower = 20 + melee_damage_upper = 20 + damage_transfer = 0.5 + playstyle_string = "As a standard type you have no special abilities, but have a high damage resistance and a powerful attack capable of smashing through walls." + environment_smash = 2 + magic_fluff_string = "..And draw the Assistant, faceless and generic, but never to be underestimated." + tech_fluff_string = "Boot sequence complete. Standard combat modules loaded. Holoparasite swarm online." + bio_fluff_string = "Your scarab swarm stirs to life, ready to tear apart your enemies." + var/battlecry = "AT" + +/mob/living/simple_animal/hostile/guardian/punch/verb/Battlecry() + set name = "Set Battlecry" + set category = "Guardian" + set desc = "Choose what you shout as you punch" + var/input = stripped_input(src,"What do you want your battlecry to be? Max length of 5 characters.", ,"", 6) + if(input) + battlecry = input + + + +/mob/living/simple_animal/hostile/guardian/punch/AttackingTarget() + ..() + if(istype(target, /mob/living)) + src.say("[src.battlecry][src.battlecry][src.battlecry][src.battlecry][src.battlecry][src.battlecry][src.battlecry][src.battlecry][src.battlecry][src.battlecry]\ + [src.battlecry][src.battlecry][src.battlecry][src.battlecry][src.battlecry]") + playsound(loc, src.attack_sound, 50, 1, 1) + playsound(loc, src.attack_sound, 50, 1, 1) + playsound(loc, src.attack_sound, 50, 1, 1) + playsound(loc, src.attack_sound, 50, 1, 1) + +//Healer + +/mob/living/simple_animal/hostile/guardian/healer + a_intent = "harm" + friendly = "heals" + speed = 0 + melee_damage_lower = 15 + melee_damage_upper = 15 + playstyle_string = "As a Support type, you may toggle your basic attacks to a healing mode. In addition, Alt-Clicking on an adjacent mob will warp them to your bluespace beacon after a short delay." + magic_fluff_string = "..And draw the CMO, a potent force of life...and death." + tech_fluff_string = "Boot sequence complete. Medical modules active. Bluespace modules activated. Holoparasite swarm online." + bio_fluff_string = "Your scarab swarm finishes mutating and stirs to life, capable of mending wounds and travelling via bluespace." + var/turf/simulated/floor/beacon + var/beacon_cooldown = 0 + var/toggle = FALSE + +/mob/living/simple_animal/hostile/guardian/healer/New() + ..() + var/datum/atom_hud/medsensor = huds[DATA_HUD_MEDICAL_ADVANCED] + medsensor.add_hud_to(src) + +/mob/living/simple_animal/hostile/guardian/healer/AttackingTarget() + ..() + if(toggle == TRUE) + if(src.loc == summoner) + src << "You must be manifested to heal!" + return + if(iscarbon(target)) + var/mob/living/carbon/C = target + C.adjustBruteLoss(-5) + C.adjustFireLoss(-5) + C.adjustOxyLoss(-5) + C.adjustToxLoss(-5) + +/mob/living/simple_animal/hostile/guardian/healer/ToggleMode() + if(src.loc == summoner) + if(toggle) + a_intent = "harm" + speed = 0 + damage_transfer = 0.7 + melee_damage_lower = 15 + melee_damage_upper = 15 + src << "You switch to combat mode." + toggle = FALSE + else + a_intent = "help" + speed = 1 + damage_transfer = 1 + melee_damage_lower = 0 + melee_damage_upper = 0 + src << "You switch to healing mode." + toggle = TRUE + else + src << "You have to be recalled to toggle modes!" + + +/mob/living/simple_animal/hostile/guardian/healer/verb/Beacon() + set name = "Place Bluespsace Beacon" + set category = "Guardian" + set desc = "Mark a floor as your beacon point, allowing you to warp targets to it. Your beacon will not work in unfavorable atmospheric conditions." + if(beacon_cooldownBeacon placed! You may now warp targets to it, including your user, via Alt+Click. " + if(beacon) + beacon.ChangeTurf(/turf/simulated/floor/plating) + beacon = F + beacon_cooldown = world.time+3000 + + else + src << "Your power is on cooldown. You must wait five minutes between placing beacons." + +/mob/living/simple_animal/hostile/guardian/healer/AltClickOn(atom/movable/A) + if(!istype(A)) + return + if(src.loc == summoner) + src << "You must be manifested to warp a target!" + return + if(!beacon) + src << "You need a beacon placed to warp things!" + return + if(!Adjacent(A)) + src << "You must be adjacent to your target!" + return + if((A.anchored)) + src << "Your target can not be anchored!" + return + src << "You begin to warp [A]" + if(do_mob(src, A, 50)) + if(!A.anchored) + if(src.beacon) //Check that the beacon still exists and is in a safe place. No instant kills. + if(beacon.air) + var/datum/gas_mixture/Z = beacon.air + if(Z.oxygen >= 16 && !Z.toxins && Z.carbon_dioxide < 10 && !Z.trace_gases.len) + if((Z.temperature > 270) && (Z.temperature < 360)) + var/pressure = Z.return_pressure() + if((pressure > 20) && (pressure < 550)) + do_teleport(A, beacon, 0) + else + src << "The beacon isn't in a safe location!" + else + src << "The beacon isn't in a safe location!" + else + src << "You need a beacon to warp things!" + else + src << "You need to hold still!" + + +///////////////////Ranged + +/obj/item/projectile/guardian + name = "crystal spray" + icon_state = "guardian" + damage = 5 + damage_type = BRUTE + armour_penetration = 100 + +/mob/living/simple_animal/hostile/guardian/ranged + a_intent = "help" + friendly = "quietly assesses" + melee_damage_lower = 10 + melee_damage_upper = 10 + damage_transfer = 0.9 projectiletype = /obj/item/projectile/guardian ranged_cooldown_cap = 0 projectilesound = 'sound/effects/hit_on_shattered_glass.ogg' From e15474bcc03c2848521886c2a31733944124ea03 Mon Sep 17 00:00:00 2001 From: Buggy123 Date: Wed, 30 Dec 2015 17:43:28 -0500 Subject: [PATCH 019/310] Stay with me here --- .../living/simple_animal/guardian/guardian.dm | 820 ------------------ 1 file changed, 820 deletions(-) delete mode 100644 code/modules/mob/living/simple_animal/guardian/guardian.dm diff --git a/code/modules/mob/living/simple_animal/guardian/guardian.dm b/code/modules/mob/living/simple_animal/guardian/guardian.dm deleted file mode 100644 index 0064a5250e5..00000000000 --- a/code/modules/mob/living/simple_animal/guardian/guardian.dm +++ /dev/null @@ -1,820 +0,0 @@ -/mob/living/simple_animal/hostile/guardian - name = "Guardian Spirit" - real_name = "Guardian Spirit" - desc = "A mysterious being that stands by it's charge, ever vigilant." - speak_emote = list("intones") - response_help = "passes through" - response_disarm = "flails at" - response_harm = "punches" - icon = 'icons/mob/mob.dmi' - icon_state = "stand" - icon_living = "stand" - icon_dead = "stand" - speed = 0 - a_intent = "harm" - stop_automated_movement = 1 - floating = 1 - attack_sound = 'sound/weapons/punch1.ogg' - atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) - minbodytemp = 0 - maxbodytemp = INFINITY - attacktext = "punches" - maxHealth = INFINITY //The spirit itself is invincible - health = INFINITY - environment_smash = 0 - melee_damage_lower = 15 - melee_damage_upper = 15 - butcher_results = list(/obj/item/weapon/ectoplasm = 1) - AIStatus = AI_OFF - var/animated_manifest = FALSE - var/cooldown = 0 - var/damage_transfer = 1 //how much damage from each attack we transfer to the owner - var/mob/living/summoner - var/range = 10 //how far from the user the spirit can be - var/playstyle_string = "You are a standard Guardian. You shouldn't exist!" - var/magic_fluff_string = " You draw the Coder, symbolizing bugs and errors. This shouldn't happen! Submit a bug report!" - var/tech_fluff_string = "BOOT SEQUENCE COMPLETE. ERROR MODULE LOADED. THIS SHOULDN'T HAPPEN. Submit a bug report!" - var/bio_fluff_string = "Your scarabs fail to mutate. This shouldn't happen! Submit a bug report!" - -/mob/living/simple_animal/hostile/guardian/Life() //Dies if the summoner dies - ..() - if(summoner) - if(summoner.stat == DEAD) - src << "Your summoner has died!" - visible_message("The [src] dies along with its user!") - summoner.visible_message("[summoner]'s body is completely consumed by the strain of sustaining [src]!") - for(var/obj/item/W in summoner) - if(!summoner.unEquip(W)) - qdel(W) - summoner.dust() - ghostize() - qdel(src) - else - src << "Your summoner has died!" - visible_message("The [src] dies along with its user!") - ghostize() - qdel(src) - if(summoner) - if (get_dist(get_turf(summoner),get_turf(src)) <= range) - return - else - src << "You moved out of range, and were pulled back! You can only move [range] meters from [summoner.real_name]" - visible_message("The [src] jumps back to its user.") - loc = get_turf(summoner) - -/mob/living/simple_animal/hostile/guardian/Move() //Returns to summoner if they move out of range - ..() - if(summoner) - if (get_dist(get_turf(summoner),get_turf(src)) <= range) - return - else - src << "You moved out of range, and were pulled back! You can only move [range] meters from [summoner.real_name]" - visible_message("The [src] jumps back to its user.") - loc = get_turf(summoner) - -/mob/living/mob/living/simple_animal/hostile/guardian/canSuicide() - return 0 - -/mob/living/simple_animal/hostile/guardian/death() - ..() - summoner << "Your [name] died somehow!" - summoner.death() - -/mob/living/simple_animal/hostile/guardian/adjustBruteLoss(amount) //The spirit is invincible, but passes on damage to the summoner - var/damage = amount * damage_transfer - if (summoner) - if(loc == summoner) - return - summoner.adjustBruteLoss(damage) - if(damage) - summoner << "Your [name] is under attack! You take damage!" - summoner.visible_message("Blood sprays from [summoner] as [src] takes damage!") - if(summoner.stat == UNCONSCIOUS) - summoner << "Your body can't take the strain of sustaining [src] in this condition, it begins to fall apart!" - summoner.adjustCloneLoss(damage/2) - -/mob/living/simple_animal/hostile/guardian/ex_act(severity, target) - switch (severity) - if (1) - gib() - return - if (2) - adjustBruteLoss(60) - - if(3) - adjustBruteLoss(30) - -/mob/living/simple_animal/hostile/guardian/gib() - if(summoner) - summoner << "Your [src] was blown up!" - summoner.gib() - ghostize() - qdel(src) - -//Manifest, Recall, Communicate - -/mob/living/simple_animal/hostile/guardian/proc/Manifest() - if(cooldown > world.time) - return - if(loc == summoner) - loc = get_turf(summoner) - cooldown = world.time + 30 - if(animated_manifest) - var/end_icon = icon_state - icon_state = "parasite_forming" - spawn(6) - icon_state = end_icon - -/mob/living/simple_animal/hostile/guardian/proc/Recall() - if(cooldown > world.time) - return - loc = summoner - buckled = null - cooldown = world.time + 30 - -/mob/living/simple_animal/hostile/guardian/proc/Communicate() - var/input = stripped_input(src, "Please enter a message to tell your summoner.", "Guardian", "") - if(!input) return - - for(var/mob/M in mob_list) - if(M == summoner || (M in dead_mob_list)) - M << "[src]: [input]" - src << "[src]: [input]" - log_say("[src.real_name]/[src.key] : [input]") - -/mob/living/simple_animal/hostile/guardian/proc/ToggleMode() - src << "You dont have another mode!" - - -/mob/living/proc/guardian_comm() - set name = "Communicate" - set category = "Guardian" - set desc = "Communicate telepathically with your guardian." - var/input = stripped_input(src, "Please enter a message to tell your guardian.", "Message", "") - if(!input) return - - for(var/mob/M in mob_list) - if(istype (M, /mob/living/simple_animal/hostile/guardian)) - var/mob/living/simple_animal/hostile/guardian/G = M - if(G.summoner == src) - G << "[src]: [input]" - else if (M in dead_mob_list) - M << "[src]: [input]" - src << "[src]: [input]" - log_say("[src.real_name]/[src.key] : [text]") - - -/mob/living/proc/guardian_recall() - set name = "Recall Guardian" - set category = "Guardian" - set desc = "Forcibly recall your guardian." - for(var/mob/living/simple_animal/hostile/guardian/G in mob_list) - if(G.summoner == src) - G.Recall() - -/mob/living/proc/guardian_reset() - set name = "Reset Guardian Player (One Use)" - set category = "Guardian" - set desc = "Re-rolls which ghost will control your Guardian. One use." - - src.verbs -= /mob/living/proc/guardian_reset - for(var/mob/living/simple_animal/hostile/guardian/G in mob_list) - if(G.summoner == src) - var/list/mob/dead/observer/candidates = pollCandidates("Do you want to play as [G.real_name]?", "pAI", null, FALSE, 100) - var/mob/dead/observer/new_stand = null - if(candidates.len) - new_stand = pick(candidates) - G << "Your user reset you, and your body was taken over by a ghost. Looks like they weren't happy with your performance." - src << "Your guardian has been successfully reset." - message_admins("[key_name_admin(new_stand)] has taken control of ([key_name_admin(G)])") - G.ghostize(0) - G.key = new_stand.key - else - src << "There were no ghosts willing to take control. Looks like you're stuck with your Guardian for now." - verbs += /mob/living/proc/guardian_reset - -/mob/living/simple_animal/hostile/guardian/proc/ToggleLight() - if(!luminosity) - SetLuminosity(3) - else - SetLuminosity(0) - - -//////////////////////////TYPES OF GUARDIANS - - -//Fire. Low damage, low resistance, sets mobs on fire when bumping - -/mob/living/simple_animal/hostile/guardian/fire - a_intent = "help" - melee_damage_lower = 10 - melee_damage_upper = 10 - attack_sound = 'sound/items/Welder.ogg' - attacktext = "sears" - damage_transfer = 0.8 - range = 10 - playstyle_string = "As a Chaos type, you have only light damage resistance, but will ignite any enemy you bump into. In addition, your melee attacks will randomly teleport enemies." - environment_smash = 1 - magic_fluff_string = "..And draw the Wizard, bringer of endless chaos!" - tech_fluff_string = "Boot sequence complete. Crowd control modules activated. Holoparasite swarm online." - bio_fluff_string = "Your scarab swarm finishes mutating and stirs to life, ready to sow havoc at random." - -/mob/living/simple_animal/hostile/guardian/fire/Life() //Dies if the summoner dies - ..() - if(summoner) - summoner.ExtinguishMob() - summoner.adjust_fire_stacks(-20) - -/mob/living/simple_animal/hostile/guardian/fire/AttackingTarget() - ..() - if(prob(45)) - if(istype(target, /atom/movable)) - var/atom/movable/M = target - if(!M.anchored && M != summoner) - do_teleport(M, M, 10) - -/mob/living/simple_animal/hostile/guardian/fire/Crossed(AM as mob|obj) - ..() - collision_ignite(AM) - -/mob/living/simple_animal/hostile/guardian/fire/Bumped(AM as mob|obj) - ..() - collision_ignite(AM) - -/mob/living/simple_animal/hostile/guardian/fire/Bump(AM as mob|obj) - ..() - collision_ignite(AM) - -/mob/living/simple_animal/hostile/guardian/fire/proc/collision_ignite(AM as mob|obj) - if(istype(AM, /mob/living/)) - var/mob/living/M = AM - if(AM != summoner && M.fire_stacks < 7) - M.fire_stacks = 7 - M.IgniteMob() - -/mob/living/simple_animal/hostile/guardian/fire/Bump(AM as mob|obj) - ..() - collision_ignite(AM) -//Standard - -/mob/living/simple_animal/hostile/guardian/punch - melee_damage_lower = 20 - melee_damage_upper = 20 - damage_transfer = 0.5 - playstyle_string = "As a standard type you have no special abilities, but have a high damage resistance and a powerful attack capable of smashing through walls." - environment_smash = 2 - magic_fluff_string = "..And draw the Assistant, faceless and generic, but never to be underestimated." - tech_fluff_string = "Boot sequence complete. Standard combat modules loaded. Holoparasite swarm online." - bio_fluff_string = "Your scarab swarm stirs to life, ready to tear apart your enemies." - var/battlecry = "AT" - -/mob/living/simple_animal/hostile/guardian/punch/verb/Battlecry() - set name = "Set Battlecry" - set category = "Guardian" - set desc = "Choose what you shout as you punch" - var/input = stripped_input(src,"What do you want your battlecry to be? Max length of 5 characters.", ,"", 6) - if(input) - battlecry = input - - - -/mob/living/simple_animal/hostile/guardian/punch/AttackingTarget() - ..() - if(istype(target, /mob/living)) - src.say("[src.battlecry][src.battlecry][src.battlecry][src.battlecry][src.battlecry][src.battlecry][src.battlecry][src.battlecry][src.battlecry][src.battlecry]\ - [src.battlecry][src.battlecry][src.battlecry][src.battlecry][src.battlecry]") - playsound(loc, src.attack_sound, 50, 1, 1) - playsound(loc, src.attack_sound, 50, 1, 1) - playsound(loc, src.attack_sound, 50, 1, 1) - playsound(loc, src.attack_sound, 50, 1, 1) - -//Healer - -/mob/living/simple_animal/hostile/guardian/healer - a_intent = "harm" - friendly = "heals" - speed = 0 - melee_damage_lower = 15 - melee_damage_upper = 15 - playstyle_string = "As a Support type, you may toggle your basic attacks to a healing mode. In addition, Alt-Clicking on an adjacent mob will warp them to your bluespace beacon after a short delay." - magic_fluff_string = "..And draw the CMO, a potent force of life...and death." - tech_fluff_string = "Boot sequence complete. Medical modules active. Bluespace modules activated. Holoparasite swarm online." - bio_fluff_string = "Your scarab swarm finishes mutating and stirs to life, capable of mending wounds and travelling via bluespace." - var/turf/simulated/floor/beacon - var/beacon_cooldown = 0 - var/toggle = FALSE - -/mob/living/simple_animal/hostile/guardian/healer/New() - ..() - var/datum/atom_hud/medsensor = huds[DATA_HUD_MEDICAL_ADVANCED] - medsensor.add_hud_to(src) - -/mob/living/simple_animal/hostile/guardian/healer/AttackingTarget() - ..() - if(toggle == TRUE) - if(src.loc == summoner) - src << "You must be manifested to heal!" - return - if(iscarbon(target)) - var/mob/living/carbon/C = target - C.adjustBruteLoss(-5) - C.adjustFireLoss(-5) - C.adjustOxyLoss(-5) - C.adjustToxLoss(-5) - -/mob/living/simple_animal/hostile/guardian/healer/ToggleMode() - if(src.loc == summoner) - if(toggle) - a_intent = "harm" - speed = 0 - damage_transfer = 0.7 - melee_damage_lower = 15 - melee_damage_upper = 15 - src << "You switch to combat mode." - toggle = FALSE - else - a_intent = "help" - speed = 1 - damage_transfer = 1 - melee_damage_lower = 0 - melee_damage_upper = 0 - src << "You switch to healing mode." - toggle = TRUE - else - src << "You have to be recalled to toggle modes!" - - -/mob/living/simple_animal/hostile/guardian/healer/verb/Beacon() - set name = "Place Bluespsace Beacon" - set category = "Guardian" - set desc = "Mark a floor as your beacon point, allowing you to warp targets to it. Your beacon will not work in unfavorable atmospheric conditions." - if(beacon_cooldownBeacon placed! You may now warp targets to it, including your user, via Alt+Click. " - if(beacon) - beacon.ChangeTurf(/turf/simulated/floor/plating) - beacon = F - beacon_cooldown = world.time+3000 - - else - src << "Your power is on cooldown. You must wait five minutes between placing beacons." - -/mob/living/simple_animal/hostile/guardian/healer/AltClickOn(atom/movable/A) - if(!istype(A)) - return - if(src.loc == summoner) - src << "You must be manifested to warp a target!" - return - if(!beacon) - src << "You need a beacon placed to warp things!" - return - if(!Adjacent(A)) - src << "You must be adjacent to your target!" - return - if((A.anchored)) - src << "Your target can not be anchored!" - return - src << "You begin to warp [A]" - if(do_mob(src, A, 50)) - if(!A.anchored) - if(src.beacon) //Check that the beacon still exists and is in a safe place. No instant kills. - if(beacon.air) - var/datum/gas_mixture/Z = beacon.air - if(Z.oxygen >= 16 && !Z.toxins && Z.carbon_dioxide < 10 && !Z.trace_gases.len) - if((Z.temperature > 270) && (Z.temperature < 360)) - var/pressure = Z.return_pressure() - if((pressure > 20) && (pressure < 550)) - do_teleport(A, beacon, 0) - else - src << "The beacon isn't in a safe location!" - else - src << "The beacon isn't in a safe location!" - else - src << "You need a beacon to warp things!" - else - src << "You need to hold still!" - - -///////////////////Ranged - -/obj/item/projectile/guardian - name = "crystal spray" - icon_state = "guardian" - damage = 5 - damage_type = BRUTE - armour_penetration = 100 - -/mob/living/simple_animal/hostile/guardian/ranged - a_intent = "help" - friendly = "quietly assesses" - melee_damage_lower = 10 - melee_damage_upper = 10 - damage_transfer = 0.9 - projectiletype = /obj/item/projectile/guardian - ranged_cooldown_cap = 0 - projectilesound = 'sound/effects/hit_on_shattered_glass.ogg' - ranged = 1 - range = 13 - playstyle_string = "As a ranged type, you have only light damage resistance, but are capable of spraying shards of crystal at incredibly high speed. You can also deploy surveillance snares to monitor enemy movement. Finally, you can switch to scout mode, in which you can't attack, but can move without limit." - magic_fluff_string = "..And draw the Sentinel, an alien master of ranged combat." - tech_fluff_string = "Boot sequence complete. Ranged combat modules active. Holoparasite swarm online." - bio_fluff_string = "Your scarab swarm finishes mutating and stirs to life, capable of spraying shards of crystal." - var/list/snares = list() - var/toggle = FALSE - -/mob/living/simple_animal/hostile/guardian/ranged/ToggleMode() - if(src.loc == summoner) - if(toggle) - ranged = 1 - melee_damage_lower = 10 - melee_damage_upper = 10 - alpha = 255 - range = 13 - incorporeal_move = 0 - src << "You switch to combat mode." - toggle = FALSE - else - ranged = 0 - melee_damage_lower = 0 - melee_damage_upper = 0 - alpha = 60 - range = 255 - incorporeal_move = 1 - src << "You switch to scout mode." - toggle = TRUE - else - src << "You have to be recalled to toggle modes!" - -/mob/living/simple_animal/hostile/guardian/ranged/verb/Snare() - set name = "Set Surveillance Trap" - set category = "Guardian" - set desc = "Set an invisible trap that will alert you when living creatures walk over it. Max of 5" - if(src.snares.len <6) - var/turf/snare_loc = get_turf(src.loc) - var/obj/item/effect/snare/S = new /obj/item/effect/snare(snare_loc) - S.spawner = src - S.name = "[get_area(snare_loc)] trap ([rand(1, 1000)])" - src.snares |= S - src << "Surveillance trap deployed!" - else - src << "You have too many traps deployed. Delete some first." - -/mob/living/simple_animal/hostile/guardian/ranged/verb/DisarmSnare() - set name = "Remove Surveillance Trap" - set category = "Guardian" - set desc = "Disarm unwanted surveillance traps." - var/picked_snare = input(src, "Pick which trap to disarm", "Disarm Trap") as null|anything in src.snares - if(picked_snare) - src.snares -= picked_snare - qdel(picked_snare) - src << "Snare disarmed." - -/obj/item/effect/snare - name = "snare" - desc = "You shouldn't be seeing this!" - var/mob/living/spawner - invisibility = 1 - - -/obj/item/effect/snare/Crossed(AM as mob|obj) - if(istype(AM, /mob/living/)) - var/turf/snare_loc = get_turf(src.loc) - if(spawner) - spawner << "[AM] has crossed your surveillance trap at [get_area(snare_loc)]." - if(istype(spawner, /mob/living/simple_animal/hostile/guardian)) - var/mob/living/simple_animal/hostile/guardian/G = spawner - if(G.summoner) - G.summoner << "[AM] has crossed your surveillance trap at [get_area(snare_loc)]." - -////Bomb - -/mob/living/simple_animal/hostile/guardian/bomb - melee_damage_lower = 15 - melee_damage_upper = 15 - damage_transfer = 0.6 - range = 13 - playstyle_string = "As an explosive type, you have only moderate close combat abilities, but are capable of converting any adjacent item into a disguised bomb via alt click." - magic_fluff_string = "..And draw the Scientist, master of explosive death." - tech_fluff_string = "Boot sequence complete. Explosive modules active. Holoparasite swarm online." - bio_fluff_string = "Your scarab swarm finishes mutating and stirs to life, capable of stealthily booby trapping items." - var/bomb_cooldown = 0 - -/mob/living/simple_animal/hostile/guardian/bomb/AltClickOn(atom/movable/A) - if(!istype(A)) - return - if(src.loc == summoner) - src << "You must be manifested to create bombs!" - return - if(istype(A, /obj/)) - if(bomb_cooldown <= world.time && !stat) - var/obj/item/weapon/guardian_bomb/B = new /obj/item/weapon/guardian_bomb(get_turf(A)) - src << "Success! Bomb armed!" - bomb_cooldown = world.time + 200 - B.spawner = src - B.disguise (A) - else - src << "Your powers are on cooldown! You must wait 20 seconds between bombs." - -/obj/item/weapon/guardian_bomb - name = "bomb" - desc = "You shouldn't be seeing this!" - var/obj/stored_obj - var/mob/living/spawner - - -/obj/item/weapon/guardian_bomb/proc/disguise(var/obj/A) - A.loc = src - stored_obj = A - anchored = A.anchored - density = A.density - appearance = A.appearance - spawn(600) - stored_obj.loc = get_turf(src.loc) - spawner << "Failure! Your trap didn't catch anyone this time." - qdel(src) - -/obj/item/weapon/guardian_bomb/proc/detonate(var/mob/living/user) - user << "The [src] was boobytrapped!" - spawner << "Success! Your trap caught [user]" - stored_obj.loc = get_turf(src.loc) - playsound(get_turf(src),'sound/effects/Explosion2.ogg', 200, 1) - user.ex_act(2) - qdel(src) - -/obj/item/weapon/guardian_bomb/attackby(mob/living/user) - detonate(user) - return - -/obj/item/weapon/guardian_bomb/pickup(mob/living/user) - detonate(user) - return - -/obj/item/weapon/guardian_bomb/examine(mob/user) - stored_obj.examine(user) - if(get_dist(user,src)<=2) - user << "Looks odd!" - - -////////Creation - -/obj/item/weapon/guardiancreator - name = "deck of tarot cards" - desc = "An enchanted deck of tarot cards, rumored to be a source of unimaginable power. " - icon = 'icons/obj/toy.dmi' - icon_state = "deck_syndicate_full" - var/used = FALSE - var/theme = "magic" - var/mob_name = "Guardian Spirit" - var/use_message = "You shuffle the deck..." - var/used_message = "All the cards seem to be blank now." - var/failure_message = "..And draw a card! It's...blank? Maybe you should try again later." - var/ling_failure = "The deck refuses to respond to a souless creature such as you." - var/list/possible_guardians = list("Chaos", "Standard", "Ranged", "Support", "Explosive") - var/random = TRUE - -/obj/item/weapon/guardiancreator/attack_self(mob/living/user) - for(var/mob/living/simple_animal/hostile/guardian/G in living_mob_list) - if (G.summoner == user) - user << "You already have a [mob_name]!" - return - if(user.mind && user.mind.changeling) - user << "[ling_failure]" - return - if(used == TRUE) - user << "[used_message]" - return - used = TRUE - user << "[use_message]" - var/list/mob/dead/observer/candidates = pollCandidates("Do you want to play as the [mob_name] of [user.real_name]?", ROLE_PAI, null, FALSE, 100) - var/mob/dead/observer/theghost = null - - if(candidates.len) - theghost = pick(candidates) - spawn_guardian(user, theghost.key) - else - user << "[failure_message]" - used = FALSE - - -/obj/item/weapon/guardiancreator/proc/spawn_guardian(var/mob/living/user, var/key) - var/gaurdiantype = "Standard" - if(random) - gaurdiantype = pick(possible_guardians) - else - gaurdiantype = input(user, "Pick the type of [mob_name]", "[mob_name] Creation") as null|anything in possible_guardians - var/pickedtype = /mob/living/simple_animal/hostile/guardian/punch - var/picked_color = randomColor(0) - switch(gaurdiantype) - - if("Chaos") - pickedtype = /mob/living/simple_animal/hostile/guardian/fire - - if("Standard") - pickedtype = /mob/living/simple_animal/hostile/guardian/punch - - if("Ranged") - pickedtype = /mob/living/simple_animal/hostile/guardian/ranged - - if("Support") - pickedtype = /mob/living/simple_animal/hostile/guardian/healer - - if("Explosive") - pickedtype = /mob/living/simple_animal/hostile/guardian/bomb - - var/mob/living/simple_animal/hostile/guardian/G = new pickedtype(user) - G.summoner = user - G.key = key - G << "You are a [mob_name] bound to serve [user.real_name]." - G << "You are capable of manifesting or recalling to your master with verbs in the Guardian tab. You will also find a verb to communicate with them privately there." - G << "While personally invincible, you will die if [user.real_name] does, and any damage dealt to you will have a portion passed on to them as you feed upon them to sustain yourself." - G << "[G.playstyle_string]" - G.faction = user.faction - user.verbs += /mob/living/proc/guardian_comm - user.verbs += /mob/living/proc/guardian_recall - user.verbs += /mob/living/proc/guardian_reset - switch (theme) - if("magic") - G.name = "[mob_name] [capitalize(picked_color)]" - G.color = color2hex(picked_color) - G.real_name = "[mob_name] [capitalize(picked_color)]" - user << "[G.magic_fluff_string]." - if("tech") - var/colour = pick("orange", "neon", "pink", "red", "blue", "green") - G.name = "[mob_name] [capitalize(colour)]" - G.real_name = "[mob_name] [capitalize(colour)]" - G.icon_living = "parasite[colour]" - G.icon_state = "parasite[colour]" - G.icon_dead = "parasite[colour]" - G.animated_manifest = TRUE - user << "[G.tech_fluff_string]." - G.speak_emote = list("states") - if("bio") - user << "[G.bio_fluff_string]." - G.attacktext = "swarms" - G.speak_emote = list("chitters") - G.mind.name = "[G.real_name]" - -/obj/item/weapon/guardiancreator/choose - random = FALSE - -/obj/item/weapon/guardiancreator/tech - name = "holoparasite injector" - desc = "It contains alien nanoswarm of unknown origin. Though capable of near sorcerous feats via use of hardlight holograms and nanomachines, it requires an organic host as a home base and source of fuel." - icon = 'icons/obj/syringe.dmi' - icon_state = "combat_hypo" - theme = "tech" - mob_name = "Holoparasite" - use_message = "You start to power on the injector..." - used_message = "The injector has already been used." - failure_message = "...ERROR. BOOT SEQUENCE ABORTED. AI FAILED TO INTIALIZE. PLEASE CONTACT SUPPORT OR TRY AGAIN LATER." - ling_failure = "The holoparasites recoil in horror. They want nothing to do with a creature like you." - -/obj/item/weapon/guardiancreator/tech/choose - random = FALSE - -/obj/item/weapon/guardiancreator/biological - name = "scarab egg cluster" - desc = "A parasitic species that will nest in the closest living creature upon birth. While not great for your health, they'll defend their new 'hive' to the death." - icon = 'icons/obj/syringe.dmi' - icon_state = "combat_hypo" - theme = "bio" - mob_name = "Scarab Swarm" - use_message = "The eggs begin to twitch..." - used_message = "The cluster already hatched." - failure_message = "...but soon settles again. Guess they weren't ready to hatch after all." - -/obj/item/weapon/guardiancreator/biological/choose - random = FALSE - - -/obj/item/weapon/paper/guardian - name = "Holoparasite Guide" - icon_state = "alienpaper_words" - info = {"A list of Holoparasite Types
-
- Chaos: Ignites mobs on touch. teleports them at random on attack. Automatically extinguishes the user if they catch fire.
-
- Standard:Devestating close combat attacks and high damage resist. No special powers.
-
- Ranged: Has two modes. Ranged: Extremely weak, highly spammable projectile attack. Scout: Can not attack, but can move through walls. Can lay surveillance snares in either mode.
-
- Support:Has two modes. Combat: Medium power attacks and damage resist. Healer: Attacks heal damage, but low damage resist and slow movemen. Can deploy a bluespace beacon and warp targets to it (including you) in either mode.
-
- Explosive: High damage resist and medium power attack. Can turn any object into a bomb, dealing explosive damage to the next person to touch it. The object will return to normal after the trap is triggered.
-"} - -/obj/item/weapon/paper/guardian/update_icon() - return - - -/obj/item/weapon/storage/box/syndie_kit/guardian - name = "holoparasite injector kit" - -/obj/item/weapon/storage/box/syndie_kit/guardian/New() - ..() - new /obj/item/weapon/guardiancreator/tech/choose(src) - new /obj/item/weapon/paper/guardian(src) - return - - - - - - - -///HUD - -/datum/hud/proc/guardian_hud(ui_style = 'icons/mob/screen_midnight.dmi') - adding = list() - - var/obj/screen/using - - using = new /obj/screen/guardian/Manifest() - using.screen_loc = ui_rhand - adding += using - - using = new /obj/screen/guardian/Recall() - using.screen_loc = ui_lhand - adding += using - - using = new /obj/screen/guardian/ToggleMode() - using.screen_loc = ui_storage1 - adding += using - - using = new /obj/screen/guardian/ToggleLight() - using.screen_loc = ui_inventory - adding += using - - using = new /obj/screen/guardian/Communicate() - using.screen_loc = ui_back - adding += using - - mymob.client.screen = list() - mymob.client.screen += mymob.client.void - mymob.client.screen += adding - - - - -//HUD BUTTONS - -/obj/screen/guardian - icon = 'icons/mob/guardian.dmi' - -/obj/screen/guardian/Manifest - icon_state = "manifest" - name = "Manifest" - desc = "Spring forth into battle!" - -/obj/screen/guardian/Manifest/Click() - if(isguardian(usr)) - var/mob/living/simple_animal/hostile/guardian/G = usr - G.Manifest() - - -/obj/screen/guardian/Recall - icon_state = "recall" - name = "Recall" - desc = "Return to your user." - -/obj/screen/guardian/Recall/Click() - if(isguardian(usr)) - var/mob/living/simple_animal/hostile/guardian/G = usr - G.Recall() - -/obj/screen/guardian/ToggleMode - icon_state = "toggle" - name = "Toggle Mode" - desc = "Switch between ability modes." - -/obj/screen/guardian/ToggleMode/Click() - if(isguardian(usr)) - var/mob/living/simple_animal/hostile/guardian/G = usr - G.ToggleMode() - -/obj/screen/guardian/Communicate - icon_state = "communicate" - name = "Communicate" - desc = "Communicate telepathically with your user." - -/obj/screen/guardian/Communicate/Click() - if(isguardian(usr)) - var/mob/living/simple_animal/hostile/guardian/G = usr - G.Communicate() - - -/obj/screen/guardian/ToggleLight - icon_state = "light" - name = "Toggle Light" - desc = "Glow like star dust." - -/obj/screen/guardian/ToggleLight/Click() - if(isguardian(usr)) - var/mob/living/simple_animal/hostile/guardian/G = usr - G.ToggleLight() From 8980c681f24377b0313790ce060cc31a6a08812b Mon Sep 17 00:00:00 2001 From: Buggy123 Date: Wed, 30 Dec 2015 17:52:06 -0500 Subject: [PATCH 020/310] I'm trying --- .../living/simple_animal/guardian/guardian.dm | 820 ++++++++++++++++++ 1 file changed, 820 insertions(+) create mode 100644 code/modules/mob/living/simple_animal/guardian/guardian.dm diff --git a/code/modules/mob/living/simple_animal/guardian/guardian.dm b/code/modules/mob/living/simple_animal/guardian/guardian.dm new file mode 100644 index 00000000000..0064a5250e5 --- /dev/null +++ b/code/modules/mob/living/simple_animal/guardian/guardian.dm @@ -0,0 +1,820 @@ +/mob/living/simple_animal/hostile/guardian + name = "Guardian Spirit" + real_name = "Guardian Spirit" + desc = "A mysterious being that stands by it's charge, ever vigilant." + speak_emote = list("intones") + response_help = "passes through" + response_disarm = "flails at" + response_harm = "punches" + icon = 'icons/mob/mob.dmi' + icon_state = "stand" + icon_living = "stand" + icon_dead = "stand" + speed = 0 + a_intent = "harm" + stop_automated_movement = 1 + floating = 1 + attack_sound = 'sound/weapons/punch1.ogg' + atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) + minbodytemp = 0 + maxbodytemp = INFINITY + attacktext = "punches" + maxHealth = INFINITY //The spirit itself is invincible + health = INFINITY + environment_smash = 0 + melee_damage_lower = 15 + melee_damage_upper = 15 + butcher_results = list(/obj/item/weapon/ectoplasm = 1) + AIStatus = AI_OFF + var/animated_manifest = FALSE + var/cooldown = 0 + var/damage_transfer = 1 //how much damage from each attack we transfer to the owner + var/mob/living/summoner + var/range = 10 //how far from the user the spirit can be + var/playstyle_string = "You are a standard Guardian. You shouldn't exist!" + var/magic_fluff_string = " You draw the Coder, symbolizing bugs and errors. This shouldn't happen! Submit a bug report!" + var/tech_fluff_string = "BOOT SEQUENCE COMPLETE. ERROR MODULE LOADED. THIS SHOULDN'T HAPPEN. Submit a bug report!" + var/bio_fluff_string = "Your scarabs fail to mutate. This shouldn't happen! Submit a bug report!" + +/mob/living/simple_animal/hostile/guardian/Life() //Dies if the summoner dies + ..() + if(summoner) + if(summoner.stat == DEAD) + src << "Your summoner has died!" + visible_message("The [src] dies along with its user!") + summoner.visible_message("[summoner]'s body is completely consumed by the strain of sustaining [src]!") + for(var/obj/item/W in summoner) + if(!summoner.unEquip(W)) + qdel(W) + summoner.dust() + ghostize() + qdel(src) + else + src << "Your summoner has died!" + visible_message("The [src] dies along with its user!") + ghostize() + qdel(src) + if(summoner) + if (get_dist(get_turf(summoner),get_turf(src)) <= range) + return + else + src << "You moved out of range, and were pulled back! You can only move [range] meters from [summoner.real_name]" + visible_message("The [src] jumps back to its user.") + loc = get_turf(summoner) + +/mob/living/simple_animal/hostile/guardian/Move() //Returns to summoner if they move out of range + ..() + if(summoner) + if (get_dist(get_turf(summoner),get_turf(src)) <= range) + return + else + src << "You moved out of range, and were pulled back! You can only move [range] meters from [summoner.real_name]" + visible_message("The [src] jumps back to its user.") + loc = get_turf(summoner) + +/mob/living/mob/living/simple_animal/hostile/guardian/canSuicide() + return 0 + +/mob/living/simple_animal/hostile/guardian/death() + ..() + summoner << "Your [name] died somehow!" + summoner.death() + +/mob/living/simple_animal/hostile/guardian/adjustBruteLoss(amount) //The spirit is invincible, but passes on damage to the summoner + var/damage = amount * damage_transfer + if (summoner) + if(loc == summoner) + return + summoner.adjustBruteLoss(damage) + if(damage) + summoner << "Your [name] is under attack! You take damage!" + summoner.visible_message("Blood sprays from [summoner] as [src] takes damage!") + if(summoner.stat == UNCONSCIOUS) + summoner << "Your body can't take the strain of sustaining [src] in this condition, it begins to fall apart!" + summoner.adjustCloneLoss(damage/2) + +/mob/living/simple_animal/hostile/guardian/ex_act(severity, target) + switch (severity) + if (1) + gib() + return + if (2) + adjustBruteLoss(60) + + if(3) + adjustBruteLoss(30) + +/mob/living/simple_animal/hostile/guardian/gib() + if(summoner) + summoner << "Your [src] was blown up!" + summoner.gib() + ghostize() + qdel(src) + +//Manifest, Recall, Communicate + +/mob/living/simple_animal/hostile/guardian/proc/Manifest() + if(cooldown > world.time) + return + if(loc == summoner) + loc = get_turf(summoner) + cooldown = world.time + 30 + if(animated_manifest) + var/end_icon = icon_state + icon_state = "parasite_forming" + spawn(6) + icon_state = end_icon + +/mob/living/simple_animal/hostile/guardian/proc/Recall() + if(cooldown > world.time) + return + loc = summoner + buckled = null + cooldown = world.time + 30 + +/mob/living/simple_animal/hostile/guardian/proc/Communicate() + var/input = stripped_input(src, "Please enter a message to tell your summoner.", "Guardian", "") + if(!input) return + + for(var/mob/M in mob_list) + if(M == summoner || (M in dead_mob_list)) + M << "[src]: [input]" + src << "[src]: [input]" + log_say("[src.real_name]/[src.key] : [input]") + +/mob/living/simple_animal/hostile/guardian/proc/ToggleMode() + src << "You dont have another mode!" + + +/mob/living/proc/guardian_comm() + set name = "Communicate" + set category = "Guardian" + set desc = "Communicate telepathically with your guardian." + var/input = stripped_input(src, "Please enter a message to tell your guardian.", "Message", "") + if(!input) return + + for(var/mob/M in mob_list) + if(istype (M, /mob/living/simple_animal/hostile/guardian)) + var/mob/living/simple_animal/hostile/guardian/G = M + if(G.summoner == src) + G << "[src]: [input]" + else if (M in dead_mob_list) + M << "[src]: [input]" + src << "[src]: [input]" + log_say("[src.real_name]/[src.key] : [text]") + + +/mob/living/proc/guardian_recall() + set name = "Recall Guardian" + set category = "Guardian" + set desc = "Forcibly recall your guardian." + for(var/mob/living/simple_animal/hostile/guardian/G in mob_list) + if(G.summoner == src) + G.Recall() + +/mob/living/proc/guardian_reset() + set name = "Reset Guardian Player (One Use)" + set category = "Guardian" + set desc = "Re-rolls which ghost will control your Guardian. One use." + + src.verbs -= /mob/living/proc/guardian_reset + for(var/mob/living/simple_animal/hostile/guardian/G in mob_list) + if(G.summoner == src) + var/list/mob/dead/observer/candidates = pollCandidates("Do you want to play as [G.real_name]?", "pAI", null, FALSE, 100) + var/mob/dead/observer/new_stand = null + if(candidates.len) + new_stand = pick(candidates) + G << "Your user reset you, and your body was taken over by a ghost. Looks like they weren't happy with your performance." + src << "Your guardian has been successfully reset." + message_admins("[key_name_admin(new_stand)] has taken control of ([key_name_admin(G)])") + G.ghostize(0) + G.key = new_stand.key + else + src << "There were no ghosts willing to take control. Looks like you're stuck with your Guardian for now." + verbs += /mob/living/proc/guardian_reset + +/mob/living/simple_animal/hostile/guardian/proc/ToggleLight() + if(!luminosity) + SetLuminosity(3) + else + SetLuminosity(0) + + +//////////////////////////TYPES OF GUARDIANS + + +//Fire. Low damage, low resistance, sets mobs on fire when bumping + +/mob/living/simple_animal/hostile/guardian/fire + a_intent = "help" + melee_damage_lower = 10 + melee_damage_upper = 10 + attack_sound = 'sound/items/Welder.ogg' + attacktext = "sears" + damage_transfer = 0.8 + range = 10 + playstyle_string = "As a Chaos type, you have only light damage resistance, but will ignite any enemy you bump into. In addition, your melee attacks will randomly teleport enemies." + environment_smash = 1 + magic_fluff_string = "..And draw the Wizard, bringer of endless chaos!" + tech_fluff_string = "Boot sequence complete. Crowd control modules activated. Holoparasite swarm online." + bio_fluff_string = "Your scarab swarm finishes mutating and stirs to life, ready to sow havoc at random." + +/mob/living/simple_animal/hostile/guardian/fire/Life() //Dies if the summoner dies + ..() + if(summoner) + summoner.ExtinguishMob() + summoner.adjust_fire_stacks(-20) + +/mob/living/simple_animal/hostile/guardian/fire/AttackingTarget() + ..() + if(prob(45)) + if(istype(target, /atom/movable)) + var/atom/movable/M = target + if(!M.anchored && M != summoner) + do_teleport(M, M, 10) + +/mob/living/simple_animal/hostile/guardian/fire/Crossed(AM as mob|obj) + ..() + collision_ignite(AM) + +/mob/living/simple_animal/hostile/guardian/fire/Bumped(AM as mob|obj) + ..() + collision_ignite(AM) + +/mob/living/simple_animal/hostile/guardian/fire/Bump(AM as mob|obj) + ..() + collision_ignite(AM) + +/mob/living/simple_animal/hostile/guardian/fire/proc/collision_ignite(AM as mob|obj) + if(istype(AM, /mob/living/)) + var/mob/living/M = AM + if(AM != summoner && M.fire_stacks < 7) + M.fire_stacks = 7 + M.IgniteMob() + +/mob/living/simple_animal/hostile/guardian/fire/Bump(AM as mob|obj) + ..() + collision_ignite(AM) +//Standard + +/mob/living/simple_animal/hostile/guardian/punch + melee_damage_lower = 20 + melee_damage_upper = 20 + damage_transfer = 0.5 + playstyle_string = "As a standard type you have no special abilities, but have a high damage resistance and a powerful attack capable of smashing through walls." + environment_smash = 2 + magic_fluff_string = "..And draw the Assistant, faceless and generic, but never to be underestimated." + tech_fluff_string = "Boot sequence complete. Standard combat modules loaded. Holoparasite swarm online." + bio_fluff_string = "Your scarab swarm stirs to life, ready to tear apart your enemies." + var/battlecry = "AT" + +/mob/living/simple_animal/hostile/guardian/punch/verb/Battlecry() + set name = "Set Battlecry" + set category = "Guardian" + set desc = "Choose what you shout as you punch" + var/input = stripped_input(src,"What do you want your battlecry to be? Max length of 5 characters.", ,"", 6) + if(input) + battlecry = input + + + +/mob/living/simple_animal/hostile/guardian/punch/AttackingTarget() + ..() + if(istype(target, /mob/living)) + src.say("[src.battlecry][src.battlecry][src.battlecry][src.battlecry][src.battlecry][src.battlecry][src.battlecry][src.battlecry][src.battlecry][src.battlecry]\ + [src.battlecry][src.battlecry][src.battlecry][src.battlecry][src.battlecry]") + playsound(loc, src.attack_sound, 50, 1, 1) + playsound(loc, src.attack_sound, 50, 1, 1) + playsound(loc, src.attack_sound, 50, 1, 1) + playsound(loc, src.attack_sound, 50, 1, 1) + +//Healer + +/mob/living/simple_animal/hostile/guardian/healer + a_intent = "harm" + friendly = "heals" + speed = 0 + melee_damage_lower = 15 + melee_damage_upper = 15 + playstyle_string = "As a Support type, you may toggle your basic attacks to a healing mode. In addition, Alt-Clicking on an adjacent mob will warp them to your bluespace beacon after a short delay." + magic_fluff_string = "..And draw the CMO, a potent force of life...and death." + tech_fluff_string = "Boot sequence complete. Medical modules active. Bluespace modules activated. Holoparasite swarm online." + bio_fluff_string = "Your scarab swarm finishes mutating and stirs to life, capable of mending wounds and travelling via bluespace." + var/turf/simulated/floor/beacon + var/beacon_cooldown = 0 + var/toggle = FALSE + +/mob/living/simple_animal/hostile/guardian/healer/New() + ..() + var/datum/atom_hud/medsensor = huds[DATA_HUD_MEDICAL_ADVANCED] + medsensor.add_hud_to(src) + +/mob/living/simple_animal/hostile/guardian/healer/AttackingTarget() + ..() + if(toggle == TRUE) + if(src.loc == summoner) + src << "You must be manifested to heal!" + return + if(iscarbon(target)) + var/mob/living/carbon/C = target + C.adjustBruteLoss(-5) + C.adjustFireLoss(-5) + C.adjustOxyLoss(-5) + C.adjustToxLoss(-5) + +/mob/living/simple_animal/hostile/guardian/healer/ToggleMode() + if(src.loc == summoner) + if(toggle) + a_intent = "harm" + speed = 0 + damage_transfer = 0.7 + melee_damage_lower = 15 + melee_damage_upper = 15 + src << "You switch to combat mode." + toggle = FALSE + else + a_intent = "help" + speed = 1 + damage_transfer = 1 + melee_damage_lower = 0 + melee_damage_upper = 0 + src << "You switch to healing mode." + toggle = TRUE + else + src << "You have to be recalled to toggle modes!" + + +/mob/living/simple_animal/hostile/guardian/healer/verb/Beacon() + set name = "Place Bluespsace Beacon" + set category = "Guardian" + set desc = "Mark a floor as your beacon point, allowing you to warp targets to it. Your beacon will not work in unfavorable atmospheric conditions." + if(beacon_cooldownBeacon placed! You may now warp targets to it, including your user, via Alt+Click. " + if(beacon) + beacon.ChangeTurf(/turf/simulated/floor/plating) + beacon = F + beacon_cooldown = world.time+3000 + + else + src << "Your power is on cooldown. You must wait five minutes between placing beacons." + +/mob/living/simple_animal/hostile/guardian/healer/AltClickOn(atom/movable/A) + if(!istype(A)) + return + if(src.loc == summoner) + src << "You must be manifested to warp a target!" + return + if(!beacon) + src << "You need a beacon placed to warp things!" + return + if(!Adjacent(A)) + src << "You must be adjacent to your target!" + return + if((A.anchored)) + src << "Your target can not be anchored!" + return + src << "You begin to warp [A]" + if(do_mob(src, A, 50)) + if(!A.anchored) + if(src.beacon) //Check that the beacon still exists and is in a safe place. No instant kills. + if(beacon.air) + var/datum/gas_mixture/Z = beacon.air + if(Z.oxygen >= 16 && !Z.toxins && Z.carbon_dioxide < 10 && !Z.trace_gases.len) + if((Z.temperature > 270) && (Z.temperature < 360)) + var/pressure = Z.return_pressure() + if((pressure > 20) && (pressure < 550)) + do_teleport(A, beacon, 0) + else + src << "The beacon isn't in a safe location!" + else + src << "The beacon isn't in a safe location!" + else + src << "You need a beacon to warp things!" + else + src << "You need to hold still!" + + +///////////////////Ranged + +/obj/item/projectile/guardian + name = "crystal spray" + icon_state = "guardian" + damage = 5 + damage_type = BRUTE + armour_penetration = 100 + +/mob/living/simple_animal/hostile/guardian/ranged + a_intent = "help" + friendly = "quietly assesses" + melee_damage_lower = 10 + melee_damage_upper = 10 + damage_transfer = 0.9 + projectiletype = /obj/item/projectile/guardian + ranged_cooldown_cap = 0 + projectilesound = 'sound/effects/hit_on_shattered_glass.ogg' + ranged = 1 + range = 13 + playstyle_string = "As a ranged type, you have only light damage resistance, but are capable of spraying shards of crystal at incredibly high speed. You can also deploy surveillance snares to monitor enemy movement. Finally, you can switch to scout mode, in which you can't attack, but can move without limit." + magic_fluff_string = "..And draw the Sentinel, an alien master of ranged combat." + tech_fluff_string = "Boot sequence complete. Ranged combat modules active. Holoparasite swarm online." + bio_fluff_string = "Your scarab swarm finishes mutating and stirs to life, capable of spraying shards of crystal." + var/list/snares = list() + var/toggle = FALSE + +/mob/living/simple_animal/hostile/guardian/ranged/ToggleMode() + if(src.loc == summoner) + if(toggle) + ranged = 1 + melee_damage_lower = 10 + melee_damage_upper = 10 + alpha = 255 + range = 13 + incorporeal_move = 0 + src << "You switch to combat mode." + toggle = FALSE + else + ranged = 0 + melee_damage_lower = 0 + melee_damage_upper = 0 + alpha = 60 + range = 255 + incorporeal_move = 1 + src << "You switch to scout mode." + toggle = TRUE + else + src << "You have to be recalled to toggle modes!" + +/mob/living/simple_animal/hostile/guardian/ranged/verb/Snare() + set name = "Set Surveillance Trap" + set category = "Guardian" + set desc = "Set an invisible trap that will alert you when living creatures walk over it. Max of 5" + if(src.snares.len <6) + var/turf/snare_loc = get_turf(src.loc) + var/obj/item/effect/snare/S = new /obj/item/effect/snare(snare_loc) + S.spawner = src + S.name = "[get_area(snare_loc)] trap ([rand(1, 1000)])" + src.snares |= S + src << "Surveillance trap deployed!" + else + src << "You have too many traps deployed. Delete some first." + +/mob/living/simple_animal/hostile/guardian/ranged/verb/DisarmSnare() + set name = "Remove Surveillance Trap" + set category = "Guardian" + set desc = "Disarm unwanted surveillance traps." + var/picked_snare = input(src, "Pick which trap to disarm", "Disarm Trap") as null|anything in src.snares + if(picked_snare) + src.snares -= picked_snare + qdel(picked_snare) + src << "Snare disarmed." + +/obj/item/effect/snare + name = "snare" + desc = "You shouldn't be seeing this!" + var/mob/living/spawner + invisibility = 1 + + +/obj/item/effect/snare/Crossed(AM as mob|obj) + if(istype(AM, /mob/living/)) + var/turf/snare_loc = get_turf(src.loc) + if(spawner) + spawner << "[AM] has crossed your surveillance trap at [get_area(snare_loc)]." + if(istype(spawner, /mob/living/simple_animal/hostile/guardian)) + var/mob/living/simple_animal/hostile/guardian/G = spawner + if(G.summoner) + G.summoner << "[AM] has crossed your surveillance trap at [get_area(snare_loc)]." + +////Bomb + +/mob/living/simple_animal/hostile/guardian/bomb + melee_damage_lower = 15 + melee_damage_upper = 15 + damage_transfer = 0.6 + range = 13 + playstyle_string = "As an explosive type, you have only moderate close combat abilities, but are capable of converting any adjacent item into a disguised bomb via alt click." + magic_fluff_string = "..And draw the Scientist, master of explosive death." + tech_fluff_string = "Boot sequence complete. Explosive modules active. Holoparasite swarm online." + bio_fluff_string = "Your scarab swarm finishes mutating and stirs to life, capable of stealthily booby trapping items." + var/bomb_cooldown = 0 + +/mob/living/simple_animal/hostile/guardian/bomb/AltClickOn(atom/movable/A) + if(!istype(A)) + return + if(src.loc == summoner) + src << "You must be manifested to create bombs!" + return + if(istype(A, /obj/)) + if(bomb_cooldown <= world.time && !stat) + var/obj/item/weapon/guardian_bomb/B = new /obj/item/weapon/guardian_bomb(get_turf(A)) + src << "Success! Bomb armed!" + bomb_cooldown = world.time + 200 + B.spawner = src + B.disguise (A) + else + src << "Your powers are on cooldown! You must wait 20 seconds between bombs." + +/obj/item/weapon/guardian_bomb + name = "bomb" + desc = "You shouldn't be seeing this!" + var/obj/stored_obj + var/mob/living/spawner + + +/obj/item/weapon/guardian_bomb/proc/disguise(var/obj/A) + A.loc = src + stored_obj = A + anchored = A.anchored + density = A.density + appearance = A.appearance + spawn(600) + stored_obj.loc = get_turf(src.loc) + spawner << "Failure! Your trap didn't catch anyone this time." + qdel(src) + +/obj/item/weapon/guardian_bomb/proc/detonate(var/mob/living/user) + user << "The [src] was boobytrapped!" + spawner << "Success! Your trap caught [user]" + stored_obj.loc = get_turf(src.loc) + playsound(get_turf(src),'sound/effects/Explosion2.ogg', 200, 1) + user.ex_act(2) + qdel(src) + +/obj/item/weapon/guardian_bomb/attackby(mob/living/user) + detonate(user) + return + +/obj/item/weapon/guardian_bomb/pickup(mob/living/user) + detonate(user) + return + +/obj/item/weapon/guardian_bomb/examine(mob/user) + stored_obj.examine(user) + if(get_dist(user,src)<=2) + user << "Looks odd!" + + +////////Creation + +/obj/item/weapon/guardiancreator + name = "deck of tarot cards" + desc = "An enchanted deck of tarot cards, rumored to be a source of unimaginable power. " + icon = 'icons/obj/toy.dmi' + icon_state = "deck_syndicate_full" + var/used = FALSE + var/theme = "magic" + var/mob_name = "Guardian Spirit" + var/use_message = "You shuffle the deck..." + var/used_message = "All the cards seem to be blank now." + var/failure_message = "..And draw a card! It's...blank? Maybe you should try again later." + var/ling_failure = "The deck refuses to respond to a souless creature such as you." + var/list/possible_guardians = list("Chaos", "Standard", "Ranged", "Support", "Explosive") + var/random = TRUE + +/obj/item/weapon/guardiancreator/attack_self(mob/living/user) + for(var/mob/living/simple_animal/hostile/guardian/G in living_mob_list) + if (G.summoner == user) + user << "You already have a [mob_name]!" + return + if(user.mind && user.mind.changeling) + user << "[ling_failure]" + return + if(used == TRUE) + user << "[used_message]" + return + used = TRUE + user << "[use_message]" + var/list/mob/dead/observer/candidates = pollCandidates("Do you want to play as the [mob_name] of [user.real_name]?", ROLE_PAI, null, FALSE, 100) + var/mob/dead/observer/theghost = null + + if(candidates.len) + theghost = pick(candidates) + spawn_guardian(user, theghost.key) + else + user << "[failure_message]" + used = FALSE + + +/obj/item/weapon/guardiancreator/proc/spawn_guardian(var/mob/living/user, var/key) + var/gaurdiantype = "Standard" + if(random) + gaurdiantype = pick(possible_guardians) + else + gaurdiantype = input(user, "Pick the type of [mob_name]", "[mob_name] Creation") as null|anything in possible_guardians + var/pickedtype = /mob/living/simple_animal/hostile/guardian/punch + var/picked_color = randomColor(0) + switch(gaurdiantype) + + if("Chaos") + pickedtype = /mob/living/simple_animal/hostile/guardian/fire + + if("Standard") + pickedtype = /mob/living/simple_animal/hostile/guardian/punch + + if("Ranged") + pickedtype = /mob/living/simple_animal/hostile/guardian/ranged + + if("Support") + pickedtype = /mob/living/simple_animal/hostile/guardian/healer + + if("Explosive") + pickedtype = /mob/living/simple_animal/hostile/guardian/bomb + + var/mob/living/simple_animal/hostile/guardian/G = new pickedtype(user) + G.summoner = user + G.key = key + G << "You are a [mob_name] bound to serve [user.real_name]." + G << "You are capable of manifesting or recalling to your master with verbs in the Guardian tab. You will also find a verb to communicate with them privately there." + G << "While personally invincible, you will die if [user.real_name] does, and any damage dealt to you will have a portion passed on to them as you feed upon them to sustain yourself." + G << "[G.playstyle_string]" + G.faction = user.faction + user.verbs += /mob/living/proc/guardian_comm + user.verbs += /mob/living/proc/guardian_recall + user.verbs += /mob/living/proc/guardian_reset + switch (theme) + if("magic") + G.name = "[mob_name] [capitalize(picked_color)]" + G.color = color2hex(picked_color) + G.real_name = "[mob_name] [capitalize(picked_color)]" + user << "[G.magic_fluff_string]." + if("tech") + var/colour = pick("orange", "neon", "pink", "red", "blue", "green") + G.name = "[mob_name] [capitalize(colour)]" + G.real_name = "[mob_name] [capitalize(colour)]" + G.icon_living = "parasite[colour]" + G.icon_state = "parasite[colour]" + G.icon_dead = "parasite[colour]" + G.animated_manifest = TRUE + user << "[G.tech_fluff_string]." + G.speak_emote = list("states") + if("bio") + user << "[G.bio_fluff_string]." + G.attacktext = "swarms" + G.speak_emote = list("chitters") + G.mind.name = "[G.real_name]" + +/obj/item/weapon/guardiancreator/choose + random = FALSE + +/obj/item/weapon/guardiancreator/tech + name = "holoparasite injector" + desc = "It contains alien nanoswarm of unknown origin. Though capable of near sorcerous feats via use of hardlight holograms and nanomachines, it requires an organic host as a home base and source of fuel." + icon = 'icons/obj/syringe.dmi' + icon_state = "combat_hypo" + theme = "tech" + mob_name = "Holoparasite" + use_message = "You start to power on the injector..." + used_message = "The injector has already been used." + failure_message = "...ERROR. BOOT SEQUENCE ABORTED. AI FAILED TO INTIALIZE. PLEASE CONTACT SUPPORT OR TRY AGAIN LATER." + ling_failure = "The holoparasites recoil in horror. They want nothing to do with a creature like you." + +/obj/item/weapon/guardiancreator/tech/choose + random = FALSE + +/obj/item/weapon/guardiancreator/biological + name = "scarab egg cluster" + desc = "A parasitic species that will nest in the closest living creature upon birth. While not great for your health, they'll defend their new 'hive' to the death." + icon = 'icons/obj/syringe.dmi' + icon_state = "combat_hypo" + theme = "bio" + mob_name = "Scarab Swarm" + use_message = "The eggs begin to twitch..." + used_message = "The cluster already hatched." + failure_message = "...but soon settles again. Guess they weren't ready to hatch after all." + +/obj/item/weapon/guardiancreator/biological/choose + random = FALSE + + +/obj/item/weapon/paper/guardian + name = "Holoparasite Guide" + icon_state = "alienpaper_words" + info = {"A list of Holoparasite Types
+
+ Chaos: Ignites mobs on touch. teleports them at random on attack. Automatically extinguishes the user if they catch fire.
+
+ Standard:Devestating close combat attacks and high damage resist. No special powers.
+
+ Ranged: Has two modes. Ranged: Extremely weak, highly spammable projectile attack. Scout: Can not attack, but can move through walls. Can lay surveillance snares in either mode.
+
+ Support:Has two modes. Combat: Medium power attacks and damage resist. Healer: Attacks heal damage, but low damage resist and slow movemen. Can deploy a bluespace beacon and warp targets to it (including you) in either mode.
+
+ Explosive: High damage resist and medium power attack. Can turn any object into a bomb, dealing explosive damage to the next person to touch it. The object will return to normal after the trap is triggered.
+"} + +/obj/item/weapon/paper/guardian/update_icon() + return + + +/obj/item/weapon/storage/box/syndie_kit/guardian + name = "holoparasite injector kit" + +/obj/item/weapon/storage/box/syndie_kit/guardian/New() + ..() + new /obj/item/weapon/guardiancreator/tech/choose(src) + new /obj/item/weapon/paper/guardian(src) + return + + + + + + + +///HUD + +/datum/hud/proc/guardian_hud(ui_style = 'icons/mob/screen_midnight.dmi') + adding = list() + + var/obj/screen/using + + using = new /obj/screen/guardian/Manifest() + using.screen_loc = ui_rhand + adding += using + + using = new /obj/screen/guardian/Recall() + using.screen_loc = ui_lhand + adding += using + + using = new /obj/screen/guardian/ToggleMode() + using.screen_loc = ui_storage1 + adding += using + + using = new /obj/screen/guardian/ToggleLight() + using.screen_loc = ui_inventory + adding += using + + using = new /obj/screen/guardian/Communicate() + using.screen_loc = ui_back + adding += using + + mymob.client.screen = list() + mymob.client.screen += mymob.client.void + mymob.client.screen += adding + + + + +//HUD BUTTONS + +/obj/screen/guardian + icon = 'icons/mob/guardian.dmi' + +/obj/screen/guardian/Manifest + icon_state = "manifest" + name = "Manifest" + desc = "Spring forth into battle!" + +/obj/screen/guardian/Manifest/Click() + if(isguardian(usr)) + var/mob/living/simple_animal/hostile/guardian/G = usr + G.Manifest() + + +/obj/screen/guardian/Recall + icon_state = "recall" + name = "Recall" + desc = "Return to your user." + +/obj/screen/guardian/Recall/Click() + if(isguardian(usr)) + var/mob/living/simple_animal/hostile/guardian/G = usr + G.Recall() + +/obj/screen/guardian/ToggleMode + icon_state = "toggle" + name = "Toggle Mode" + desc = "Switch between ability modes." + +/obj/screen/guardian/ToggleMode/Click() + if(isguardian(usr)) + var/mob/living/simple_animal/hostile/guardian/G = usr + G.ToggleMode() + +/obj/screen/guardian/Communicate + icon_state = "communicate" + name = "Communicate" + desc = "Communicate telepathically with your user." + +/obj/screen/guardian/Communicate/Click() + if(isguardian(usr)) + var/mob/living/simple_animal/hostile/guardian/G = usr + G.Communicate() + + +/obj/screen/guardian/ToggleLight + icon_state = "light" + name = "Toggle Light" + desc = "Glow like star dust." + +/obj/screen/guardian/ToggleLight/Click() + if(isguardian(usr)) + var/mob/living/simple_animal/hostile/guardian/G = usr + G.ToggleLight() From f8e0180e3faa6c31a44a3e0aaa4b4626e085f308 Mon Sep 17 00:00:00 2001 From: Buggy123 Date: Wed, 30 Dec 2015 17:57:56 -0500 Subject: [PATCH 021/310] I'm bad at this --- .../living/simple_animal/guardian/guardian.dm | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/code/modules/mob/living/simple_animal/guardian/guardian.dm b/code/modules/mob/living/simple_animal/guardian/guardian.dm index 0064a5250e5..6152d3aa8e6 100644 --- a/code/modules/mob/living/simple_animal/guardian/guardian.dm +++ b/code/modules/mob/living/simple_animal/guardian/guardian.dm @@ -9,7 +9,6 @@ icon = 'icons/mob/mob.dmi' icon_state = "stand" icon_living = "stand" - icon_dead = "stand" speed = 0 a_intent = "harm" stop_automated_movement = 1 @@ -72,13 +71,6 @@ visible_message("The [src] jumps back to its user.") loc = get_turf(summoner) -/mob/living/mob/living/simple_animal/hostile/guardian/canSuicide() - return 0 - -/mob/living/simple_animal/hostile/guardian/death() - ..() - summoner << "Your [name] died somehow!" - summoner.death() /mob/living/simple_animal/hostile/guardian/adjustBruteLoss(amount) //The spirit is invincible, but passes on damage to the summoner var/damage = amount * damage_transfer @@ -176,8 +168,6 @@ set name = "Reset Guardian Player (One Use)" set category = "Guardian" set desc = "Re-rolls which ghost will control your Guardian. One use." - - src.verbs -= /mob/living/proc/guardian_reset for(var/mob/living/simple_animal/hostile/guardian/G in mob_list) if(G.summoner == src) var/list/mob/dead/observer/candidates = pollCandidates("Do you want to play as [G.real_name]?", "pAI", null, FALSE, 100) @@ -187,11 +177,11 @@ G << "Your user reset you, and your body was taken over by a ghost. Looks like they weren't happy with your performance." src << "Your guardian has been successfully reset." message_admins("[key_name_admin(new_stand)] has taken control of ([key_name_admin(G)])") - G.ghostize(0) + G.ghostize() G.key = new_stand.key + src.verbs -= /mob/living/proc/guardian_reset else src << "There were no ghosts willing to take control. Looks like you're stuck with your Guardian for now." - verbs += /mob/living/proc/guardian_reset /mob/living/simple_animal/hostile/guardian/proc/ToggleLight() if(!luminosity) @@ -634,7 +624,6 @@ G << "You are capable of manifesting or recalling to your master with verbs in the Guardian tab. You will also find a verb to communicate with them privately there." G << "While personally invincible, you will die if [user.real_name] does, and any damage dealt to you will have a portion passed on to them as you feed upon them to sustain yourself." G << "[G.playstyle_string]" - G.faction = user.faction user.verbs += /mob/living/proc/guardian_comm user.verbs += /mob/living/proc/guardian_recall user.verbs += /mob/living/proc/guardian_reset @@ -650,7 +639,6 @@ G.real_name = "[mob_name] [capitalize(colour)]" G.icon_living = "parasite[colour]" G.icon_state = "parasite[colour]" - G.icon_dead = "parasite[colour]" G.animated_manifest = TRUE user << "[G.tech_fluff_string]." G.speak_emote = list("states") @@ -658,7 +646,6 @@ user << "[G.bio_fluff_string]." G.attacktext = "swarms" G.speak_emote = list("chitters") - G.mind.name = "[G.real_name]" /obj/item/weapon/guardiancreator/choose random = FALSE @@ -697,6 +684,7 @@ name = "Holoparasite Guide" icon_state = "alienpaper_words" info = {"A list of Holoparasite Types
+
Chaos: Ignites mobs on touch. teleports them at random on attack. Automatically extinguishes the user if they catch fire.

From b7ca0abc55d07adbcf05530a21abff9db7cc8ad9 Mon Sep 17 00:00:00 2001 From: Buggy123 Date: Wed, 30 Dec 2015 17:58:48 -0500 Subject: [PATCH 022/310] Finally --- code/modules/mob/living/simple_animal/guardian/guardian.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/simple_animal/guardian/guardian.dm b/code/modules/mob/living/simple_animal/guardian/guardian.dm index 6152d3aa8e6..14a03d2dbb9 100644 --- a/code/modules/mob/living/simple_animal/guardian/guardian.dm +++ b/code/modules/mob/living/simple_animal/guardian/guardian.dm @@ -684,7 +684,7 @@ name = "Holoparasite Guide" icon_state = "alienpaper_words" info = {"A list of Holoparasite Types
- +
Chaos: Ignites mobs on touch. teleports them at random on attack. Automatically extinguishes the user if they catch fire.

From 8a2fb74e9f63a33e7c6796d971e93880b7f75386 Mon Sep 17 00:00:00 2001 From: swankcookie <__X__> Date: Wed, 30 Dec 2015 21:43:40 -0600 Subject: [PATCH 023/310] a --- cfg/admin.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/cfg/admin.txt b/cfg/admin.txt index 1f4c89d373b..fa417e312f7 100644 --- a/cfg/admin.txt +++ b/cfg/admin.txt @@ -13,3 +13,4 @@ giacomand rockdtben MrStonedOne Jordie0608 +Swankcookie \ No newline at end of file From 44879bceb174d1f8c7b2c60c9214e232e901922d Mon Sep 17 00:00:00 2001 From: Buggy123 Date: Wed, 30 Dec 2015 23:05:26 -0500 Subject: [PATCH 024/310] Added small explosion as suggested --- code/game/objects/items/weapons/grenades/ghettobomb.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/weapons/grenades/ghettobomb.dm b/code/game/objects/items/weapons/grenades/ghettobomb.dm index 88b7b54ba23..8339ed98c7c 100644 --- a/code/game/objects/items/weapons/grenades/ghettobomb.dm +++ b/code/game/objects/items/weapons/grenades/ghettobomb.dm @@ -59,7 +59,7 @@ /obj/item/weapon/grenade/iedcasing/prime() //Blowing that can up update_mob() - explosion(src.loc,-1,-1,-1, flame_range = 4) // no explosive damage, only a large fireball. + explosion(src.loc,-1,-1,2, flame_range = 4) // small explosion, plus a very large fireball. qdel(src) /obj/item/weapon/grenade/iedcasing/examine(mob/user) From 8e8526fd140131c02de0b4bbf8fc1f72a82c6bde Mon Sep 17 00:00:00 2001 From: Lularian Date: Thu, 31 Dec 2015 16:37:22 -0600 Subject: [PATCH 025/310] did I do it mum --- _maps/map_files/TgStation/tgstation.2.1.3.dmm | 5 +++-- code/game/jobs/job/cargo_service.dm | 4 ++-- .../objects/structures/crates_lockers/closets/job_closets.dm | 3 +++ 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/_maps/map_files/TgStation/tgstation.2.1.3.dmm b/_maps/map_files/TgStation/tgstation.2.1.3.dmm index e65e552ae3a..3bd4d862c5a 100644 --- a/_maps/map_files/TgStation/tgstation.2.1.3.dmm +++ b/_maps/map_files/TgStation/tgstation.2.1.3.dmm @@ -6782,6 +6782,7 @@ "cAv" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/turf/simulated/floor/plating/airless,/area/space/nearstation) "cAw" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plating/airless,/area/space/nearstation) "cAx" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plating/airless,/area/space/nearstation) +"cAy" = (/obj/structure/lattice/catwalk,/obj/item/stack/cable_coil/random,/turf/space,/area/solar/port) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -6951,14 +6952,14 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoVaoVaoVaoVaoVapQapQbLvbLvbLvbYubYtbYwbYvbYxbHEbYybHEbLvaoVaoVaoVaoVaoVaoVaoVbESbVHbVIbYzbYBbYAbXCbYCbYzbYzbXFbYDbQbbPQbQdbVJbVMbCqbSAbLZbYIbYHbYHbYJbYLbYKbYNbQebYPbQqbWQbOdbSIbYQbYRbXSbYSbOdbVZbXTbUSbURbYTbQyapQbQAbYVbYUbYWbOhbVubzsbWebzsbHZbHZbPvbNcbNdbYXbYYbNdbYZbNdbNdbNdbNdbNdbNcbLTbDbbJNbJNbJNbJNbVibZabTcbZbbVibJNbJNbJNbJNbDbbTlbZcbTlcbabTlbQZbYkbYmbYlbYobQGbQIbWrbZhbQZbUpbTqbTrbkybtpbtpbtpbZiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaafaafaafbLvbZkbZjbZjbZlbWzbLubCqbLvbLvaoVcceaoVaoVaoVaoVaoVbGpbVHbVIbYzbYzbZnbZpbZobYzbZqbZsbZrbZvbQKbQPbVJbVMbCqbZxbQQbDGbYHbZzbRicewbRjbRmbRkbRSbRobWQbZFbZGbXRbMKbXSbZHbOdbZIbXTbUSbZJbZKbRIbVvbPjbZLbXWbXWbOhbVubPnbWebZMbzsbZNbPvbZObTZbTZbZPbNdbZRbZQbZSbzsbZUbZTbLSbLTbDbbRTbRUbRUbZVbRVbMibRXbRZbZWbZXbEmbEmbEmbDbbZYbTlbTlbTlbTlbQZbZZbZZcaacabbPNbPNbWrbPNbQZbPNbTqbTrbkycadcaccaebZiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaaSaaSaaSaaSaaSaaSaaSaaSabaaaSaaSaaSaaSaaSaaaaaabCqbCqbCqbCqbCqbCqbYybCqbCqbCqbCqapQaoVaoVapQaaHcjnaoVaoVaoVbGpbVHbVIcagcaicahcakcajcamcalcaocanbSdbYFbStbVJcatcasbSRbSwbHPbYHcawbZybThbTgbTjbTibTHbTGcaDbPccaEbMKbMKbMKcaFbOdcaHcaGbUSbURbOdbQyapQbOhbOhbOhbOhbOhbVubPncaJcaIbzscaKcaMcaLbUXcaNcaObzscaQcaPcaRbzscaSbMbcaUcaTbDbbEmbSZbEmcaVbTabMibTcbMibTdcaWbEmbSZbEmbDbcaXbTlcaYcbccbbckacjWckNckMcbdbPNbWrbWrcbebQZbDhcbfcbgbkycbicbhbtpbZiaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaaaaafaaaaafaaaaafaaaacyaaaaafaaaaafaaaaaSaafaafbCqbHEbHEbHEbHEbHEbHEbHEbHEbLubLvaoVaoVaoVaaHcjocmXaaHaaHapQbGpbVHbVIcblbYzbWBbWBbWBbYzcbmcbocbnbXGbTIbUcbVJbCqbCqbUlcbrcbtbYHbYHcbucdtbUmcaAcaAcaAcaAbWQbOdcbAcbzcbCcbBbQtcbDcbFcbEbXUbTTcbGbPhbRKbPjcbIcbHcbHbOhbVubPnbAwcbJbzsbzscbLcbKbzscbMcbNbzsbzscbObzsbzscbNbFrcbQcbPbDbbEmbEmbEmcbScbRbRZcbTbMibUgcbUbRUbRUbUibDbbTlbTlcbVbTlbTlbQZbZZbZZcbWcbXbPNcbZcbYcbYbQZbqgcbfbTrbkybkybkybtpbkyaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaaaaafaaaaafaaaaafaaaaafaaaaafaaaaafaaaaaSaafaafbCqbHEbHEbHEbHEbHEbHEbHEbHEbLubLvaoVaoVaoVaaHcjocmXaaHaaHapQbGpbVHbVIcblbYzbWBbWBbWBbYzcbmcbocbnbXGbTIbUcbVJbCqbCqbUlcbrcbtbYHbYHcbucdtbUmcaAcaAcaAcaAbWQbOdcbAcbzcbCcbBbQtcbDcbFcbEbXUbTTcbGbPhbRKbPjcbIcbHcbHbOhbVubPnbAwcbJbzsbzscbLcbKbzscbMcbNbzsbzscbObzsbzscbNbFrcbQcbPbDbbEmbEmbEmcbScbRbRZcbTbMibUgcbUbRUbRUbUibDbbTlbTlcbVbTlbTlbQZbZZbZZcbWcbXbPNcbZcbYcbYbQZbqgcbfbTrbkybkybkybtpbkyaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaaaccacccccbaaaccacccccbaaaccacccccbaaaaaSaaaaaabLvccdbHEbCqbCqbCqbTzbCqbCqbCqbCqaoVaoVaoVcnBaaHaaHapQaoVaoVbGpbVHbVIbYzccgccfbWBcchbYzbYzbXFccibOCbUybVbbUCbVdbVcbVfbVebVhbVgbVobVmbVqbVpcerbVrbWhbVKccwccvccyccxbRAbRAbRDbTOcczbTUbRFbURccAbQyapQbQAccCccBccDbOhbVubzsbzsbWeccFccEcbLccGbzscbMccIccHccKccJccLccHccNccMbhGccObDbbDbbDbbDbbDbbDbbMiccPcfybDbbDbbDbbDbbDbbDbbQZbQZbQZbQZbQZbQZccRccRccSccTbQZbQZbQZbQZbQZbkyccUbTrbkyccWccVbtpbkyaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaafccaccXccbaaaccaccXccbaaaccaccXccbaafaafaaaaaabLvccYccZbCqbSqbHEbHEcdabQacdbbCqaoVaoVaoVaoVapQaoVaoVaoVaoVbESbVHbVIbWBcddcdcbWBcdecdfbWBbXFcdgbWtbWsbWvbWubWKbWJbXmbXkbXobXnbXqbXpbXIbXHccsbXNcdtbYbccwcdwbOdcbAbTObTPcdycdxcdAcdzbMWcdBcdCbRIbVvbPjcdDcbHcbHbOhbVubzsbAwcdEcdGcdFcdIcdHbzscdJcdLcdKccMcdMccMbFrbHdcdNbhGcdObDbcfrcgicgicglcgkbMiccPcgnbDbaafaafaafaafbkycdQbNBblQcdRcdRbQZcdScdSccSbScbQZcmobtpbtpbtpbDhccUbXubkycdVbtpbtpbkybkybkyaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaaaccaccXccbaafccaccXccbaafccaccXccbaaaaafaafaafbCqbLvbCqbCqbCqcdWcdYcgFcpYbSsbCqaoVaoVaoVaoVapQaoVaoVapQaoVbESbVHbVIbWBceacdZceccebcedbWBcefceecehcegceibVJbYpbYnbYEbYqbYMbYGbZebYObZgbZfbZubZtbZAbZwceycexbOdcbAcezbOdbOdbOdcezcezcezbURceBceAapQbOhbOhbOhbOhbOhbVubzscaKceCceEceDceGceFbzsbzsceIceHceJbLSceLceKbzsbzsbhGcdObDbchochqchqchschrchuchtcjBbDbaafaaaaaaaafbkybtpceMbrGceOceNbQZcePcePceQbScbQZbkybkyceSceRbDhccUbTrbtpbtpbtpceTblPceUblPaagaagaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafccaccXccbaaaccaccXccbaaaccaccXccbaafaafaaaaaaaafaafbCqceVbCqceWceYbCqbTzbCqbCqaoVapQaoVaoVapQaoVaoVapQaoVbESbVHbVIbVIbVIbVIbVIbVIbVIbVIbVJbVJbVJbVJbVJbVJbCqbZBbCqccwcfbcfbcfbcfcbZDbZCcfbbZEcfhcapccwbOdbQucficezbOdbOdbOdbOebULcezbURcezbLKapQapQapQapQapQapQbVucfjcfjcfjcflcfkcfjcfjcfjcfmcfocfnceJcfpceJceJbzscfqcbKcdObDbbDbccQccQbDbbDbccQcknccQbDbaaaaaaaaaaaabkybkyccUcfsbkybkybQZbQZbQZcftcfubQZbDhbkycaebtpckSccUcbgbkybkycfvbkybkybkybkyaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaaSaaSaafaaaccaccXccbaaaccaccXccbaaaccaccXccbaaaaafaaaaaacfxcfwcfwcfwcfwbCqbCqcqncqybCqbLvbLvbLvbLvbLvbLvbLvbLvbLvbCqcarcaqbTAcaxcazcaycaycaycaycaycaycaycaycaycaBcaBcaycaCceWccwcfFcfEcfHcgOcbqcbpcfbcbscfMctRccwcfNcfObRHcfQcfPcfRcfPcfQcfScfQcfTcezbLKbLKbLKaoVaoVapQaoVcfVcfUcfXcfWcfZcfYcgbcgacfjcgcbAwcgdcgfcgecghcggbKTbKTcgjcnHbkyaaaaaaaaaaaaaaaaafcskaafaaaaaaaaaaaaaaabkyczGcgocgmcgmcgpcgrcgqcgtcgscgubkybkybkybkycbvbkyccUbTrbkycgybtpbtpbkyaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaaaaafaaaaaaaaacgzaaaaaaaaacgzaaaaaaaaacgzaaaaaaaafcfxcfxcfxcgAcgCcgBcgEcgDbHEcAhcAicgGcgHcgHcgHcgHcgHcgHcgHcgHcgHcgHcgHcbwbEPcbxcbyccwccwccwccwccwccwccwccwccwccwccwccwccwccwccwcfbcgMcgOccjcclcckcgSccmccoccnccwcfNcgWcgVcgYcgXchacgZchbbOdchdchcchfchechgcheaoVaoVapQaoVcfjchhchjchichlchkchnchmcfjbAwbAwceJceJcbKceJccMbAwbAwcbKczHbkybkybZibZibkybkybZiczQbZibkybkybZibZibZibkyczRczSbnschwchvchxchxchxchychAchzchCccpccqccqccqccrcctbkyccVbtpchHbkyaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaafchJchIchIchKchLchLchLchLchLchLchLchLchLchLchLchMchOchNchOchPchRchQchScgHchUchTbQabCqbLvbLvbLvbLvbLvbLvbLvbLvbLvbCqbCqccucdicdhcdjccwchYchYchZccwcibciacidciccifciecihcigcijcdkcfbcikcimcdlcdmcinciqcdncdpcdoccwbLKcitbMQciubMQcivbMQciubMQciwbMQcixbLKbLKbLKapQapQapQaoVcfjciyciAcizciCciBciEciDcfjciFbAwccMccMciGceJccMbAwciHcbKczTbUwbUwbUwbUwbUwbUwbUwczUczVczVczVczVczVczVczXczWblObkyciKciJbkybkybZibZibkybkyciLcbfcdqbnscdscdrcdubkybkybkybkybkyaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaafchJchIchIchKchLchLchLcAychLchLchLchLchLchLchLchMchOchNchOchPchRchQchScgHchUchTbQabCqbLvbLvbLvbLvbLvbLvbLvbLvbLvbCqbCqccucdicdhcdjccwchYchYchZccwcibciacidciccifciecihcigcijcdkcfbcikcimcdlcdmcinciqcdncdpcdoccwbLKcitbMQciubMQcivbMQciubMQciwbMQcixbLKbLKbLKapQapQapQaoVcfjciyciAcizciCciBciEciDcfjciFbAwccMccMciGceJccMbAwciHcbKczTbUwbUwbUwbUwbUwbUwbUwczUczVczVczVczVczVczVczXczWblObkyciKciJbkybkybZibZibkybkyciLcbfcdqbnscdscdrcdubkybkybkybkybkyaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaaaaafaaaaaaaaaciPaaaaaaaaaciPaaaaaaaaaciPaaaaaaaafcfxcfxcfxciQciSciRcfwbHEbHEbHEbHEbCqaaaaaaaafaaaaaaaafaaaaaaaafaaabCqciTbCqciUcdvccwciXciWciZciYcjbcjacgRcgRcgRcdTcjecjdcjfcjacfbcjgcgOcdUciocjjcfbcejcelcekccwapQcphapQbVuapQcphapQbVuapQcpPapQcpPapQapQaoVaoVaoVapQapQcfjcjpcjrcjqcjtcjscjvcjucjxcjwcjzcjyccMbLSccMcjAbFrbHdchpczYczYczYczYczYczYczYcAaczZczYczYczYczYczYczYcAccAbcAdbkycjCcbfbkyaaaaaaaaaaaabkybtpcbfcjEcjDcjDcjFcjGcjDaaaaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaaSaaSaafaaaccacjHccbaaaccacjHccbaaaccacjHccbaaaaafaaaaaacfxcfwcfwcfwcfwcjIbLubHEbHEbCqbCqbLvcAjcjJcjJcjJcjJcjJcjJaafbCqbCqbCqcjKcemccwcjMciZciZciYckHcgRcencjNcjPcnAcgRcgRcgRcgRcfbcjUceoceocjYcjXcfbcepcfMcsFccwbOhckbbQAckbbOhckbbQAckbbOhckcbQAckdbOhaoVaoVaoVaoVaoVapQckfckecjrckgckickhckkckjcfjcklceJceJceJckmceJceJceJbzsbCqbCqbCqbLvbLvbLvbCqbCqbLvbLvbLvbCqbCqbLvbLvbLvbCqckobkybkyckpcbfbkybkybZibZibkybkybtpckqckrcjDcktcksckucjDaaaaaaaafaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafccacjHccbaaaccacjHccbaaaccacjHccbaafaafaafaaaaaaaaaaaaaagbCqbCqbCqckvbHEbCqckvbJfcjJckwckyckxckyckzcjJaaabCqbSsbHEckAcemccwckBckBckCccwckEckDckGcgRckFcnAckJckIckKckKcfbckLceqceqckPckOckRcesckTcetccwbOhckVckUckWbOhckYckXckZbOhclbclaclcbOhaoVaoVaoVaoVaoVaoVcfjcldclfcleclhclgcljclicfjclkclmcllcloclncAeccMccMbAwclpbHEbLvaaaaaaaaaaafaaaaafaaaaafaaaaaaaaaaaaaaabkyclqbDhbkyclsclrcltcgrcltcltcltcltclvcluclwcjDclyclxclzcjDaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHraaaaaaaaaaaaaaaaaaaaa diff --git a/code/game/jobs/job/cargo_service.dm b/code/game/jobs/job/cargo_service.dm index cd512286c10..6425e2f5cef 100644 --- a/code/game/jobs/job/cargo_service.dm +++ b/code/game/jobs/job/cargo_service.dm @@ -116,9 +116,9 @@ Bartender ears = /obj/item/device/radio/headset/headset_srv uniform = /obj/item/clothing/under/rank/bartender suit = /obj/item/clothing/suit/armor/vest - backpack_contents = list(/obj/item/ammo_casing/shotgun/beanbag=4) + backpack_contents = list(/obj/item/weapon/storage/box/rubbershot=1) shoes = /obj/item/clothing/shoes/laceup - + /* Cook */ diff --git a/code/game/objects/structures/crates_lockers/closets/job_closets.dm b/code/game/objects/structures/crates_lockers/closets/job_closets.dm index 0f2d6345066..4b04641348a 100644 --- a/code/game/objects/structures/crates_lockers/closets/job_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/job_closets.dm @@ -23,6 +23,9 @@ new /obj/item/clothing/shoes/sneakers/black(src) new /obj/item/weapon/reagent_containers/glass/rag(src) new /obj/item/weapon/reagent_containers/glass/rag(src) + new /obj/item/weapon/storage/box/rubbershot(src) + new /obj/item/clothing/suit/armor/vest(src) + new /obj/item/clothing/glasses/sunglasses/reagent(src) /obj/structure/closet/chefcloset name = "\proper chef's closet" From 3f5101d84d1f0c6aea305b7d486b3138fe261aac Mon Sep 17 00:00:00 2001 From: bawhoppen Date: Thu, 31 Dec 2015 16:39:28 -0600 Subject: [PATCH 026/310] oops? --- .../objects/structures/crates_lockers/closets/job_closets.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/objects/structures/crates_lockers/closets/job_closets.dm b/code/game/objects/structures/crates_lockers/closets/job_closets.dm index 4b04641348a..6f7d18f2a50 100644 --- a/code/game/objects/structures/crates_lockers/closets/job_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/job_closets.dm @@ -25,7 +25,7 @@ new /obj/item/weapon/reagent_containers/glass/rag(src) new /obj/item/weapon/storage/box/rubbershot(src) new /obj/item/clothing/suit/armor/vest(src) - new /obj/item/clothing/glasses/sunglasses/reagent(src) + new /obj/item/clothing/glasses/sunglasses/reagent(src) /obj/structure/closet/chefcloset name = "\proper chef's closet" @@ -388,4 +388,4 @@ new /obj/item/clothing/under/rank/hydroponics(src) new /obj/item/clothing/mask/bandana(src) new /obj/item/clothing/mask/bandana(src) - new /obj/item/clothing/mask/bandana(src) \ No newline at end of file + new /obj/item/clothing/mask/bandana(src) From 18ef72b3c53abacbf2f328d0b0778bb17b577c11 Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Thu, 31 Dec 2015 17:55:51 -0600 Subject: [PATCH 027/310] Fixes tank default release --- code/__DEFINES/atmospherics.dm | 5 +++++ code/game/objects/items/weapons/tanks/tank_types.dm | 4 ++-- code/game/objects/items/weapons/tanks/tanks.dm | 4 ---- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/code/__DEFINES/atmospherics.dm b/code/__DEFINES/atmospherics.dm index 2701a64da59..3937282472f 100644 --- a/code/__DEFINES/atmospherics.dm +++ b/code/__DEFINES/atmospherics.dm @@ -152,3 +152,8 @@ #define PARENT2 parents[2] #define PARENT3 parents[3] #define PARENT_I parents[I] + +//Tanks +#define TANK_MAX_RELEASE_PRESSURE (ONE_ATMOSPHERE*3) +#define TANK_MIN_RELEASE_PRESSURE 0 +#define TANK_DEFAULT_RELEASE_PRESSURE 16 diff --git a/code/game/objects/items/weapons/tanks/tank_types.dm b/code/game/objects/items/weapons/tanks/tank_types.dm index 586e3a47ddc..aa55051c783 100644 --- a/code/game/objects/items/weapons/tanks/tank_types.dm +++ b/code/game/objects/items/weapons/tanks/tank_types.dm @@ -14,7 +14,7 @@ name = "oxygen tank" desc = "A tank of oxygen." icon_state = "oxygen" - distribute_pressure = 16 + distribute_pressure = TANK_DEFAULT_RELEASE_PRESSURE force = 10 @@ -156,7 +156,7 @@ slot_flags = SLOT_BELT w_class = 2 force = 4 - distribute_pressure = ONE_ATMOSPHERE*O2STANDARD + distribute_pressure = TANK_DEFAULT_RELEASE_PRESSURE volume = 3 //Tiny. Real life equivalents only have 21 breaths of oxygen in them. They're EMERGENCY tanks anyway -errorage (dangercon 2011) diff --git a/code/game/objects/items/weapons/tanks/tanks.dm b/code/game/objects/items/weapons/tanks/tanks.dm index f3d5ead1b88..4fded1fbb7f 100644 --- a/code/game/objects/items/weapons/tanks/tanks.dm +++ b/code/game/objects/items/weapons/tanks/tanks.dm @@ -1,7 +1,3 @@ -#define TANK_MAX_RELEASE_PRESSURE (ONE_ATMOSPHERE*3) -#define TANK_MIN_RELEASE_PRESSURE 0 -#define TANK_DEFAULT_RELEASE_PRESSURE (ONE_ATMOSPHERE*O2STANDARD) - /obj/item/weapon/tank name = "tank" icon = 'icons/obj/tank.dmi' From b31024be36c35f48a8cf5724c88766818ab8dd53 Mon Sep 17 00:00:00 2001 From: TrustyGun Date: Fri, 1 Jan 2016 05:25:22 -0500 Subject: [PATCH 028/310] Updates tooltip colors --- code/modules/tooltip/tooltip.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/modules/tooltip/tooltip.html b/code/modules/tooltip/tooltip.html index 782ef5be7a1..78eb9cdd880 100644 --- a/code/modules/tooltip/tooltip.html +++ b/code/modules/tooltip/tooltip.html @@ -62,11 +62,11 @@ .retro .wrap {border-color: #005E00;} .retro .content {color: #003366; border-color: #005E00; background-color: #00BD00;} - .slimecore .wrap {border-color: #2B2B33;} - .slimecore .content {color: #6EA161; border-color: #2B2B33; background-color: #354E35;} + .slimecore .wrap {border-color: #18640E;} + .slimecore .content {color: #6EA161; border-color: #11450B; background-color: #354E35;} .operative .wrap {border-color: #A10000;} - .operative .content {color: #0F0B0C ; border-color: #A10000; background-color: #382626;} + .operative .content {color: #0F0B0C; border-color: #610002; background-color: #382626;} @@ -226,4 +226,4 @@ }; - \ No newline at end of file + From dde4690cb4463c026ce27a765cc68398919bacc7 Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Fri, 1 Jan 2016 05:43:17 -0600 Subject: [PATCH 029/310] Fixes floor is lava and advanced darkness --- code/modules/events/wizard/advanced_darkness.dm | 5 +++-- code/modules/events/wizard/lava.dm | 5 +++-- code/modules/mining/lavaland/weather_types.dm | 5 +++-- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/code/modules/events/wizard/advanced_darkness.dm b/code/modules/events/wizard/advanced_darkness.dm index 8e60fce2208..3a2f5b92b16 100644 --- a/code/modules/events/wizard/advanced_darkness.dm +++ b/code/modules/events/wizard/advanced_darkness.dm @@ -9,6 +9,7 @@ endWhen = 0 /datum/round_event/wizard/darkness/start() - var/datum/weather/advanced_darkness/darkness = new - darkness.weather_start_up() + spawn() + var/datum/weather/advanced_darkness/darkness = new + darkness.weather_start_up() return diff --git a/code/modules/events/wizard/lava.dm b/code/modules/events/wizard/lava.dm index fe6044182dd..24184026a97 100644 --- a/code/modules/events/wizard/lava.dm +++ b/code/modules/events/wizard/lava.dm @@ -9,6 +9,7 @@ endWhen = 0 /datum/round_event/wizard/lava/start() - var/datum/weather/floor_is_lava/LAVA = new /datum/weather/floor_is_lava - LAVA.weather_start_up() + spawn() + var/datum/weather/floor_is_lava/LAVA = new /datum/weather/floor_is_lava + LAVA.weather_start_up() return diff --git a/code/modules/mining/lavaland/weather_types.dm b/code/modules/mining/lavaland/weather_types.dm index e32fbf4dc7a..89308d4437c 100644 --- a/code/modules/mining/lavaland/weather_types.dm +++ b/code/modules/mining/lavaland/weather_types.dm @@ -47,12 +47,13 @@ duration_overlay = "" overlay_layer = 10 -/datum/weather/advanced_darkness/advanced_darkness/update_areas() - ..() +/datum/weather/advanced_darkness/update_areas() for(var/area/A in impacted_areas) if(stage == MAIN_STAGE) + A.invisibility = 0 A.opacity = 1 else + A.invisibility = 100 A.opacity = 0 //Ash storms From 94752caf4a22b35882ec590303822a4298a9800f Mon Sep 17 00:00:00 2001 From: Tkdrg Date: Fri, 1 Jan 2016 12:44:04 -0300 Subject: [PATCH 030/310] Fixes cable_coil children not merging each other Fixes #14240 --- code/game/objects/items/stacks/stack.dm | 13 ++++++++----- code/modules/power/cable.dm | 1 + 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index 46aebec6018..c1c8fef41a7 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -17,11 +17,14 @@ var/is_cyborg = 0 // It's 1 if module is used by a cyborg, and uses its storage var/datum/robot_energy_storage/source var/cost = 1 // How much energy from storage it costs + var/merge_type = null // This path and its children should merge with this stack, defaults to src.type /obj/item/stack/New(var/loc, var/amount=null) ..() if (amount) src.amount = amount + if(!merge_type) + merge_type = src.type return /obj/item/stack/Destroy() @@ -208,19 +211,19 @@ S.add(transfer) /obj/item/stack/Crossed(obj/o) - if(istype(o, src.type) && !o.throwing) + if(istype(o, merge_type) && !o.throwing) merge(o) return ..() /obj/item/stack/hitby(atom/movable/AM, skip, hitpush) - if(istype(AM, src.type)) + if(istype(AM, merge_type)) merge(AM) return ..() /obj/item/stack/attack_hand(mob/user) if (user.get_inactive_hand() == src) if(zero_amount()) return - var/obj/item/stack/F = new src.type( user, 1) + var/obj/item/stack/F = new src.type(user, 1) . = F F.copy_evidences(src) user.put_in_hands(F) @@ -234,7 +237,7 @@ return /obj/item/stack/attackby(obj/item/W, mob/user, params) - if(istype(W, src.type)) + if(istype(W, merge_type)) var/obj/item/stack/S = W merge(S) user << "Your [S.name] stack now contains [S.get_amount()] [S.singular_name]\s." @@ -268,4 +271,4 @@ src.max_res_amount = max_res_amount src.time = time src.one_per_turf = one_per_turf - src.on_floor = on_floor \ No newline at end of file + src.on_floor = on_floor diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index b2ca9ae4a1b..9a021cd1b4e 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -468,6 +468,7 @@ var/global/list/datum/stack_recipe/cable_coil_recipes = list ( \ item_state = "coil_red" max_amount = MAXCOIL amount = MAXCOIL + merge_type = /obj/item/stack/cable_coil // This is here to let its children merge between themselves item_color = "red" desc = "A coil of power cable." throwforce = 0 From 48837a79f03e99981f33dad90dc2a7b1051352de Mon Sep 17 00:00:00 2001 From: Miloc Date: Fri, 1 Jan 2016 18:23:03 +0100 Subject: [PATCH 031/310] NOBREATH check --- .../objects/effects/effect_system/effects_smoke.dm | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/code/game/objects/effects/effect_system/effects_smoke.dm b/code/game/objects/effects/effect_system/effects_smoke.dm index cb5f4de5cdd..979ffdbb06a 100644 --- a/code/game/objects/effects/effect_system/effects_smoke.dm +++ b/code/game/objects/effects/effect_system/effects_smoke.dm @@ -122,11 +122,12 @@ lifetime = 8 /obj/effect/particle_effect/smoke/bad/smoke_mob(mob/living/carbon/M) - if(..()) - M.drop_item() - M.adjustOxyLoss(1) - M.emote("cough") - return 1 + if (!(NOBREATH in M.dna.species.specflags)) + if(..()) + M.drop_item() + M.adjustOxyLoss(1) + M.emote("cough") + return 1 /obj/effect/particle_effect/smoke/bad/CanPass(atom/movable/mover, turf/target, height=0) if(height==0) return 1 From df1787daf3bc6f3367cbd5b1fbbc44c06cf6b039 Mon Sep 17 00:00:00 2001 From: Miloc Date: Fri, 1 Jan 2016 18:48:45 +0100 Subject: [PATCH 032/310] nobreath good --- .../objects/effects/effect_system/effects_smoke.dm | 11 +++++------ code/modules/mob/living/carbon/human/life.dm | 2 ++ 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/code/game/objects/effects/effect_system/effects_smoke.dm b/code/game/objects/effects/effect_system/effects_smoke.dm index 979ffdbb06a..cb5f4de5cdd 100644 --- a/code/game/objects/effects/effect_system/effects_smoke.dm +++ b/code/game/objects/effects/effect_system/effects_smoke.dm @@ -122,12 +122,11 @@ lifetime = 8 /obj/effect/particle_effect/smoke/bad/smoke_mob(mob/living/carbon/M) - if (!(NOBREATH in M.dna.species.specflags)) - if(..()) - M.drop_item() - M.adjustOxyLoss(1) - M.emote("cough") - return 1 + if(..()) + M.drop_item() + M.adjustOxyLoss(1) + M.emote("cough") + return 1 /obj/effect/particle_effect/smoke/bad/CanPass(atom/movable/mover, turf/target, height=0) if(height==0) return 1 diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 88a4581e713..27a76f7eec2 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -306,6 +306,8 @@ if(head) if(head.flags & BLOCK_GAS_SMOKE_EFFECT) . = 1 + if(NOBREATH in dna.species.specflags) + . = 1 return . /mob/living/carbon/human/proc/handle_embedded_objects() for(var/obj/item/organ/limb/L in organs) From 55ceabae3eb5aee85fdd21cc5f76a3baa19c33d9 Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Fri, 1 Jan 2016 13:29:11 -0600 Subject: [PATCH 033/310] SMES fix --- code/modules/power/smes.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm index a51b1f0c7bd..8abb0318333 100644 --- a/code/modules/power/smes.dm +++ b/code/modules/power/smes.dm @@ -159,7 +159,7 @@ //crowbarring it ! if(default_deconstruction_crowbar(I)) - message_admins("[src] has been deconstructed by [key_name_admin(user)](
?) (FLW) in ([x],[y],[z] - JMP)",0,1) + message_admins("[src] has been deconstructed by [key_name_admin(user)](?) (FLW) in ([user.x],[user.y],[user.z] - JMP)",0,1) log_game("[src] has been deconstructed by [key_name(user)]") investigate_log("SMES deconstructed by [key_name(user)]","singulo") From 1d697016d6e1098eed4d2ca92490d9d64f9aec71 Mon Sep 17 00:00:00 2001 From: WJohn Date: Fri, 1 Jan 2016 15:10:48 -0500 Subject: [PATCH 034/310] AI sat remap 2: electric boogaloo --- _maps/map_files/TgStation/tgstation.2.1.3.dmm | 542 +++++++++--------- 1 file changed, 279 insertions(+), 263 deletions(-) diff --git a/_maps/map_files/TgStation/tgstation.2.1.3.dmm b/_maps/map_files/TgStation/tgstation.2.1.3.dmm index 1d29e8e7877..117bd107264 100644 --- a/_maps/map_files/TgStation/tgstation.2.1.3.dmm +++ b/_maps/map_files/TgStation/tgstation.2.1.3.dmm @@ -3907,7 +3907,7 @@ "bxg" = (/obj/structure/reagent_dispensers/watertank,/obj/effect/decal/cleanable/cobweb2,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/maintenance/asmaint) "bxh" = (/obj/structure/bed/chair/comfy/black{dir = 1; icon_state = "comfychair"; name = "pilot's chair"},/turf/simulated/floor/plasteel/shuttle{icon_state = "shuttlefloor4"},/area/shuttle/syndicate) "bxi" = (/obj/machinery/computer/aifixer,/obj/machinery/requests_console{announcementConsole = 1; department = "Research Director's Desk"; departmentType = 5; name = "Research Director RC"; pixel_x = -2; pixel_y = 30},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/crew_quarters/hor) -"bxj" = (/obj/machinery/computer/security/telescreen{desc = "Used for watching the RD's goons from the safety of his office."; name = "Research Monitor"; network = list("RD"); pixel_x = 0; pixel_y = 2},/obj/structure/table,/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/crew_quarters/hor) +"bxj" = (/obj/machinery/computer/security/telescreen{desc = "Used for watching the RD's goons and the AI's satellite from the safety of his office."; name = "Research Monitor"; network = list("RD","MiniSat"); pixel_x = 0; pixel_y = 2},/obj/structure/table,/turf/simulated/floor/plasteel{icon_state = "cafeteria"},/area/crew_quarters/hor) "bxk" = (/obj/machinery/ai_status_display{pixel_y = 32},/turf/simulated/floor/plasteel{icon_state = "warnwhite"; dir = 1},/area/crew_quarters/hor) "bxl" = (/obj/structure/rack,/obj/item/weapon/circuitboard/aicore{pixel_x = -2; pixel_y = 4},/turf/simulated/floor/plasteel{dir = 9; icon_state = "warnwhite"},/area/crew_quarters/hor) "bxm" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/flora/tree/pine/xmas,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/chapel/main) @@ -5440,8 +5440,8 @@ "caF" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/camera{c_tag = "Atmospherics Central"; dir = 4; network = list("SS13")},/obj/machinery/atmospherics/components/binary/pump{dir = 0; name = "Port to Filter"; on = 0},/turf/simulated/floor/plasteel,/area/atmos) "caG" = (/obj/machinery/atmospherics/components/unary/heat_reservoir/heater{dir = 8},/turf/simulated/floor/plasteel,/area/atmos) "caH" = (/obj/machinery/atmospherics/pipe/manifold/general/visible{dir = 8},/obj/structure/bed/stool,/turf/simulated/floor/plasteel,/area/atmos) -"caI" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/maintenance/asmaint) -"caJ" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/maintenance/asmaint) +"caI" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/atmospherics/pipe/simple/yellow/visible{dir = 4},/turf/simulated/floor/plating,/area/maintenance/asmaint) +"caJ" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/yellow/visible{icon_state = "intact"; dir = 5},/turf/space,/area/space/nearstation) "caK" = (/obj/structure/rack,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/asmaint) "caL" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/maintenance/asmaint) "caM" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 8},/turf/simulated/floor/plating,/area/maintenance/asmaint) @@ -5493,7 +5493,7 @@ "cbG" = (/obj/machinery/atmospherics/components/binary/pump{dir = 8; name = "CO2 Outlet Pump"; on = 0},/turf/simulated/floor/plasteel{dir = 5; icon_state = "yellow"},/area/atmos) "cbH" = (/turf/simulated/floor/engine{carbon_dioxide = 50000; name = "co2 floor"; nitrogen = 0; oxygen = 0},/area/atmos) "cbI" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 8; external_pressure_bound = 0; frequency = 1441; id_tag = "co2_out"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/engine{carbon_dioxide = 50000; name = "co2 floor"; nitrogen = 0; oxygen = 0},/area/atmos) -"cbJ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/asmaint) +"cbJ" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/yellow/visible{icon_state = "intact"; dir = 10},/turf/simulated/floor/plating,/area/maintenance/asmaint) "cbK" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall,/area/maintenance/asmaint) "cbL" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/asmaint) "cbM" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/asmaint) @@ -5592,7 +5592,7 @@ "cdB" = (/obj/machinery/atmospherics/components/trinary/filter{dir = 1; filter_type = 3; on = 1},/turf/simulated/floor/plasteel,/area/atmos) "cdC" = (/obj/machinery/atmospherics/pipe/simple/green/visible{dir = 4},/turf/simulated/floor/plasteel{dir = 6; icon_state = "yellow"},/area/atmos) "cdD" = (/obj/machinery/atmospherics/components/unary/outlet_injector/on{dir = 8; frequency = 1441; id = "co2_in"; pixel_y = 1},/turf/simulated/floor/engine{carbon_dioxide = 50000; name = "co2 floor"; nitrogen = 0; oxygen = 0},/area/atmos) -"cdE" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/maintenance/asmaint) +"cdE" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/yellow/visible{dir = 4},/turf/simulated/floor/plating,/area/maintenance/asmaint) "cdF" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/asmaint) "cdG" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plating,/area/maintenance/asmaint) "cdH" = (/obj/structure/table,/obj/effect/spawner/lootdrop/maintenance,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/maintenance/asmaint) @@ -5642,7 +5642,7 @@ "cez" = (/obj/machinery/atmospherics/pipe/simple/cyan/visible,/turf/simulated/floor/plasteel,/area/atmos) "ceA" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/atmospherics/pipe/simple/cyan/visible{dir = 9},/turf/simulated/floor/plating,/area/atmos) "ceB" = (/obj/machinery/light{dir = 4},/obj/machinery/atmospherics/pipe/simple/cyan/visible{dir = 6},/turf/simulated/floor/plasteel,/area/atmos) -"ceC" = (/obj/machinery/power/apc{dir = 2; name = "Incinerator APC"; pixel_x = 0; pixel_y = -24},/obj/structure/cable,/turf/simulated/floor/plating,/area/maintenance/incinerator) +"ceC" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/yellow/visible,/turf/simulated/floor/plating,/area/maintenance/asmaint) "ceD" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/asmaint) "ceE" = (/obj/structure/sign/fire{pixel_x = 0; pixel_y = -32},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/asmaint) "ceF" = (/obj/structure/closet/emcloset,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor/plating,/area/maintenance/asmaint) @@ -5713,9 +5713,9 @@ "cfS" = (/obj/machinery/atmospherics/pipe/simple/green/visible{dir = 4; initialize_directions = 12},/turf/simulated/floor/plasteel,/area/atmos) "cfT" = (/obj/machinery/atmospherics/pipe/simple/green/visible{dir = 9},/turf/simulated/floor/plasteel,/area/atmos) "cfU" = (/obj/machinery/atmospherics/pipe/simple/yellow/visible{dir = 4},/turf/simulated/wall,/area/maintenance/incinerator) -"cfV" = (/obj/machinery/atmospherics/pipe/simple/yellow/visible{icon_state = "intact"; dir = 5},/turf/simulated/wall,/area/maintenance/incinerator) -"cfW" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/simple/yellow/visible{icon_state = "intact"; dir = 10},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) -"cfX" = (/obj/machinery/atmospherics/components/binary/pump{dir = 4; name = "atmospherics mix pump"},/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) +"cfV" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/yellow/visible,/turf/simulated/floor/plating,/area/maintenance/asmaint) +"cfW" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/yellow/visible,/turf/simulated/floor/plating,/area/maintenance/asmaint) +"cfX" = (/obj/machinery/power/apc{dir = 2; name = "Incinerator APC"; pixel_x = 0; pixel_y = -24},/obj/structure/cable,/obj/machinery/atmospherics/pipe/simple/yellow/visible,/turf/simulated/floor/plating,/area/maintenance/incinerator) "cfY" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/maintenance/incinerator) "cfZ" = (/obj/machinery/light_switch{pixel_x = 0; pixel_y = 26},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) "cga" = (/obj/machinery/power/smes{capacity = 9e+006; charge = 10000},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/effect/decal/cleanable/cobweb{icon_state = "cobweb2"},/turf/simulated/floor/plating,/area/maintenance/incinerator) @@ -5780,8 +5780,8 @@ "chh" = (/obj/machinery/atmospherics/components/unary/tank/toxins{dir = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) "chi" = (/obj/machinery/atmospherics/pipe/manifold4w/general{level = 2},/obj/machinery/meter,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) "chj" = (/obj/machinery/atmospherics/components/binary/pump{dir = 4; name = "plasma tank pump"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) -"chk" = (/obj/machinery/atmospherics/pipe/simple/general/visible{dir = 10},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) -"chl" = (/obj/machinery/atmospherics/components/binary/pump{dir = 4; name = "Mix to Incinerator"; on = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) +"chk" = (/obj/machinery/atmospherics/pipe/simple/yellow/visible,/turf/simulated/wall,/area/maintenance/incinerator) +"chl" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/components/binary/pump{dir = 2; name = "atmospherics mix pump"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) "chm" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/machinery/alarm{desc = "This particular atmos control unit appears to have no access restrictions."; dir = 8; icon_state = "alarm0"; locked = 0; name = "all-access air alarm"; pixel_x = 24; req_access = "0"; req_one_access = "0"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) "chn" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) "cho" = (/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/general/visible{dir = 5},/turf/simulated/floor/bluegrid{name = "Killroom Floor"; nitrogen = 500; oxygen = 0; temperature = 80},/area/toxins/xenobiology) @@ -5849,8 +5849,8 @@ "ciy" = (/obj/structure/sign/nosmoking_2{pixel_x = -28},/obj/machinery/atmospherics/components/unary/portables_connector/visible{dir = 4; name = "input gas connector port"},/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) "ciz" = (/obj/machinery/atmospherics/pipe/manifold/general/visible{dir = 4; initialize_directions = 11},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) "ciA" = (/obj/machinery/atmospherics/components/binary/pump{dir = 4; name = "input port pump"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) -"ciB" = (/obj/machinery/atmospherics/pipe/simple/general/visible{dir = 2},/obj/item/weapon/cigbutt,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) -"ciC" = (/obj/effect/landmark{name = "blobstart"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/mob/living/simple_animal/mouse,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) +"ciB" = (/obj/effect/decal/cleanable/cobweb,/obj/structure/reagent_dispensers/watertank,/obj/item/weapon/extinguisher,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) +"ciC" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/yellow/visible{dir = 6},/turf/space,/area/space/nearstation) "ciD" = (/obj/machinery/atmospherics/components/unary/portables_connector/visible{name = "output gas connector port"},/obj/machinery/portable_atmospherics/canister,/obj/structure/sign/nosmoking_2{pixel_x = 28},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) "ciE" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) "ciF" = (/obj/structure/table,/obj/item/weapon/cartridge/medical,/turf/simulated/floor/plating,/area/maintenance/asmaint) @@ -5889,7 +5889,7 @@ "cjm" = (/obj/machinery/door/airlock/command{name = "MiniSat Access"; req_access_txt = "65"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/engine/engineering) "cjn" = (/obj/item/weapon/weldingtool,/turf/simulated/floor/plating/airless,/area/space/nearstation) "cjo" = (/obj/item/stack/sheet/metal,/turf/simulated/floor/plating/airless,/area/space/nearstation) -"cjp" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/turf/simulated/floor/plating,/area/maintenance/incinerator) +"cjp" = (/obj/machinery/atmospherics/pipe/simple/yellow/visible{dir = 4},/obj/structure/reagent_dispensers/fueltank,/obj/item/weapon/storage/toolbox/emergency,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) "cjq" = (/obj/machinery/atmospherics/components/binary/valve{name = "Mix to Space"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) "cjr" = (/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) "cjs" = (/obj/machinery/atmospherics/pipe/simple/general/visible,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) @@ -5933,9 +5933,9 @@ "cke" = (/obj/structure/bed/stool,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) "ckf" = (/obj/structure/grille,/obj/structure/disposalpipe/segment,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/maintenance/incinerator) "ckg" = (/obj/machinery/atmospherics/pipe/manifold/general/visible{dir = 8},/obj/machinery/meter,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) -"ckh" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{dir = 4},/obj/machinery/atmospherics/pipe/simple/general/visible{dir = 2},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) -"cki" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{dir = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) -"ckj" = (/obj/machinery/atmospherics/pipe/manifold/general/visible{dir = 4; initialize_directions = 11},/obj/machinery/meter,/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) +"ckh" = (/obj/machinery/atmospherics/components/binary/pump{dir = 8; name = "Mix to MiniSat"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) +"cki" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) +"ckj" = (/obj/item/weapon/cigbutt,/obj/machinery/atmospherics/pipe/simple/general/visible{dir = 10},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) "ckk" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/components/binary/valve{dir = 4; name = "Incinerator to Space"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) "ckl" = (/obj/machinery/portable_atmospherics/canister,/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/plating,/area/maintenance/asmaint) "ckm" = (/obj/machinery/door/airlock/maintenance{name = "Biohazard Disposals"; req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/maintenance/asmaint) @@ -5981,12 +5981,12 @@ "cla" = (/obj/machinery/air_sensor{frequency = 1443; id_tag = "air_sensor"; output = 7},/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/atmos) "clb" = (/obj/machinery/atmospherics/components/unary/outlet_injector/on{dir = 1; frequency = 1443; id = "air_in"},/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/atmos) "clc" = (/obj/machinery/atmospherics/components/unary/vent_pump/high_volume{dir = 1; external_pressure_bound = 0; frequency = 1443; icon_state = "vent_map"; id_tag = "air_out"; internal_pressure_bound = 2000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/atmos) -"cld" = (/obj/structure/reagent_dispensers/fueltank,/obj/item/weapon/storage/toolbox/emergency,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) -"cle" = (/obj/machinery/computer/turbine_computer{id = "incineratorturbine"},/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) -"clf" = (/obj/structure/reagent_dispensers/watertank,/obj/item/weapon/extinguisher,/obj/machinery/light/small,/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -31},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) -"clg" = (/obj/machinery/button/door{id = "auxincineratorvent"; name = "Auxiliary Vent Control"; pixel_x = 6; pixel_y = -24; req_access_txt = "32"},/obj/machinery/button/door{id = "turbinevent"; name = "Turbine Vent Control"; pixel_x = -6; pixel_y = -24; req_access_txt = "32"},/obj/machinery/atmospherics/pipe/simple/general/visible,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) -"clh" = (/obj/machinery/computer/security/telescreen{desc = "Used for watching the turbine vent."; dir = 1; name = "turbine vent monitor"; network = list("Turbine"); pixel_x = 0; pixel_y = -29},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) -"cli" = (/obj/machinery/atmospherics/pipe/simple/general/visible,/obj/machinery/doorButtons/airlock_controller{idExterior = "incinerator_airlock_exterior"; idSelf = "incinerator_access_control"; idInterior = "incinerator_airlock_interior"; name = "Incinerator Access Console"; pixel_x = 6; pixel_y = -26; req_access_txt = "12"},/obj/machinery/button/ignition{id = "Incinerator"; pixel_x = -6; pixel_y = -24},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) +"cld" = (/obj/effect/landmark{name = "blobstart"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/components/binary/pump{dir = 4; name = "Mix to Incinerator"; on = 0},/mob/living/simple_animal/mouse,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) +"cle" = (/obj/machinery/atmospherics/pipe/simple/general/visible{dir = 2},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) +"clf" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/atmospherics/pipe/simple/general/visible,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) +"clg" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/turf/simulated/floor/plating,/area/maintenance/incinerator) +"clh" = (/obj/machinery/light/small,/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -31},/obj/machinery/computer/turbine_computer{id = "incineratorturbine"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) +"cli" = (/obj/machinery/button/door{id = "auxincineratorvent"; name = "Auxiliary Vent Control"; pixel_x = 6; pixel_y = -24; req_access_txt = "32"},/obj/machinery/button/door{id = "turbinevent"; name = "Turbine Vent Control"; pixel_x = -6; pixel_y = -24; req_access_txt = "32"},/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{dir = 4},/obj/machinery/atmospherics/pipe/simple/general/visible,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) "clj" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) "clk" = (/obj/machinery/atmospherics/components/unary/portables_connector/visible{dir = 4},/turf/simulated/floor/plating,/area/maintenance/asmaint) "cll" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/components/binary/pump{dir = 4},/turf/simulated/floor/plating,/area/maintenance/asmaint) @@ -6358,20 +6358,20 @@ "csn" = (/obj/structure/transit_tube,/turf/space,/area/space) "cso" = (/obj/structure/transit_tube,/obj/structure/lattice,/turf/space,/area/space) "csp" = (/obj/structure/transit_tube{icon_state = "E-W-Pass"},/turf/space,/area/space) -"csq" = (/obj/structure/transit_tube{icon_state = "W-SE"},/turf/space,/area/space) -"csr" = (/obj/structure/transit_tube{icon_state = "D-SW"},/obj/structure/lattice,/turf/space,/area/space) +"csq" = (/obj/machinery/computer/security/telescreen{desc = "Used for watching the turbine vent."; dir = 1; name = "turbine vent monitor"; network = list("Turbine"); pixel_x = 0; pixel_y = -29},/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{dir = 4},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) +"csr" = (/obj/machinery/doorButtons/airlock_controller{idExterior = "incinerator_airlock_exterior"; idSelf = "incinerator_access_control"; idInterior = "incinerator_airlock_interior"; name = "Incinerator Access Console"; pixel_x = 6; pixel_y = -26; req_access_txt = "12"},/obj/machinery/button/ignition{id = "Incinerator"; pixel_x = -6; pixel_y = -24},/obj/machinery/atmospherics/pipe/manifold/general/visible{dir = 4; initialize_directions = 11},/obj/machinery/meter,/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator) "css" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/engine/engineering) "cst" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/engine/engineering) "csu" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/engine/engineering) "csv" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/engine/engineering) -"csw" = (/obj/structure/transit_tube{icon_state = "NW-SE"},/obj/structure/lattice,/turf/space,/area/space) +"csw" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/yellow/visible,/turf/space,/area/space) "csx" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/engine/engineering) "csy" = (/obj/structure/disposaloutlet,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plating/airless,/area/space/nearstation) "csz" = (/obj/effect/landmark{name = "carpspawn"},/turf/space,/area/space/nearstation) "csA" = (/obj/machinery/field/generator{anchored = 1; state = 2},/turf/simulated/floor/plating/airless,/area/space/nearstation) "csB" = (/obj/item/weapon/wirecutters,/obj/structure/lattice,/turf/space,/area/space/nearstation) "csC" = (/turf/simulated/floor/plating/airless{dir = 1; icon_state = "warnplate"},/area/space/nearstation) -"csD" = (/turf/simulated/wall/r_wall,/area/aisat) +"csD" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/turret_protected/aisat_interior) "csE" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/lattice/catwalk,/turf/space,/area/solar/starboard) "csF" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 0; pixel_y = 0},/turf/simulated/wall/r_wall,/area/engine/engineering) "csG" = (/obj/machinery/light{dir = 8},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/engine/engineering) @@ -6380,207 +6380,207 @@ "csJ" = (/obj/item/weapon/crowbar,/turf/space,/area/space/nearstation) "csK" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/engine/engineering) "csL" = (/obj/structure/transit_tube{icon_state = "D-NE"},/turf/space,/area/space) -"csM" = (/obj/machinery/teleport/station,/turf/simulated/floor/plating,/area/aisat) -"csN" = (/obj/machinery/computer/teleporter,/turf/simulated/floor/plating,/area/aisat) -"csO" = (/obj/machinery/teleport/hub,/turf/simulated/floor/plating,/area/aisat) +"csM" = (/obj/structure/transit_tube,/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/yellow/visible,/turf/space,/area/space) +"csN" = (/obj/structure/transit_tube,/turf/simulated/floor/plating,/area/turret_protected/aisat_interior) +"csO" = (/obj/structure/window/reinforced/fulltile,/obj/structure/transit_tube,/turf/simulated/floor/plating,/area/turret_protected/aisat_interior) "csP" = (/obj/machinery/power/grounding_rod,/turf/simulated/floor/plating/airless,/area/space/nearstation) "csQ" = (/obj/item/weapon/wrench,/turf/simulated/floor/plating/airless,/area/space/nearstation) "csR" = (/obj/machinery/the_singularitygen,/turf/simulated/floor/plating/airless{dir = 8; icon_state = "warnplate"},/area/space/nearstation) "csS" = (/obj/item/weapon/weldingtool,/turf/space,/area/space/nearstation) -"csT" = (/obj/structure/transit_tube{icon_state = "NW-SE"},/turf/space,/area/space) -"csU" = (/obj/structure/transit_tube{icon_state = "D-NE"},/obj/structure/lattice,/turf/space,/area/space) -"csV" = (/obj/machinery/bluespace_beacon,/turf/simulated/floor/plasteel{icon_state = "warndark"; dir = 1},/area/aisat) -"csW" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel{icon_state = "warndark"; dir = 1},/area/aisat) -"csX" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel{icon_state = "warndark"; dir = 1},/area/aisat) +"csT" = (/obj/structure/transit_tube{dir = 8; icon_state = "Block"},/turf/simulated/floor/plating,/area/turret_protected/aisat_interior) +"csU" = (/obj/structure/transit_tube/station{reverse_launch = 1},/turf/simulated/floor/plating,/area/turret_protected/aisat_interior) +"csV" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/turret_protected/aisat_interior) +"csW" = (/obj/machinery/atmospherics/components/unary/vent_pump{on = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/turret_protected/aisat_interior) +"csX" = (/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/simulated/floor/plating,/area/turret_protected/aisat_interior) "csY" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable,/obj/structure/lattice/catwalk,/turf/space,/area/solar/starboard) "csZ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/lattice/catwalk,/turf/space,/area/solar/starboard) -"cta" = (/obj/structure/transit_tube{icon_state = "S-NW"},/obj/structure/lattice,/turf/space,/area/space) -"ctb" = (/turf/simulated/floor/plasteel{icon_state = "dark"},/area/aisat) -"ctc" = (/obj/machinery/camera{c_tag = "MiniSat Teleporter"; dir = 1; network = list("MiniSat"); pixel_x = 0; pixel_y = 0},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_x = -28; pixel_y = 0},/obj/machinery/atmospherics/components/unary/vent_pump{on = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/aisat) -"ctd" = (/obj/machinery/button/door{id = "teledoor"; name = "AI Satellite Teleport Shutters Control"; pixel_x = 25; pixel_y = 0; req_access_txt = "17;65"},/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 2; on = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/aisat) +"cta" = (/obj/machinery/door/airlock/external{name = "MiniSat External Access"; req_access = null; req_access_txt = "65;13"},/turf/simulated/floor/plating,/area/turret_protected/aisat_interior) +"ctb" = (/turf/simulated/floor/plating,/area/turret_protected/aisat_interior) +"ctc" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/turret_protected/aisat_interior) +"ctd" = (/obj/structure/lattice/catwalk,/obj/machinery/atmospherics/pipe/simple/yellow/visible,/turf/space,/area/space) "cte" = (/obj/item/device/radio/off,/turf/simulated/floor/plating/airless,/area/engine/engineering) "ctf" = (/turf/simulated/floor/plating/airless{dir = 2; icon_state = "warnplate"},/area/space/nearstation) -"ctg" = (/turf/simulated/wall,/area/aisat) -"cth" = (/obj/structure/transit_tube{icon_state = "N-S"},/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/aisat) -"cti" = (/obj/machinery/door/airlock/hatch{name = "Teleporter Room"; req_access_txt = "17;65"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/aisat) -"ctj" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall/r_wall,/area/aisat) -"ctk" = (/obj/machinery/door/poddoor/shutters{id = "teledoor"; name = "AI Satellite Teleport Access"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/aisat) +"ctg" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plating,/area/turret_protected/aisat_interior) +"cth" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -29},/obj/machinery/light/small,/turf/simulated/floor/plating,/area/turret_protected/aisat_interior) +"cti" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/structure/sign/securearea{pixel_y = -32},/turf/simulated/floor/plating,/area/turret_protected/aisat_interior) +"ctj" = (/obj/machinery/camera{c_tag = "MiniSat Pod Access"; dir = 1; network = list("MiniSat"); pixel_x = 0; pixel_y = 0; start_active = 1},/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 2; on = 1},/obj/machinery/light/small,/turf/simulated/floor/plating,/area/turret_protected/aisat_interior) +"ctk" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 8},/turf/simulated/wall,/area/turret_protected/aisat_interior) "ctl" = (/obj/structure/grille,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating/airless,/area/engine/engineering) "ctm" = (/turf/simulated/floor/plating/airless{dir = 10; icon_state = "warnplate"},/area/space/nearstation) "ctn" = (/obj/structure/grille,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating/airless,/area/engine/engineering) -"cto" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/aisat) -"ctp" = (/obj/structure/transit_tube{icon_state = "N-S"},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/aisat) -"ctq" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/aisat) -"ctr" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 25},/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 8},/turf/simulated/floor/plasteel{icon_state = "darkbluecorners"; dir = 8},/area/aisat) -"cts" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/aisat) -"ctt" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "darkbluecorners"},/area/aisat) -"ctu" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 8; on = 1},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/aisat) +"cto" = (/obj/machinery/door/airlock/hatch{name = "MiniSat Foyer"; req_one_access_txt = "65"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/aisat_interior) +"ctp" = (/obj/machinery/atmospherics/components/unary/outlet_injector/on{dir = 8},/turf/simulated/floor/plating/airless,/area/turret_protected/aisat_interior) +"ctq" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall,/area/turret_protected/aisat_interior) +"ctr" = (/obj/structure/table,/obj/machinery/light/small{dir = 1},/obj/item/weapon/folder{pixel_x = 3},/obj/item/weapon/phone{pixel_x = -3; pixel_y = 3},/obj/item/weapon/pen,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/turret_protected/aisat_interior) +"cts" = (/obj/structure/rack{dir = 1},/obj/machinery/light/small{dir = 1},/obj/machinery/light_switch{pixel_y = 28},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/item/device/radio/off{pixel_y = 4},/obj/item/weapon/screwdriver{pixel_y = 10},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/turret_protected/aisat_interior) +"ctt" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/aisat_interior) +"ctu" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/turret_protected/aisat_interior) "ctv" = (/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/engine/engineering) -"ctw" = (/obj/structure/transit_tube/station{dir = 4; icon_state = "closed"; reverse_launch = 1},/turf/simulated/floor/plating,/area/aisat) -"ctx" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "darkbluecorners"; dir = 8},/area/aisat) -"cty" = (/obj/machinery/door/airlock/external{name = "MiniSat External Access"; req_access = null; req_access_txt = "65;13"},/turf/simulated/floor/plating,/area/aisat) -"ctz" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "darkbluecorners"},/area/aisat) -"ctA" = (/turf/simulated/floor/plating,/area/aisat) +"ctw" = (/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/computer/station_alert,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/turret_protected/aisat_interior) +"ctx" = (/obj/machinery/atmospherics/pipe/manifold4w/scrubbers,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/turret_protected/aisat_interior) +"cty" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/turret_protected/aisat_interior) +"ctz" = (/obj/machinery/door/poddoor/shutters{id = "teledoor"; name = "MiniSat Teleport Access"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/aisat_interior) +"ctA" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/aisat_interior) "ctB" = (/obj/structure/cable,/obj/machinery/power/tracker,/turf/simulated/floor/plasteel/airless{icon_state = "solarpanel"},/area/solar/starboard) "ctC" = (/obj/machinery/camera/emp_proof{c_tag = "Singularity West"; dir = 1; network = list("Singularity")},/turf/simulated/floor/plating/airless,/area/engine/engineering) "ctD" = (/obj/machinery/camera/emp_proof{c_tag = "Singularity East"; dir = 1; network = list("Singularity")},/turf/simulated/floor/plating/airless,/area/engine/engineering) -"ctE" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/aisat) -"ctF" = (/obj/structure/transit_tube{dir = 1; icon_state = "Block"},/turf/simulated/floor/plating,/area/aisat) -"ctG" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/aisat) -"ctH" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "darkbluecorners"; dir = 8},/area/aisat) -"ctI" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/aisat) -"ctJ" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 8},/turf/simulated/floor/plasteel{icon_state = "darkbluecorners"},/area/aisat) -"ctK" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/obj/structure/closet/emcloset,/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 32},/turf/simulated/floor/plating,/area/aisat) -"ctL" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/aisat) -"ctM" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/camera{c_tag = "MiniSat Entrance"; dir = 4; network = list("MiniSat"); pixel_x = 0; pixel_y = 0},/obj/machinery/power/apc{dir = 8; name = "MiniSat External Power APC"; pixel_x = -27; pixel_y = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel{icon_state = "darkbluecorners"; dir = 8},/area/aisat) -"ctN" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel{icon_state = "darkbluecorners"},/area/aisat) -"ctO" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/aisat) -"ctP" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/aisat) -"ctQ" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "darkbluecorners"},/area/aisat) +"ctE" = (/obj/machinery/teleport/hub,/turf/simulated/floor/plating,/area/turret_protected/aisat_interior) +"ctF" = (/obj/machinery/button/door{id = "teledoor"; name = "MiniSat Teleport Shutters Control"; pixel_x = 0; pixel_y = 25; req_access_txt = "17;65"},/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "warndark"; dir = 4},/area/turret_protected/aisat_interior) +"ctG" = (/obj/structure/bed/chair/office/dark{dir = 8},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/turret_protected/aisat_interior) +"ctH" = (/obj/machinery/computer/security/telescreen/entertainment{pixel_x = -31},/obj/machinery/computer/monitor,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/turret_protected/aisat_interior) +"ctI" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/turret_protected/aisat_interior) +"ctJ" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/effect/landmark/start{name = "Cyborg"},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/turret_protected/aisat_interior) +"ctK" = (/obj/machinery/door/airlock/hatch{name = "MiniSat Teleporter"; req_access_txt = "17;65"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/aisat_interior) +"ctL" = (/obj/machinery/teleport/station,/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/turret_protected/aisat_interior) +"ctM" = (/obj/machinery/bluespace_beacon,/turf/simulated/floor/plasteel{icon_state = "warndark"; dir = 4},/area/turret_protected/aisat_interior) +"ctN" = (/obj/machinery/atmospherics/pipe/simple/yellow/visible{icon_state = "intact"; dir = 10},/obj/structure/lattice,/turf/space,/area/space) +"ctO" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/yellow/visible{icon_state = "intact"; dir = 5},/turf/space,/area/space) +"ctP" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/turret_protected/aisat_interior) +"ctQ" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = 0; pixel_y = 4},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/turret_protected/aisat_interior) "ctR" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 0; pixel_y = 0},/turf/simulated/wall,/area/engine/engineering) -"ctS" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/aisat) -"ctT" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "darkblue"},/area/aisat) -"ctU" = (/obj/machinery/computer/security/telescreen{dir = 1; name = "MiniSat Monitor"; network = list("MiniSat"); pixel_x = 0; pixel_y = -30},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "darkblue"},/area/aisat) -"ctV" = (/obj/machinery/turretid{control_area = "AI Satellite Antechamber"; enabled = 1; icon_state = "control_standby"; name = "Antechamber Turret Control"; pixel_x = 0; pixel_y = -24; req_access = list(65)},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "darkblue"},/area/aisat) -"ctW" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/aisat) -"ctX" = (/obj/structure/window/reinforced{dir = 4},/turf/space,/area/space) -"ctY" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/wall,/area/aisat) -"ctZ" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/light/small{dir = 4},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 32},/turf/simulated/floor/plating,/area/aisat) +"ctS" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/turret_protected/aisat_interior) +"ctT" = (/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/turret_protected/aisat_interior) +"ctU" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall,/area/turret_protected/aisat_interior) +"ctV" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; name = "MiniSat Foyer APC"; pixel_x = 27; pixel_y = 0},/obj/structure/bed/chair,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/aisat_interior) +"ctW" = (/obj/machinery/computer/teleporter,/turf/simulated/floor/plating,/area/turret_protected/aisat_interior) +"ctX" = (/obj/machinery/camera{c_tag = "MiniSat Teleporter"; dir = 1; network = list("MiniSat"); pixel_x = 0; pixel_y = 0; start_active = 1},/obj/machinery/atmospherics/components/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel{icon_state = "warndark"; dir = 4},/area/turret_protected/aisat_interior) +"ctY" = (/obj/machinery/atmospherics/pipe/simple/yellow/visible,/turf/simulated/wall/r_wall,/area/turret_protected/AIsatextAS{name = "AI Satellite Atmospherics"}) +"ctZ" = (/turf/simulated/wall/r_wall,/area/turret_protected/AIsatextAS{name = "AI Satellite Atmospherics"}) "cua" = (/turf/simulated/wall,/area/turret_protected/aisat_interior) -"cub" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/hatch{name = "MiniSat Antechamber"; req_one_access_txt = "65"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/aisat_interior) -"cuc" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall,/area/turret_protected/aisat_interior) -"cud" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall,/area/turret_protected/aisat_interior) -"cue" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/wall,/area/aisat) -"cuf" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/aisat) -"cug" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/light/small{dir = 8},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plating,/area/aisat) -"cuh" = (/obj/structure/window/reinforced{dir = 8},/turf/space,/area/space) -"cui" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/lattice,/obj/structure/grille,/turf/space,/area/space) -"cuj" = (/obj/structure/lattice,/obj/structure/window/reinforced,/obj/structure/grille,/turf/space,/area/space) -"cuk" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/light/small{dir = 1},/obj/item/device/radio/intercom{broadcasting = 0; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 24},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/aisat_interior) -"cul" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/turret_protected/aisat_interior) -"cum" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/aisat_interior) -"cun" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "darkbluecorners"; dir = 8},/area/turret_protected/aisat_interior) -"cuo" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/aisat_interior) -"cup" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 8},/turf/simulated/floor/plasteel{icon_state = "darkbluecorners"},/area/turret_protected/aisat_interior) -"cuq" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/turret_protected/aisat_interior) -"cur" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/lattice,/obj/structure/grille,/turf/space,/area/space) -"cus" = (/obj/structure/lattice,/obj/structure/grille,/obj/structure/window/reinforced,/turf/space,/area/space) +"cub" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -29},/obj/machinery/light/small,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/aisat_interior) +"cuc" = (/obj/structure/rack{dir = 1},/obj/machinery/status_display{pixel_y = -32},/obj/item/weapon/storage/box/donkpockets,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/turret_protected/aisat_interior) +"cud" = (/obj/machinery/turretid{control_area = null; enabled = 1; icon_state = "control_standby"; name = "Antechamber Turret Control"; pixel_x = 0; pixel_y = -24; req_access = list(65)},/obj/machinery/light/small,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/camera/motion{c_tag = "MiniSat Foyer"; dir = 1; network = list("MiniSat")},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/aisat_interior) +"cue" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/aisat_interior) +"cuf" = (/turf/simulated/wall/r_wall,/area/turret_protected/AIsatextFP{name = "AI Satellite Service"}) +"cug" = (/obj/machinery/ai_status_display{pixel_y = -32},/obj/structure/table,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/turret_protected/aisat_interior) +"cuh" = (/obj/machinery/atmospherics/pipe/simple/yellow/visible,/obj/structure/rack,/obj/item/weapon/wrench,/obj/item/weapon/crowbar/red,/obj/item/clothing/head/welding,/turf/simulated/floor/plating,/area/turret_protected/AIsatextAS{name = "AI Satellite Atmospherics"}) +"cui" = (/obj/machinery/atmospherics/components/unary/tank/air,/turf/simulated/floor/plating,/area/turret_protected/AIsatextAS{name = "AI Satellite Atmospherics"}) +"cuj" = (/turf/simulated/wall/r_wall,/area/turret_protected/aisat_interior) +"cuk" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall/r_wall,/area/turret_protected/aisat_interior) +"cul" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/hatch{name = "MiniSat Antechamber"; req_one_access_txt = "65"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/aisat_interior) +"cum" = (/obj/machinery/recharge_station,/turf/simulated/floor/plating,/area/turret_protected/AIsatextFP{name = "AI Satellite Service"}) +"cun" = (/obj/machinery/atmospherics/components/binary/pump{dir = 2; name = "Mix to MiniSat"},/turf/simulated/floor/plating{icon_plating = "warnplate"; icon_state = "warnplate"},/area/turret_protected/AIsatextAS{name = "AI Satellite Atmospherics"}) +"cuo" = (/obj/machinery/portable_atmospherics/canister/air,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/plating{tag = "icon-warnplatecorner"; icon_state = "warnplatecorner"; dir = 2},/area/turret_protected/AIsatextAS{name = "AI Satellite Atmospherics"}) +"cup" = (/obj/structure/showcase{density = 0; desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; dir = 8; icon = 'icons/mob/robots.dmi'; icon_state = "robot_old"; name = "Cyborg Statue"; pixel_x = 9; pixel_y = 2},/obj/structure/extinguisher_cabinet{pixel_x = -5; pixel_y = 30},/turf/simulated/floor/plating{icon_plating = "warnplate"; icon_state = "warnplate"},/area/turret_protected/AIsatextAS{name = "AI Satellite Atmospherics"}) +"cuq" = (/obj/machinery/atmospherics/components/binary/pump{dir = 0; name = "Air Out"; on = 0},/turf/simulated/floor/plating{icon_plating = "warnplate"; icon_state = "warnplate"},/area/turret_protected/AIsatextAS{name = "AI Satellite Atmospherics"}) +"cur" = (/obj/structure/showcase{density = 0; desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; dir = 4; icon = 'icons/mob/robots.dmi'; icon_state = "robot_old"; name = "Cyborg Statue"; pixel_x = -9; pixel_y = 2},/turf/simulated/floor/plasteel{dir = 1; icon_state = "darkbluecorners"},/area/turret_protected/aisat_interior) +"cus" = (/obj/structure/showcase{density = 0; desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; dir = 8; icon = 'icons/mob/robots.dmi'; icon_state = "robot_old"; name = "Cyborg Statue"; pixel_x = 9; pixel_y = 2},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/components/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel{icon_state = "darkbluecorners"; dir = 4},/area/turret_protected/aisat_interior) "cut" = (/obj/docking_port/stationary{dheight = 9; dir = 2; dwidth = 5; height = 22; id = "syndicate_sw"; name = "southwest of station"; turf_type = /turf/space; width = 18},/turf/space,/area/space) -"cuu" = (/obj/machinery/door/window{dir = 1; name = "MiniSat Walkway Access"; req_access_txt = "13;65"},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plating,/area/aisat) -"cuv" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/aisat) -"cuw" = (/obj/structure/window/reinforced,/obj/machinery/door/window{base_state = "right"; dir = 1; icon_state = "right"; name = "MiniSat Walkway Access"; req_access_txt = "13;65"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/aisat) -"cux" = (/obj/machinery/door/airlock/maintenance_hatch{req_access_txt = "65"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/aisat_interior) +"cuu" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/aisat_interior) +"cuv" = (/obj/structure/showcase{density = 0; desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; dir = 4; icon = 'icons/mob/robots.dmi'; icon_state = "robot_old"; name = "Cyborg Statue"; pixel_x = -9; pixel_y = 2},/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = 30},/turf/simulated/floor/plating{icon_plating = "warnplate"; icon_state = "warnplate"},/area/turret_protected/AIsatextFP{name = "AI Satellite Service"}) +"cuw" = (/turf/simulated/floor/plating{icon_plating = "warnplate"; icon_state = "warnplate"},/area/turret_protected/AIsatextFP{name = "AI Satellite Service"}) +"cux" = (/obj/structure/table,/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/clothing/head/welding,/obj/item/stack/sheet/mineral/plasma{amount = 35; layer = 3.1},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/plating{dir = 1; icon_state = "warnplatecorner"},/area/turret_protected/AIsatextFP{name = "AI Satellite Service"}) "cuy" = (/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/aisat_interior) -"cuz" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/turret_protected/aisat_interior) -"cuA" = (/obj/machinery/hologram/holopad,/obj/effect/landmark/start{name = "Cyborg"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/aisat_interior) -"cuB" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel{icon_state = "darkbluecorners"; dir = 8},/area/turret_protected/aisat_interior) -"cuC" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 1; on = 1},/turf/simulated/floor/plasteel{icon_state = "darkbluecorners"},/area/turret_protected/aisat_interior) -"cuD" = (/obj/machinery/door/airlock/maintenance_hatch{req_access_txt = "65"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/aisat_interior) -"cuE" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 8},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/turret_protected/aisat_interior) -"cuF" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/aisat) -"cuG" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/window{base_state = "right"; dir = 1; icon_state = "right"; name = "MiniSat Walkway Access"; req_access_txt = "13;65"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor/plating,/area/aisat) -"cuH" = (/obj/structure/window/reinforced,/obj/machinery/door/window{dir = 1; name = "MiniSat Walkway Access"; req_access_txt = "13;65"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/aisat) -"cuI" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/aisat) -"cuJ" = (/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/turret_protected/aisat_interior) -"cuK" = (/mob/living/simple_animal/bot/secbot/pingsky,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/aisat_interior) -"cuL" = (/turf/simulated/floor/plasteel{icon_state = "darkbluecorners"; dir = 8},/area/turret_protected/aisat_interior) -"cuM" = (/turf/simulated/floor/plasteel{icon_state = "darkbluecorners"},/area/turret_protected/aisat_interior) -"cuN" = (/obj/machinery/power/apc{aidisabled = 0; cell_type = 2500; dir = 4; name = "MiniSat Antechamber APC"; pixel_x = 29; pixel_y = 0},/obj/structure/cable,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/turret_protected/aisat_interior) -"cuO" = (/obj/structure/window/reinforced{dir = 1},/turf/space,/area/space) -"cuP" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/aisat) -"cuQ" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/space,/area/space) -"cuR" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/light/small{dir = 4},/obj/machinery/camera{c_tag = "MiniSat Exterior North West"; dir = 8; network = list("MiniSat"); pixel_x = 0; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/aisat) -"cuS" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/lattice,/turf/space,/area/space) -"cuT" = (/obj/machinery/porta_turret{ai = 1; dir = 1},/obj/machinery/light/small,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/aisat_interior) -"cuU" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/mob/living/simple_animal/bot/floorbot{on = 0},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/turret_protected/aisat_interior) -"cuV" = (/turf/simulated/floor/plasteel{icon_state = "darkblue"},/area/turret_protected/aisat_interior) -"cuW" = (/obj/machinery/camera/motion{c_tag = "MiniSat Antechamber"; dir = 1; network = list("MiniSat")},/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1447; listening = 0; name = "Station Intercom (AI Private)"; pixel_y = -29},/turf/simulated/floor/plasteel{icon_state = "darkblue"},/area/turret_protected/aisat_interior) -"cuX" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/mob/living/simple_animal/bot/cleanbot{on = 0},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/turret_protected/aisat_interior) -"cuY" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/light/small{dir = 8},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/camera{c_tag = "MiniSat Exterior North East"; dir = 4; network = list("MiniSat"); pixel_x = 0; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/aisat) -"cuZ" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/lattice,/turf/space,/area/space) +"cuz" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/AIsatextAS{name = "AI Satellite Atmospherics"}) +"cuA" = (/obj/machinery/light/small{dir = 8},/obj/machinery/camera{c_tag = "MiniSat Atmospherics"; dir = 4; network = list("MiniSat"); pixel_x = 0; pixel_y = 0; start_active = 1},/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/space_heater,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/turret_protected/AIsatextAS{name = "AI Satellite Atmospherics"}) +"cuB" = (/obj/machinery/light/small{dir = 4},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_x = 28; pixel_y = 0},/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "darkbluecorners"; dir = 4},/area/turret_protected/AIsatextAS{name = "AI Satellite Atmospherics"}) +"cuC" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/AIsatextAS{name = "AI Satellite Atmospherics"}) +"cuD" = (/obj/machinery/light/small{dir = 8},/obj/machinery/camera{c_tag = "MiniSat Antechamber"; dir = 4; network = list("MiniSat"); pixel_x = 0; pixel_y = 0; start_active = 1},/obj/machinery/turretid{control_area = "AI Satellite Atmospherics"; enabled = 1; icon_state = "control_standby"; name = "Atmospherics Turret Control"; pixel_x = -27; pixel_y = 0; req_access = list(65)},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "darkbluecorners"},/area/turret_protected/aisat_interior) +"cuE" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/turret_protected/aisat_interior) +"cuF" = (/obj/machinery/light/small{dir = 4},/obj/machinery/turretid{control_area = "AI Satellite Service"; enabled = 1; icon_state = "control_standby"; name = "Service Bay Turret Control"; pixel_x = 27; pixel_y = 0; req_access = list(65)},/obj/machinery/atmospherics/pipe/manifold4w/scrubbers,/turf/simulated/floor/plasteel{icon_state = "darkbluecorners"; dir = 4},/area/turret_protected/aisat_interior) +"cuG" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/aisat_interior) +"cuH" = (/obj/machinery/light/small{dir = 8},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_x = -28; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "darkbluecorners"},/area/turret_protected/AIsatextFP{name = "AI Satellite Service"}) +"cuI" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/AIsatextFP{name = "AI Satellite Service"}) +"cuJ" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/AIsatextFP{name = "AI Satellite Service"}) +"cuK" = (/obj/machinery/light/small{dir = 4},/obj/machinery/camera{c_tag = "MiniSat Service Bay"; dir = 8; network = list("MiniSat"); pixel_x = 0; pixel_y = 0; start_active = 1},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/rack,/obj/item/weapon/storage/toolbox/electrical{pixel_x = -3; pixel_y = 3},/obj/item/weapon/storage/toolbox/mechanical,/obj/item/device/multitool,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/turret_protected/AIsatextFP{name = "AI Satellite Service"}) +"cuL" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/AIsatextAS{name = "AI Satellite Atmospherics"}) +"cuM" = (/obj/machinery/power/apc{dir = 8; name = "MiniSat Atmospherics APC"; pixel_x = -27; pixel_y = 0},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/portable_atmospherics/scrubber,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/turret_protected/AIsatextAS{name = "AI Satellite Atmospherics"}) +"cuN" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/AIsatextAS{name = "AI Satellite Atmospherics"}) +"cuO" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/ai_slipper{icon_state = "motion0"; uses = 10},/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/AIsatextAS{name = "AI Satellite Atmospherics"}) +"cuP" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/aisat_interior) +"cuQ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/hatch{name = "MiniSat Atmospherics"; req_one_access_txt = "65"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/aisat_interior) +"cuR" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/aisat_interior) +"cuS" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/ai_slipper{icon_state = "motion0"; uses = 10},/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden,/mob/living/simple_animal/bot/secbot/pingsky,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/aisat_interior) +"cuT" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/AIsatextFP{name = "AI Satellite Service"}) +"cuU" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/hatch{name = "MiniSat Service Bay"; req_one_access_txt = "65"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/aisat_interior) +"cuV" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/AIsatextFP{name = "AI Satellite Service"}) +"cuW" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/ai_slipper{icon_state = "motion0"; uses = 10},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/AIsatextFP{name = "AI Satellite Service"}) +"cuX" = (/obj/machinery/power/apc{dir = 4; name = "MiniSat Service Bay APC"; pixel_x = 27; pixel_y = 0},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/port_gen/pacman,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 8},/area/turret_protected/AIsatextFP{name = "AI Satellite Service"}) +"cuY" = (/obj/machinery/porta_turret{ai = 1; dir = 4},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/turret_protected/AIsatextAS{name = "AI Satellite Atmospherics"}) +"cuZ" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 1; on = 1},/mob/living/simple_animal/bot/floorbot,/turf/simulated/floor/plasteel{icon_state = "darkbluecorners"},/area/turret_protected/AIsatextAS{name = "AI Satellite Atmospherics"}) "cva" = (/turf/simulated/wall/r_wall,/area/turret_protected/ai) "cvb" = (/obj/machinery/ai_status_display,/turf/simulated/wall/r_wall,/area/turret_protected/ai) -"cvc" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall/r_wall,/area/turret_protected/ai) -"cvd" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/highsecurity{icon_state = "door_locked"; locked = 1; name = "AI Chamber"; req_access_txt = "16"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) -"cve" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/turret_protected/ai) +"cvc" = (/obj/structure/sign/securearea{pixel_x = -32; pixel_y = 0},/obj/machinery/porta_turret{ai = 1; dir = 4},/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1447; listening = 0; name = "Station Intercom (AI Private)"; pixel_y = -29},/turf/simulated/floor/plasteel{icon_state = "darkbluecorners"; dir = 8},/area/turret_protected/aisat_interior) +"cvd" = (/obj/machinery/porta_turret{ai = 1; dir = 4},/obj/structure/sign/securearea{pixel_x = 32; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "darkbluecorners"},/area/turret_protected/aisat_interior) +"cve" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/turretid{control_area = "AI Satellite Hallway"; enabled = 1; icon_state = "control_standby"; name = "Chamber Hallway Turret Control"; pixel_x = 32; pixel_y = -24; req_access = list(65)},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/aisat_interior) "cvf" = (/obj/machinery/status_display,/turf/simulated/wall/r_wall,/area/turret_protected/ai) -"cvg" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall/r_wall,/area/turret_protected/ai) -"cvh" = (/obj/structure/bed/chair/office/dark{dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) -"cvi" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen{pixel_x = 4; pixel_y = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) -"cvj" = (/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/turret_protected/ai) -"cvk" = (/obj/machinery/camera{c_tag = "AI Chamber North"; dir = 2; network = list("MiniSat","RD"); pixel_x = 0; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/turret_protected/ai) +"cvg" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 1; on = 1},/mob/living/simple_animal/bot/cleanbot,/turf/simulated/floor/plasteel{icon_state = "darkbluecorners"; dir = 8},/area/turret_protected/AIsatextFP{name = "AI Satellite Service"}) +"cvh" = (/obj/machinery/porta_turret{ai = 1; dir = 4},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/turret_protected/AIsatextFP{name = "AI Satellite Service"}) +"cvi" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/AIsatextFP{name = "AI Satellite Service"}) +"cvj" = (/turf/simulated/wall,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) +"cvk" = (/turf/simulated/wall/r_wall,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) "cvl" = (/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) -"cvm" = (/obj/machinery/light_switch{pixel_y = 28},/turf/simulated/floor/plasteel{icon_state = "vault"; dir = 8},/area/turret_protected/ai) -"cvn" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/table/reinforced,/obj/item/weapon/folder/white,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) -"cvo" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) +"cvm" = (/obj/machinery/door/airlock/maintenance_hatch{name = "MiniSat Maintenance"; req_access_txt = "65"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) +"cvn" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall/r_wall,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) +"cvo" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/hatch{name = "MiniSat Chamber Hallway"; req_one_access_txt = "65"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) "cvp" = (/turf/simulated/floor/bluegrid,/area/turret_protected/ai) -"cvq" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 1; on = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) +"cvq" = (/obj/machinery/door/airlock/maintenance_hatch{name = "MiniSat Maintenance"; req_access_txt = "65"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) "cvr" = (/obj/machinery/porta_turret{ai = 1; dir = 4},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) -"cvs" = (/obj/machinery/flasher{id = "AI"; pixel_x = 0; pixel_y = -21},/obj/machinery/ai_slipper{icon_state = "motion0"; uses = 10},/obj/machinery/light,/turf/simulated/floor/bluegrid,/area/turret_protected/ai) -"cvt" = (/obj/machinery/porta_turret{ai = 1; dir = 8},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) -"cvu" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/aisat) +"cvs" = (/obj/machinery/portable_atmospherics/scrubber,/turf/simulated/floor/plating,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) +"cvt" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) +"cvu" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) "cvv" = (/turf/simulated/wall,/area/turret_protected/ai) -"cvw" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/light/small{dir = 8},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/aisat) +"cvw" = (/turf/simulated/floor/bluegrid,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) "cvx" = (/obj/effect/landmark{name = "tripai"},/obj/item/device/radio/intercom{anyai = 1; freerange = 1; listening = 0; name = "Custom Channel"; pixel_x = 0; pixel_y = 28},/obj/item/device/radio/intercom{broadcasting = 0; freerange = 1; listening = 1; name = "Common Channel"; pixel_x = -27; pixel_y = 5},/obj/item/device/radio/intercom{anyai = 1; broadcasting = 0; freerange = 1; frequency = 1447; name = "Private Channel"; pixel_x = 0; pixel_y = -25},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) -"cvy" = (/obj/machinery/ai_slipper{icon_state = "motion0"; uses = 10},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) -"cvz" = (/obj/item/device/radio/intercom{broadcasting = 0; freerange = 1; listening = 1; name = "Common Channel"; pixel_x = -27; pixel_y = 5},/obj/item/device/radio/intercom{anyai = 1; freerange = 1; listening = 0; name = "Custom Channel"; pixel_x = 0; pixel_y = 27},/obj/item/device/radio/intercom{anyai = 1; broadcasting = 0; freerange = 1; frequency = 1447; name = "Private Channel"; pixel_x = 27; pixel_y = 5},/obj/effect/landmark/start{name = "AI"},/obj/machinery/requests_console{department = "AI"; departmentType = 5; pixel_x = 32; pixel_y = 32},/obj/machinery/newscaster/security_unit{pixel_x = -32; pixel_y = 32},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"cvy" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) +"cvz" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) "cvA" = (/obj/effect/landmark{name = "tripai"},/obj/item/device/radio/intercom{anyai = 1; freerange = 1; listening = 0; name = "Custom Channel"; pixel_x = 0; pixel_y = 28},/obj/item/device/radio/intercom{broadcasting = 0; freerange = 1; listening = 1; name = "Common Channel"; pixel_x = 27; pixel_y = 5},/obj/item/device/radio/intercom{anyai = 1; broadcasting = 0; freerange = 1; frequency = 1447; name = "Private Channel"; pixel_x = 0; pixel_y = -25},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) -"cvB" = (/obj/machinery/door/window{name = "AI Core Door"; req_access_txt = "16"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) -"cvC" = (/obj/machinery/power/apc{cell_type = 5000; dir = 1; name = "AI Chamber APC"; pixel_y = 24},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) -"cvD" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/turretid{name = "AI Chamber turret control"; pixel_x = 5; pixel_y = 24},/obj/machinery/flasher{id = "AI"; pixel_x = -6; pixel_y = 24},/obj/machinery/camera/motion{c_tag = "AI Chamber South"; dir = 2; network = list("RD","MiniSat")},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) -"cvE" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) -"cvF" = (/obj/machinery/light,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) -"cvG" = (/obj/machinery/hologram/holopad,/obj/machinery/power/terminal,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) -"cvH" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) -"cvI" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) -"cvJ" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/light/small{dir = 4},/obj/machinery/camera{c_tag = "MiniSat Exterior South West"; dir = 8; network = list("MiniSat"); pixel_x = 0; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/aisat) -"cvK" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) -"cvL" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/wall/r_wall,/area/turret_protected/ai) -"cvM" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/wall/r_wall,/area/turret_protected/ai) -"cvN" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/light/small{dir = 8},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/camera{c_tag = "MiniSat Exterior South East"; dir = 4; network = list("MiniSat"); pixel_x = 0; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/aisat) +"cvB" = (/obj/structure/rack,/obj/item/weapon/crowbar/red,/obj/item/weapon/wrench,/turf/simulated/floor/plating,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) +"cvC" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) +"cvD" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) +"cvE" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) +"cvF" = (/obj/machinery/porta_turret{ai = 1; dir = 4},/obj/machinery/camera{c_tag = "MiniSat External NorthWest"; dir = 8; network = null; pixel_x = 0; pixel_y = 0; start_active = 1},/turf/simulated/floor/plating/airless,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) +"cvG" = (/obj/machinery/porta_turret{ai = 1; dir = 4; installation = /obj/item/weapon/gun/energy/gun},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/bluegrid,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) +"cvH" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) +"cvI" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) +"cvJ" = (/obj/machinery/porta_turret{ai = 1; dir = 4; installation = /obj/item/weapon/gun/energy/gun},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/bluegrid,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) +"cvK" = (/obj/machinery/porta_turret{ai = 1; dir = 4},/obj/machinery/camera{c_tag = "MiniSat External NorthEast"; dir = 4; network = null; pixel_x = 0; pixel_y = 0; start_active = 1},/turf/simulated/floor/plating/airless,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) +"cvL" = (/obj/structure/sign/securearea{pixel_x = 32; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) +"cvM" = (/obj/machinery/camera/motion{c_tag = "MiniSat Core Hallway"; dir = 4; network = list("MiniSat")},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/bluegrid,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) +"cvN" = (/obj/structure/sign/securearea{pixel_x = -32; pixel_y = 0},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) "cvO" = (/obj/docking_port/stationary{dheight = 9; dir = 2; dwidth = 5; height = 22; id = "syndicate_se"; name = "southeast of station"; turf_type = /turf/space; width = 18},/turf/space,/area/space) -"cvP" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/wall/r_wall,/area/turret_protected/ai) -"cvQ" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/wall/r_wall,/area/turret_protected/ai) -"cvR" = (/obj/structure/rack,/obj/item/weapon/storage/toolbox/electrical{pixel_x = -3; pixel_y = 3},/obj/item/weapon/storage/toolbox/mechanical,/obj/item/device/multitool,/turf/simulated/floor/plating,/area/ai_monitored/storage/secure) -"cvS" = (/turf/simulated/wall,/area/ai_monitored/storage/secure) -"cvT" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/wall/r_wall,/area/ai_monitored/storage/secure) -"cvU" = (/obj/machinery/atmospherics/components/unary/tank/air,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/ai_monitored/storage/secure) -"cvV" = (/obj/structure/rack,/obj/item/weapon/crowbar/red,/obj/item/weapon/wrench,/obj/item/clothing/head/welding,/turf/simulated/floor/plating,/area/ai_monitored/storage/secure) -"cvW" = (/obj/machinery/recharge_station,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/ai_monitored/storage/secure) -"cvX" = (/obj/structure/window/reinforced,/turf/space,/area/space) -"cvY" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/space,/area/space) -"cvZ" = (/obj/structure/window/reinforced,/obj/structure/lattice,/turf/space,/area/space) -"cwa" = (/obj/machinery/power/apc{dir = 8; name = "MiniSat Maint APC"; pixel_x = -24},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plasteel{icon_state = "warndark"; dir = 1},/area/ai_monitored/storage/secure) -"cwb" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating{icon_state = "warnplate"},/area/ai_monitored/storage/secure) -"cwc" = (/obj/machinery/atmospherics/components/binary/pump{dir = 0; name = "Air Out"; on = 1},/turf/simulated/floor/plasteel{icon_state = "warndark"; dir = 5},/area/ai_monitored/storage/secure) -"cwd" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_x = 28; pixel_y = 0},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel{icon_state = "warndark"; dir = 1},/area/ai_monitored/storage/secure) -"cwe" = (/obj/machinery/power/terminal{dir = 8},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plasteel{icon_state = "warndark"; dir = 9},/area/ai_monitored/storage/secure) -"cwf" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/space,/area/space) -"cwg" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plating,/area/aisat) -"cwh" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/aisat) -"cwi" = (/obj/machinery/atmospherics/pipe/manifold/general/visible{dir = 1},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ai_monitored/storage/secure) -"cwj" = (/obj/machinery/door/airlock/maintenance_hatch{req_access_txt = "65"},/obj/machinery/atmospherics/pipe/simple/general/visible{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ai_monitored/storage/secure) -"cwk" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ai_monitored/storage/secure) -"cwl" = (/obj/machinery/atmospherics/pipe/manifold/general/visible{dir = 4; initialize_directions = 11},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ai_monitored/storage/secure) -"cwm" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ai_monitored/storage/secure) -"cwn" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ai_monitored/storage/secure) -"cwo" = (/obj/machinery/door/airlock/maintenance_hatch{req_access_txt = "65"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ai_monitored/storage/secure) -"cwp" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor/plating,/area/aisat) -"cwq" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/lattice,/turf/space,/area/space) -"cwr" = (/obj/machinery/atmospherics/pipe/simple/general/visible,/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/camera/motion{c_tag = "MiniSat Maintenance"; dir = 4; network = list("MiniSat")},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ai_monitored/storage/secure) -"cws" = (/obj/structure/bed/chair,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ai_monitored/storage/secure) -"cwt" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ai_monitored/storage/secure) -"cwu" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ai_monitored/storage/secure) -"cwv" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ai_monitored/storage/secure) -"cww" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/components/unary/outlet_injector/on{dir = 8},/turf/simulated/floor/plating/airless,/area/space) -"cwx" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall,/area/ai_monitored/storage/secure) +"cvP" = (/obj/machinery/door/airlock/maintenance_hatch{name = "MiniSat Maintenance"; req_access_txt = "65"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) +"cvQ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plating,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) +"cvR" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/plating,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) +"cvS" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/bluegrid,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) +"cvT" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) +"cvU" = (/obj/machinery/door/airlock/maintenance_hatch{name = "MiniSat Maintenance"; req_access_txt = "65"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor/plating,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) +"cvV" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/bluegrid,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) +"cvW" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) +"cvX" = (/turf/simulated/floor/plating,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) +"cvY" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) +"cvZ" = (/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor/bluegrid,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) +"cwa" = (/obj/structure/cable,/obj/machinery/power/apc{dir = 4; name = "MiniSat Chamber Hallway APC"; pixel_x = 27; pixel_y = 0},/turf/simulated/floor/bluegrid,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) +"cwb" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plating,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) +"cwc" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/components/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) +"cwd" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/item/device/radio/intercom{broadcasting = 1; frequency = 1447; listening = 0; name = "Station Intercom (AI Private)"; pixel_x = -28; pixel_y = -29},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) +"cwe" = (/obj/structure/sign/securearea,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall/r_wall,/area/turret_protected/ai) +"cwf" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/hatch{name = "MiniSat Chamber Observation"; req_one_access_txt = "65"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) +"cwg" = (/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/obj/structure/bed/chair{dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) +"cwh" = (/obj/machinery/light/small{dir = 1},/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen{pixel_x = 4; pixel_y = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) +"cwi" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 8},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) +"cwj" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) +"cwk" = (/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) +"cwl" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) +"cwm" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/white,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) +"cwn" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) +"cwo" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) +"cwp" = (/obj/structure/bed/chair/office/dark,/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) +"cwq" = (/obj/structure/grille,/turf/simulated/floor/plating,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) +"cwr" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/turret_protected/ai) +"cws" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/turret_protected/ai) +"cwt" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_command{name = "AI Core"; req_access_txt = "65"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) +"cwu" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/ai_slipper{icon_state = "motion0"; uses = 10},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) +"cwv" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/status_display{pixel_x = -32},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"cww" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) +"cwx" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) "cwy" = (/obj/docking_port/stationary{dheight = 9; dir = 2; dwidth = 5; height = 22; id = "syndicate_s"; name = "south of station"; turf_type = /turf/space; width = 18},/turf/space,/area/space) -"cwz" = (/obj/machinery/atmospherics/components/unary/portables_connector/visible{dir = 1; name = "Auxiliary MiniSat Distribution Port"},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ai_monitored/storage/secure) -"cwA" = (/obj/machinery/computer/station_alert,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ai_monitored/storage/secure) -"cwB" = (/obj/structure/table,/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ai_monitored/storage/secure) -"cwC" = (/obj/machinery/power/port_gen/pacman,/obj/structure/cable,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ai_monitored/storage/secure) -"cwD" = (/obj/structure/table,/obj/item/stack/sheet/mineral/plasma{layer = 2.9},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ai_monitored/storage/secure) -"cwE" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/ai_monitored/storage/secure) +"cwz" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) +"cwA" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) +"cwB" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/ai_status_display{pixel_x = 32},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"cwC" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) +"cwD" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/turretid{name = "AI Chamber turret control"; pixel_x = 5; pixel_y = -24},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"cwE" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{cell_type = 5000; dir = 2; name = "AI Chamber APC"; pixel_y = -24},/obj/machinery/flasher{id = "AI"; pixel_x = -11; pixel_y = -24},/obj/machinery/camera/motion{c_tag = "MiniSat AI Chamber North"; dir = 1; network = list("MiniSat")},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "cwF" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/floor/plasteel/shuttle,/area/shuttle/escape) "cwG" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 3},/obj/item/weapon/crowbar,/turf/simulated/floor/plasteel/shuttle{icon_state = "shuttlefloor3"},/area/shuttle/escape) "cwH" = (/turf/simulated/floor/plasteel/shuttle{icon_state = "shuttlefloor3"},/turf/simulated/wall/shuttle/interior{icon_state = "swall_f5"},/area/shuttle/escape) @@ -6801,6 +6801,22 @@ "cAO" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/mob/living/simple_animal/cockroach,/turf/simulated/floor/plating,/area/engine/engineering) "cAP" = (/mob/living/simple_animal/cockroach,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/engine/engineering) "cAQ" = (/obj/structure/bed/chair,/mob/living/simple_animal/cockroach,/turf/simulated/floor/plating,/area/maintenance/aft) +"cAR" = (/obj/machinery/door/window{dir = 1; name = "AI Core Door"; req_access_txt = "16"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"cAS" = (/obj/effect/landmark/start{name = "AI"},/obj/item/device/radio/intercom{broadcasting = 0; freerange = 1; listening = 1; name = "Common Channel"; pixel_x = -27; pixel_y = -9},/obj/item/device/radio/intercom{anyai = 1; freerange = 1; listening = 0; name = "Custom Channel"; pixel_x = 0; pixel_y = -31},/obj/item/device/radio/intercom{anyai = 1; broadcasting = 0; freerange = 1; frequency = 1447; name = "Private Channel"; pixel_x = 27; pixel_y = -9},/obj/machinery/newscaster/security_unit{pixel_x = -28; pixel_y = -28},/obj/machinery/requests_console{department = "AI"; departmentType = 5; pixel_x = 28; pixel_y = -28},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"cAT" = (/obj/machinery/ai_slipper{icon_state = "motion0"; uses = 10},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) +"cAU" = (/obj/machinery/porta_turret{ai = 1; dir = 4},/obj/machinery/camera{c_tag = "MiniSat External SouthWest"; dir = 8; network = null; pixel_x = 0; pixel_y = 0; start_active = 1},/turf/simulated/floor/plating/airless,/area/turret_protected/ai) +"cAV" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/showcase{density = 0; desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; dir = 8; icon = 'icons/mob/robots.dmi'; icon_state = "robot_old"; name = "Cyborg Statue"; pixel_x = 9; pixel_y = 2},/obj/machinery/atmospherics/components/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) +"cAW" = (/obj/structure/showcase{density = 0; desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; dir = 4; icon = 'icons/mob/robots.dmi'; icon_state = "robot_old"; name = "Cyborg Statue"; pixel_x = -9; pixel_y = 2},/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 1; on = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) +"cAX" = (/obj/machinery/porta_turret{ai = 1; dir = 4},/obj/machinery/camera{c_tag = "MiniSat External SouthEast"; dir = 4; network = null; pixel_x = 0; pixel_y = 0; start_active = 1},/turf/simulated/floor/plating/airless,/area/turret_protected/ai) +"cAY" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/wall,/area/turret_protected/ai) +"cAZ" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) +"cBa" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"cBb" = (/obj/machinery/camera/motion{c_tag = "MiniSat AI Chamber South"; dir = 2; network = list("MiniSat")},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"cBc" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/machinery/ai_slipper{icon_state = "motion0"; uses = 10},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) +"cBd" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) +"cBe" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) +"cBf" = (/obj/machinery/porta_turret{ai = 1; dir = 4},/turf/simulated/floor/plating/airless,/area/turret_protected/ai) +"cBg" = (/obj/machinery/camera{c_tag = "MiniSat External South"; dir = 2; network = null; pixel_x = 0; pixel_y = 0; start_active = 1},/turf/space,/area/space) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -6969,71 +6985,71 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoVapQbVwbVwbVwbVwbVwbXvbHEbXvbHEbXwbXxcAMbXybHEbCqbHEbLvaoVaoVapQaoVaoVapQaoVbESbVHbVIbWBbXAbXzbXCbXBbXDbWBbXFbXEbODbOCbOMbVJbVMbCqbSAbLZbQgbXJbXKbLKbXMbXLbWQbOObXPbXObWQbXQbSIbXRbMKbXSbWabOdbVZbXTbXUbTTbXVbPhbRKbPjbXXbXWbXYbOhbVubzsbWebzsbBRbXZbPvbNcbOPbYabYdbYcbWibYabYebWjbYebPubPwbLTbDbbEmbEmbEmbYgbYfbRZbUfbMibUgbYhbRUbRUbUibDbbQZbYjbYicaZbQZbQZbYkbYmbZdbPsbPbbPLbPFbPMbUpbUpbTqbTrbkybYrbkybYsbkyaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoVaoVaoVaoVaoVapQapQbLvbLvbLvbYubYtbYwbYvbYxbHEbYybHEbLvaoVaoVaoVaoVaoVaoVaoVbESbVHbVIbYzbYBbYAbXCbYCbYzbYzbXFbYDbQbbPQbQdbVJbVMbCqbSAbLZbYIbYHbYHbYJbYLbYKbYNbQebYPbQqbWQbOdbSIbYQbYRbXSbYSbOdbVZbXTbUSbURbYTbQyapQbQAbYVbYUbYWbOhbVubzsbWebzsbHZbHZbPvbNcbNdbYXbYYbNdbYZbNdbNdbNdbNdbNdbNcbLTbDbbJNbJNbJNbJNbVibZabTcbZbbVibJNbJNbJNbJNbDbbTlbZcbTlcbabTlbQZbYkbYmbYlbYobQGbQIbWrbZhbQZbUpbTqbTrbkybtpbtpbtpbZiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaafaafaafbLvbZkbZjbZjbZlbWzbLubCqbLvbLvaoVcceaoVaoVaoVaoVaoVbGpbVHbVIbYzbYzbZnbZpbZobYzbZqbZsbZrbZvbQKbQPbVJbVMbCqbZxbQQbDGbYHbZzbRicewbRjbRmbRkbRSbRobWQbZFbZGbXRbMKbXSbZHbOdbZIbXTbUSbZJbZKbRIbVvbPjbZLbXWbXWbOhbVubPnbWebZMbzsbZNbPvbZObTZbTZbZPbNdbZRbZQbZSbzsbZUbZTbLSbLTbDbbRTbRUbRUbZVbRVbMibRXbRZbZWbZXbEmbEmbEmbDbbZYbTlbTlbTlbTlbQZbZZbZZcaacabbPNbPNbWrbPNbQZbPNbTqbTrbkycadcaccaebZiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaaSaaSaaSaaSaaSaaSaaSaaSabaaaSaaSaaSaaSaaSaaaaaabCqbCqbCqbCqbCqbCqbYybCqbCqbCqbCqapQaoVaoVapQaaHcjnaoVaoVaoVbGpbVHbVIcagcaicahcakcajcamcalcaocanbSdbYFbStbVJcatcasbSRbSwbHPbYHcawbZybThbTgbTjbTibTHbTGcaDbPccaEbMKbMKbMKcaFbOdcaHcaGbUSbURbOdbQyapQbOhbOhbOhbOhbOhbVubPncaJcaIbzscaKcaMcaLbUXcaNcaObzscaQcaPcaRbzscaSbMbcaUcaTbDbbEmbSZbEmcaVbTabMibTcbMibTdcaWbEmbSZbEmbDbcaXbTlcaYcbccbbckacjWckNckMcbdbPNbWrbWrcbebQZbDhcbfcbgbkycbicbhbtpbZiaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaaaaafaaaaafaaaaafaaaacyaaaaafaaaaafaaaaaSaafaafbCqbHEbHEbHEbHEbHEbHEbHEbHEbLubLvaoVaoVaoVaaHcjocmXaaHaaHapQbGpbVHbVIcblbYzbWBbWBbWBbYzcbmcbocbnbXGbTIbUcbVJbCqbCqbUlcbrcbtbYHbYHcbucdtbUmcaAcaAcaAcaAbWQbOdcbAcbzcbCcbBbQtcbDcbFcbEbXUbTTcbGbPhbRKbPjcbIcbHcbHbOhbVubPnbAwcbJbzsbzscbLcbKbzscbMcbNbzsbzscbObzsbzscbNbFrcbQcbPbDbbEmbEmbEmcbScbRbRZcbTbMibUgcbUbRUbRUbUibDbbTlbTlcbVbTlbTlbQZbZZbZZcbWcbXbPNcbZcbYcbYbQZbqgcbfbTrbkybkybkybtpbkyaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaaaccacccccbaaaccacccccbaaaccacccccbaaaaaSaaaaaabLvccdbHEbCqbCqbCqbTzbCqbCqbCqbCqaoVaoVaoVcnBaaHaaHapQaoVaoVbGpbVHbVIbYzccgccfbWBcchbYzbYzbXFccibOCbUybVbbUCbVdbVcbVfbVebVhbVgbVobVmbVqbVpcerbVrbWhbVKccwccvccyccxbRAbRAbRDbTOcczbTUbRFbURccAbQyapQbQAccCccBccDbOhbVubzsbzsbWeccFccEcbLccGbzscbMccIccHccKccJccLccHccNccMbhGccObDbbDbbDbbDbbDbbDbbMiccPcfybDbbDbbDbbDbbDbbDbbQZbQZbQZbQZbQZbQZccRccRccSccTbQZbQZbQZbQZbQZbkyccUbTrbkyccWccVbtpbkyaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaafccaccXccbaaaccaccXccbaaaccaccXccbaafaafaaaaaabLvccYccZbCqbSqbHEbHEcdabQacdbbCqaoVaoVaoVaoVapQaoVaoVaoVaoVbESbVHbVIbWBcddcdcbWBcdecdfbWBbXFcdgbWtbWsbWvbWubWKbWJbXmbXkbXobXnbXqbXpbXIbXHccsbXNcdtbYbccwcdwbOdcbAbTObTPcdycdxcdAcdzbMWcdBcdCbRIbVvbPjcdDcbHcbHbOhbVubzsbAwcdEcdGcdFcdIcdHbzscdJcdLcdKccMcdMccMbFrbHdcdNbhGcdObDbcfrcgicgicglcgkbMiccPcgnbDbaafaafaafaafbkycdQbNBblQcdRcdRbQZcdScdSccSbScbQZcmobtpcAKbtpbDhccUbXubkycdVbtpbtpbkybkybkyaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaaaccaccXccbaafccaccXccbaafccaccXccbaaaaafaafaafbCqbLvbCqbCqbCqcdWcdYcgFcpYbSsbCqaoVaoVaoVaoVapQaoVaoVapQaoVbESbVHbVIbWBceacdZceccebcedbWBcefceecehcegceibVJbYpbYnbYEbYqbYMbYGbZebYObZgbZfbZubZtbZAbZwceycexbOdcbAcezbOdbOdbOdcezcezcezbURceBceAapQbOhbOhbOhbOhbOhbVubzscaKceCceEceDceGceFbzsbzsceIceHceJbLSceLceKbzsbzsbhGcdObDbchochqchqchschrchuchtcjBbDbaafaaaaaaaafbkybtpceMbrGceOceNbQZcePcePceQbScbQZbkybkyceSceRbDhccUbTrbtpbtpbtpceTblPceUblPaagaagaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafccaccXccbaaaccaccXccbaaaccaccXccbaafaafaaaaaaaafaafbCqceVbCqceWceYbCqbTzbCqbCqaoVapQaoVaoVapQaoVaoVapQaoVbESbVHbVIbVIbVIbVIbVIbVIbVIbVIbVJbVJbVJbVJbVJbVJbCqbZBbCqccwcfbcfbcfbcfcbZDbZCcfbbZEcfhcapccwbOdbQucficezbOdbOdbOdbOebULcezbURcezbLKapQapQapQapQapQapQbVucfjcfjcfjcflcfkcfjcfjcfjcfmcfocfnceJcfpceJceJbzscfqcbKcdObDbbDbccQccQbDbbDbccQcknccQbDbaaaaaaaaaaaabkybkyccUcfsbkybkybQZbQZbQZcftcfubQZbDhbkycaebtpckSccUcbgbkybkycfvbkybkybkybkyaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaaSaaSaafaaaccaccXccbaaaccaccXccbaaaccaccXccbaaaaafaaaaaacfxcfwcfwcfwcfwbCqbCqcqncqybCqbLvbLvbLvbLvbLvbLvbLvbLvbLvbCqcarcaqbTAcaxcazcaycaycaycaycaycaycaycaycaycaBcaBcaycaCceWccwcfFcfEcfHcgOcbqcbpcfbcbscfMctRccwcfNcfObRHcfQcfPcfRcfPcfQcfScfQcfTcezbLKbLKbLKaoVaoVapQaoVcfVcfUcfXcfWcfZcfYcgbcgacfjcgcbAwcgdcgfcgecghcggbKTbKTcgjcnHbkyaaaaaaaaaaaaaaaaafcskaafaaaaaaaaaaaaaaabkyczGcgocgmcgmcgpcgrcgqcgtcgscgubkybkybkybkycbvbkyccUbTrbkycgybtpbtpbkyaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaaaaafaaaaaaaaacgzaaaaaaaaacgzaaaaaaaaacgzaaaaaaaafcfxcfxcfxcgAcgCcgBcgEcgDbHEcAhcAicgGcgHcgHcgHcgHcgHcgHcgHcgHcgHcgHcgHcbwbEPcbxcbyccwccwccwccwccwccwccwccwccwccwccwccwccwccwccwcfbcgMcgOccjcclcckcgSccmccoccnccwcfNcgWcgVcgYcgXchacgZchbbOdchdchcchfchechgcheaoVaoVapQaoVcfjchhchjchichlchkchnchmcfjbAwbAwceJceJcbKceJccMbAwbAwcbKczHbkybkybZibZibkybkybZiczQbZibkybkybZibZibZibkyczRczSbnschwchvchxchxchxchychAchzchCccpccqccqccqccrcctbkyccVbtpchHbkyaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaafchJchIchIchKchLchLchLchLchLchLchLchLchLchLchLchMchOchNchOchPchRchQchScgHchUchTbQabCqbLvbLvbLvbLvbLvbLvbLvbLvbLvbCqbCqccucdicdhcdjccwchYchYchZccwcibciacidciccifciecihcigcijcdkcfbcikcimcdlcdmcinciqcdncdpcdoccwbLKcitbMQciubMQcivbMQciubMQciwbMQcixbLKbLKbLKapQapQapQaoVcfjciyciAcizciCciBciEciDcfjciFbAwccMccMciGceJccMbAwciHcbKczTbUwbUwbUwbUwbUwbUwbUwczUcANczVczVczVczVczVczXczWblObkyciKciJbkybkybZibZibkybkyciLcbfcdqbnscdscdrcdubkybkybkybkybkyaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaaaaafaaaaaaaaaciPaaaaaaaaaciPaaaaaaaaaciPaaaaaaaafcfxcfxcfxciQciSciRcfwbHEbHEbHEbHEbCqaaaaaaaafaaaaaaaafaaaaaaaafaaabCqciTbCqciUcdvccwciXciWciZciYcjbcjacgRcgRcgRcdTcjecjdcjfcjacfbcjgcgOcdUciocjjcfbcejcelcekccwapQcphapQbVuapQcphapQbVuapQcpPapQcpPapQapQaoVaoVaoVapQapQcfjcjpcjrcjqcjtcjscjvcjucjxcjwcjzcjyccMbLSccMcjAbFrbHdchpczYczYczYczYczYczYczYcAaczZczYczYczYczYczYczYcAccAbcAdbkycjCcbfbkyaaaaaaaaaaaabkybtpcbfcjEcjDcjDcjFcjGcjDaaaaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaaSaaSaafaaaccacjHccbaaaccacjHccbaaaccacjHccbaaaaafaaaaaacfxcfwcfwcfwcfwcjIbLubHEbHEbCqbCqbLvcAjcjJcjJcjJcjJcjJcjJaafbCqbCqbCqcjKcemccwcjMciZciZciYckHcgRcencjNcjPcnAcgRcgRcgRcgRcfbcjUceoceocjYcjXcfbcepcfMcsFccwbOhckbbQAckbbOhckbbQAckbbOhckcbQAckdbOhaoVaoVaoVaoVaoVapQckfckecjrckgckickhckkckjcfjcklceJceJceJckmceJceJceJbzsbCqbCqbCqbLvbLvbLvbCqbCqbLvbLvbLvbCqbCqbLvbLvbLvbCqckobkybkyckpcbfbkybkybZibZibkybkybtpckqckrcjDcktcksckucjDaaaaaaaafaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafccacjHccbaaaccacjHccbaaaccacjHccbaafaafaafaaaaaaaaaaaaaagbCqbCqbCqckvbHEbCqckvbJfcjJckwckyckxckyckzcjJaaabCqbSsbHEckAcemccwckBckBckCccwckEckDckGcgRckFcnAckJckIckKckKcfbckLceqceqckPckOckRcesckTcetccwbOhckVckUckWbOhckYckXckZbOhclbclaclcbOhaoVaoVaoVaoVaoVaoVcfjcldclfcleclhclgcljclicfjclkclmcllcloclncAeccMccMbAwclpbHEbLvaaaaaaaaaaafaaaaafaaaaafaaaaaaaaaaaaaaabkyclqbDhbkyclsclrcltcgrcltcltcltcltclvcluclwcjDclyclxclzcjDaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHraaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaaaccacjHccbaafccacjHccbaafccacjHccbaaaaafaafaafaaaaaaaaaaagclBclAclBbHEbHEbTzbHEccdcjJclCclEclDclGclFcjJaaabCqceYbHEckAcemccwckBckBckCccwclHcigclJceuceZcevclJcigclJclJcigclMcfaclQckHclPclRclNcgUcfdccwbOhclUclTclUbOhclWclVclWbOhclYclXclZbOhapQapQapQapQapQapQcfjcfjcfjcmbcmdcmccmfcmecmdclkcmgccMcmicmhcmjcdNccMcmkbCqbHEbLvaafaafaafaafaaaaafaaaaafaaaaaaaaaaaaaaabkycmqbtpbkycmrbntbntcmsbntbnsbnsbnscmtcmtcmucjDcmwcmvcmxcjDaafaaaaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaafccacjHccbaaaccacjHccbaaaccacjHccbaafaafaaaaafaafaaaaaaaagbCqbCqbCqbCqbHEbCqbCqbCqcjJcmycmAcmzcmBcmycjJaafbCqccwcmDcmCcfeccwckBckCckCccwcmGcmFcmIcffckFcfgcmLcmKcmLcmLcmNcfzcmQcmQcmRcmQcmQcfAcfCcfBccwbOhclUcmUclUbOhclWcmVclWbOhclZcmWclZbOhaoVaoVapQapQaoVaoVaoVaoVaoVcpOcmdcmYcnacmZcmdbAwcnccnbcbQcndcnebFrcngcnfbCqclpbLvaaaaaaaaaaafaaabZibZibZibkybkybkybkybkybkyciIbtpbkybkybkybkybkybtpbkyaafaaaaaaaaaaafcnjcnjcnkcnjcnjaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaccacnlccbaaaccacnlccbaaaccacnlccbaaaaaSaaaaaaaafaafaaaaaaaaaaaaaaabLvbHEbLvaaaaaacjJcnmcnocnncnqcnpcjJcjJcjJccwcnrcmCcfDccwccwccwccwccwcntcfGcgRcgRckFcgUcgRcgRcnwcnvcnxcgRcgRcgRcgRcnycgRckFcnAcfIccwbOhbOhbOhbOhbOhbOhbOhbOhbOhbOhbOhbOhbOhaoVapQapQaoVaoVaoVaoVaoVaoVcpQcmdcmccnCcmecmdbzscnDbHdcnFcnEbHdcnGbzsbzsbCqaagaagaaaaaaaaaaafaaabZicmlcmmbkycmpcmocnibtpbYrcnJbtpcAKbtpbtpbtpbtpbtpbkyaafaaaaaaaaaaafaaacnjcnKcnjaaaaafaaaaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaaaaafaaaaafaaaaafaaaaafaaaaafaaaaafaaaaaSaaaaaaaaaaafaafaaaaaaaaaaaabLvbHEbLvaaaaaacjJcnLcnNcnMcnPcnOcnRcnQcnScnRcnUcfJcgvcfLcnYcnXcoacnZcobcgwcgIcgxcgKcgJcsFccwcgLccwcgLccwcsFcgNcgRcgRcgPckFcnAcgQccwccwccwccwccwcigcigcigcigccwaafaafaafaafapQapQaoVaoVaoVaoVaoVaoVaoVcpQcmdcopcorcoqcosapQbzsceIcotbPnbPnbzsbzsaaaaafaaaaaaaaaaaaaaaaafaaabZicnhcnibYrbtpceRcnibkybkyckobkycnIcmocoubMBbNAbkybkyaafaaaaaaaaaaafaaacnjcnkcnjaaaaafaaaaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaaSaaSaaSaaSabaaaSaaSaaSaaSaaSaaSaaSaaSaaSaaaaaaaaaaaaaafaafaaaaaaaafbLvbHEbLvaafaafcjJcovcoxcowcozcoycoBcoAcoCcgTchDchBchEcoHcoHcoHcoJcoHcoLcoKchFcoMcjSchGccwchVchXchWchXciiccwcilcgRcipcirckFciscjScjScjScoZcpaccwcpbcigcpccpdcpdcpeaaaaaaaaaaoVaoVaoVaoVaoVaoVaoVaoVaoVcpQcmdcmdciMcmdcmdaaaapQaaacscaoVaaaaaaaaaaaaaafaafaaaaaaaaaaaaaafaaabLvcAfcAgbCqbVLbtpcnicpgbkycskbkybkybkybZibZibkybkyaaaaafaaaaaaaaaaafaaaaaacpiaaaaaaaafaaaaafaaaaaaaafaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaabLvbHEbLvaaaaaacjJcpjcplcpkcpncpmcjJcpocppcjJcpqcpWciNcgRcgRcpsclJcptckHcpuciOcpvcpvcpvcpycpxcAOcpzcpCcpBcpycpDcpDcnxcencocciVcjNcjNcjPcgUcjccpIciZcpIcpJczMczLcpMczNaaaaaaaoVaoVaoVaoVaoVaoVaoVaoVaoVcpQbVwcmdcpNcmdczIapQapQaaacsmaoVaaaaaaaaaaaaaaaaafaafaaaaaaaaaaafaaabLvbLvbLvbCqbCqbkycnicmnbkycsyaafaaaaafaaaaaaaafaaaaaaaafaaaaaaaaaaafaaaaaacpiaaaaaaaafaaaaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbCqbCqcpRbCqbCqaaacjJcpScpUcpTcjJcjJcjJcjJcjJccwcpVcgRciNcgRcgRcpXclJcpZckHcqacqccqbcqecqdccwcqfcqhcqgcqjcqiccwcqkcqlcqlcqccqackHcqmcjhckFcgUcqoccwcqpcigcqqcpdcpdcqraaaaaaaaaaoVaoVaoVaoVcszaoVaoVaoVaoVczJbVwcqscqtcqsbVwapQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaafaaaaaaaaaaafaaaaaabZicqubZibZiaafaafaaaaafaaaaaaaafaaaaaSaaSaaSabaaafaafaafaafcpiaafaafaafaafaafabaaaSaaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafbCqciTbHEcqvbCqaafcjJcjJcjJcjJcjJaafaaaaaaaafccwcqwcgRcjicqxcqxcqzcigcigcqAccwcqCcqBcqBcqBccwcqDcqFcqEcqHcAPccwcqBcqBcqBcqCccwcqAcigcigckFcgUccwccwcigcigcigcigccwaafaafaafaafapQapQaoVaoVaoVaoVaoVaoVaoVapQbVwaaaaaaaaabVwapQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaafaaaaaaaaaaafaaaaaabZibtpbZiaaaaaaaaaaaaaafaaaaaaaafaaaaaSaaaaaaaafaaaaafaaaaaacqJaaaaaaaafaaaaafaaaaaaaaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabLvcqKcAQcqLbCqaafaaaaaaaafaaaaaaaafaaaaaaaafccwcqOcqNckHcqPcqRcqQcigcqScqTccwcqVcqUcqWcqUcqYcqXcracqZcrbcqGcqYcqUcqUcqUcrcccwcrecrdccwckFcrwcjkcjlcjTcrhcqYaaaaaaaaaaaaaaaaaaaoVaoVaoVaoVaoVaoVaoVaoVaoVaoVbVwbVwbVwbVwbVwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaabZicribZiaaaaaaaaaaaaaafaaaaaaaafaaaaaSaafcrjcrjcrjcrjcrjaaacrkaaacrjcrjcrjcrjcrjaafaaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabLvcrlcrmbJebCqcigcrncrncrncrncrncrncrncrncigccwcrpcrocrrcrqcrpccwccwccwcqAccwccwcqYcqYcqYcqYcrscrIcrtcrucrvcqYcqYcqYcqYccwccwcqAccwccwcpEcjOcjmcjQcgRcrAcqYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaagaagaagaaaaaaaaaaaaaaaaaaaaaaafaaaaaSaaacrBcrCcrCcrCcrCcrDcrkcrFcrEcrEcrEcrEcrGaaaaaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabLvbLvbLvbLvbCqaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccwcrHcrJcrKaoVaaHcsPcqYcqYcqYcqYczEcqYcqYcqYcqYcsPaaHaoVczFcrMcrLccwcjRccwccwcjVcrPcrRcqYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaafaaaaaSacycrScrScrScrScrSaaacrkaaacrScrScrScrScrSaafaaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccwcrTcrUcrUaoVcAkcAlcAlcAlcAlcAlcAmcAlcAlcAlcAlcAlcAnaoVcrUcrVcrTccwcrWcrXccwcigcigcrYcigaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafaaaaaSaaaaaaaaaaafaaaaaaaaacrkaaaaaaaaaaafaaaaaaaaaaaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccwcrZcsbcsaapQcAoaaHcsAaoVaoVaoVaoVcsAaoVaoVcsAaaHcAoaoVcsdcsfcseccwcsgcfKcigaafaaacsicshaafaaaaaaaaaaafaaaaaaaaaaafaaaaaaaaaaafaaaaaaaaaaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaafcrjcrjcrjcrjcrjaaacrkaaacrjcrjcrjcrjcrjaafaaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccwcrTcrUcsjaoVcApcAqaoVaoVaoVaoVaoVcsBaoVaoVaoVcAscAraoVcrUcrUcrTccwaagaagaagaafaaacsLcslcsocsncspcsncsocsncspcsncsocsncspcsncsocsncspcsqcsraaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaaacrBcrCcrCcrCcrCcrDcrkcrFcrEcrEcrEcrEcrGaaaaaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccwcsscstcrUaoVcAoaaHaoVaoVapQapQapQapQapQaoVaoVaaHcAoaoVcrUcsvcsuccwaaaaaaaagaafaaaaaaaaaaafaaaaaaaaaaafaaaaaaaaaaafaaaaaaaaaaafaaaaaacsLcswcshaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaafcrScrScrScrScrSaaacrkaaacrScrScrScrScrSaafaaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccwccwcsxcrUaoVcAoaaHcsAapQapQcsHcsCcsIapQcsJaoVaaHcAoaoVcrUcsxccwccwaaaaaaaagaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafcsUcswcsraafaafcsDcsDcsDcsDcsDaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaafaaaaaaaaacsEaaaaaaaaaaafaaaaaaaaaaaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcsFccwcsGcrUaoVcApcAqaoVaoVapQcsRcsQcAtapQaoVaoVcAscAraoVcrUcsKccwcsFaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaafaaaaaacsLcswcshaaacsDcsNcsMcsOcsDaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaafcrjcrjcrjcrjcrjaaacpiaaacrjcrjcrjcrjcrjaafaaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccwccwcsxcrUaoVcAoaaHaoVcsSapQctmctfczDapQapQcsAaaHcAoaoVcrUcsxccwccwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaafaaaaaaaaacsUcsTcshcsDcsWcsVcsXcsDaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaaacrBcrCcrCcrCcrCcsZcsYcsZcrEcrEcrEcrEcrGaaaaaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccwcsvcsucrUaoVcAoaaHaoVaoVapQapQapQapQapQaoVaoVaaHcAoaoVcrUcsscstccwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaafaaaaaaaaaaafcsUctacsDctcctbctdcsDaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaafcrScrScrScrScrSaaacpiaaacrScrScrScrScrSaafaaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccwcrTcrUcteaoVcApcAqaoVaoVaoVapQaoVaoVaoVaoVaoVcAscAraoVcrUcrUcrTccwaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaafaaaaaaaaaaafctgcthcsDctjctictkcsDctgctgaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaaaaaaaafaaaaafaaaaaacpiaaaaaaaafaaaaafaaaaaaaaSaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaccwctlcsbcsaapQcAoaaHcsAaoVaoVcsAaoVaoVaoVaoVcsAaaHcAoaoVcsdcsfctnccwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaafaafaafaafaafctgctpctoctrctqcttctsctuctgaagaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaSaaSaaSaaSaaSaafaafaaacpiaaaaafaafaaSaaSaaSabaaaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccwctvcrUcrUaoVcAoaaHaaHcAuaaHaaHcAuaaHaaHcAuaaHaaHcAoaoVcrUcrUctvccwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaafaaaaaaaaaaafctgctwctoctxctbctzctyctActyaagaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaafctBaafaaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccwctvcrUctCaoVcAvcAlcAlcAwcAlcAlcAwcAlcAlcAwcAlcAlcAxaoVctDcrUctvccwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaafaaaaaaaaaaafctgctFctEctHctGctJctIctKctgaagaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaaaaafaaaaaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacjZccwccwccwcrUapQapQapQapQaoVaoVaoVaoVaoVapQapQapQapQcrUccwccwccwcjZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaafaaaaaaaaaaafctgctgctgctMctLctNctgctgctgaagaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaaSaaSaaSaaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaactvccwccwcigcigcigcigcigcigcigcigcigcigcigcigcigccwccwctvaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaafaafaafaafaafaaaaaactOctxctPctQctOaaaaaaaagaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaactvctvctvctvctRctvctvctvctvctvctvctvctRctvctvctvctvaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaagaagaagaafaaaaaactOctxctSctzctOaaaaaaaagaagaagaagaagaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaaaaaaaaaaaaaafaafaafaafaaaaaaaaaaaaaaaaafaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaaSctyctyaaSaafaafaafctgctUctTctVctgaafaafaafaaSctyctyaaSaaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSctXctWctZctYaaacuacuacuacuccubcudcuacuacuaaaacuecugcufcuhaaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSctXctWcufcuicujcuaculcukcuncumcupcuocuqcuacuscurctWcufcuhaaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacutaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSctXcuucuwcuvcuvcuxcuzcuycuBcuAcuCcuycuEcuDcuFcuFcuHcuGcuhaaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSctXcuIcuhaaaaaacuacuJcuycuLcuKcuMcuycuNcuacuOcuOcuQcuPcuhaaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaScuScuRctgctgctgcuacuUcuTcuVcuVcuWcuTcuXcuactgctgctgcuYcuZaaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSctXcuIcuhaaaaaacvacvccvbcvecvdcvacvfcvgcvaaaaaaactXcuPcuhaaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSctXcuIcuhaaaaaacvacvicvhcvkcvjcvmcvlcvncvaaaaaaactXcuPcuhaaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSctXcuIcuhaaacvacvacvocvlcvpcvpcvpcvlcvqcvacvaaaactXcuPcuhaaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSctXcuIcuhaaacvacvacvrcvpcvpcvscvpcvpcvtcvacvaaaactXcuPcuhaaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaScuScvuctgctgcvacvacvlcvpcvvcvvcvvcvpcvlcvacvactgctgcvwcuZaaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSctXcuIcuhcsDcvacvxcvlcvycvvcvzcvvcvycvlcvAcvacsDctXcuPcuhaaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSctXcuIcuhaaacvacvacvlcvpcvCcvBcvDcvpcvlcvacvaaaactXcuPcuhaaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSctXcuIcuhaaacvacvacvrcvpcvEcvycvpcvpcvtcvacvaaaactXcuPcuhaaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSctXcuIcuhaaacvacvacvFcvpcvHcvGcvIcvpcvFcvacvaaaactXcuPcuhaaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaScuScvJctgctgcvvcvacvacvfcvLcvKcvMcvbcvacvacvvctgctgcvNcuZaaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacvOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSctXcuIcuhaaaaafaaacvacvacvacvPcvQcvacvaaaaaafaaactXcuPcuhaaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSctXcuIcuhaaaaafaaacvScvRcvUcvTcvWcvVcvSaaaaafaaactXcuPcuhaaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSctXcuIcvYcvXcvZcvZcvScwacwccwbcwecwdcvScvXcvZcvXcwfcuPcuhaaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSctXcwgcwhcuvcuvcuvcwjcwicwlcwkcwncwmcwocuFcuFcuFcuFcwpcuhaaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaaacuOcuOcuOcwqcuOcvScwrcwtcwscwvcwucwxcwwcwqcuOcwqcwqaaaaaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacwyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaaSaaSaaSaaSaaSaaScvScwzcwBcwAcwDcwCcvSaaSaaSaaSaaSaaSaaSaaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafcvScvScwEcwEcwEcvScvSaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaaSaaSaaSaaSaaSaaSaaSaaSabaaaSaaSaaSaaSaaSaaaaaabCqbCqbCqbCqbCqbCqbYybCqbCqbCqbCqapQaoVaoVapQaaHcjnaoVaoVaoVbGpbVHbVIcagcaicahcakcajcamcalcaocanbSdbYFbStbVJcatcasbSRbSwbHPbYHcawbZybThbTgbTjbTibTHbTGcaDbPccaEbMKbMKbMKcaFbOdcaHcaGbUSbURbOdbQyapQbOhbOhbOhbOhbOhcaJcaIcdEcbJbzscaKcaMcaLbUXcaNcaObzscaQcaPcaRbzscaSbMbcaUcaTbDbbEmbSZbEmcaVbTabMibTcbMibTdcaWbEmbSZbEmbDbcaXbTlcaYcbccbbckacjWckNckMcbdbPNbWrbWrcbebQZbDhcbfcbgbkycbicbhbtpbZiaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaaaaafaaaaafaaaaafaaaacyaaaaafaaaaafaaaaaSaafaafbCqbHEbHEbHEbHEbHEbHEbHEbHEbLubLvaoVaoVaoVaaHcjocmXaaHaaHapQbGpbVHbVIcblbYzbWBbWBbWBbYzcbmcbocbnbXGbTIbUcbVJbCqbCqbUlcbrcbtbYHbYHcbucdtbUmcaAcaAcaAcaAbWQbOdcbAcbzcbCcbBbQtcbDcbFcbEbXUbTTcbGbPhbRKbPjcbIcbHcbHbOhapQbPnbAwceCbzsbzscbLcbKbzscbMcbNbzsbzscbObzsbzscbNbFrcbQcbPbDbbEmbEmbEmcbScbRbRZcbTbMibUgcbUbRUbRUbUibDbbTlbTlcbVbTlbTlbQZbZZbZZcbWcbXbPNcbZcbYcbYbQZbqgcbfbTrbkybkybkybtpbkyaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaaaccacccccbaaaccacccccbaaaccacccccbaaaaaSaaaaaabLvccdbHEbCqbCqbCqbTzbCqbCqbCqbCqaoVaoVaoVcnBaaHaaHapQaoVaoVbGpbVHbVIbYzccgccfbWBcchbYzbYzbXFccibOCbUybVbbUCbVdbVcbVfbVebVhbVgbVobVmbVqbVpcerbVrbWhbVKccwccvccyccxbRAbRAbRDbTOcczbTUbRFbURccAbQyapQbQAccCccBccDbOhapQbzsbzscfVccFccEcbLccGbzscbMccIccHccKccJccLccHccNccMbhGccObDbbDbbDbbDbbDbbDbbMiccPcfybDbbDbbDbbDbbDbbDbbQZbQZbQZbQZbQZbQZccRccRccSccTbQZbQZbQZbQZbQZbkyccUbTrbkyccWccVbtpbkyaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaafccaccXccbaaaccaccXccbaaaccaccXccbaafaafaaaaaabLvccYccZbCqbSqbHEbHEcdabQacdbbCqaoVaoVaoVaoVapQaoVaoVaoVaoVbESbVHbVIbWBcddcdcbWBcdecdfbWBbXFcdgbWtbWsbWvbWubWKbWJbXmbXkbXobXnbXqbXpbXIbXHccsbXNcdtbYbccwcdwbOdcbAbTObTPcdycdxcdAcdzbMWcdBcdCbRIbVvbPjcdDcbHcbHbOhapQbzsbAwcfWcdGcdFcdIcdHbzscdJcdLcdKccMcdMccMbFrbHdcdNbhGcdObDbcfrcgicgicglcgkbMiccPcgnbDbaafaafaafaafbkycdQbNBblQcdRcdRbQZcdScdSccSbScbQZcmobtpcAKbtpbDhccUbXubkycdVbtpbtpbkybkybkyaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaaaccaccXccbaafccaccXccbaafccaccXccbaaaaafaafaafbCqbLvbCqbCqbCqcdWcdYcgFcpYbSsbCqaoVaoVaoVaoVapQaoVaoVapQaoVbESbVHbVIbWBceacdZceccebcedbWBcefceecehcegceibVJbYpbYnbYEbYqbYMbYGbZebYObZgbZfbZubZtbZAbZwceycexbOdcbAcezbOdbOdbOdcezcezcezbURceBceAapQbOhbOhbOhbOhbOhapQbzscaKcfXceEceDceGceFbzsbzsceIceHceJbLSceLceKbzsbzsbhGcdObDbchochqchqchschrchuchtcjBbDbaafaaaaaaaafbkybtpceMbrGceOceNbQZcePcePceQbScbQZbkybkyceSceRbDhccUbTrbtpbtpbtpceTblPceUblPaagaagaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafccaccXccbaaaccaccXccbaaaccaccXccbaafaafaaaaaaaafaafbCqceVbCqceWceYbCqbTzbCqbCqaoVapQaoVaoVapQaoVaoVapQaoVbESbVHbVIbVIbVIbVIbVIbVIbVIbVIbVJbVJbVJbVJbVJbVJbCqbZBbCqccwcfbcfbcfbcfcbZDbZCcfbbZEcfhcapccwbOdbQucficezbOdbOdbOdbOebULcezbURcezbLKapQapQapQapQapQapQapQcfjcfjchkcflcfkcfjcfjcfjcfmcfocfnceJcfpceJceJbzscfqcbKcdObDbbDbccQccQbDbbDbccQcknccQbDbaaaaaaaaaaaabkybkyccUcfsbkybkybQZbQZbQZcftcfubQZbDhbkycaebtpckSccUcbgbkybkycfvbkybkybkybkyaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaaSaaSaafaaaccaccXccbaaaccaccXccbaaaccaccXccbaaaaafaaaaaacfxcfwcfwcfwcfwbCqbCqcqncqybCqbLvbLvbLvbLvbLvbLvbLvbLvbLvbCqcarcaqbTAcaxcazcaycaycaycaycaycaycaycaycaycaBcaBcaycaCceWccwcfFcfEcfHcgOcbqcbpcfbcbscfMctRccwcfNcfObRHcfQcfPcfRcfPcfQcfScfQcfTcezbLKbLKbLKaoVaoVapQapQcfjcfjciBchlcfZcfYcgbcgacfjcgcbAwcgdcgfcgecghcggbKTbKTcgjcnHbkyaaaaaaaaaaaaaaaaafcskaafaaaaaaaaaaaaaaabkyczGcgocgmcgmcgpcgrcgqcgtcgscgubkybkybkybkycbvbkyccUbTrbkycgybtpbtpbkyaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaaaaafaaaaaaaaacgzaaaaaaaaacgzaaaaaaaaacgzaaaaaaaafcfxcfxcfxcgAcgCcgBcgEcgDbHEcAhcAicgGcgHcgHcgHcgHcgHcgHcgHcgHcgHcgHcgHcbwbEPcbxcbyccwccwccwccwccwccwccwccwccwccwccwccwccwccwccwcfbcgMcgOccjcclcckcgSccmccoccnccwcfNcgWcgVcgYcgXchacgZchbbOdchdchcchfchechgcheaoVaoVapQciCcfUcjpckhcizckicjrchnchmcfjbAwbAwceJceJcbKceJccMbAwbAwcbKczHbkybkybZibZibkybkybZiczQbZibkybkybZibZibZibkyczRczSbnschwchvchxchxchxchychAchzchCccpccqccqccqccrcctbkyccVbtpchHbkyaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaafchJchIchIchKchLchLchLchLchLchLchLchLchLchLchLchMchOchNchOchPchRchQchScgHchUchTbQabCqbLvbLvbLvbLvbLvbLvbLvbLvbLvbCqbCqccucdicdhcdjccwchYchYchZccwcibciacidciccifciecihcigcijcdkcfbcikcimcdlcdmcinciqcdncdpcdoccwbLKcitbMQciubMQcivbMQciubMQciwbMQcixbLKbLKbLKapQapQapQbVucfjchhchjchicldckjciEciDcfjciFbAwccMccMciGceJccMbAwciHcbKczTbUwbUwbUwbUwbUwbUwbUwczUcANczVczVczVczVczVczXczWblObkyciKciJbkybkybZibZibkybkyciLcbfcdqbnscdscdrcdubkybkybkybkybkyaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaaaaafaaaaaaaaaciPaaaaaaaaaciPaaaaaaaaaciPaaaaaaaafcfxcfxcfxciQciSciRcfwbHEbHEbHEbHEbCqaaaaaaaafaaaaaaaafaaaaaaaafaaabCqciTbCqciUcdvccwciXciWciZciYcjbcjacgRcgRcgRcdTcjecjdcjfcjacfbcjgcgOcdUciocjjcfbcejcelcekccwapQcphapQbVuapQcphapQbVuapQcpPapQcpPapQapQaoVaoVaoVapQbVucfjciyciAcizcjtcjscjvcjucjxcjwcjzcjyccMbLSccMcjAbFrbHdchpczYczYczYczYczYczYczYcAaczZczYczYczYczYczYczYcAccAbcAdbkycjCcbfbkyaaaaaaaaaaaabkybtpcbfcjEcjDcjDcjFcjGcjDaaaaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaaSaaSaafaaaccacjHccbaaaccacjHccbaaaccacjHccbaaaaafaaaaaacfxcfwcfwcfwcfwcjIbLubHEbHEbCqbCqbLvcAjcjJcjJcjJcjJcjJcjJaafbCqbCqbCqcjKcemccwcjMciZciZciYckHcgRcencjNcjPcnAcgRcgRcgRcgRcfbcjUceoceocjYcjXcfbcepcfMcsFccwbOhckbbQAckbbOhckbbQAckbbOhckcbQAckdbOhaoVaoVaoVaoVaoVbVuckfckecjrcjqcjrclecljclfcfjcklceJceJceJckmceJceJceJbzsbCqbCqbCqbLvbLvbLvbCqbCqbLvbLvbLvbCqbCqbLvbLvbLvbCqckobkybkyckpcbfbkybkybZibZibkybkybtpckqckrcjDcktcksckucjDaaaaaaaafaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafccacjHccbaaaccacjHccbaaaccacjHccbaafaafaafaaaaaaaaaaaaaagbCqbCqbCqckvbHEbCqckvbJfcjJckwckyckxckyckzcjJaaabCqbSsbHEckAcemccwckBckBckCccwckEckDckGcgRckFcnAckJckIckKckKcfbckLceqceqckPckOckRcesckTcetccwbOhckVckUckWbOhckYckXckZbOhclbclaclcbOhaoVaoVaoVaoVaoVbVucfjclgclhckgcsqclickkcsrcfjclkclmcllcloclncAeccMccMbAwclpbHEbLvaaaaaaaaaaafaaaaafaaaaafaaaaaaaaaaaaaaabkyclqbDhbkyclsclrcltcgrcltcltcltcltclvcluclwcjDclyclxclzcjDaafaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHraaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaaaccacjHccbaafccacjHccbaafccacjHccbaaaaafaafaafaaaaaaaaaaagclBclAclBbHEbHEbTzbHEccdcjJclCclEclDclGclFcjJaaabCqceYbHEckAcemccwckBckBckCccwclHcigclJceuceZcevclJcigclJclJcigclMcfaclQckHclPclRclNcgUcfdccwbOhclUclTclUbOhclWclVclWbOhclYclXclZbOhapQapQapQapQapQbVucfjcfjcfjcmbcmdcmccmfcmecmdclkcmgccMcmicmhcmjcdNccMcmkbCqbHEbLvaafaafaafaafaaaaafaaaaafaaaaaaaaaaaaaaabkycmqbtpbkycmrbntbntcmsbntbnsbnsbnscmtcmtcmucjDcmwcmvcmxcjDaafaaaaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaafccacjHccbaaaccacjHccbaaaccacjHccbaafaafaaaaafaafaaaaaaaagbCqbCqbCqbCqbHEbCqbCqbCqcjJcmycmAcmzcmBcmycjJaafbCqccwcmDcmCcfeccwckBckCckCccwcmGcmFcmIcffckFcfgcmLcmKcmLcmLcmNcfzcmQcmQcmRcmQcmQcfAcfCcfBccwbOhclUcmUclUbOhclWcmVclWbOhclZcmWclZbOhaoVaoVapQapQaoVcaJbUraoVaoVcpOcmdcmYcnacmZcmdbAwcnccnbcbQcndcnebFrcngcnfbCqclpbLvaaaaaaaaaaafaaabZibZibZibkybkybkybkybkybkyciIbtpbkybkybkybkybkybtpbkyaafaaaaaaaaaaafcnjcnjcnkcnjcnjaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaccacnlccbaaaccacnlccbaaaccacnlccbaaaaaSaaaaaaaafaafaaaaaaaaaaaaaaabLvbHEbLvaaaaaacjJcnmcnocnncnqcnpcjJcjJcjJccwcnrcmCcfDccwccwccwccwccwcntcfGcgRcgRckFcgUcgRcgRcnwcnvcnxcgRcgRcgRcgRcnycgRckFcnAcfIccwbOhbOhbOhbOhbOhbOhbOhbOhbOhbOhbOhbOhbOhaoVapQapQaoVaoVaoVbVuaoVaoVcpQcmdcmccnCcmecmdbzscnDbHdcnFcnEbHdcnGbzsbzsbCqaagaagaaaaaaaaaaafaaabZicmlcmmbkycmpcmocnibtpbYrcnJbtpcAKbtpbtpbtpbtpbtpbkyaafaaaaaaaaaaafaaacnjcnKcnjaaaaafaaaaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaaaaafaaaaafaaaaafaaaaafaaaaafaaaaafaaaaaSaaaaaaaaaaafaafaaaaaaaaaaaabLvbHEbLvaaaaaacjJcnLcnNcnMcnPcnOcnRcnQcnScnRcnUcfJcgvcfLcnYcnXcoacnZcobcgwcgIcgxcgKcgJcsFccwcgLccwcgLccwcsFcgNcgRcgRcgPckFcnAcgQccwccwccwccwccwcigcigcigcigccwaafaafaafaafapQapQaoVaoVaoVaoVbVuaoVaoVcpQcmdcopcorcoqcosapQbzsceIcotbPnbPnbzsbzsaaaaafaaaaaaaaaaaaaaaaafaaabZicnhcnibYrbtpceRcnibkybkyckobkycnIcmocoubMBbNAbkybkyaafaaaaaaaaaaafaaacnjcnkcnjaaaaafaaaaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaaSaaSaaSaaSabaaaSaaSaaSaaSaaSaaSaaSaaSaaSaaaaaaaaaaaaaafaafaaaaaaaafbLvbHEbLvaafaafcjJcovcoxcowcozcoycoBcoAcoCcgTchDchBchEcoHcoHcoHcoJcoHcoLcoKchFcoMcjSchGccwchVchXchWchXciiccwcilcgRcipcirckFciscjScjScjScoZcpaccwcpbcigcpccpdcpdcpeaaaaaaaaaaoVaoVaoVaoVaoVaoVbVuaoVaoVcpQcmdcmdciMcmdcmdaaaapQaaacscaoVaaaaaaaaaaaaaafaafaaaaaaaaaaaaaafaaabLvcAfcAgbCqbVLbtpcnicpgbkycskbkybkybkybZibZibkybkyaaaaafaaaaaaaaaaafaaaaaacpiaaaaaaaafaaaaafaaaaaaaafaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaabLvbHEbLvaaaaaacjJcpjcplcpkcpncpmcjJcpocppcjJcpqcpWciNcgRcgRcpsclJcptckHcpuciOcpvcpvcpvcpycpxcAOcpzcpCcpBcpycpDcpDcnxcencocciVcjNcjNcjPcgUcjccpIciZcpIcpJczMczLcpMczNaaaaaaaoVaoVaoVaoVaoVaoVbVuaoVaoVcpQbVwcmdcpNcmdczIapQapQaaacsmaoVaaaaaaaaaaaaaaaaafaafaaaaaaaaaaafaaabLvbLvbLvbCqbCqbkycnicmnbkycsyaafaaaaafaaaaaaaafaaaaaaaafaaaaaaaaaaafaaaaaacpiaaaaaaaafaaaaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbCqbCqcpRbCqbCqaaacjJcpScpUcpTcjJcjJcjJcjJcjJccwcpVcgRciNcgRcgRcpXclJcpZckHcqacqccqbcqecqdccwcqfcqhcqgcqjcqiccwcqkcqlcqlcqccqackHcqmcjhckFcgUcqoccwcqpcigcqqcpdcpdcqraaaaaaaaaaoVaoVaoVaoVcszaoVbVuaoVaoVczJbVwcqscqtcqsbVwapQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaafaaaaaaaaaaafaaaaaabZicqubZibZiaafaafaaaaafaaaaaaaafaaaaaSaaSaaSabaaafaafaafaafcpiaafaafaafaafaafabaaaSaaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafbCqciTbHEcqvbCqaafcjJcjJcjJcjJcjJaafaaaaaaaafccwcqwcgRcjicqxcqxcqzcigcigcqAccwcqCcqBcqBcqBccwcqDcqFcqEcqHcAPccwcqBcqBcqBcqCccwcqAcigcigckFcgUccwccwcigcigcigcigccwaafaafaafaafapQapQaoVaoVaoVaoVbVuaoVaoVapQbVwaaaaaaaaabVwapQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaafaaaaaaaaaaafaaaaaabZibtpbZiaaaaaaaaaaaaaafaaaaaaaafaaaaaSaaaaaaaafaaaaafaaaaaacqJaaaaaaaafaaaaafaaaaaaaaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabLvcqKcAQcqLbCqaafaaaaaaaafaaaaaaaafaaaaaaaafccwcqOcqNckHcqPcqRcqQcigcqScqTccwcqVcqUcqWcqUcqYcqXcracqZcrbcqGcqYcqUcqUcqUcrcccwcrecrdccwckFcrwcjkcjlcjTcrhcqYaaaaaaaaaaaaaaaaaaaoVaoVaoVaoVaoVaoVbVuaoVaoVaoVbVwbVwbVwbVwbVwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaabZicribZiaaaaaaaaaaaaaafaaaaaaaafaaaaaSaafcrjcrjcrjcrjcrjaaacrkaaacrjcrjcrjcrjcrjaafaaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabLvcrlcrmbJebCqcigcrncrncrncrncrncrncrncrncigccwcrpcrocrrcrqcrpccwccwccwcqAccwccwcqYcqYcqYcqYcrscrIcrtcrucrvcqYcqYcqYcqYccwccwcqAccwccwcpEcjOcjmcjQcgRcrAcqYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacswaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaagaagaagaaaaaaaaaaaaaaaaaaaaaaafaaaaaSaaacrBcrCcrCcrCcrCcrDcrkcrFcrEcrEcrEcrEcrGaaaaaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabLvbLvbLvbLvbCqaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccwcrHcrJcrKaoVaaHcsPcqYcqYcqYcqYczEcqYcqYcqYcqYcsPaaHaoVczFcrMcrLccwcjRccwccwcjVcrPcrRcqYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacswaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaafaaaaaSacycrScrScrScrScrSaaacrkaaacrScrScrScrScrSaafaaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccwcrTcrUcrUaoVcAkcAlcAlcAlcAlcAlcAmcAlcAlcAlcAlcAlcAnaoVcrUcrVcrTccwcrWcrXccwcigcigcrYcigaafaafaafaafaafaafaafaafaafaafaafaafcswaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafaaaaaSaaaaaaaaaaafaaaaaaaaacrkaaaaaaaaaaafaaaaaaaaaaaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccwcrZcsbcsaapQcAoaaHcsAaoVaoVaoVaoVcsAaoVaoVcsAaaHcAoaoVcsdcsfcseccwcsgcfKcigaafaaacsicshaafaaaaaaaaaaafaaaaaaaaaaafaaaaaaaaacswaaaaaaaaacsDcsDcsDcsDcsDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaafcrjcrjcrjcrjcrjaaacrkaaacrjcrjcrjcrjcrjaafaaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccwcrTcrUcsjaoVcApcAqaoVaoVaoVaoVaoVcsBaoVaoVaoVcAscAraoVcrUcrUcrTccwaagaagaagaafaaacsLcslcsocsncspcsncsocsncspcsncsocsncspcsncsMcsncsncsncsOcsNcsUcsTcsDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaaacrBcrCcrCcrCcrCcrDcrkcrFcrEcrEcrEcrEcrGaaaaaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccwcsscstcrUaoVcAoaaHaoVaoVapQapQapQapQapQaoVaoVaaHcAoaoVcrUcsvcsuccwaaaaaaaagaafaaaaaaaaaaafaaaaaaaaaaafaaaaaaaaaaafaaaaaaaaacswaagcsDcsDcsDcsVcsWcsVcsDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaafcrScrScrScrScrSaaacrkaaacrScrScrScrScrSaafaaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccwccwcsxcrUaoVcAoaaHcsAapQapQcsHcsCcsIapQcsJaoVaaHcAoaoVcrUcsxccwccwaaaaaaaagaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafcswaagctacsXctactbctcctbcsDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaafaaaaaaaaacsEaaaaaaaaaaafaaaaaaaaaaaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcsFccwcsGcrUaoVcApcAqaoVaoVapQcsRcsQcAtapQaoVaoVcAscAraoVcrUcsKccwcsFaaaaaaaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagctdaagcsDctgcticthctcctjctiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaafcrjcrjcrjcrjcrjaaacpiaaacrjcrjcrjcrjcrjaafaaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccwccwcsxcrUaoVcAoaaHaoVcsSapQctmctfczDapQapQcsAaaHcAoaoVcrUcsxccwccwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacswaagcuacuacuacuactoctkctqctpaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaaacrBcrCcrCcrCcrCcsZcsYcsZcrEcrEcrEcrEcrGaaaaaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccwcsvcsucrUaoVcAoaaHaoVaoVapQapQapQapQapQaoVaoVaaHcAoaoVcrUcsscstccwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacswaaaaaacuacuactrcttctscuacuacuacuacuaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaafcrScrScrScrScrSaaacpiaaacrScrScrScrScrSaafaaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccwcrTcrUcteaoVcApcAqaoVaoVaoVapQaoVaoVaoVaoVaoVcAscAraoVcrUcrUcrTccwaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacswaaaaaacuactwctuctyctxctActzctFctEcuaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaaaaaaaafaaaaafaaaaaacpiaaaaaaaafaaaaafaaaaaaaaSaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaccwctlcsbcsaapQcAoaaHcsAaoVaoVcsAaoVaoVaoVaoVcsAaaHcAoaoVcsdcsfctnccwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacswaaaaaacuactHctGctJctIcuyctKctMctLcuaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaSaaSaaSaaSaaSaafaafaaacpiaaaaafaafaaSaaSaaSabaaaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccwctvcrUcrUaoVcAoaaHaaHcAuaaHaaHcAuaaHaaHcAuaaHaaHcAoaoVcrUcrUctvccwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafctOctNaafcuactQctPctTctSctVctUctXctWcuaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaafctBaafaaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccwctvcrUctCaoVcAvcAlcAlcAwcAlcAlcAwcAlcAlcAwcAlcAlcAxaoVctDcrUctvccwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafctZctYctZctZcuccubcuecudcugcufcufcufcufaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaaaaafaaaaaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacjZccwccwccwcrUapQapQapQapQaoVaoVaoVaoVaoVapQapQapQapQcrUccwccwccwcjZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactZctZcuhcuictZcujcujculcukcujcufcumcumcufcufaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaaSaaSaaSaaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaactvccwccwcigcigcigcigcigcigcigcigcigcigcigcigcigccwccwctvaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactZcuocuncuqcupcujcurcuucuscujcuvcuwcuwcuxcufaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaactvctvctvctvctRctvctvctvctvctvctvctvctRctvctvctvctvaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactZcuAcuzcuCcuBcuEcuDcuGcuFcuEcuHcuJcuIcuKcufaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaaaaaaaaaaaaaafaafaafaafaaaaaaaaaaaaaaaaafaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactZcuMcuLcuOcuNcuQcuPcuScuRcuUcuTcuWcuVcuXcufaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaactZctZcuYcuzcuZcujcvccvecvdcujcvgcvicvhcufcufaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcvkcvjcvmcvjcvkcvkcvocvncvkcvjcvqcvjcvkaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacutaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacvkcvscvtcvjcvwcvucvzcvycvwcvjcvCcvBcvkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcvkcvDcvtcvjcvwcvucvzcvycvwcvjcvCcvEcvkaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacvFcvkcvkcvtcvjcvGcvucvIcvHcvJcvjcvCcvkcvkcvKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafcvkcvLcvjcvMcvucvzcvycvwcvjcvNcvkaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcvkcvQcvPcvScvRcvTcvycvVcvUcvWcvkaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcvkcvXcvjcvZcvYcvzcvycwacvjcvXcvkaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafcvkcvXcvjcvGcwbcwccvycvJcvjcvXcvkaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacvkcvkcvXcvjcvwcvucvzcvycvwcvjcvXcvkcvkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacvkcvXcvXcvjcvwcvucwdcvycvwcvjcvXcvXcvkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacvkcvXcvacvacvfcvacwfcwecvbcvacvacvXcvkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacvkcvXcvacvacwhcwgcwjcwicwkcvacvacvXcvkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacvkcvXcvacvacwmcwlcwocwncwpcvacvacvXcvkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacvkcwqcvacvacwrcwrcwtcwscwrcvacvacwqcvkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacvOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacvkcwqcvacvpcvpcvlcwucwncvpcvpcvacwqcvkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacvacvacvacwvcwxcwwcwAcwzcwCcwBcvacvacvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacvacvacvacvpcwjcwDcARcwEcwncvpcvacvacvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcvacvacvacvrcwucvvcAScvvcATcvrcvacvacvaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAUcvacvacvxcvlcAVcvvcvvcvvcAWcvlcvAcvacvacAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacwyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcvacvacvacvrcAZcAYcBacvvcvlcvrcvacvacvaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacvacvacvacwvcvlcBbcBccvpcvlcwBcvacvacvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacvacvacvacvpcvlcBdcBecvlcvlcvpcvacvacvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacvacvacvacvacvacvacvacvacvacvacvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcvacvacvacvacvacvacvacvacvaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcBfaafaaaaaacBgaaaaaaaafcBfaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From 443497452134bf5986d25fb834e1a109a351fd4d Mon Sep 17 00:00:00 2001 From: Mike Long Date: Fri, 1 Jan 2016 17:29:56 -0500 Subject: [PATCH 035/310] Grammatical fix to Detective's Camera. Fixes #14232 Also removes description saying 30 photos left, as that number did not change as the number of photos remaining decreased. It still shows number of photos remaining on examine. --- _maps/map_files/AsteroidStation/AsteroidStation.dmm | 2 +- _maps/map_files/BirdStation/BirdStation.dmm | 2 +- _maps/map_files/DiscStation/DiscStation.dmm | 2 +- _maps/map_files/DreamStation/dreamstation04.dmm | 2 +- _maps/map_files/MetaStation/MetaStation.v41I.dmm | 2 +- _maps/map_files/MiniStation/MiniStation.dmm | 2 +- _maps/map_files/TgStation/tgstation.2.1.3.dmm | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/_maps/map_files/AsteroidStation/AsteroidStation.dmm b/_maps/map_files/AsteroidStation/AsteroidStation.dmm index a1df0c8a713..ce9224fce29 100644 --- a/_maps/map_files/AsteroidStation/AsteroidStation.dmm +++ b/_maps/map_files/AsteroidStation/AsteroidStation.dmm @@ -1643,7 +1643,7 @@ "aFE" = (/obj/machinery/computer/secure_data,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/simulated/floor/carpet,/area/security/detectives_office) "aFF" = (/obj/effect/landmark/start{name = "Detective"},/obj/structure/bed/chair{dir = 4},/turf/simulated/floor/carpet,/area/security/detectives_office) "aFG" = (/obj/structure/table/wood,/obj/item/weapon/hand_labeler,/turf/simulated/floor/carpet,/area/security/detectives_office) -"aFH" = (/obj/structure/table/wood,/obj/item/device/camera{desc = "A one use - polaroid camera. 30 photos left."; name = "detective's camera"; pictures_left = 30},/obj/machinery/atmospherics/components/unary/vent_scrubber{on = 1},/obj/machinery/light{dir = 4},/turf/simulated/floor/wood,/area/security/detectives_office) +"aFH" = (/obj/structure/table/wood,/obj/item/device/camera{desc = "A single-use polaroid camera."; name = "detective's camera"; pictures_left = 30},/obj/machinery/atmospherics/components/unary/vent_scrubber{on = 1},/obj/machinery/light{dir = 4},/turf/simulated/floor/wood,/area/security/detectives_office) "aFI" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/security/main) "aFJ" = (/turf/simulated/floor/plasteel,/area/security/main) "aFK" = (/obj/machinery/requests_console{department = "Security"; departmentType = 5; name = "Security Requests Console"; pixel_y = 30},/turf/simulated/floor/plasteel,/area/security/main) diff --git a/_maps/map_files/BirdStation/BirdStation.dmm b/_maps/map_files/BirdStation/BirdStation.dmm index 45d8a10038c..6581a0eb537 100644 --- a/_maps/map_files/BirdStation/BirdStation.dmm +++ b/_maps/map_files/BirdStation/BirdStation.dmm @@ -2656,7 +2656,7 @@ "aZe" = (/obj/structure/sink/kitchen{desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; name = "old sink"; pixel_y = 28},/obj/item/weapon/reagent_containers/spray/plantbgone,/turf/simulated/floor/plasteel/white,/area/maintenance/fore{name = "Security Maintenance"}) "aZf" = (/obj/structure/closet/crate/secure/hydrosec{req_access_txt = "35"},/obj/item/seeds/kudzuseed{potency = 0; production = 8},/obj/item/seeds/chilighost,/obj/item/seeds/deathberryseed,/obj/item/device/gps,/turf/simulated/floor/plasteel/white,/area/maintenance/fore{name = "Security Maintenance"}) "aZg" = (/obj/structure/cable/cyan{icon_state = "1-2"},/obj/machinery/camera/autoname{icon_state = "camera"; dir = 5},/turf/simulated/floor/wood,/area/security/brig) -"aZh" = (/obj/structure/closet/secure_closet/detective,/obj/item/device/camera{desc = "A one use - polaroid camera. 30 photos left."; name = "detective's camera"; pictures_left = 30},/turf/simulated/floor/wood,/area/security/brig) +"aZh" = (/obj/structure/closet/secure_closet/detective,/obj/item/device/camera{desc = "A single-use polaroid camera."; name = "detective's camera"; pictures_left = 30},/turf/simulated/floor/wood,/area/security/brig) "aZi" = (/obj/structure/table/wood,/turf/simulated/floor/wood,/area/security/brig) "aZj" = (/obj/machinery/computer/pandemic{layer = 2.5; pixel_x = -4},/turf/simulated/floor/plasteel/white,/area/medical/virology) "aZk" = (/obj/structure/reagent_dispensers/virusfood{density = 0; pixel_y = -32},/turf/simulated/floor/plasteel/white,/area/medical/virology) diff --git a/_maps/map_files/DiscStation/DiscStation.dmm b/_maps/map_files/DiscStation/DiscStation.dmm index cc70904b2e6..34f72a98ad5 100644 --- a/_maps/map_files/DiscStation/DiscStation.dmm +++ b/_maps/map_files/DiscStation/DiscStation.dmm @@ -3922,7 +3922,7 @@ "bxv" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 4; initialize_directions = 11},/turf/simulated/floor/plasteel,/area/hallway/primary/port) "bxw" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/structure/filingcabinet,/obj/machinery/light/small{dir = 1},/obj/machinery/light_switch{pixel_y = 25},/obj/machinery/camera{c_tag = "Detective's Office"; dir = 4; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/security/detectives_office) "bxx" = (/obj/structure/closet/secure_closet/detective,/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/security/detectives_office) -"bxy" = (/obj/structure/table/wood,/obj/machinery/light/small{dir = 8},/obj/item/weapon/book/manual/wiki/security_space_law,/obj/item/device/camera{desc = "A one use - polaroid camera. 30 photos left."; name = "detective's camera"; pictures_left = 30},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/security/detectives_office) +"bxy" = (/obj/structure/table/wood,/obj/machinery/light/small{dir = 8},/obj/item/weapon/book/manual/wiki/security_space_law,/obj/item/device/camera{desc = "A single-use polaroid camera."; name = "detective's camera"; pictures_left = 30},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/security/detectives_office) "bxz" = (/obj/structure/table/wood,/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/item/device/taperecorder{pixel_x = 3; pixel_y = 0},/obj/item/weapon/storage/box/evidence,/obj/item/device/flashlight/seclite,/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/security/detectives_office) "bxA" = (/obj/structure/transit_tube{dir = 2; icon_state = "N-SW-SE"; tag = "icon-E-SW-NW"},/turf/space,/area/space) "bxB" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating{tag = "icon-platingdmg1"; icon_state = "platingdmg1"},/area/maintenance/port) diff --git a/_maps/map_files/DreamStation/dreamstation04.dmm b/_maps/map_files/DreamStation/dreamstation04.dmm index 43ee06ad710..b5a02d8c843 100644 --- a/_maps/map_files/DreamStation/dreamstation04.dmm +++ b/_maps/map_files/DreamStation/dreamstation04.dmm @@ -3726,7 +3726,7 @@ "btH" = (/obj/structure/bed/chair/office/dark{dir = 1},/obj/machinery/requests_console{department = "Detective's Office"; name = "Detective's Office RC"; pixel_x = -30; pixel_y = 0},/obj/effect/landmark/start{name = "Detective"},/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 1; on = 1},/obj/machinery/light_switch{pixel_y = -24; tag = "s"},/turf/simulated/floor/carpet,/area/security/detectives_office) "btI" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/carpet,/area/security/detectives_office) "btJ" = (/obj/structure/closet/secure_closet/detective,/obj/machinery/newscaster{hitstaken = 0; pixel_x = 0; pixel_y = -32; tag = "s"},/turf/simulated/floor/carpet,/area/security/detectives_office) -"btK" = (/obj/structure/table/wood,/obj/item/weapon/storage/secure/safe{pixel_x = 5; pixel_y = -26},/obj/item/device/camera{desc = "A one use - polaroid camera. 30 photos left."; name = "detectives camera"; pictures_left = 30},/obj/item/device/taperecorder{pixel_y = 0},/turf/simulated/floor/carpet,/area/security/detectives_office) +"btK" = (/obj/structure/table/wood,/obj/item/weapon/storage/secure/safe{pixel_x = 5; pixel_y = -26},/obj/item/device/camera{desc = "A single-use polaroid camera."; name = "detectives camera"; pictures_left = 30},/obj/item/device/taperecorder{pixel_y = 0},/turf/simulated/floor/carpet,/area/security/detectives_office) "btL" = (/obj/structure/table/wood,/obj/item/weapon/hand_labeler,/turf/simulated/floor/carpet,/area/security/detectives_office) "btM" = (/obj/effect/spawner/structure/window/reinforced,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/security/brig) "btN" = (/obj/machinery/door/window/brigdoor{dir = 1; id = "Cell 1"; name = "Cell 1"; req_access_txt = "2"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel/darkred/side{tag = "icon-darkred (NORTH)"; icon_state = "darkred"; dir = 1},/area/security/brig) diff --git a/_maps/map_files/MetaStation/MetaStation.v41I.dmm b/_maps/map_files/MetaStation/MetaStation.v41I.dmm index fc781964732..d508e268703 100644 --- a/_maps/map_files/MetaStation/MetaStation.v41I.dmm +++ b/_maps/map_files/MetaStation/MetaStation.v41I.dmm @@ -1559,7 +1559,7 @@ "aDY" = (/obj/machinery/computer/secure_data,/obj/machinery/button/flasher{id = "secentranceflasher"; name = "Brig Entrance Flash Control"; pixel_x = -24; pixel_y = 24; req_access_txt = "1"},/obj/machinery/button/door{id = "Secure Gate"; name = "Cell Window Control"; normaldoorcontrol = 0; pixel_x = 5; pixel_y = 27; req_access_txt = "0"; specialfunctions = 4},/obj/machinery/button/door{id = "briglockdown"; name = "Brig Lockdown Control"; pixel_x = 5; pixel_y = 37; req_access_txt = "0"},/obj/machinery/light/small{dir = 1},/obj/machinery/button/door{desc = "A remote control switch for the medbay foyer."; id = "innerbrig"; name = "Brig Interior Doors Control"; normaldoorcontrol = 1; pixel_x = -5; pixel_y = 37; req_access_txt = "63"},/obj/machinery/button/door{desc = "A remote control switch for the medbay foyer."; id = "outerbrig"; name = "Brig Exterior Doors Control"; normaldoorcontrol = 1; pixel_x = -5; pixel_y = 27; req_access_txt = "63"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig) "aDZ" = (/obj/structure/filingcabinet/chestdrawer{pixel_y = 3},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig) "aEa" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/components/unary/vent_pump{dir = 1; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/obj/machinery/button/flasher{id = "holdingflash"; name = "holding cell flasher button"; pixel_x = 23; pixel_y = 23; req_access_txt = "1"},/obj/machinery/camera{c_tag = "Brig - Desk"; dir = 8; network = list("SS13")},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29; pixel_y = -2},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/security/brig) -"aEb" = (/obj/machinery/requests_console{department = "Detective's office"; pixel_x = -30; pixel_y = 0},/obj/structure/table/wood,/obj/machinery/light/small{dir = 8},/obj/item/weapon/book/manual/wiki/security_space_law,/obj/item/device/camera{desc = "A one use - polaroid camera. 30 photos left."; name = "detective's camera"; pictures_left = 30},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/security/detectives_office) +"aEb" = (/obj/machinery/requests_console{department = "Detective's office"; pixel_x = -30; pixel_y = 0},/obj/structure/table/wood,/obj/machinery/light/small{dir = 8},/obj/item/weapon/book/manual/wiki/security_space_law,/obj/item/device/camera{desc = "A single-use polaroid camera."; name = "detective's camera"; pictures_left = 30},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/security/detectives_office) "aEc" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/security/detectives_office) "aEd" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/security/detectives_office) "aEe" = (/obj/machinery/light/small,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -26},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/security/detectives_office) diff --git a/_maps/map_files/MiniStation/MiniStation.dmm b/_maps/map_files/MiniStation/MiniStation.dmm index 0c7fe627d5b..421c27d42ed 100644 --- a/_maps/map_files/MiniStation/MiniStation.dmm +++ b/_maps/map_files/MiniStation/MiniStation.dmm @@ -347,7 +347,7 @@ "gI" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/storage/box/handcuffs,/obj/item/weapon/pen,/turf/simulated/floor/plasteel,/area/security/brig) "gJ" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 2; on = 1},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/security/brig) "gK" = (/obj/machinery/computer/security/wooden_tv,/obj/item/device/radio/intercom{broadcasting = 0; freerange = 0; listening = 1; name = "Common Channel"; pixel_y = 25},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/security/brig) -"gL" = (/obj/structure/table/wood,/obj/item/device/camera{desc = "A one use - polaroid camera. 30 photos left."; name = "detectives camera"; pictures_left = 30},/obj/machinery/atmospherics/components/unary/vent_pump{dir = 8; on = 1},/obj/item/device/taperecorder{pixel_y = 0},/obj/machinery/camera/autoname,/obj/item/weapon/folder/yellow,/obj/machinery/newscaster{pixel_y = 32},/turf/simulated/floor/carpet,/area/security/brig) +"gL" = (/obj/structure/table/wood,/obj/item/device/camera{desc = "A single-use polaroid camera."; name = "detectives camera"; pictures_left = 30},/obj/machinery/atmospherics/components/unary/vent_pump{dir = 8; on = 1},/obj/item/device/taperecorder{pixel_y = 0},/obj/machinery/camera/autoname,/obj/item/weapon/folder/yellow,/obj/machinery/newscaster{pixel_y = 32},/turf/simulated/floor/carpet,/area/security/brig) "gM" = (/obj/item/weapon/storage/secure/safe{pixel_x = 4; pixel_y = 26},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/carpet,/area/security/brig) "gN" = (/obj/machinery/mineral/ore_redemption{input_dir = 4},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/hallway/primary/central) "gO" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "loadingarea"},/area/hallway/primary/central) diff --git a/_maps/map_files/TgStation/tgstation.2.1.3.dmm b/_maps/map_files/TgStation/tgstation.2.1.3.dmm index 1d29e8e7877..90a0faa6225 100644 --- a/_maps/map_files/TgStation/tgstation.2.1.3.dmm +++ b/_maps/map_files/TgStation/tgstation.2.1.3.dmm @@ -980,7 +980,7 @@ "asR" = (/obj/effect/decal/cleanable/cobweb,/obj/structure/closet/secure_closet/chemical,/turf/simulated/floor/plating,/area/maintenance/fpmaint) "asS" = (/obj/structure/closet/secure_closet/medical1,/turf/simulated/floor/plating,/area/maintenance/fpmaint) "asT" = (/obj/structure/closet/secure_closet/chemical,/turf/simulated/floor/plating,/area/maintenance/fpmaint) -"asU" = (/obj/machinery/requests_console{department = "Detective's office"; pixel_x = -30; pixel_y = 0},/obj/structure/table/wood,/obj/item/device/camera{desc = "A one use - polaroid camera. 30 photos left."; name = "detectives camera"; pictures_left = 30},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/security/detectives_office) +"asU" = (/obj/machinery/requests_console{department = "Detective's office"; pixel_x = -30; pixel_y = 0},/obj/structure/table/wood,/obj/item/device/camera{desc = "A single-use polaroid camera."; name = "detectives camera"; pictures_left = 30},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plasteel{icon_state = "grimy"},/area/security/detectives_office) "asV" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 1},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel,/area/crew_quarters/fitness) "asW" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/carpet,/area/security/detectives_office) "asX" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/crew_quarters/fitness) From d25c62fd537a378ee0a6cebaed29dde7bb740757 Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Fri, 1 Jan 2016 17:28:52 -0600 Subject: [PATCH 036/310] Fixes AI lawsync --- code/game/objects/items/weapons/AI_modules.dm | 7 ------- code/modules/mob/living/silicon/ai/laws.dm | 7 +++++++ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/code/game/objects/items/weapons/AI_modules.dm b/code/game/objects/items/weapons/AI_modules.dm index 125ba5e8d48..3eb2d6aa3b7 100644 --- a/code/game/objects/items/weapons/AI_modules.dm +++ b/code/game/objects/items/weapons/AI_modules.dm @@ -60,13 +60,6 @@ AI MODULES user << "Upload complete. [reciever]'s laws have been modified." reciever.show_laws() reciever.law_change_counter++ - if(isAI(reciever)) - var/mob/living/silicon/ai/A = reciever - for(var/mob/living/silicon/robot/R in A.connected_robots) - if(R.lawupdate) - R << "From now on, these are your laws:" - R.show_laws() - R.law_change_counter++ var/time = time2text(world.realtime,"hh:mm:ss") lawchanges.Add("[time] : [user.name]([user.key]) used [src.name] on [reciever.name]([reciever.key]).[law2log ? " The law specified [law2log]" : ""]") diff --git a/code/modules/mob/living/silicon/ai/laws.dm b/code/modules/mob/living/silicon/ai/laws.dm index 50c188ca629..a773df51a2c 100644 --- a/code/modules/mob/living/silicon/ai/laws.dm +++ b/code/modules/mob/living/silicon/ai/laws.dm @@ -17,3 +17,10 @@ src.laws_sanity_check() src.laws.show_laws(who) + if(everyone == 0) + for(var/mob/living/silicon/robot/R in connected_robots) + if(R.lawupdate) + R.lawsync() + R.show_laws() + R.law_change_counter++ + From c0de47d3d71204219b3f640a78f9e78d80170cf8 Mon Sep 17 00:00:00 2001 From: Kyle Spier-Swenson Date: Fri, 1 Jan 2016 15:29:58 -0800 Subject: [PATCH 037/310] Fixes lava turfs processing forever as well as some burn logic --- code/game/turfs/simulated/floor/plating.dm | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/code/game/turfs/simulated/floor/plating.dm b/code/game/turfs/simulated/floor/plating.dm index 4aa16f11ec1..2eb2b77aa36 100644 --- a/code/game/turfs/simulated/floor/plating.dm +++ b/code/game/turfs/simulated/floor/plating.dm @@ -193,30 +193,32 @@ SSobj.processing |= src /turf/simulated/floor/plating/lava/process() - if(!contents) + if(!burn_stuff()) processing = 0 SSobj.processing.Remove(src) - return - burn_stuff() + /turf/simulated/floor/plating/lava/proc/burn_stuff() + . = 0 for(var/atom/movable/AM in contents) - if(!istype(AM)) - return if(istype(AM, /obj)) var/obj/O = AM if(istype(O, /obj/effect/decal/cleanable/ash)) //So we don't get stuck burning the same ash pile forever qdel(O) - return + continue + . = 1 if(O.burn_state == FIRE_PROOF) O.burn_state = FLAMMABLE //Even fireproof things burn up in lava O.fire_act() + else if (istype(AM, /mob/living)) + . = 1 var/mob/living/L = AM L.adjustFireLoss(20) if(L) //mobs turning into object corpses could get deleted here. L.adjust_fire_stacks(20) L.IgniteMob() + /turf/simulated/floor/plating/lava/attackby(obj/item/C, mob/user, params) //Lava isn't a good foundation to build on return @@ -241,4 +243,4 @@ /turf/simulated/floor/plating/lava/smooth/airless oxygen = 0 nitrogen = 0 - temperature = TCMB \ No newline at end of file + temperature = TCMB From e395d5e8f14adfca8402a1248c1501910ca0ef2c Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Fri, 1 Jan 2016 18:00:32 -0600 Subject: [PATCH 038/310] Makes if check prettier --- code/modules/mob/living/silicon/ai/laws.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/silicon/ai/laws.dm b/code/modules/mob/living/silicon/ai/laws.dm index a773df51a2c..9f11d34359b 100644 --- a/code/modules/mob/living/silicon/ai/laws.dm +++ b/code/modules/mob/living/silicon/ai/laws.dm @@ -17,7 +17,7 @@ src.laws_sanity_check() src.laws.show_laws(who) - if(everyone == 0) + if(!everyone) for(var/mob/living/silicon/robot/R in connected_robots) if(R.lawupdate) R.lawsync() From 8aefb658156179d5e8c4c4ad74a111f907c0fd4e Mon Sep 17 00:00:00 2001 From: Bjorn Neergaard Date: Fri, 1 Jan 2016 18:16:03 -0600 Subject: [PATCH 039/310] Rename UI components to be more reflective of tgui name --- tgui/assets/tgui.js | 4 +- tgui/scripts/interfaces/air_alarm.ract | 10 +-- tgui/scripts/interfaces/air_alarm/back.ract | 2 +- .../interfaces/air_alarm/controls.ract | 44 +++++----- tgui/scripts/interfaces/air_alarm/modes.ract | 12 +-- .../interfaces/air_alarm/scrubbers.ract | 48 +++++------ tgui/scripts/interfaces/air_alarm/status.ract | 24 +++--- .../interfaces/air_alarm/thresholds.ract | 6 +- tgui/scripts/interfaces/air_alarm/vents.ract | 44 +++++----- .../interfaces/airlock_electronics.ract | 16 ++-- tgui/scripts/interfaces/apc.ract | 82 +++++++++---------- tgui/scripts/interfaces/atmos_filter.ract | 48 +++++------ tgui/scripts/interfaces/atmos_mixer.ract | 44 +++++----- tgui/scripts/interfaces/atmos_pump.ract | 28 +++---- tgui/scripts/interfaces/canister.ract | 74 ++++++++--------- tgui/scripts/interfaces/chem_dispenser.ract | 42 +++++----- tgui/scripts/interfaces/chem_heater.ract | 28 +++---- tgui/scripts/interfaces/cryo.ract | 64 +++++++-------- tgui/scripts/interfaces/error.ract | 4 +- tgui/scripts/interfaces/smes.ract | 82 +++++++++---------- tgui/scripts/interfaces/solar_control.ract | 78 +++++++++--------- tgui/scripts/interfaces/space_heater.ract | 56 ++++++------- tgui/scripts/interfaces/tanks.ract | 50 +++++------ tgui/scripts/tgui.ract | 12 +-- 24 files changed, 451 insertions(+), 451 deletions(-) diff --git a/tgui/assets/tgui.js b/tgui/assets/tgui.js index d6c9951b840..ee3fda3cac8 100644 --- a/tgui/assets/tgui.js +++ b/tgui/assets/tgui.js @@ -4,5 +4,5 @@ return this.parentWindow}},textContent:{get:function(){return 11===this.nodeType }function ha(t){return 1===t.length&&t[0].t===xc}function fa(t,e){var n;for(n in e)e.hasOwnProperty(n)&&da(t.instance,t.root,n,e[n])}function da(t,e,n,r){"string"!=typeof r&&p("Components currently only support simple events - you cannot include arguments. Sorry!"),t.on(n,function(){var t,n;return arguments.length&&arguments[0]&&arguments[0].node&&(t=Array.prototype.shift.call(arguments)),n=Array.prototype.slice.call(arguments),Bs(e,r,{event:t,args:n}),!1})}function ma(t,e){var n,r;if(!e)throw Error('Component "'+this.name+'" not found');n=this.parentFragment=t.parentFragment,r=n.root,this.root=r,this.type=Sc,this.name=t.template.e,this.index=t.index,this.indexRefBindings={},this.yielders={},this.resolvers=[],Sm(this,e,t.template.a,t.template.f,t.template.p),Am(this,t.template.v),(t.template.t0||t.template.t1||t.template.t2||t.template.o)&&m('The "intro", "outro" and "decorator" directives have no effect on components',{ractive:this.instance}),Pm(this)}function va(t,e){function n(n){n.rebind(t,e)}var r;this.resolvers.forEach(n);for(var i in this.yielders)this.yielders[i][0]&&n(this.yielders[i][0]);(r=this.root._liveComponentQueries["_"+this.name])&&r._makeDirty()}function ga(){var t=this.instance;return t.render(this.parentFragment.getNode()),this.rendered=!0,t.fragment.detach()}function ba(){return""+this.instance.fragment}function ya(){var t=this.instance;this.resolvers.forEach(G),wa(this),t._observers.forEach(Q),t.fragment.unbind(),t.viewmodel.teardown(),t.fragment.rendered&&t.el.__ractive_instances__&&L(t.el.__ractive_instances__,t),Lm.fire(t)}function wa(t){var e,n;e=t.root;do(n=e._liveComponentQueries["_"+t.name])&&n._remove(t);while(e=e.parent)}function xa(t){this.shouldDestroy=t,this.instance.unrender()}function _a(t){var e=this;this.owner=t.owner,this.parent=this.owner.parentFragment,this.root=t.root,this.pElement=t.pElement,this.context=t.context,this.index=t.index,this.key=t.key,this.registeredIndexRefs=[],this.cssIds="cssIds"in t?t.cssIds:this.parent?this.parent.cssIds:null,this.items=t.template.map(function(n,r){return ka({parentFragment:e,pElement:t.pElement,template:n,index:r})}),this.value=this.argsList=null,this.dirtyArgs=this.dirtyValue=!0,this.bound=!0}function ka(t){if("string"==typeof t.template)return new vl(t);switch(t.template.t){case Ac:return new zm(t);case xc:return new ql(t);case kc:return new up(t);case _c:return new Cp(t);case Ec:var e=void 0;return(e=dd(t.parentFragment.root,t.template.e))?new Um(t,e):new nd(t);case Tc:return new fd(t);case Cc:return new Bm(t);case Pc:return new Wm(t);default:throw Error("Something very strange happened. Please file an issue at https://github.com/ractivejs/ractive/issues. Thanks!")}}function Ea(t,e){(!this.owner||this.owner.hasContext)&&_(this,"context",t,e),this.items.forEach(function(n){n.rebind&&n.rebind(t,e)})}function Ta(){var t;return 1===this.items.length?t=this.items[0].render():(t=document.createDocumentFragment(),this.items.forEach(function(e){t.appendChild(e.render())})),this.rendered=!0,t}function Ca(t){return this.items?this.items.map(t?Sa:Oa).join(""):""}function Oa(t){return""+t}function Sa(t){return t.toString(!0)}function Aa(){this.bound&&(this.items.forEach(Pa),this.bound=!1)}function Pa(t){t.unbind&&t.unbind()}function ja(t){if(!this.rendered)throw Error("Attempted to unrender a fragment that was not rendered");this.items.forEach(function(e){return e.unrender(t)}),this.rendered=!1}function Na(t){var e,n,r,i,a;if(t=t||{},"object"!=typeof t)throw Error("The reset method takes either no arguments, or an object containing new data");for((n=this.viewmodel.wrapped[""])&&n.reset?n.reset(t)===!1&&this.viewmodel.reset(t):this.viewmodel.reset(t),r=oc.reset(this),i=r.length;i--;)if(rv.indexOf(r[i])>-1){a=!0;break}if(a){var o=void 0;this.viewmodel.mark(Go),(o=this.component)&&(o.shouldDestroy=!0),this.unrender(),o&&(o.shouldDestroy=!1),this.fragment.template!==this.template&&(this.fragment.unbind(),this.fragment=new ev({template:this.template,root:this,owner:this})),e=this.render(this.el,this.anchor)}else e=ms.start(this,!0),this.viewmodel.mark(Go),ms.end();return iv.fire(this,t),e}function Fa(t){var e,n;Ku.init(null,this,{template:t}),e=this.transitionsEnabled,this.transitionsEnabled=!1,(n=this.component)&&(n.shouldDestroy=!0),this.unrender(),n&&(n.shouldDestroy=!1),this.fragment.unbind(),this.fragment=new ev({template:this.template,root:this,owner:this}),this.render(this.el,this.anchor),this.transitionsEnabled=e}function Ma(t,e){var n,r;if(r=ms.start(this,!0),c(t)){n=t;for(t in n)n.hasOwnProperty(t)&&(e=n[t],Ra(this,t,e))}else Ra(this,t,e);return ms.end(),r}function Ra(t,e,n){e=E(O(e)),e.isPattern?T(t,e).forEach(function(e){t.viewmodel.set(e,n)}):t.viewmodel.set(e,n)}function La(t,e){return Ko(this,t,void 0===e?-1:-e)}function Ia(){var t;return this.fragment.unbind(),this.viewmodel.teardown(),this._observers.forEach(Q),this.fragment.rendered&&this.el.__ractive_instances__&&L(this.el.__ractive_instances__,this),this.shouldDestroy=!0,t=this.fragment.rendered?this.unrender():os.resolve(),dv.fire(this),this._boundFunctions.forEach(Da),t}function Da(t){delete t.fn[t.prop]}function Ua(t){var e=this;if("string"!=typeof t)throw new TypeError(Fo);var n=void 0;return/\*/.test(t)?(n={},T(this,E(O(t))).forEach(function(t){n[t.str]=!e.viewmodel.get(t)}),this.set(n)):this.set(t,!this.get(t))}function Va(){return this.fragment.toString(!0)}function Ba(){var t,e;if(!this.fragment.rendered)return m("ractive.unrender() was called on a Ractive instance that was not rendered"),os.resolve();for(t=ms.start(this,!0),e=!this.component||this.component.shouldDestroy||this.shouldDestroy;this._animations[0];)this._animations[0].stop();return this.fragment.unrender(e),L(this.el.__ractive_instances__,this),bv.fire(this),ms.end(),t}function qa(t){var e;return t=E(t)||Go,e=ms.start(this,!0),this.viewmodel.mark(t),ms.end(),xv.fire(this,t),e}function za(t,e){var n,r,i;if("string"!=typeof t||e){i=[];for(r in this._twowayBindings)(!t||E(r).equalsOrStartsWith(t))&&i.push.apply(i,this._twowayBindings[r])}else i=this._twowayBindings[t];return n=Ha(this,i),this.set(n)}function Ha(t,e){var n={},r=[];return e.forEach(function(t){var e,i;if(!t.radioName||t.element.node.checked){if(t.checkboxName)return void(r[t.keypath.str]||t.changed()||(r.push(t.keypath),r[t.keypath.str]=t));e=t.attribute.value,i=t.getValue(),F(e,i)||s(e,i)||(n[t.keypath.str]=i)}}),r.length&&r.forEach(function(t){var e,i,a;e=r[t.str],i=e.attribute.value,a=e.getValue(),F(i,a)||(n[t.str]=a)}),n}function Wa(t,e){return"function"==typeof e&&/_super/.test(t)}function $a(t){for(var e={};t;)Ga(t,e),Qa(t,e),t=t._Parent!==Av?t._Parent:!1;return e}function Ga(t,e){ec.forEach(function(n){Ka(n.useDefaults?t.prototype:t,e,n.name)})}function Ka(t,e,n){var r,i=Object.keys(t[n]);i.length&&((r=e[n])||(r=e[n]={}),i.filter(function(t){return!(t in r)}).forEach(function(e){return r[e]=t[n][e]}))}function Qa(t,e){Object.keys(t.prototype).forEach(function(n){if("computed"!==n){var r=t.prototype[n];if(n in e){if("function"==typeof e[n]&&"function"==typeof r&&e[n]._method){var i=void 0,a=r._method;a&&(r=r._method),i=Ev(e[n]._method,r),a&&(i._method=i),e[n]=i}}else e[n]=r._method?r._method:r}})}function Ya(){for(var t=arguments.length,e=Array(t),n=0;t>n;n++)e[n]=arguments[n];return e.length?e.reduce(Ja,this):Ja(this)}function Ja(t){var e,n,i=void 0===arguments[1]?{}:arguments[1];return i.prototype instanceof Av&&(i=Tv(i)),e=function(t){return this instanceof e?void Cm(this,t):new e(t)},n=wo(t.prototype),n.constructor=e,_o(e,{defaults:{value:n},extend:{value:Ya,writable:!0,configurable:!0},_Parent:{value:t}}),oc.extend(t,n,i),qu.extend(t,n,i),i.computed&&(n.computed=r(wo(t.prototype.computed),i.computed)),e.prototype=n,e}var Za,Xa,to,eo,no,ro,io,ao=3,oo={el:void 0,append:!1,template:{v:ao,t:[]},preserveWhitespace:!1,sanitize:!1,stripComments:!0,delimiters:["{{","}}"],tripleDelimiters:["{{{","}}}"],interpolate:!1,data:{},computed:{},magic:!1,modifyArrays:!0,adapt:[],isolated:!1,twoway:!0,lazy:!1,noIntro:!1,transitionsEnabled:!0,complete:void 0,css:null,noCssTransform:!1},so=oo,uo={linear:function(t){return t},easeIn:function(t){return Math.pow(t,3)},easeOut:function(t){return Math.pow(t-1,3)+1},easeInOut:function(t){return(t/=.5)<1?.5*Math.pow(t,3):.5*(Math.pow(t-2,3)+2)}};Za="object"==typeof document,Xa="undefined"!=typeof navigator&&/jsDom/.test(navigator.appName),to="undefined"!=typeof console&&"function"==typeof console.warn&&"function"==typeof console.warn.apply;try{Object.defineProperty({},"test",{value:0}),eo=!0}catch(co){eo=!1}no={html:"http://www.w3.org/1999/xhtml",mathml:"http://www.w3.org/1998/Math/MathML",svg:"http://www.w3.org/2000/svg",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"},ro="undefined"==typeof document?!1:document&&document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1"),io=["o","ms","moz","webkit"];var lo,po,ho,fo,mo,vo,go,bo,yo;if(lo=ro?function(t,e){return e&&e!==no.html?document.createElementNS(e,t):document.createElement(t)}:function(t,e){if(e&&e!==no.html)throw"This browser does not support namespaces other than http://www.w3.org/1999/xhtml. The most likely cause of this error is that you're trying to render SVG in an older browser. See http://docs.ractivejs.org/latest/svg-and-older-browsers for more information";return document.createElement(t)},Za){for(ho=lo("div"),fo=["matches","matchesSelector"],yo=function(t){return function(e,n){return e[t](n)}},go=fo.length;go--&&!po;)if(mo=fo[go],ho[mo])po=yo(mo);else for(bo=io.length;bo--;)if(vo=io[go]+mo.substr(0,1).toUpperCase()+mo.substring(1),ho[vo]){po=yo(vo);break}po||(po=function(t,e){var n,r,i;for(r=t.parentNode,r||(ho.innerHTML="",r=ho,t=t.cloneNode(),ho.appendChild(t)),n=r.querySelectorAll(e),i=n.length;i--;)if(n[i]===t)return!0;return!1})}else po=null;var wo,xo,_o,ko=null;try{Object.defineProperty({},"test",{value:0}),Za&&Object.defineProperty(document.createElement("div"),"test",{value:0}),xo=Object.defineProperty}catch(Eo){xo=function(t,e,n){t[e]=n.value}}try{try{Object.defineProperties({},{test:{value:0}})}catch(Eo){throw Eo}Za&&Object.defineProperties(lo("div"),{test:{value:0}}),_o=Object.defineProperties}catch(Eo){_o=function(t,e){var n;for(n in e)e.hasOwnProperty(n)&&xo(t,n,e[n])}}try{Object.create(null),wo=Object.create}catch(Eo){wo=function(){var t=function(){};return function(e,n){var r;return null===e?{}:(t.prototype=e,r=new t,n&&Object.defineProperties(r,n),r)}}()}var To,Co,Oo,So=Object.prototype.hasOwnProperty,Ao=Object.prototype.toString,Po=/^\[object (?:Array|FileList)\]$/,jo=function(){},No={};to?!function(){var t=["%cRactive.js %c0.7.3 %cin debug mode, %cmore...","color: rgb(114, 157, 52); font-weight: normal;","color: rgb(85, 85, 85); font-weight: normal;","color: rgb(85, 85, 85); font-weight: normal;","color: rgb(82, 140, 224); font-weight: normal; text-decoration: underline;"],e="You're running Ractive 0.7.3 in debug mode - messages will be printed to the console to help you fix problems and optimise your application.\n\nTo disable debug mode, add this line at the start of your app:\n Ractive.DEBUG = false;\n\nTo disable debug mode when your app is minified, add this snippet:\n Ractive.DEBUG = /unminified/.test(function(){/*unminified*/});\n\nGet help and support:\n http://docs.ractivejs.org\n http://stackoverflow.com/questions/tagged/ractivejs\n http://groups.google.com/forum/#!forum/ractive-js\n http://twitter.com/ractivejs\n\nFound a bug? Raise an issue:\n https://github.com/ractivejs/ractive/issues\n\n";Oo=function(){var n=!!console.groupCollapsed;console[n?"groupCollapsed":"log"].apply(console,t),console.log(e),n&&console.groupEnd(t),Oo=jo},Co=function(t,e){if(Oo(),"object"==typeof e[e.length-1]){var n=e.pop(),r=n?n.ractive:null;if(r){var i=void 0;r.component&&(i=r.component.name)&&(t="<"+i+"> "+t);var a=void 0;(a=n.node||r.fragment&&r.fragment.rendered&&r.find("*"))&&e.push(a)}}console.warn.apply(console,["%cRactive.js: %c"+t,"color: rgb(114, 157, 52);","color: rgb(85, 85, 85);"].concat(e))},To=function(){console.log.apply(console,arguments)}}():Co=To=Oo=jo;var Fo="Bad arguments",Mo='A function was specified for "%s" %s, but no %s was returned',Ro=function(t,e){return'Missing "'+t+'" '+e+" plugin. You may need to download a plugin via http://docs.ractivejs.org/latest/plugins#"+e+"s"},Lo=function(t,e,n,r){if(t===e)return y(e);if(r){var i=g("interpolators",n,r);if(i)return i(t,e)||y(e);p(Ro(r,"interpolator"))}return Uo.number(t,e)||Uo.array(t,e)||Uo.object(t,e)||y(e)},Io=Lo,Do={number:function(t,e){var n;return u(t)&&u(e)?(t=+t,e=+e,n=e-t,n?function(e){return t+e*n}:function(){return t}):null},array:function(t,e){var n,r,i,o;if(!a(t)||!a(e))return null;for(n=[],r=[],o=i=Math.min(t.length,e.length);o--;)r[o]=Io(t[o],e[o]);for(o=i;o=this.duration?(null!==a&&(ms.start(this.root),this.root.viewmodel.set(a,this.to),ms.end()),this.step&&this.step(1,this.to),this.complete(this.to),i=this.root._animations.indexOf(this),-1===i&&m("Animation was not found"),this.root._animations.splice(i,1),this.running=!1,!1):(e=this.easing?this.easing(t/this.duration):t/this.duration,null!==a&&(n=this.interpolator(e),ms.start(this.root),this.root.viewmodel.set(a,n),ms.end()),this.step&&this.step(e,n),!0)):!1},stop:function(){var t;this.running=!1,t=this.root._animations.indexOf(this),-1===t&&m("Animation was not found"),this.root._animations.splice(t,1)}};var ws=ys,xs=nt,_s={stop:jo},ks=it,Es=new ns("detach"),Ts=at,Cs=ot,Os=function(){var t,e,n;t=this._root[this._isComponentQuery?"liveComponentQueries":"liveQueries"],e=this.selector,n=t.indexOf(e),-1!==n&&(t.splice(n,1),t[e]=null)},Ss=function(t,e){var n,r,i,a,o,s,u,c,l,p;for(n=ut(t.component||t._ractive.proxy),r=ut(e.component||e._ractive.proxy),i=R(n),a=R(r);i&&i===a;)n.pop(),r.pop(),o=i,i=R(n),a=R(r);if(i=i.component||i,a=a.component||a,l=i.parentFragment,p=a.parentFragment,l===p)return s=l.items.indexOf(i),u=p.items.indexOf(a),s-u||n.length-r.length;if(c=o.fragments)return s=c.indexOf(l),u=c.indexOf(p),s-u||n.length-r.length;throw Error("An unexpected condition was met while comparing the position of two components. Please file an issue at https://github.com/RactiveJS/Ractive/issues - thanks!")},As=function(t,e){var n;return t.compareDocumentPosition?(n=t.compareDocumentPosition(e),2&n?1:-1):Ss(t,e)},Ps=function(){this.sort(this._isComponentQuery?Ss:As),this._dirty=!1},js=function(){var t=this;this._dirty||(this._dirty=!0,ms.scheduleTask(function(){t._sort()}))},Ns=function(t){var e=this.indexOf(this._isComponentQuery?t.instance:t);-1!==e&&this.splice(e,1)},Fs=ct,Ms=lt,Rs=pt,Ls=ht,Is=ft,Ds=dt,Us={enqueue:function(t,e){t.event&&(t._eventQueue=t._eventQueue||[],t._eventQueue.push(t.event)),t.event=e},dequeue:function(t){t._eventQueue&&t._eventQueue.length?t.event=t._eventQueue.pop():delete t.event}},Vs=Us,Bs=mt,qs=bt,zs=yt,Hs={capture:!0,noUnwrap:!0,fullRootGet:!0},Ws=wt,$s=new ns("insert"),Gs=_t,Ks=function(t,e,n,r){this.root=t,this.keypath=e,this.callback=n,this.defer=r.defer,this.context=r&&r.context?r.context:t};Ks.prototype={init:function(t){this.value=this.root.get(this.keypath.str),t!==!1?this.update():this.oldValue=this.value},setValue:function(t){var e=this;s(t,this.value)||(this.value=t,this.defer&&this.ready?ms.scheduleTask(function(){return e.update()}):this.update())},update:function(){this.updating||(this.updating=!0,this.callback.call(this.context,this.value,this.oldValue,this.keypath.str),this.oldValue=this.value,this.updating=!1)}};var Qs,Ys=Ks,Js=kt,Zs=Array.prototype.slice;Qs=function(t,e,n,r){this.root=t,this.callback=n,this.defer=r.defer,this.keypath=e,this.regex=RegExp("^"+e.str.replace(/\./g,"\\.").replace(/\*/g,"([^\\.]+)")+"$"),this.values={},this.defer&&(this.proxies=[]),this.context=r&&r.context?r.context:t},Qs.prototype={init:function(t){var e,n;if(e=Js(this.root,this.keypath),t!==!1)for(n in e)e.hasOwnProperty(n)&&this.update(E(n));else this.values=e},update:function(t){var e,n=this;if(t.isPattern){e=Js(this.root,t);for(t in e)e.hasOwnProperty(t)&&this.update(E(t))}else if(!this.root.viewmodel.implicitChanges[t.str])return this.defer&&this.ready?void ms.scheduleTask(function(){return n.getProxy(t).update()}):void this.reallyUpdate(t)},reallyUpdate:function(t){var e,n,r,i;return e=t.str,n=this.root.viewmodel.get(t),this.updating?void(this.values[e]=n):(this.updating=!0,s(n,this.values[e])&&this.ready||(r=Zs.call(this.regex.exec(e),1),i=[n,this.values[e],e].concat(r),this.values[e]=n,this.callback.apply(this.context,i)),void(this.updating=!1))},getProxy:function(t){var e=this;return this.proxies[t.str]||(this.proxies[t.str]={update:function(){return e.reallyUpdate(t)}}),this.proxies[t.str]}};var Xs,tu,eu,nu,ru,iu,au=Qs,ou=Et,su={},uu=Tt,cu=Ct,lu=function(t){return t.trim()},pu=function(t){return""!==t},hu=Ot,fu=St,du=At,mu=Pt,vu=Array.prototype,gu=function(t){return function(e){for(var n=arguments.length,r=Array(n>1?n-1:0),i=1;n>i;i++)r[i-1]=arguments[i];var o,s,u,c,l=[];if(e=E(O(e)),o=this.viewmodel.get(e),s=o.length,!a(o))throw Error("Called ractive."+t+"('"+e.str+"'), but '"+e.str+"' does not refer to an array");return l=mu(o,t,r),c=vu[t].apply(o,r),u=ms.start(this,!0).then(function(){return c}),l?this.viewmodel.smartUpdate(e,o,l):this.viewmodel.mark(e),ms.end(),u}},bu=gu("pop"),yu=gu("push"),wu="/* Ractive.js component styles */\n",xu=[],_u=!1;Za?(eu=document.createElement("style"),eu.type="text/css",nu=document.getElementsByTagName("head")[0],iu=!1,ru=eu.styleSheet,tu=function(){var t=wu+xu.map(function(t){return"\n/* {"+t.id+"} */\n"+t.styles}).join("\n");ru?ru.cssText=t:eu.innerHTML=t,iu||(nu.appendChild(eu),iu=!0)},Xs={add:function(t){xu.push(t),_u=!0},apply:function(){_u&&(tu(),_u=!1)}}):Xs={add:jo,apply:jo};var ku,Eu,Tu,Cu=Xs,Ou=Nt,Su=new ns("render"),Au=new ns("complete"),Pu={extend:function(t,e,n){e.adapt=Mt(e.adapt,M(n.adapt))},init:function(){}},ju=Pu,Nu=Rt,Fu=/(?:^|\})?\s*([^\{\}]+)\s*\{/g,Mu=/\/\*.*?\*\//g,Ru=/((?:(?:\[[^\]+]\])|(?:[^\s\+\>\~:]))+)((?::[^\s\+\>\~\(]+(?:\([^\)]+\))?)?\s*[\s\+\>\~]?)\s*/g,Lu=/^@media/,Iu=/\[data-ractive-css~="\{[a-z0-9-]+\}"]/g,Du=1,Uu={name:"css",extend:function(t,e,n){if(n.css){var r=Du++,i=n.noCssTransform?n.css:Nu(n.css,r);e.cssId=r,Cu.add({id:r,styles:i})}},init:function(){}},Vu=Uu,Bu={name:"data",extend:function(t,e,n){var r=void 0,i=void 0;if(n.data&&c(n.data))for(r in n.data)i=n.data[r],i&&"object"==typeof i&&(c(i)||a(i))&&m("Passing a `data` option with object and array properties to Ractive.extend() is discouraged, as mutating them is likely to cause bugs. Consider using a data function instead:\n\n // this...\n data: function () {\n return {\n myObject: {}\n };\n })\n\n // instead of this:\n data: {\n myObject: {}\n }");e.data=Ut(e.data,n.data)},init:function(t,e,n){var r=Ut(t.prototype.data,n.data);return"function"==typeof r&&(r=r.call(e)),r||{}},reset:function(t){var e=this.init(t.constructor,t,t.viewmodel);return t.viewmodel.reset(e),!0}},qu=Bu,zu=null,Hu=["preserveWhitespace","sanitize","stripComments","delimiters","tripleDelimiters","interpolate"],Wu={fromId:Ht,isHashedId:Wt,isParsed:$t,getParseOptions:Gt,createHelper:qt,parse:zt},$u=Wu,Gu={name:"template",extend:function(t,e,n){var r;"template"in n&&(r=n.template,"function"==typeof r?e.template=r:e.template=Jt(r,e))},init:function(t,e,n){var r,i;r="template"in n?n.template:t.prototype.template,"function"==typeof r&&(i=r,r=Qt(e,i),e._config.template={fn:i,result:r}),r=Jt(r,e),e.template=r.t,r.p&&Zt(e.partials,r.p)},reset:function(t){var e,n=Kt(t);return n?(e=Jt(n,t),t.template=e.t,Zt(t.partials,e.p,!0),!0):void 0}},Ku=Gu;ku=["adaptors","components","computed","decorators","easing","events","interpolators","partials","transitions"],Eu=function(t,e){this.name=t,this.useDefaults=e},Eu.prototype={constructor:Eu,extend:function(t,e,n){this.configure(this.useDefaults?t.defaults:t,this.useDefaults?e:e.constructor,n)},init:function(){},configure:function(t,e,n){var r,i=this.name,a=n[i];r=wo(t[i]);for(var o in a)r[o]=a[o];e[i]=r},reset:function(t){var e=t[this.name],n=!1;return Object.keys(e).forEach(function(t){var r=e[t];r._fn&&(r._fn.isOwner?e[t]=r._fn:delete e[t],n=!0)}),n}},Tu=ku.map(function(t){return new Eu(t,"computed"===t)});var Qu,Yu,Ju,Zu,Xu,tc,ec=Tu,nc=Xt,rc=re;Zu={adapt:ju,css:Vu,data:qu,template:Ku},Ju=Object.keys(so),tc=oe(Ju.filter(function(t){return!Zu[t]})),Xu=oe(Ju.concat(ec.map(function(t){return t.name}))),Yu=[].concat(Ju.filter(function(t){return!ec[t]&&!Zu[t]}),ec,Zu.data,Zu.template,Zu.css),Qu={extend:function(t,e,n){return ie("extend",t,e,n)},init:function(t,e,n){return ie("init",t,e,n)},reset:function(t){return Yu.filter(function(e){return e.reset&&e.reset(t)}).map(function(t){return t.name})},order:Yu};var ic,ac,oc=Qu,sc=se,uc=ue,cc=ce,lc=le,pc=pe,hc=he,fc=fe,dc=de,mc=/^\s+/;ac=function(t){this.name="ParseError",this.message=t;try{throw Error(t)}catch(e){this.stack=e.stack}},ac.prototype=Error.prototype,ic=function(t,e){var n,r,i=0;for(this.str=t,this.options=e||{},this.pos=0,this.lines=this.str.split("\n"),this.lineEnds=this.lines.map(function(t){var e=i+t.length+1;return i=e,e},0),this.init&&this.init(t,e),n=[];this.posn;n+=1)if(this.pos=e,i=t[n](this))return i;return null},getLinePos:function(t){for(var e,n=0,r=0;t>=this.lineEnds[n];)r=this.lineEnds[n],n+=1;return e=t-r,[n+1,e+1,t]},error:function(t){var e=this.getLinePos(this.pos),n=e[0],r=e[1],i=this.lines[e[0]-1],a=0,o=i.replace(/\t/g,function(t,n){return n/g,ul=/&/g;var dl=function(){return e(this.node)},ml=function(t){this.type=wc,this.text=t.template};ml.prototype={detach:dl,firstNode:function(){return this.node},render:function(){return this.node||(this.node=document.createTextNode(this.text)),this.node},toString:function(t){return t?Ee(this.text):this.text},unrender:function(t){return t?this.detach():void 0}};var vl=ml,gl=Te,bl=Ce,yl=function(t,e,n){var r;this.ref=e,this.resolved=!1,this.root=t.root,this.parentFragment=t.parentFragment,this.callback=n,r=us(t.root,e,t.parentFragment),void 0!=r?this.resolve(r):ms.addUnresolved(this)};yl.prototype={resolve:function(t){this.keypath&&!t&&ms.addUnresolved(this),this.resolved=!0,this.keypath=t,this.callback(t)},forceResolution:function(){this.resolve(E(this.ref))},rebind:function(t,e){var n;void 0!=this.keypath&&(n=this.keypath.replace(t,e),void 0!==n&&this.resolve(n))},unbind:function(){this.resolved||ms.removeUnresolved(this)}};var wl=yl,xl=function(t,e,n){this.parentFragment=t.parentFragment,this.ref=e,this.callback=n,this.rebind()},_l={"@keypath":{prefix:"c",prop:["context"]},"@index":{prefix:"i",prop:["index"]},"@key":{prefix:"k",prop:["key","index"]}};xl.prototype={rebind:function(){var t,e=this.ref,n=this.parentFragment,r=_l[e];if(!r)throw Error('Unknown special reference "'+e+'" - valid references are @index, @key and @keypath');if(this.cached)return this.callback(E("@"+r.prefix+Oe(this.cached,r)));if(-1!==r.prop.indexOf("index")||-1!==r.prop.indexOf("key"))for(;n;){if(n.owner.currentSubtype===Lc&&void 0!==(t=Oe(n,r)))return this.cached=n,n.registerIndexRef(this),this.callback(E("@"+r.prefix+t));n=!n.parent&&n.owner&&n.owner.component&&n.owner.component.parentFragment&&!n.owner.component.instance.isolated?n.owner.component.parentFragment:n.parent}else for(;n;){if(void 0!==(t=Oe(n,r)))return this.callback(E("@"+r.prefix+t.str));n=n.parent}},unbind:function(){this.cached&&this.cached.unregisterIndexRef(this)}};var kl=xl,El=function(t,e,n){this.parentFragment=t.parentFragment,this.ref=e,this.callback=n,e.ref.fragment.registerIndexRef(this),this.rebind()};El.prototype={rebind:function(){var t,e=this.ref.ref;t="k"===e.ref.t?"k"+e.fragment.key:"i"+e.fragment.index,void 0!==t&&this.callback(E("@"+t))},unbind:function(){this.ref.ref.fragment.unregisterIndexRef(this)}};var Tl=El,Cl=Se;Se.resolve=function(t){var e,n,r={};for(e in t.refs)n=t.refs[e],r[n.ref.n]="k"===n.ref.t?n.fragment.key:n.fragment.index;return r};var Ol,Sl=Ae,Al=Pe,Pl={},jl=Function.prototype.bind;Ol=function(t,e,n,r){var i,a=this;i=t.root,this.root=i,this.parentFragment=e,this.callback=r,this.owner=t,this.str=n.s,this.keypaths=[],this.pending=n.r.length,this.refResolvers=n.r.map(function(t,e){return Sl(a,t,function(t){a.resolve(e,t)})}),this.ready=!0,this.bubble()},Ol.prototype={bubble:function(){this.ready&&(this.uniqueString=Ne(this.str,this.keypaths),this.keypath=Fe(this.uniqueString),this.createEvaluator(),this.callback(this.keypath))},unbind:function(){for(var t;t=this.refResolvers.pop();)t.unbind()},resolve:function(t,e){this.keypaths[t]=e,this.bubble()},createEvaluator:function(){var t,e,n,r,i,a=this;r=this.keypath,t=this.root.viewmodel.computations[r.str],t?this.root.viewmodel.mark(r):(i=Al(this.str,this.refResolvers.length),e=this.keypaths.map(function(t){var e;return"undefined"===t?function(){}:t.isSpecial?(e=t.value,function(){return e}):function(){var e=a.root.viewmodel.get(t,{noUnwrap:!0,fullRootGet:!0});return"function"==typeof e&&(e=Re(e,a.root)),e}}),n={deps:this.keypaths.filter(Me),getter:function(){var t=e.map(je);return i.apply(null,t)}},t=this.root.viewmodel.compute(r,n))},rebind:function(t,e){this.refResolvers.forEach(function(n){return n.rebind(t,e)})}};var Nl=Ol,Fl=function(t,e,n){var r=this;this.resolver=e,this.root=e.root,this.parentFragment=n,this.viewmodel=e.root.viewmodel,"string"==typeof t?this.value=t:t.t===Fc?this.refResolver=Sl(this,t.n,function(t){r.resolve(t)}):new Nl(e,n,t,function(t){r.resolve(t)})};Fl.prototype={resolve:function(t){this.keypath&&this.viewmodel.unregister(this.keypath,this),this.keypath=t,this.value=this.viewmodel.get(t),this.bind(),this.resolver.bubble()},bind:function(){this.viewmodel.register(this.keypath,this)},rebind:function(t,e){this.refResolver&&this.refResolver.rebind(t,e)},setValue:function(t){this.value=t,this.resolver.bubble()},unbind:function(){this.keypath&&this.viewmodel.unregister(this.keypath,this),this.refResolver&&this.refResolver.unbind()},forceResolution:function(){this.refResolver&&this.refResolver.forceResolution()}};var Ml=Fl,Rl=function(t,e,n){var r,i,a,o,s=this;this.parentFragment=o=t.parentFragment,this.root=r=t.root,this.mustache=t,this.ref=i=e.r,this.callback=n,this.unresolved=[],(a=us(r,i,o))?this.base=a:this.baseResolver=new wl(this,i,function(t){s.base=t,s.baseResolver=null,s.bubble()}),this.members=e.m.map(function(t){return new Ml(t,s,o)}),this.ready=!0,this.bubble()};Rl.prototype={getKeypath:function(){var t=this.members.map(Le);return!t.every(Ie)||this.baseResolver?null:this.base.join(t.join("."))},bubble:function(){this.ready&&!this.baseResolver&&this.callback(this.getKeypath())},unbind:function(){this.members.forEach(G)},rebind:function(t,e){var n;if(this.base){var r=this.base.replace(t,e);r&&r!==this.base&&(this.base=r,n=!0)}this.members.forEach(function(r){r.rebind(t,e)&&(n=!0)}),n&&this.bubble()},forceResolution:function(){this.baseResolver&&(this.base=E(this.ref),this.baseResolver.unbind(),this.baseResolver=null),this.members.forEach(De),this.bubble()}};var Ll=Rl,Il=Ue,Dl=Ve,Ul=Be,Vl={getValue:bl,init:Il,resolve:Dl,rebind:Ul},Bl=function(t){this.type=xc,Vl.init(this,t)};Bl.prototype={update:function(){this.node.data=void 0==this.value?"":this.value},resolve:Vl.resolve,rebind:Vl.rebind,detach:dl,unbind:gl,render:function(){return this.node||(this.node=document.createTextNode(n(this.value))),this.node},unrender:function(t){t&&e(this.node)},getValue:Vl.getValue,setValue:function(t){var e;this.keypath&&(e=this.root.viewmodel.wrapped[this.keypath.str])&&(t=e.get()),s(t,this.value)||(this.value=t,this.parentFragment.bubble(),this.node&&ms.addView(this))},firstNode:function(){return this.node},toString:function(t){var e=""+n(this.value);return t?Ee(e):e}};var ql=Bl,zl=qe,Hl=ze,Wl=He,$l=We,Gl=$e,Kl=Ge,Ql=Ke,Yl=Qe,Jl=Ye,Zl=function(t,e){Vl.rebind.call(this,t,e)},Xl=Ze,tp=Xe,ep=pn,np=hn,rp=fn,ip=vn,ap=function(t){this.type=kc,this.subtype=this.currentSubtype=t.template.n,this.inverted=this.subtype===Rc,this.pElement=t.pElement,this.fragments=[],this.fragmentsToCreate=[],this.fragmentsToRender=[],this.fragmentsToUnrender=[],t.template.i&&(this.indexRefs=t.template.i.split(",").map(function(t,e){return{n:t,t:0===e?"k":"i"}})),this.renderedFragments=[],this.length=0,Vl.init(this,t)};ap.prototype={bubble:zl,detach:Hl,find:Wl,findAll:$l,findAllComponents:Gl,findComponent:Kl,findNextNode:Ql,firstNode:Yl,getIndexRef:function(t){if(this.indexRefs)for(var e=this.indexRefs.length;e--;){var n=this.indexRefs[e];if(n.n===t)return n}},getValue:Vl.getValue,shuffle:Jl,rebind:Zl,render:Xl,resolve:Vl.resolve,setValue:tp,toString:ep,unbind:np,unrender:rp,update:ip};var op,sp,up=ap,cp=gn,lp=bn,pp=yn,hp=wn,fp={};try{lo("table").innerHTML="foo"}catch(Eo){op=!0,sp={TABLE:['',"
"],THEAD:['',"
"],TBODY:['',"
"],TR:['',"
"],SELECT:['"]}}var dp=function(t,e,n){var r,i,a,o,s,u=[];if(null!=t&&""!==t){for(op&&(i=sp[e.tagName])?(r=xn("DIV"),r.innerHTML=i[0]+t+i[1],r=r.querySelector(".x"),"SELECT"===r.tagName&&(a=r.options[r.selectedIndex])):e.namespaceURI===no.svg?(r=xn("DIV"),r.innerHTML=''+t+"",r=r.querySelector(".x")):(r=xn(e.tagName),r.innerHTML=t,"SELECT"===r.tagName&&(a=r.options[r.selectedIndex]));o=r.firstChild;)u.push(o),n.appendChild(o);if("SELECT"===e.tagName)for(s=u.length;s--;)u[s]!==a&&(u[s].selected=!1)}return u},mp=_n,vp=En,gp=Tn,bp=Cn,yp=On,wp=Sn,xp=function(t){this.type=_c,Vl.init(this,t)};xp.prototype={detach:cp,find:lp,findAll:pp,firstNode:hp,getValue:Vl.getValue,rebind:Vl.rebind,render:vp,resolve:Vl.resolve,setValue:gp,toString:bp,unbind:gl,unrender:yp,update:wp};var _p,kp,Ep,Tp,Cp=xp,Op=function(){this.parentFragment.bubble()},Sp=An,Ap=function(t){return this.node?po(this.node,t)?this.node:this.fragment&&this.fragment.find?this.fragment.find(t):void 0:null},Pp=function(t,e){e._test(this,!0)&&e.live&&(this.liveQueries||(this.liveQueries=[])).push(e),this.fragment&&this.fragment.findAll(t,e)},jp=function(t,e){this.fragment&&this.fragment.findAllComponents(t,e)},Np=function(t){return this.fragment?this.fragment.findComponent(t):void 0},Fp=Pn,Mp=jn,Rp=Nn,Lp=/^true|on|yes|1$/i,Ip=/^[0-9]+$/,Dp=function(t,e){var n,r,i;return i=e.a||{},r={},n=i.twoway,void 0!==n&&(r.twoway=0===n||Lp.test(n)),n=i.lazy,void 0!==n&&(0!==n&&Ip.test(n)?r.lazy=parseInt(n):r.lazy=0===n||Lp.test(n)),r},Up=Fn;_p="altGlyph altGlyphDef altGlyphItem animateColor animateMotion animateTransform clipPath feBlend feColorMatrix feComponentTransfer feComposite feConvolveMatrix feDiffuseLighting feDisplacementMap feDistantLight feFlood feFuncA feFuncB feFuncG feFuncR feGaussianBlur feImage feMerge feMergeNode feMorphology feOffset fePointLight feSpecularLighting feSpotLight feTile feTurbulence foreignObject glyphRef linearGradient radialGradient textPath vkern".split(" "),kp="attributeName attributeType baseFrequency baseProfile calcMode clipPathUnits contentScriptType contentStyleType diffuseConstant edgeMode externalResourcesRequired filterRes filterUnits glyphRef gradientTransform gradientUnits kernelMatrix kernelUnitLength keyPoints keySplines keyTimes lengthAdjust limitingConeAngle markerHeight markerUnits markerWidth maskContentUnits maskUnits numOctaves pathLength patternContentUnits patternTransform patternUnits pointsAtX pointsAtY pointsAtZ preserveAlpha preserveAspectRatio primitiveUnits refX refY repeatCount repeatDur requiredExtensions requiredFeatures specularConstant specularExponent spreadMethod startOffset stdDeviation stitchTiles surfaceScale systemLanguage tableValues targetX targetY textLength viewBox viewTarget xChannelSelector yChannelSelector zoomAndPan".split(" "),Ep=function(t){for(var e={},n=t.length;n--;)e[t[n].toLowerCase()]=t[n];return e},Tp=Ep(_p.concat(kp));var Vp=function(t){var e=t.toLowerCase();return Tp[e]||e},Bp=function(t,e){var n,r;if(n=e.indexOf(":"),-1===n||(r=e.substr(0,n),"xmlns"===r))t.name=t.element.namespace!==no.html?Vp(e):e;else if(e=e.substring(n+1),t.name=Vp(e),t.namespace=no[r.toLowerCase()],t.namespacePrefix=r,!t.namespace)throw'Unknown namespace ("'+r+'")'},qp=Mn,zp=Rn,Hp=Ln,Wp=In,$p={"accept-charset":"acceptCharset",accesskey:"accessKey",bgcolor:"bgColor","class":"className",codebase:"codeBase",colspan:"colSpan",contenteditable:"contentEditable",datetime:"dateTime",dirname:"dirName","for":"htmlFor","http-equiv":"httpEquiv",ismap:"isMap",maxlength:"maxLength",novalidate:"noValidate",pubdate:"pubDate",readonly:"readOnly",rowspan:"rowSpan",tabindex:"tabIndex",usemap:"useMap"},Gp=Dn,Kp=Vn,Qp=Bn,Yp=qn,Jp=zn,Zp=Hn,Xp=Wn,th=$n,eh=Gn,nh=Kn,rh=Qn,ih=Yn,ah=Jn,oh=Zn,sh=Xn,uh=function(t){this.init(t)};uh.prototype={bubble:Up,init:zp,rebind:Hp,render:Wp,toString:Gp,unbind:Kp,update:sh};var ch,lh=uh,ph=function(t,e){var n,r,i=[];for(n in e)"twoway"!==n&&"lazy"!==n&&e.hasOwnProperty(n)&&(r=new lh({element:t,name:n,value:e[n],root:t.root}),i[n]=r,"value"!==n&&i.push(r));return(r=i.value)&&i.push(r),i};"undefined"!=typeof document&&(ch=lo("div"));var hh=function(t,e){this.element=t,this.root=t.root,this.parentFragment=t.parentFragment,this.attributes=[],this.fragment=new ev({root:t.root,owner:this,template:[e]})};hh.prototype={bubble:function(){this.node&&this.update(),this.element.bubble()},rebind:function(t,e){this.fragment.rebind(t,e)},render:function(t){this.node=t,this.isSvg=t.namespaceURI===no.svg,this.update()},unbind:function(){this.fragment.unbind()},update:function(){var t,e,n=this;t=""+this.fragment,e=tr(t,this.isSvg),this.attributes.filter(function(t){return er(e,t)}).forEach(function(t){n.node.removeAttribute(t.name)}),e.forEach(function(t){n.node.setAttribute(t.name,t.value)}),this.attributes=e},toString:function(){return""+this.fragment}};var fh=hh,dh=function(t,e){return e?e.map(function(e){return new fh(t,e)}):[]},mh=function(t){var e,n,r,i;if(this.element=t,this.root=t.root,this.attribute=t.attributes[this.name||"value"],e=this.attribute.interpolator,e.twowayBinding=this,n=e.keypath){if("}"===n.str.slice(-1))return v("Two-way binding does not work with expressions (`%s` on <%s>)",e.resolver.uniqueString,t.name,{ractive:this.root}),!1;if(n.isSpecial)return v("Two-way binding does not work with %s",e.resolver.ref,{ractive:this.root}),!1}else{var a=e.template.r?"'"+e.template.r+"' reference":"expression";m("The %s being used for two-way binding is ambiguous, and may cause unexpected results. Consider initialising your data to eliminate the ambiguity",a,{ractive:this.root}),e.resolver.forceResolution(),n=e.keypath}this.attribute.isTwoway=!0,this.keypath=n,r=this.root.viewmodel.get(n),void 0===r&&this.getInitialValue&&(r=this.getInitialValue(),void 0!==r&&this.root.viewmodel.set(n,r)),(i=nr(t))&&(this.resetValue=r,i.formBindings.push(this))};mh.prototype={handleChange:function(){var t=this;ms.start(this.root),this.attribute.locked=!0,this.root.viewmodel.set(this.keypath,this.getValue()),ms.scheduleTask(function(){return t.attribute.locked=!1}),ms.end()},rebound:function(){var t,e,n;e=this.keypath,n=this.attribute.interpolator.keypath,e!==n&&(L(this.root._twowayBindings[e.str],this),this.keypath=n,t=this.root._twowayBindings[n.str]||(this.root._twowayBindings[n.str]=[]),t.push(this))},unbind:function(){}},mh.extend=function(t){var e,n=this;return e=function(t){mh.call(this,t),this.init&&this.init()},e.prototype=wo(n.prototype),r(e.prototype,t),e.extend=mh.extend,e};var vh,gh=mh,bh=rr;vh=gh.extend({getInitialValue:function(){return""},getValue:function(){return this.element.node.value},render:function(){var t,e=this.element.node,n=!1;this.rendered=!0,t=this.root.lazy,this.element.lazy===!0?t=!0:this.element.lazy===!1?t=!1:u(this.element.lazy)?(t=!1,n=+this.element.lazy):u(t||"")&&(n=+t,t=!1,this.element.lazy=n),this.handler=n?ar:bh,e.addEventListener("change",bh,!1),t||(e.addEventListener("input",this.handler,!1),e.attachEvent&&e.addEventListener("keyup",this.handler,!1)),e.addEventListener("blur",ir,!1)},unrender:function(){var t=this.element.node;this.rendered=!1,t.removeEventListener("change",bh,!1),t.removeEventListener("input",this.handler,!1),t.removeEventListener("keyup",this.handler,!1),t.removeEventListener("blur",ir,!1)}});var yh=vh,wh=yh.extend({getInitialValue:function(){return this.element.fragment?""+this.element.fragment:""},getValue:function(){return this.element.node.innerHTML}}),xh=wh,_h=or,kh={},Eh=gh.extend({name:"checked",init:function(){this.siblings=_h(this.root._guid,"radio",this.element.getAttribute("name")),this.siblings.push(this)},render:function(){var t=this.element.node;t.addEventListener("change",bh,!1),t.attachEvent&&t.addEventListener("click",bh,!1)},unrender:function(){var t=this.element.node;t.removeEventListener("change",bh,!1),t.removeEventListener("click",bh,!1)},handleChange:function(){ms.start(this.root),this.siblings.forEach(function(t){t.root.viewmodel.set(t.keypath,t.getValue())}),ms.end()},getValue:function(){return this.element.node.checked},unbind:function(){L(this.siblings,this)}}),Th=Eh,Ch=gh.extend({name:"name",init:function(){this.siblings=_h(this.root._guid,"radioname",this.keypath.str),this.siblings.push(this),this.radioName=!0},getInitialValue:function(){return this.element.getAttribute("checked")?this.element.getAttribute("value"):void 0},render:function(){var t=this.element.node;t.name="{{"+this.keypath.str+"}}",t.checked=this.root.viewmodel.get(this.keypath)==this.element.getAttribute("value"),t.addEventListener("change",bh,!1),t.attachEvent&&t.addEventListener("click",bh,!1)},unrender:function(){var t=this.element.node;t.removeEventListener("change",bh,!1),t.removeEventListener("click",bh,!1)},getValue:function(){var t=this.element.node;return t._ractive?t._ractive.value:t.value},handleChange:function(){this.element.node.checked&&gh.prototype.handleChange.call(this)},rebound:function(t,e){var n;gh.prototype.rebound.call(this,t,e),(n=this.element.node)&&(n.name="{{"+this.keypath.str+"}}")},unbind:function(){L(this.siblings,this)}}),Oh=Ch,Sh=gh.extend({name:"name",getInitialValue:function(){return this.noInitialValue=!0,[]},init:function(){var t,e;this.checkboxName=!0,this.siblings=_h(this.root._guid,"checkboxes",this.keypath.str),this.siblings.push(this),this.noInitialValue&&(this.siblings.noInitialValue=!0),this.siblings.noInitialValue&&this.element.getAttribute("checked")&&(t=this.root.viewmodel.get(this.keypath),e=this.element.getAttribute("value"),t.push(e))},unbind:function(){L(this.siblings,this)},render:function(){var t,e,n=this.element.node;t=this.root.viewmodel.get(this.keypath),e=this.element.getAttribute("value"),a(t)?this.isChecked=N(t,e):this.isChecked=t==e,n.name="{{"+this.keypath.str+"}}",n.checked=this.isChecked,n.addEventListener("change",bh,!1),n.attachEvent&&n.addEventListener("click",bh,!1)},unrender:function(){var t=this.element.node;t.removeEventListener("change",bh,!1),t.removeEventListener("click",bh,!1)},changed:function(){var t=!!this.isChecked;return this.isChecked=this.element.node.checked,this.isChecked===t},handleChange:function(){this.isChecked=this.element.node.checked,gh.prototype.handleChange.call(this)},getValue:function(){return this.siblings.filter(sr).map(ur)}}),Ah=Sh,Ph=gh.extend({name:"checked",render:function(){var t=this.element.node;t.addEventListener("change",bh,!1),t.attachEvent&&t.addEventListener("click",bh,!1)},unrender:function(){var t=this.element.node;t.removeEventListener("change",bh,!1),t.removeEventListener("click",bh,!1)},getValue:function(){return this.element.node.checked}}),jh=Ph,Nh=gh.extend({getInitialValue:function(){var t,e,n,r,i=this.element.options;if(void 0===this.element.getAttribute("value")&&(e=t=i.length,t)){for(;e--;)if(i[e].getAttribute("selected")){n=i[e].getAttribute("value"),r=!0;break}if(!r)for(;++ee;e+=1)if(r=t[e],t[e].selected)return i=r._ractive?r._ractive.value:r.value},forceUpdate:function(){var t=this,e=this.getValue();void 0!==e&&(this.attribute.locked=!0,ms.scheduleTask(function(){return t.attribute.locked=!1}),this.root.viewmodel.set(this.keypath,e))}}),Fh=Nh,Mh=Fh.extend({getInitialValue:function(){return this.element.options.filter(function(t){return t.getAttribute("selected")}).map(function(t){return t.getAttribute("value")})},render:function(){var t;this.element.node.addEventListener("change",bh,!1),t=this.root.viewmodel.get(this.keypath),void 0===t&&this.handleChange()},unrender:function(){this.element.node.removeEventListener("change",bh,!1)},setValue:function(){throw Error("TODO not implemented yet")},getValue:function(){var t,e,n,r,i,a;for(t=[],e=this.element.node.options,r=e.length,n=0;r>n;n+=1)i=e[n],i.selected&&(a=i._ractive?i._ractive.value:i.value,t.push(a));return t},handleChange:function(){var t,e,n;return t=this.attribute,e=t.value,n=this.getValue(),void 0!==e&&F(n,e)||Fh.prototype.handleChange.call(this),this},forceUpdate:function(){var t=this,e=this.getValue();void 0!==e&&(this.attribute.locked=!0,ms.scheduleTask(function(){return t.attribute.locked=!1}),this.root.viewmodel.set(this.keypath,e))},updateModel:function(){void 0!==this.attribute.value&&this.attribute.value.length||this.root.viewmodel.set(this.keypath,this.initialValue)}}),Rh=Mh,Lh=gh.extend({render:function(){this.element.node.addEventListener("change",bh,!1)},unrender:function(){this.element.node.removeEventListener("change",bh,!1)},getValue:function(){return this.element.node.files}}),Ih=Lh,Dh=yh.extend({getInitialValue:function(){},getValue:function(){var t=parseFloat(this.element.node.value);return isNaN(t)?void 0:t}}),Uh=cr,Vh=pr,Bh=hr,qh=fr,zh=dr,Hh=/^event(?:\.(.+))?/,Wh=br,$h=yr,Gh={},Kh={touchstart:!0,touchmove:!0,touchend:!0,touchcancel:!0,touchleave:!0},Qh=xr,Yh=_r,Jh=kr,Zh=Er,Xh=Tr,tf=function(t,e,n){this.init(t,e,n)};tf.prototype={bubble:Vh,fire:Bh,getAction:qh,init:zh,listen:$h,rebind:Qh,render:Yh,resolve:Jh,unbind:Zh,unrender:Xh};var ef=tf,nf=function(t,e){var n,r,i,a,o=[];for(r in e)if(e.hasOwnProperty(r))for(i=r.split("-"),n=i.length;n--;)a=new ef(t,i[n],e[r]),o.push(a);return o},rf=function(t,e){var n,r,i,a=this;this.element=t,this.root=n=t.root,r=e.n||e,("string"==typeof r||(i=new ev({template:r,root:n,owner:t}),r=""+i,i.unbind(),""!==r))&&(e.a?this.params=e.a:e.d&&(this.fragment=new ev({template:e.d,root:n,owner:t}),this.params=this.fragment.getArgsList(),this.fragment.bubble=function(){this.dirtyArgs=this.dirtyValue=!0,a.params=this.getArgsList(),a.ready&&a.update()}),this.fn=g("decorators",n,r),this.fn||p(Ro(r,"decorator")))};rf.prototype={init:function(){var t,e,n;if(t=this.element.node,this.params?(n=[t].concat(this.params),e=this.fn.apply(this.root,n)):e=this.fn.call(this.root,t),!e||!e.teardown)throw Error("Decorator definition must return an object with a teardown method");this.actual=e,this.ready=!0},update:function(){this.actual.update?this.actual.update.apply(this.root,this.params):(this.actual.teardown(!0),this.init())},rebind:function(t,e){this.fragment&&this.fragment.rebind(t,e)},teardown:function(t){this.torndown=!0,this.ready&&this.actual.teardown(),!t&&this.fragment&&this.fragment.unbind()}};var af,of,sf,uf=rf,cf=Nr,lf=Fr,pf=Ur,hf=function(t){return t.replace(/-([a-zA-Z])/g,function(t,e){return e.toUpperCase()})};Za?(of={},sf=lo("div").style,af=function(t){var e,n,r;if(t=hf(t),!of[t])if(void 0!==sf[t])of[t]=t;else for(r=t.charAt(0).toUpperCase()+t.substring(1),e=io.length;e--;)if(n=io[e],void 0!==sf[n+r]){of[t]=n+r;break}return of[t]}):af=null;var ff,df,mf=af;Za?(df=window.getComputedStyle||ko.getComputedStyle,ff=function(t){var e,n,r,i,o;if(e=df(this.node),"string"==typeof t)return o=e[mf(t)],"0px"===o&&(o=0),o;if(!a(t))throw Error("Transition$getStyle must be passed a string, or an array of strings representing CSS properties");for(n={},r=t.length;r--;)i=t[r],o=e[mf(i)],"0px"===o&&(o=0),n[i]=o;return n}):ff=null;var vf=ff,gf=function(t,e){var n;if("string"==typeof t)this.node.style[mf(t)]=e;else for(n in t)t.hasOwnProperty(n)&&(this.node.style[mf(n)]=t[n]);return this},bf=function(t){var e;this.duration=t.duration,this.step=t.step,this.complete=t.complete,"string"==typeof t.easing?(e=t.root.easing[t.easing],e||(v(Ro(t.easing,"easing")),e=Vr)):e="function"==typeof t.easing?t.easing:Vr,this.easing=e,this.start=Xo(),this.end=this.start+this.duration,this.running=!0,bs.add(this)};bf.prototype={tick:function(t){var e,n;return this.running?t>this.end?(this.step&&this.step(1),this.complete&&this.complete(1),!1):(e=t-this.start,n=this.easing(e/this.duration),this.step&&this.step(n),!0):!1},stop:function(){this.abort&&this.abort(),this.running=!1}};var yf,wf,xf,_f,kf,Ef,Tf,Cf,Of=bf,Sf=RegExp("^-(?:"+io.join("|")+")-"),Af=function(t){return t.replace(Sf,"")},Pf=RegExp("^(?:"+io.join("|")+")([A-Z])"),jf=function(t){var e;return t?(Pf.test(t)&&(t="-"+t),e=t.replace(/[A-Z]/g,function(t){return"-"+t.toLowerCase()})):""},Nf={},Ff={};Za?(wf=lo("div").style,function(){void 0!==wf.transition?(xf="transition",_f="transitionend",kf=!0):void 0!==wf.webkitTransition?(xf="webkitTransition",_f="webkitTransitionEnd",kf=!0):kf=!1}(),xf&&(Ef=xf+"Duration",Tf=xf+"Property",Cf=xf+"TimingFunction"),yf=function(t,e,n,r,i){setTimeout(function(){var a,o,s,u,c;u=function(){o&&s&&(t.root.fire(t.name+":end",t.node,t.isIntro),i())},a=(t.node.namespaceURI||"")+t.node.tagName,t.node.style[Tf]=r.map(mf).map(jf).join(","),t.node.style[Cf]=jf(n.easing||"linear"),t.node.style[Ef]=n.duration/1e3+"s",c=function(e){var n;n=r.indexOf(hf(Af(e.propertyName))),-1!==n&&r.splice(n,1),r.length||(t.node.removeEventListener(_f,c,!1),s=!0,u())},t.node.addEventListener(_f,c,!1),setTimeout(function(){for(var i,l,p,h,f,d=r.length,v=[];d--;)h=r[d],i=a+h,kf&&!Ff[i]&&(t.node.style[mf(h)]=e[h],Nf[i]||(l=t.getStyle(h),Nf[i]=t.getStyle(h)!=e[h],Ff[i]=!Nf[i],Ff[i]&&(t.node.style[mf(h)]=l))),(!kf||Ff[i])&&(void 0===l&&(l=t.getStyle(h)),p=r.indexOf(h),-1===p?m("Something very strange happened with transitions. Please raise an issue at https://github.com/ractivejs/ractive/issues - thanks!",{node:t.node}):r.splice(p,1),f=/[^\d]*$/.exec(e[h])[0],v.push({name:mf(h),interpolator:Io(parseFloat(l),parseFloat(e[h])),suffix:f}));v.length?new Of({root:t.root,duration:n.duration,easing:hf(n.easing||""),step:function(e){var n,r;for(r=v.length;r--;)n=v[r],t.node.style[n.name]=n.interpolator(e)+n.suffix},complete:function(){o=!0,u()}}):o=!0,r.length||(t.node.removeEventListener(_f,c,!1),s=!0,u())},0)},n.delay||0)}):yf=null;var Mf,Rf,Lf,If,Df,Uf=yf;if("undefined"!=typeof document){if(Mf="hidden",Df={},Mf in document)Lf="";else for(If=io.length;If--;)Rf=io[If],Mf=Rf+"Hidden",Mf in document&&(Lf=Rf);void 0!==Lf?(document.addEventListener(Lf+"visibilitychange",Br),Br()):("onfocusout"in document?(document.addEventListener("focusout",qr),document.addEventListener("focusin",zr)):(window.addEventListener("pagehide",qr),window.addEventListener("blur",qr),window.addEventListener("pageshow",zr),window.addEventListener("focus",zr)),Df.hidden=!1)}var Vf,Bf,qf,zf=Df;Za?(Bf=window.getComputedStyle||ko.getComputedStyle,Vf=function(t,e,n){var r,i=this;if(4===arguments.length)throw Error("t.animateStyle() returns a promise - use .then() instead of passing a callback");if(zf.hidden)return this.setStyle(t,e),qf||(qf=os.resolve());"string"==typeof t?(r={},r[t]=e):(r=t,n=e),n||(v('The "%s" transition does not supply an options object to `t.animateStyle()`. This will break in a future version of Ractive. For more info see https://github.com/RactiveJS/Ractive/issues/340',this.name),n=this);var a=new os(function(t){var e,a,o,s,u,c,l;if(!n.duration)return i.setStyle(r),void t();for(e=Object.keys(r),a=[],o=Bf(i.node),u={},c=e.length;c--;)l=e[c],s=o[mf(l)],"0px"===s&&(s=0),s!=r[l]&&(a.push(l),i.node.style[mf(l)]=s);return a.length?void Uf(i,r,n,a,t):void t()});return a}):Vf=null;var Hf=Vf,Wf=function(t,e){return"number"==typeof t?t={duration:t}:"string"==typeof t?t="slow"===t?{duration:600}:"fast"===t?{duration:200}:{duration:400}:t||(t={}),i({},t,e)},$f=Hr,Gf=function(t,e,n){this.init(t,e,n)};Gf.prototype={init:pf,start:$f,getStyle:vf,setStyle:gf,animateStyle:Hf,processParams:Wf};var Kf,Qf,Yf=Gf,Jf=$r;Kf=function(){var t=this.node,e=this.fragment.toString(!1);if(window&&window.appearsToBeIELessEqual8&&(t.type="text/css"),t.styleSheet)t.styleSheet.cssText=e;else{for(;t.hasChildNodes();)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}},Qf=function(){this.node.type&&"text/javascript"!==this.node.type||m("Script tag was updated. This does not cause the code to be re-evaluated!",{ractive:this.root}),this.node.text=this.fragment.toString(!1)};var Zf=function(){var t,e;return this.template.y?"":(t="<"+this.template.e,t+=this.attributes.map(Zr).join("")+this.conditionalAttributes.map(Zr).join(""),"option"===this.name&&Yr(this)&&(t+=" selected"),"input"===this.name&&Jr(this)&&(t+=" checked"),t+=">","textarea"===this.name&&void 0!==this.getAttribute("value")?t+=Ee(this.getAttribute("value")):void 0!==this.getAttribute("contenteditable")&&(t+=this.getAttribute("value")||""),this.fragment&&(e="script"!==this.name&&"style"!==this.name,t+=this.fragment.toString(e)),nl.test(this.template.e)||(t+=""),t)},Xf=Xr,td=ti,ed=function(t){this.init(t)};ed.prototype={bubble:Op,detach:Sp,find:Ap,findAll:Pp,findAllComponents:jp,findComponent:Np,findNextNode:Fp,firstNode:Mp,getAttribute:Rp,init:cf,rebind:lf,render:Jf,toString:Zf,unbind:Xf,unrender:td};var nd=ed,rd=/^\s*$/,id=/^\s*/,ad=function(t){var e,n,r,i;return e=t.split("\n"),n=e[0],void 0!==n&&rd.test(n)&&e.shift(),r=R(e),void 0!==r&&rd.test(r)&&e.pop(),i=e.reduce(ni,null),i&&(t=e.map(function(t){return t.replace(i,"")}).join("\n")),t},od=ri,sd=function(t,e){var n;return e?n=t.split("\n").map(function(t,n){return n?e+t:t}).join("\n"):t},ud='Could not find template for partial "%s"',cd=function(t){var e,n;e=this.parentFragment=t.parentFragment,this.root=e.root,this.type=Tc,this.index=t.index,this.name=t.template.r,this.rendered=!1,this.fragment=this.fragmentToRender=this.fragmentToUnrender=null,Vl.init(this,t),this.keypath||((n=od(this.root,this.name,e))?(gl.call(this),this.isNamed=!0,this.setTemplate(n)):v(ud,this.name))};cd.prototype={bubble:function(){this.parentFragment.bubble()},detach:function(){return this.fragment.detach()},find:function(t){return this.fragment.find(t)},findAll:function(t,e){return this.fragment.findAll(t,e)},findComponent:function(t){return this.fragment.findComponent(t)},findAllComponents:function(t,e){return this.fragment.findAllComponents(t,e)},firstNode:function(){return this.fragment.firstNode()},findNextNode:function(){return this.parentFragment.findNextNode(this)},getPartialName:function(){return this.isNamed&&this.name?this.name:void 0===this.value?this.name:this.value},getValue:function(){ return this.fragment.getValue()},rebind:function(t,e){this.isNamed||Ul.call(this,t,e),this.fragment&&this.fragment.rebind(t,e)},render:function(){return this.docFrag=document.createDocumentFragment(),this.update(),this.rendered=!0,this.docFrag},resolve:Vl.resolve,setValue:function(t){var e;(void 0===t||t!==this.value)&&(void 0!==t&&(e=od(this.root,""+t,this.parentFragment)),!e&&this.name&&(e=od(this.root,this.name,this.parentFragment))&&(gl.call(this),this.isNamed=!0),e||v(ud,this.name,{ractive:this.root}),this.value=t,this.setTemplate(e||[]),this.bubble(),this.rendered&&ms.addView(this))},setTemplate:function(t){this.fragment&&(this.fragment.unbind(),this.rendered&&(this.fragmentToUnrender=this.fragment)),this.fragment=new ev({template:t,root:this.root,owner:this,pElement:this.parentFragment.pElement}),this.fragmentToRender=this.fragment},toString:function(t){var e,n,r,i;return e=this.fragment.toString(t),n=this.parentFragment.items[this.index-1],n&&n.type===wc?(r=n.text.split("\n").pop(),(i=/^\s+$/.exec(r))?sd(e,i[0]):e):e},unbind:function(){this.isNamed||gl.call(this),this.fragment&&this.fragment.unbind()},unrender:function(t){this.rendered&&(this.fragment&&this.fragment.unrender(t),this.rendered=!1)},update:function(){var t,e;this.fragmentToUnrender&&(this.fragmentToUnrender.unrender(!0),this.fragmentToUnrender=null),this.fragmentToRender&&(this.docFrag.appendChild(this.fragmentToRender.render()),this.fragmentToRender=null),this.rendered&&(t=this.parentFragment.getNode(),e=this.parentFragment.findNextNode(this),t.insertBefore(this.docFrag,e))}};var ld,pd,hd,fd=cd,dd=ui,md=ci,vd=new ns("detach"),gd=li,bd=pi,yd=hi,wd=fi,xd=di,_d=mi,kd=function(t,e,n,r){var i=t.root,a=t.keypath;r?i.viewmodel.smartUpdate(a,e,r):i.viewmodel.mark(a)},Ed=[],Td=["pop","push","reverse","shift","sort","splice","unshift"];Td.forEach(function(t){var e=function(){for(var e=arguments.length,n=Array(e),r=0;e>r;r++)n[r]=arguments[r];var i,a,o,s;for(i=mu(this,t,n),a=Array.prototype[t].apply(this,arguments),ms.start(),this._ractive.setting=!0,s=this._ractive.wrappers.length;s--;)o=this._ractive.wrappers[s],ms.addRactive(o.root),kd(o,this,t,i);return ms.end(),this._ractive.setting=!1,a};xo(Ed,t,{value:e})}),ld={},ld.__proto__?(pd=function(t){t.__proto__=Ed},hd=function(t){t.__proto__=Array.prototype}):(pd=function(t){var e,n;for(e=Td.length;e--;)n=Td[e],xo(t,n,{value:Ed[n],configurable:!0})},hd=function(t){var e;for(e=Td.length;e--;)delete t[Td[e]]}),pd.unpatch=hd;var Cd,Od,Sd,Ad=pd;Cd={filter:function(t){return a(t)&&(!t._ractive||!t._ractive.setting)},wrap:function(t,e,n){return new Od(t,e,n)}},Od=function(t,e,n){this.root=t,this.value=e,this.keypath=E(n),e._ractive||(xo(e,"_ractive",{value:{wrappers:[],instances:[],setting:!1},configurable:!0}),Ad(e)),e._ractive.instances[t._guid]||(e._ractive.instances[t._guid]=0,e._ractive.instances.push(t)),e._ractive.instances[t._guid]+=1,e._ractive.wrappers.push(this)},Od.prototype={get:function(){return this.value},teardown:function(){var t,e,n,r,i;if(t=this.value,e=t._ractive,n=e.wrappers,r=e.instances,e.setting)return!1;if(i=n.indexOf(this),-1===i)throw Error(Sd);if(n.splice(i,1),n.length){if(r[this.root._guid]-=1,!r[this.root._guid]){if(i=r.indexOf(this.root),-1===i)throw Error(Sd);r.splice(i,1)}}else delete t._ractive,Ad.unpatch(this.value)}},Sd="Something went wrong in a rather interesting way";var Pd,jd,Nd=Cd,Fd=/^\s*[0-9]+\s*$/,Md=function(t){return Fd.test(t)?[]:{}};try{Object.defineProperty({},"test",{value:0}),Pd={filter:function(t,e,n){var r,i;return e?(e=E(e),(r=n.viewmodel.wrapped[e.parent.str])&&!r.magic?!1:(i=n.viewmodel.get(e.parent),a(i)&&/^[0-9]+$/.test(e.lastKey)?!1:i&&("object"==typeof i||"function"==typeof i))):!1},wrap:function(t,e,n){return new jd(t,e,n)}},jd=function(t,e,n){var r,i,a;return n=E(n),this.magic=!0,this.ractive=t,this.keypath=n,this.value=e,this.prop=n.lastKey,r=n.parent,this.obj=r.isRoot?t.viewmodel.data:t.viewmodel.get(r),i=this.originalDescriptor=Object.getOwnPropertyDescriptor(this.obj,this.prop),i&&i.set&&(a=i.set._ractiveWrappers)?void(-1===a.indexOf(this)&&a.push(this)):void vi(this,e,i)},jd.prototype={get:function(){return this.value},reset:function(t){return this.updating?void 0:(this.updating=!0,this.obj[this.prop]=t,ms.addRactive(this.ractive),this.ractive.viewmodel.mark(this.keypath,{keepExistingWrapper:!0}),this.updating=!1,!0)},set:function(t,e){this.updating||(this.obj[this.prop]||(this.updating=!0,this.obj[this.prop]=Md(t),this.updating=!1),this.obj[this.prop][t]=e)},teardown:function(){var t,e,n,r,i;return this.updating?!1:(t=Object.getOwnPropertyDescriptor(this.obj,this.prop),e=t&&t.set,void(e&&(r=e._ractiveWrappers,i=r.indexOf(this),-1!==i&&r.splice(i,1),r.length||(n=this.obj[this.prop],Object.defineProperty(this.obj,this.prop,this.originalDescriptor||{writable:!0,enumerable:!0,configurable:!0}),this.obj[this.prop]=n))))}}}catch(Eo){Pd=!1}var Rd,Ld,Id=Pd;Id&&(Rd={filter:function(t,e,n){return Id.filter(t,e,n)&&Nd.filter(t)},wrap:function(t,e,n){return new Ld(t,e,n)}},Ld=function(t,e,n){this.value=e,this.magic=!0,this.magicWrapper=Id.wrap(t,e,n),this.arrayWrapper=Nd.wrap(t,e,n)},Ld.prototype={get:function(){return this.value},teardown:function(){this.arrayWrapper.teardown(),this.magicWrapper.teardown()},reset:function(t){return this.magicWrapper.reset(t)}});var Dd=Rd,Ud=gi,Vd={},Bd=wi,qd=xi,zd=Ei,Hd=Ai,Wd=Pi,$d=function(t,e){this.computation=t,this.viewmodel=t.viewmodel,this.ref=e,this.root=this.viewmodel.ractive,this.parentFragment=this.root.component&&this.root.component.parentFragment};$d.prototype={resolve:function(t){this.computation.softDeps.push(t),this.computation.unresolvedDeps[t.str]=null,this.viewmodel.register(t,this.computation,"computed")}};var Gd=$d,Kd=function(t,e){this.key=t,this.getter=e.getter,this.setter=e.setter,this.hardDeps=e.deps||[],this.softDeps=[],this.unresolvedDeps={},this.depValues={},this._dirty=this._firstRun=!0};Kd.prototype={constructor:Kd,init:function(t){var e,n=this;this.viewmodel=t,this.bypass=!0,e=t.get(this.key),t.clearCache(this.key.str),this.bypass=!1,this.setter&&void 0!==e&&this.set(e),this.hardDeps&&this.hardDeps.forEach(function(e){return t.register(e,n,"computed")})},invalidate:function(){this._dirty=!0},get:function(){var t,e,n=this,r=!1;if(this.getting){var i="The "+this.key.str+" computation indirectly called itself. This probably indicates a bug in the computation. It is commonly caused by `array.sort(...)` - if that's the case, clone the array first with `array.slice().sort(...)`";return d(i),this.value}if(this.getting=!0,this._dirty){if(this._firstRun||!this.hardDeps.length&&!this.softDeps.length?r=!0:[this.hardDeps,this.softDeps].forEach(function(t){var e,i,a;if(!r)for(a=t.length;a--;)if(e=t[a],i=n.viewmodel.get(e),!s(i,n.depValues[e.str]))return n.depValues[e.str]=i,void(r=!0)}),r){this.viewmodel.capture();try{this.value=this.getter()}catch(a){m('Failed to compute "%s"',this.key.str),h(a.stack||a),this.value=void 0}t=this.viewmodel.release(),e=this.updateDependencies(t),e&&[this.hardDeps,this.softDeps].forEach(function(t){t.forEach(function(t){n.depValues[t.str]=n.viewmodel.get(t)})})}this._dirty=!1}return this.getting=this._firstRun=!1,this.value},set:function(t){if(this.setting)return void(this.value=t);if(!this.setter)throw Error("Computed properties without setters are read-only. (This may change in a future version of Ractive!)");this.setter(t)},updateDependencies:function(t){var e,n,r,i,a;for(n=this.softDeps,e=n.length;e--;)r=n[e],-1===t.indexOf(r)&&(i=!0,this.viewmodel.unregister(r,this,"computed"));for(e=t.length;e--;)r=t[e],-1!==n.indexOf(r)||this.hardDeps&&-1!==this.hardDeps.indexOf(r)||(i=!0,ji(this.viewmodel,r)&&!this.unresolvedDeps[r.str]?(a=new Gd(this,r.str),t.splice(e,1),this.unresolvedDeps[r.str]=a,ms.addUnresolved(a)):this.viewmodel.register(r,this,"computed"));return i&&(this.softDeps=t.slice()),i}};var Qd=Kd,Yd=Ni,Jd={FAILED_LOOKUP:!0},Zd=Fi,Xd={},tm=Ri,em=Li,nm=function(t,e){this.localKey=t,this.keypath=e.keypath,this.origin=e.origin,this.deps=[],this.unresolved=[],this.resolved=!1};nm.prototype={forceResolution:function(){this.keypath=this.localKey,this.setup()},get:function(t,e){return this.resolved?this.origin.get(this.map(t),e):void 0},getValue:function(){return this.keypath?this.origin.get(this.keypath):void 0},initViewmodel:function(t){this.local=t,this.setup()},map:function(t){return void 0===typeof this.keypath?this.localKey:t.replace(this.localKey,this.keypath)},register:function(t,e,n){this.deps.push({keypath:t,dep:e,group:n}),this.resolved&&this.origin.register(this.map(t),e,n)},resolve:function(t){void 0!==this.keypath&&this.unbind(!0),this.keypath=t,this.setup()},set:function(t,e){this.resolved||this.forceResolution(),this.origin.set(this.map(t),e)},setup:function(){var t=this;void 0!==this.keypath&&(this.resolved=!0,this.deps.length&&(this.deps.forEach(function(e){var n=t.map(e.keypath);if(t.origin.register(n,e.dep,e.group),e.dep.setValue)e.dep.setValue(t.origin.get(n));else{if(!e.dep.invalidate)throw Error("An unexpected error occurred. Please raise an issue at https://github.com/ractivejs/ractive/issues - thanks!");e.dep.invalidate()}}),this.origin.mark(this.keypath)))},setValue:function(t){if(!this.keypath)throw Error("Mapping does not have keypath, cannot set value. Please raise an issue at https://github.com/ractivejs/ractive/issues - thanks!");this.origin.set(this.keypath,t)},unbind:function(t){var e=this;t||delete this.local.mappings[this.localKey],this.resolved&&(this.deps.forEach(function(t){e.origin.unregister(e.map(t.keypath),t.dep,t.group)}),this.tracker&&this.origin.unregister(this.keypath,this.tracker))},unregister:function(t,e,n){var r,i;if(this.resolved){for(r=this.deps,i=r.length;i--;)if(r[i].dep===e){r.splice(i,1);break}this.origin.unregister(this.map(t),e,n)}}};var rm=Ii,im=function(t,e){var n,r,i,a;return n={},r=0,i=t.map(function(t,i){var o,s,u;s=r,u=e.length;do{if(o=e.indexOf(t,s),-1===o)return a=!0,-1;s=o+1}while(n[o]&&u>s);return o===r&&(r+=1),o!==i&&(a=!0),n[o]=!0,o})},am=Di,om={},sm=Bi,um=zi,cm=Hi,lm=Wi,pm=Gi,hm={implicit:!0},fm={noCascade:!0},dm=Qi,mm=Yi,vm=function(t){var e,n,r=t.adapt,i=t.data,a=t.ractive,o=t.computed,s=t.mappings;this.ractive=a,this.adaptors=r,this.onchange=t.onchange,this.cache={},this.cacheMap=wo(null),this.deps={computed:wo(null),"default":wo(null)},this.depsMap={computed:wo(null),"default":wo(null)},this.patternObservers=[],this.specials=wo(null),this.wrapped=wo(null),this.computations=wo(null),this.captureGroups=[],this.unresolvedImplicitDependencies=[],this.changes=[],this.implicitChanges={},this.noCascade={},this.data=i,this.mappings=wo(null);for(e in s)this.map(E(e),s[e]);if(i)for(e in i)(n=this.mappings[e])&&void 0===n.getValue()&&n.setValue(i[e]);for(e in o)s&&e in s&&p("Cannot map to a computed property ('%s')",e),this.compute(E(e),o[e]);this.ready=!0};vm.prototype={adapt:Ud,applyChanges:zd,capture:Hd,clearCache:Wd,compute:Yd,get:Zd,init:tm,map:em,mark:rm,merge:am,register:sm,release:um,reset:cm,set:lm,smartUpdate:pm,teardown:dm,unregister:mm};var gm=vm;Zi.prototype={constructor:Zi,begin:function(t){this.inProcess[t._guid]=!0},end:function(t){var e=t.parent;e&&this.inProcess[e._guid]?Xi(this.queue,e).push(t):ta(this,t),delete this.inProcess[t._guid]}};var bm=Zi,ym=ea,wm=/\$\{([^\}]+)\}/g,xm=new ns("construct"),_m=new ns("config"),km=new bm("init"),Em=0,Tm=["adaptors","components","decorators","easing","events","interpolators","partials","transitions"],Cm=aa,Om=la;la.prototype={bubble:function(){this.dirty||(this.dirty=!0,ms.addView(this))},update:function(){this.callback(this.fragment.getValue()),this.dirty=!1},rebind:function(t,e){this.fragment.rebind(t,e)},unbind:function(){this.fragment.unbind()}};var Sm=function(t,e,n,i,o){var s,u,c,l,p,h,f={},d={},v={},g=[];for(u=t.parentFragment,c=t.root,o=o||{},r(f,o),o.content=i||[],f[""]=o.content,e.defaults.el&&m("The <%s/> component has a default `el` property; it has been disregarded",t.name),l=u;l;){if(l.owner.type===Ac){p=l.owner.container;break}l=l.parent}return n&&Object.keys(n).forEach(function(e){var r,i,o=n[e];if("string"==typeof o)r=cl(o),d[e]=r?r.value:o;else if(0===o)d[e]=!0;else{if(!a(o))throw Error("erm wut");ha(o)?(v[e]={origin:t.root.viewmodel,keypath:void 0},i=pa(t,o[0],function(t){t.isSpecial?h?s.set(e,t.value):(d[e]=t.value,delete v[e]):h?s.viewmodel.mappings[e].resolve(t):v[e].keypath=t})):i=new Om(t,o,function(t){h?s.set(e,t):d[e]=t}),g.push(i)}}),s=wo(e.prototype),Cm(s,{el:null,append:!0,data:d,partials:o,magic:c.magic||e.defaults.magic,modifyArrays:c.modifyArrays,adapt:c.adapt},{parent:c,component:t,container:p,mappings:v,inlinePartials:f,cssIds:u.cssIds}),h=!0,t.resolvers=g,s},Am=fa,Pm=function(t){var e,n;for(e=t.root;e;)(n=e._liveComponentQueries["_"+t.name])&&n.push(t.instance),e=e.parent},jm=ma,Nm=va,Fm=ga,Mm=ba,Rm=ya,Lm=new ns("teardown"),Im=xa,Dm=function(t,e){this.init(t,e)};Dm.prototype={detach:md,find:gd,findAll:bd,findAllComponents:yd,findComponent:wd,findNextNode:xd,firstNode:_d,init:jm,rebind:Nm,render:Fm,toString:Mm,unbind:Rm,unrender:Im};var Um=Dm,Vm=function(t){this.type=Cc,this.value=t.template.c};Vm.prototype={detach:dl,firstNode:function(){return this.node},render:function(){return this.node||(this.node=document.createComment(this.value)),this.node},toString:function(){return""},unrender:function(t){t&&this.node.parentNode.removeChild(this.node)}};var Bm=Vm,qm=function(t){var e,n;this.type=Ac,this.container=e=t.parentFragment.root,this.component=n=e.component,this.container=e,this.containerFragment=t.parentFragment,this.parentFragment=n.parentFragment;var r=this.name=t.template.n||"",i=e._inlinePartials[r];i||(m('Could not find template for partial "'+r+'"',{ractive:t.root}),i=[]),this.fragment=new ev({owner:this,root:e.parent,template:i,pElement:this.containerFragment.pElement}),a(n.yielders[r])?n.yielders[r].push(this):n.yielders[r]=[this],ms.scheduleTask(function(){if(n.yielders[r].length>1)throw Error("A component template can only have one {{yield"+(r?" "+r:"")+"}} declaration at a time")})};qm.prototype={detach:function(){return this.fragment.detach()},find:function(t){return this.fragment.find(t)},findAll:function(t,e){return this.fragment.findAll(t,e)},findComponent:function(t){return this.fragment.findComponent(t)},findAllComponents:function(t,e){return this.fragment.findAllComponents(t,e)},findNextNode:function(){return this.containerFragment.findNextNode(this)},firstNode:function(){return this.fragment.firstNode()},getValue:function(t){return this.fragment.getValue(t)},render:function(){return this.fragment.render()},unbind:function(){this.fragment.unbind()},unrender:function(t){this.fragment.unrender(t),L(this.component.yielders[this.name],this)},rebind:function(t,e){this.fragment.rebind(t,e)},toString:function(){return""+this.fragment}};var zm=qm,Hm=function(t){this.declaration=t.template.a};Hm.prototype={init:jo,render:jo,unrender:jo,teardown:jo,toString:function(){return""}};var Wm=Hm,$m=_a,Gm=Ea,Km=Ta,Qm=Ca,Ym=Aa,Jm=ja,Zm=function(t){this.init(t)};Zm.prototype={bubble:sc,detach:uc,find:cc,findAll:lc,findAllComponents:pc,findComponent:hc,findNextNode:fc,firstNode:dc,getArgsList:pl,getNode:hl,getValue:fl,init:$m,rebind:Gm,registerIndexRef:function(t){var e=this.registeredIndexRefs;-1===e.indexOf(t)&&e.push(t)},render:Km,toString:Qm,unbind:Ym,unregisterIndexRef:function(t){var e=this.registeredIndexRefs;e.splice(e.indexOf(t),1)},unrender:Jm};var Xm,tv,ev=Zm,nv=Na,rv=["template","partials","components","decorators","events"],iv=new ns("reset"),av=function(t,e){function n(e,r,i){i&&i.partials[t]||e.forEach(function(e){e.type===Tc&&e.getPartialName()===t&&r.push(e),e.fragment&&n(e.fragment.items,r,i),a(e.fragments)?n(e.fragments,r,i):a(e.items)?n(e.items,r,i):e.type===Sc&&e.instance&&n(e.instance.fragment.items,r,e.instance),e.type===Ec&&(a(e.attributes)&&n(e.attributes,r,i),a(e.conditionalAttributes)&&n(e.conditionalAttributes,r,i))})}var r,i=[];return n(this.fragment.items,i),this.partials[t]=e,r=ms.start(this,!0),i.forEach(function(e){e.value=void 0,e.setValue(t)}),ms.end(),r},ov=Fa,sv=gu("reverse"),uv=Ma,cv=gu("shift"),lv=gu("sort"),pv=gu("splice"),hv=La,fv=Ia,dv=new ns("teardown"),mv=Ua,vv=Va,gv=Ba,bv=new ns("unrender"),yv=gu("unshift"),wv=qa,xv=new ns("update"),_v=za,kv={add:Yo,animate:xs,detach:ks,find:Ts,findAll:Ms,findAllComponents:Rs,findComponent:Ls,findContainer:Is,findParent:Ds,fire:qs,get:zs,insert:Ws,merge:Gs,observe:uu,observeOnce:cu,off:hu,on:fu,once:du,pop:bu,push:yu,render:Ou,reset:nv,resetPartial:av,resetTemplate:ov,reverse:sv,set:uv,shift:cv,sort:lv,splice:pv,subtract:hv,teardown:fv,toggle:mv,toHTML:vv,toHtml:vv,unrender:gv,unshift:yv,update:wv,updateModel:_v},Ev=function(t,e,n){return n||Wa(t,e)?function(){var n,r="_super"in this,i=this._super;return this._super=e,n=t.apply(this,arguments),r&&(this._super=i),n}:t},Tv=$a,Cv=Ya,Ov=function(t){var e,n,r={};return t&&(e=t._ractive)?(r.ractive=e.root,r.keypath=e.keypath.str,r.index={},(n=Cl(e.proxy.parentFragment))&&(r.index=Cl.resolve(n)),r):r};Xm=function(t){return this instanceof Xm?void Cm(this,t):new Xm(t)},tv={DEBUG:{writable:!0,value:!0},DEBUG_PROMISES:{writable:!0,value:!0},extend:{value:Cv},getNodeInfo:{value:Ov},parse:{value:zu},Promise:{value:os},svg:{value:ro},magic:{value:eo},VERSION:{value:"0.7.3"},adaptors:{writable:!0,value:{}},components:{writable:!0,value:{}},decorators:{writable:!0,value:{}},easing:{writable:!0,value:uo},events:{writable:!0,value:{}},interpolators:{writable:!0,value:Uo},partials:{writable:!0,value:{}},transitions:{writable:!0,value:{}}},_o(Xm,tv),Xm.prototype=r(kv,so),Xm.prototype.constructor=Xm,Xm.defaults=Xm.prototype;var Sv="function";if(typeof Date.now!==Sv||typeof String.prototype.trim!==Sv||typeof Object.keys!==Sv||typeof Array.prototype.indexOf!==Sv||typeof Array.prototype.forEach!==Sv||typeof Array.prototype.map!==Sv||typeof Array.prototype.filter!==Sv||"undefined"!=typeof window&&typeof window.addEventListener!==Sv)throw Error("It looks like you're attempting to use Ractive.js in an older browser. You'll need to use one of the 'legacy builds' in order to continue - see http://docs.ractivejs.org/latest/legacy-builds for more information.");var Av=Xm;return Av})},{}],8:[function(t,e,n){!function(){function t(t,e,n){return t.call.apply(t.bind,arguments)}function n(t,e,n){if(!t)throw Error();if(2r;r++)if(n[r]==e)return!0;return!1}function u(t){if("string"==typeof t.fa)return t.fa;var e=t.k.location.protocol;return"about:"==e&&(e=t.F.location.protocol),"https:"==e?"https:":"http:"}function c(t,e,n){function r(){u&&i&&o&&(u(s),u=null)}e=t.createElement("link",{rel:"stylesheet",href:e,media:"all"});var i=!1,o=!0,s=null,u=n||null;Z?(e.onload=function(){i=!0,r()},e.onerror=function(){i=!0,s=Error("Stylesheet failed to load"),r()}):setTimeout(function(){i=!0,r()},0),a(t,"head",e)}function l(t,e,n,r){var i=t.H.getElementsByTagName("head")[0];if(i){var a=t.createElement("script",{src:e}),o=!1;return a.onload=a.onreadystatechange=function(){o||this.readyState&&"loaded"!=this.readyState&&"complete"!=this.readyState||(o=!0,n&&n(null),a.onload=a.onreadystatechange=null,"HEAD"==a.parentNode.tagName&&i.removeChild(a))},i.appendChild(a),setTimeout(function(){o||(o=!0,n&&n(Error("Script load timeout")))},r||5e3),a}return null}function p(){this.S=0,this.K=null}function h(t){return t.S++,function(){t.S--,d(t)}}function f(t,e){t.K=e,d(t)}function d(t){0==t.S&&t.K&&(t.K(),t.K=null)}function m(t){this.ea=t||"-"}function v(t,e){this.Q=t,this.M=4,this.L="n";var n=(e||"n4").match(/^([nio])([1-9])$/i);n&&(this.L=n[1],this.M=parseInt(n[2],10))}function g(t){return w(t)+" "+(t.M+"00")+" 300px "+b(t.Q)}function b(t){var e=[];t=t.split(/,\s*/);for(var n=0;nparseInt(t[1],10)||536===parseInt(t[1],10)&&11>=parseInt(t[2],10))}return tt}function M(t,e,n){for(var r in X)if(X.hasOwnProperty(r)&&e===t.s[X[r]]&&n===t.s[X[r]])return!0;return!1}function R(t){var e,n=t.w.m.offsetWidth,r=t.A.m.offsetWidth;(e=n===t.s.serif&&r===t.s["sans-serif"])||(e=F()&&M(t,n,r)),e?J()-t.ga>=t.v?F()&&M(t,n,r)&&(null===t.Z||t.Z.hasOwnProperty(t.g.getName()))?I(t,t.G):I(t,t.J):L(t):I(t,t.G)}function L(t){setTimeout(r(function(){R(this)},t),50)}function I(t,e){setTimeout(r(function(){this.w.remove(),this.A.remove(),this.C.remove(),this.D.remove(),e(this.g)},t),0)}function D(t,e,n){this.a=t,this.p=e,this.P=0,this.ba=this.Y=!1,this.v=n}function U(t){0==--t.P&&t.Y&&(t.ba?(t=t.p,t.u&&o(t.j,[t.e.d(t.f,"active")],[t.e.d(t.f,"loading"),t.e.d(t.f,"inactive")]),T(t,"active")):E(t.p))}function V(t){this.F=t,this.q=new C,this.$=0,this.T=this.U=!0}function B(t,e,n,i,a){var s=0==--t.$;(t.T||t.U)&&setTimeout(function(){var t=a||null,u=i||null||{};if(0===n.length&&s)E(e.p);else{e.P+=n.length,s&&(e.Y=s);var c,l=[];for(c=0;ce;e++)r[e].load(function(e,n,r){B(t,a,e,n,r)})}function z(t,e,n){this.N=t?t:e+nt,this.o=[],this.R=[],this.ca=n||""}function H(t,e){for(var n=e.length,r=0;n>r;r++){var i=e[r].split(":");3==i.length&&t.R.push(i.pop());var a="";2==i.length&&""!=i[1]&&(a=":"),t.o.push(i.join(a))}}function W(t){this.o=t,this.aa=[],this.I={}}function $(t,e){this.a=t,this.c=e}function G(t,e){this.a=t,this.c=e,this.X=[]}function K(t,e){this.a=t,this.c=e}function Q(t,e){this.a=t,this.c=e}function Y(t,e){this.a=t,this.c=e}var J=Date.now||function(){return+new Date},Z=!!window.FontFace;i.prototype.createElement=function(t,e,n){if(t=this.H.createElement(t),e)for(var r in e)e.hasOwnProperty(r)&&("style"==r?t.style.cssText=e[r]:t.setAttribute(r,e[r]));return n&&t.appendChild(this.H.createTextNode(n)),t},m.prototype.d=function(t){for(var e=[],n=0;n=n.v?n.J(n.g):e.fonts.load(g(n.g),n.h).then(function(e){1<=e.length?n.G(n.g):setTimeout(t,25)},function(){n.J(n.g)})}var e=this.a.k.document,n=this,r=J();t()};var X={ia:"serif",ha:"sans-serif"},tt=null;N.prototype.start=function(){this.s.serif=this.C.m.offsetWidth,this.s["sans-serif"]=this.D.m.offsetWidth,this.ga=J(),R(this)};var et=null;D.prototype.V=function(t){var e=this.p;e.u&&o(e.j,[e.e.d(e.f,t.getName(),""+y(t),"active")],[e.e.d(e.f,t.getName(),""+y(t),"loading"),e.e.d(e.f,t.getName(),""+y(t),"inactive")]),T(e,"fontactive",t),this.ba=!0,U(this)},D.prototype.W=function(t){var e=this.p;if(e.u){var n=s(e.j,e.e.d(e.f,t.getName(),""+y(t),"active")),r=[],i=[e.e.d(e.f,t.getName(),""+y(t),"loading")];n||r.push(e.e.d(e.f,t.getName(),""+y(t),"inactive")),o(e.j,r,i)}T(e,"fontinactive",t),U(this)},V.prototype.load=function(t){this.a=new i(this.F,t.context||this.F),this.U=!1!==t.events,this.T=!1!==t.classes,q(this,new _(this.a,t),t)};var nt="//fonts.googleapis.com/css";z.prototype.d=function(){if(0==this.o.length)throw Error("No fonts to load!");if(-1!=this.N.indexOf("kit="))return this.N;for(var t=this.o.length,e=[],n=0;t>n;n++)e.push(this.o[n].replace(/ /g,"+"));return t=this.N+"?family="+e.join("%7C"),0e;e++){var n=this.o[e].split(":"),r=n[0].replace(/\+/g," "),i=["n4"];if(2<=n.length){var a,o=n[1];if(a=[],o)for(var o=o.split(","),s=o.length,u=0;s>u;u++){var c;if(c=o[u],c.match(/^[\w-]+$/))if(c=ot.exec(c.toLowerCase()),null==c)c="";else{var l;if(l=c[1],null==l||""==l)l="4";else{var p=it[l];l=p?p:isNaN(l)?"4":l.substr(0,1)}c=c[2],c=""+(null==c||""==c?"n":at[c])+l}else c="";c&&a.push(c)}0i;++i){var o=n.fonts[i];r.X.push(new v(o.name,x("font-weight:"+o.weight+";font-style:"+o.style)))}t(r.X)},l(this.a,this.B(e),function(e){e&&t([])})):t([])},K.prototype.B=function(t){return(this.c.api||"https://use.typekit.net")+"/"+t+".js"},K.prototype.load=function(t){var e=this.c.id,n=this.a.k;e?l(this.a,this.B(e),function(e){if(e)t([]);else if(n.Typekit&&n.Typekit.config&&n.Typekit.config.fn){e=n.Typekit.config.fn;for(var r=[],i=0;ie;e++)c(this.a,r[e],h(o));var s=[];for(e=0,n=i.length;n>e;e++)if(r=i[e].split(":"),r[1])for(var u=r[1].split(","),l=0;l50?"good":t>25?"average":"bad"}}}}(i),i.exports.template={v:3,t:[" ",{p:[31,1,988],t:7,e:"n-notice",f:[{t:4,f:[{p:[33,5,1032],t:7,e:"n-section",a:{label:"Interface Lock"},f:[{p:[34,7,1074],t:7,e:"n-button",a:{icon:[{t:2,x:{r:["data.locked"],s:'_0?"lock":"unlock"'},p:[34,23,1090]}],action:"lock"},f:[{t:2,x:{r:["data.locked"],s:'_0?"Engaged":"Disengaged"'},p:[34,74,1141]}]}]}],n:50,r:"data.siliconUser",p:[32,3,1002]},{t:4,n:51,f:[{p:[37,5,1230],t:7,e:"span",f:["Swipe an ID card to ",{t:2,x:{r:["data.locked"],s:'_0?"unlock":"lock"'},p:[37,31,1256]}," this interface."]}],r:"data.siliconUser"}]}," ",{p:[40,1,1340],t:7,e:"n-display",a:{title:"Power Status"},f:[{p:[41,3,1376],t:7,e:"n-section",a:{label:"Main Breaker"},f:[{t:4,f:[{p:[43,7,1462],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.isOperating"],s:'_0?"good":"bad"'},p:[43,20,1475]}]},f:[{t:2,x:{r:["data.isOperating"],s:'_0?"On":"Off"'},p:[43,59,1514]}]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"},p:[42,5,1414]},{t:4,n:51,f:[{p:[45,7,1578],t:7,e:"n-button",a:{icon:[{t:2,x:{r:["data.isOperating"],s:'_0?"power-off":"close"'},p:[45,23,1594]}],style:[{t:2,x:{r:["data.isOperating"],s:'_0?"selected":null'},p:[45,76,1647]}],action:"breaker"},f:[{t:2,x:{r:["data.isOperating"],s:'_0?"On":"Off"'},p:[46,26,1715]}]}],x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"}}]}," ",{p:[49,3,1794],t:7,e:"n-section",a:{label:"External Power"},f:[{p:[50,5,1834],t:7,e:"span",a:{"class":[{t:2,x:{r:["powerState","data.externalPower"],s:"_0(_1)"},p:[50,18,1847]}]},f:[{t:2,x:{r:["data.externalPower"],s:'_0==2?"Good":_0==1?"Low":"None"'},p:[50,54,1883]}]}]}," ",{p:[52,3,1989],t:7,e:"n-section",a:{label:"Power Cell"},f:[{t:4,f:[{p:[54,7,2069],t:7,e:"n-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.powerCellStatus",p:[54,39,2101]}],state:[{t:2,r:"powerCellStatusState",p:[54,72,2134]}]},f:[{t:2,x:{r:["adata.powerCellStatus"],s:"Math.fixed(_0)"},p:[54,98,2160]},"%"]}],n:50,x:{r:["data.powerCellStatus"],s:"_0!=null"},p:[53,5,2025]},{t:4,n:51,f:[{p:[56,7,2228],t:7,e:"span",a:{"class":"bad"},f:["Power cell removed."]}],x:{r:["data.powerCellStatus"],s:"_0!=null"}}]}," ",{t:4,f:[{p:[60,5,2347],t:7,e:"n-section",a:{label:"Charge Mode"},f:[{t:4,f:[{p:[62,9,2436],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.chargeMode"],s:'_0?"good":"bad"'},p:[62,22,2449]}]},f:[{t:2,x:{r:["data.chargeMode"],s:'_0?"Auto":"Off"'},p:[62,60,2487]}]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"},p:[61,7,2386]},{t:4,n:51,f:[{p:[64,9,2556],t:7,e:"n-button",a:{icon:[{t:2,x:{r:["data.chargeMode"],s:'_0?"refresh":"close"'},p:[64,25,2572]}],style:[{t:2,x:{r:["data.chargeMode"],s:'_0?"selected":null'},p:[64,75,2622]}],action:"charge"},f:[{t:2,x:{r:["data.chargeMode"],s:'_0?"Auto":"Off"'},p:[65,27,2690]}]}],x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"}}," [",{p:[68,8,2775],t:7,e:"span",a:{"class":[{t:2,x:{r:["powerState","data.chargingStatus"],s:"_0(_1)"},p:[68,21,2788]}]},f:[{t:2,x:{r:["data.chargingStatus"],s:'_0==2?"Fully Charged":_0==1?"Charging":"Not Charging"'},p:[68,58,2825]}]},"]"]}],n:50,x:{r:["data.powerCellStatus"],s:"_0!=null"},p:[59,3,2305]}]}," ",{p:[72,1,2981],t:7,e:"n-display",a:{title:"Power Channels"},f:[{t:4,f:[{p:[74,5,3054],t:7,e:"n-section",a:{label:[{t:2,r:"title",p:[74,23,3072]}],nowrap:0},f:[{p:[75,7,3098],t:7,e:"div",a:{"class":"content"},f:[{t:2,x:{r:["powerLoad"],s:"Math.round(_0)"},p:[75,28,3119]}," W"]}," ",{p:[76,7,3160],t:7,e:"div",a:{"class":"content"},f:[{p:[76,28,3181],t:7,e:"span",a:{"class":[{t:2,x:{r:["status"],s:'_0>=2?"good":"bad"'},p:[76,41,3194]}]},f:[{t:2,x:{r:["status"],s:'_0>=2?"On":"Off"'},p:[76,75,3228]}]}]}," ",{p:[77,7,3279],t:7,e:"div",a:{"class":"content"},f:["[",{p:[77,29,3301],t:7,e:"span",f:[{t:2,x:{r:["status"],s:'_0==1||_0==3?"Auto":"Manual"'},p:[77,35,3307]}]},"]"]}," ",{p:[78,7,3379],t:7,e:"div",a:{"class":"content",style:"float:right"},f:[{t:4,f:[{p:[80,11,3482],t:7,e:"n-button",a:{icon:"refresh",state:[{t:2,x:{r:["status"],s:'_0==1||_0==3?"selected":null'},p:[80,43,3514]}],action:"channel",params:[{t:2,r:"topicParams.auto",p:[81,38,3604]}]},f:["Auto"]}," ",{p:[82,11,3653],t:7,e:"n-button",a:{icon:"power-off",state:[{t:2,x:{r:["status"],s:'_0==2?"selected":null'},p:[82,45,3687]}],action:"channel",params:[{t:2,r:"topicParams.on",p:[83,21,3762]}]},f:["On"]}," ",{p:[84,11,3807],t:7,e:"n-button",a:{icon:"close",state:[{t:2,x:{r:["status"],s:'_0==0?"selected":null'},p:[84,41,3837]}],action:"channel",params:[{t:2,r:"topicParams.off",p:[85,21,3912]}]},f:["Off"]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"!_0||_1"},p:[79,9,3430]}]}]}],n:52,r:"adata.powerChannels",p:[73,3,3019]}," ",{p:[90,3,4013],t:7,e:"n-section",a:{label:"Total Load"},f:[{p:[91,5,4049],t:7,e:"span",a:{"class":"bold"},f:[{t:2,x:{r:["adata.totalLoad"],s:"Math.round(_0)"},p:[91,24,4068]}," W"]}]}]}," ",{t:4,f:[{p:[95,3,4168],t:7,e:"n-display",a:{title:"System Overrides"},f:[{p:[96,5,4210],t:7,e:"n-button",a:{icon:"lightbulb-o",action:"overload"},f:["Overload"]}," ",{t:4,f:[{p:[98,7,4313],t:7,e:"n-button",a:{icon:[{t:2,r:"malfIcon",p:[98,23,4329]}],state:[{t:2,x:{r:["data.malfStatus"],s:'_0==4?"disabled":null'},p:[98,44,4350]}],action:[{t:2,r:"malfAction",p:[98,98,4404]}]},f:[{t:2,r:"malfButton",p:[98,114,4420]}]}],n:50,r:"data.malfStatus",p:[97,5,4282]}]}],n:50,r:"data.siliconUser",p:[94,1,4140]},{p:[102,1,4485],t:7,e:"n-notice",f:[{p:[103,3,4499],t:7,e:"n-section",a:{label:"Cover Lock"},f:[{t:4,f:[{p:[105,7,4583],t:7,e:"span",f:[{t:2,x:{r:["data.coverLocked"],s:'_0?"Engaged":"Disengaged"'},p:[105,13,4589]}]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"},p:[104,5,4535]},{t:4,n:51,f:[{p:[107,7,4665],t:7,e:"n-button",a:{icon:[{t:2,x:{r:["data.coverLocked"],s:'_0?"lock":"unlock"'},p:[107,23,4681]}],action:"cover"},f:[{t:2,x:{r:["data.coverLocked"],s:'_0?"Engaged":"Disengaged"'},p:[107,80,4738]}]}],x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"}}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],29:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"n-display",f:[{p:[2,3,15],t:7,e:"n-section",a:{label:"Power"},f:[{p:[3,5,46],t:7,e:"n-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[3,21,62]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[3,65,106]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[4,22,161]}]}]}," ",{p:[6,3,218],t:7,e:"n-section",a:{label:"Output Pressure"},f:[{p:[7,5,259],t:7,e:"n-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "custom"}'},f:["Set"]}," ",{p:[8,5,353],t:7,e:"n-button",a:{icon:"plus",state:[{t:2,x:{r:["data.set_pressure","data.max_pressure"],s:'_0==_1?"disabled":null'},p:[8,34,382]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}," ",{p:[9,5,513],t:7,e:"span",a:{"class":"buttoninfo"},f:[{t:2,x:{r:["adata.set_pressure"],s:"Math.round(_0)"},p:[9,30,538]}," kPa"]}]}," ",{p:[11,3,603],t:7,e:"n-section",a:{label:"Filter"},f:[{p:[12,5,635],t:7,e:"n-button",a:{state:[{t:2,x:{r:["data.filter_type"],s:'_0==-1?"selected":null'},p:[12,22,652]}],action:"filter",params:'{"mode": -1}'},f:["Nothing"]}," ",{p:[14,5,769],t:7,e:"n-button",a:{state:[{t:2,x:{r:["data.filter_type"],s:'_0==0?"selected":null'},p:[14,22,786]}],action:"filter",params:'{"mode": 0}'},f:["Plasma"]}," ",{p:[16,5,900],t:7,e:"n-button",a:{state:[{t:2,x:{r:["data.filter_type"],s:'_0==1?"selected":null'},p:[16,22,917]}],action:"filter",params:'{"mode": 1}'},f:["O2"]}," ",{p:[18,5,1027],t:7,e:"n-button",a:{state:[{t:2,x:{r:["data.filter_type"],s:'_0==2?"selected":null'},p:[18,22,1044]}],action:"filter",params:'{"mode": 2}'},f:["N2"]}," ",{p:[20,5,1154],t:7,e:"n-button",a:{state:[{t:2,x:{r:["data.filter_type"],s:'_0==3?"selected":null'},p:[20,22,1171]}],action:"filter",params:'{"mode": 3}'},f:["CO2"]}," ",{p:[22,5,1282],t:7,e:"n-button",a:{state:[{t:2,x:{r:["data.filter_type"],s:'_0==4?"selected":null'},p:[22,22,1299]}],action:"filter",params:'{"mode": 4}'},f:["N2O"]}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],30:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"n-display",f:[{p:[2,3,15],t:7,e:"n-section",a:{label:"Power"},f:[{p:[3,5,46],t:7,e:"n-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[3,21,62]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[3,65,106]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[4,22,161]}]}]}," ",{p:[6,3,218],t:7,e:"n-section",a:{label:"Output Pressure"},f:[{p:[7,5,259],t:7,e:"n-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "custom"}'},f:["Set"]}," ",{p:[8,5,353],t:7,e:"n-button",a:{icon:"plus",state:[{t:2,x:{r:["data.set_pressure","data.max_pressure"],s:'_0==_1?"disabled":null'},p:[8,34,382]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}," ",{p:[9,5,513],t:7,e:"span",a:{"class":"buttoninfo"},f:[{t:2,x:{r:["adata.set_pressure"],s:"Math.round(_0)"},p:[9,30,538]}," kPa"]}]}," ",{p:[11,3,603],t:7,e:"n-section",a:{label:"Node 1"},f:[{p:[12,5,635],t:7,e:"n-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.node1_concentration"],s:'_0==0?"disabled":null'},p:[12,43,673]}],action:"node1",params:'{"concentration": -0.1}'}}," ",{p:[14,5,790],t:7,e:"n-button",a:{icon:"backward",state:[{t:2,x:{r:["data.node1_concentration"],s:'_0==0?"disabled":null'},p:[14,38,823]}],action:"node1",params:'{"concentration": -0.01}'}}," ",{p:[16,5,941],t:7,e:"n-button",a:{icon:"forward",state:[{t:2,x:{r:["data.node1_concentration"],s:'_0==100?"disabled":null'},p:[16,37,973]}],action:"node1",params:'{"concentration": 0.01}'}}," ",{p:[18,5,1092],t:7,e:"n-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.node1_concentration"],s:'_0==100?"disabled":null'},p:[18,42,1129]}],action:"node1",params:'{"concentration": 0.1}'}}," ",{p:[20,5,1247],t:7,e:"span",a:{"class":"buttoninfo"},f:[{t:2,x:{r:["adata.node1_concentration"],s:"Math.round(_0)"},p:[20,30,1272]},"%"]}]}," ",{p:[22,3,1341],t:7,e:"n-section",a:{label:"Node 2"},f:[{p:[23,5,1373],t:7,e:"n-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.node2_concentration"],s:'_0==0?"disabled":null'},p:[23,43,1411]}],action:"node2",params:'{"concentration": -0.1}'}}," ",{p:[25,5,1528],t:7,e:"n-button",a:{icon:"backward",state:[{t:2,x:{r:["data.node2_concentration"],s:'_0==0?"disabled":null'},p:[25,38,1561]}],action:"node2",params:'{"concentration": -0.01}'}}," ",{p:[27,5,1679],t:7,e:"n-button",a:{icon:"forward",state:[{t:2,x:{r:["data.node2_concentration"],s:'_0==100?"disabled":null'},p:[27,37,1711]}],action:"node2",params:'{"concentration": 0.01}'}}," ",{p:[29,5,1830],t:7,e:"n-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.node2_concentration"],s:'_0==100?"disabled":null'},p:[29,42,1867]}],action:"node2",params:'{"concentration": 0.1}'}}," ",{p:[31,5,1985],t:7,e:"span",a:{"class":"buttoninfo"},f:[{t:2,x:{r:["adata.node2_concentration"],s:"Math.round(_0)"},p:[31,30,2010]},"%"]}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],31:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"n-display",f:[{ -p:[2,3,15],t:7,e:"n-section",a:{label:"Power"},f:[{p:[3,5,46],t:7,e:"n-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[3,21,62]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[3,65,106]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[4,22,161]}]}]}," ",{t:4,f:[{p:[7,5,245],t:7,e:"n-section",a:{label:"Transfer Rate"},f:[{p:[8,7,286],t:7,e:"n-button",a:{icon:"pencil",action:"transfer",params:'{"rate": "custom"}'},f:["Set"]}," ",{p:[9,7,378],t:7,e:"n-button",a:{icon:"plus",state:[{t:2,x:{r:["data.transfer_rate","data.max_rate"],s:'_0==_1?"disabled":null'},p:[9,36,407]}],action:"transfer",params:'{"rate": "max"}'},f:["Max"]}," ",{p:[10,7,533],t:7,e:"span",a:{"class":"buttoninfo"},f:[{t:2,x:{r:["adata.transfer_rate"],s:"Math.round(_0)"},p:[10,32,558]}," L/s"]}]}],n:50,r:"data.max_rate",p:[6,3,218]},{t:4,n:51,f:[{p:[13,5,640],t:7,e:"n-section",a:{label:"Output Pressure"},f:[{p:[14,7,683],t:7,e:"n-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "custom"}'},f:["Set"]}," ",{p:[15,7,779],t:7,e:"n-button",a:{icon:"plus",state:[{t:2,x:{r:["data.set_pressure","data.max_pressure"],s:'_0==_1?"disabled":null'},p:[15,36,808]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}," ",{p:[16,7,941],t:7,e:"span",a:{"class":"buttoninfo"},f:[{t:2,x:{r:["adata.set_pressure"],s:"Math.round(_0)"},p:[16,32,966]}," kPa"]}]}],r:"data.max_rate"}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],32:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"n-notice",f:[{p:[2,3,14],t:7,e:"span",f:["The regulator ",{t:2,x:{r:["data.hasHoldingTank"],s:'_0?"is":"is not"'},p:[2,23,34]}," connected to a tank."]}]}," ",{p:{button:[{p:[6,5,182],t:7,e:"n-button",a:{icon:"pencil",state:[{t:2,x:{r:["data.canLabel"],s:'_0?null:"disabled"'},p:[6,36,213]}],action:"relable"},f:["Relabel"]}]},t:7,e:"n-display",a:{title:"Canister",button:0},f:[" ",{p:[8,3,307],t:7,e:"n-section",a:{label:"Pressure"},f:[{p:[9,5,341],t:7,e:"span",f:[{t:2,x:{r:["adata.tankPressure"],s:"Math.round(_0)"},p:[9,11,347]}," kPa"]}]}," ",{p:[11,3,412],t:7,e:"n-section",a:{label:"Port"},f:[{p:[12,5,442],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.portConnected"],s:'_0?"good":"average"'},p:[12,18,455]}]},f:[{t:2,x:{r:["data.portConnected"],s:'_0?"Connected":"Not Connected"'},p:[12,63,500]}]}]}]}," ",{p:[15,1,593],t:7,e:"n-display",a:{title:"Valve"},f:[{p:[16,3,622],t:7,e:"n-section",a:{label:"Release Pressure"},f:[{p:[17,5,664],t:7,e:"n-bar",a:{min:[{t:2,r:"data.minReleasePressure",p:[17,17,676]}],max:[{t:2,r:"data.maxReleasePressure",p:[17,51,710]}],value:[{t:2,r:"data.releasePressure",p:[18,14,753]}]},f:[{t:2,x:{r:["adata.releasePressure"],s:"Math.round(_0)"},p:[18,40,779]}," kPa"]}]}," ",{p:[20,3,848],t:7,e:"n-section",a:{label:"Pressure Regulator"},f:[{p:[21,5,892],t:7,e:"n-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.releasePressure","data.defaultReleasePressure"],s:'_0!=_1?null:"disabled"'},p:[21,37,924]}],action:"pressure",params:'{"pressure": "reset"}'},f:["Reset"]}," ",{p:[23,5,1079],t:7,e:"n-button",a:{icon:"minus",state:[{t:2,x:{r:["data.releasePressure","data.minReleasePressure"],s:'_0>_1?null:"disabled"'},p:[23,35,1109]}],action:"pressure",params:'{"pressure": "min"}'},f:["Min"]}," ",{p:[25,5,1255],t:7,e:"n-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "custom"}'},f:["Set"]}," ",{p:[26,5,1349],t:7,e:"n-button",a:{icon:"plus",state:[{t:2,x:{r:["data.releasePressure","data.maxReleasePressure"],s:'_0<_1?null:"disabled"'},p:[26,34,1378]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}]}," ",{p:[29,3,1538],t:7,e:"n-section",a:{label:"Valve"},f:[{p:[30,5,1569],t:7,e:"n-button",a:{icon:[{t:2,x:{r:["data.valveOpen"],s:'_0?"unlock":"lock"'},p:[30,21,1585]}],style:[{t:2,x:{r:["data.valveOpen","data.hasHoldingTank"],s:'_0?_1?"caution":"danger":null'},p:[31,14,1639]}],action:"valve"},f:[{t:2,x:{r:["data.valveOpen"],s:'_0?"Open":"Closed"'},p:[32,22,1733]}]}]}]}," ",{p:{button:[{t:4,f:[{p:[38,7,1917],t:7,e:"n-button",a:{icon:"eject",style:[{t:2,x:{r:["data.valveOpen"],s:'_0?"danger":null'},p:[38,37,1947]}],action:"eject"},f:["Eject"]}],n:50,r:"data.hasHoldingTank",p:[37,5,1882]}]},t:7,e:"n-display",a:{title:"Holding Tank",button:0},f:[" ",{t:4,f:[{p:[42,3,2080],t:7,e:"n-section",a:{label:"Label"},f:[{t:2,r:"data.holdingTank.name",p:[43,4,2110]}]}," ",{p:[45,3,2155],t:7,e:"n-section",a:{label:"Pressure"},f:[{t:2,x:{r:["adata.holdingTank.tankPressure"],s:"Math.round(_0)"},p:[46,4,2188]}," kPa"]}],n:50,r:"data.hasHoldingTank",p:[41,3,2049]},{t:4,n:51,f:[{p:[49,3,2269],t:7,e:"n-section",f:[{p:[50,4,2285],t:7,e:"span",a:{"class":"average"},f:["No Holding Tank"]}]}],r:"data.hasHoldingTank"}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],33:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"n-display",a:{title:"Power"},f:[{p:[2,3,29],t:7,e:"n-section",a:{label:"Energy"},f:[{p:[3,5,61],t:7,e:"n-bar",a:{min:"0",max:[{t:2,r:"data.maxEnergy",p:[3,25,81]}],value:[{t:2,r:"data.energy",p:[3,52,108]}]},f:[{t:2,x:{r:["adata.energy"],s:"Math.fixed(_0)"},p:[3,69,125]}," Units"]}]}," ",{t:4,f:[{p:[6,5,227],t:7,e:"n-section",a:{label:"Amount"},f:[{t:4,f:[{p:[8,9,307],t:7,e:"n-button",a:{icon:"plus",state:[{t:2,x:{r:["data.amount","."],s:'_0==_1?"selected":null'},p:[8,38,336]}],action:"amount",params:['{"amount": ',{t:2,r:".",p:[8,115,413]},"}"]},f:[{t:2,r:".",p:[8,123,421]}]}],n:52,r:"data.beakerTransferAmounts",p:[7,7,261]}]}],n:50,r:"data.beakerTransferAmounts",p:[5,3,187]}]}," ",{p:[13,1,499],t:7,e:"n-display",a:{title:"Dispense"},f:[{p:[14,3,531],t:7,e:"n-section",f:[{t:4,f:[{p:[16,7,580],t:7,e:"n-button",a:{grid:0,icon:"tint",action:"dispense",params:['{"reagent": "',{t:2,r:"id",p:[16,73,646]},'"}']},f:[{t:2,r:"title",p:[16,83,656]}]}],n:52,r:"data.chemicals",p:[15,5,548]}]}]}," ",{p:{button:[{p:[22,5,785],t:7,e:"n-button",a:{icon:"eject",state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[22,35,815]}],action:"eject"},f:["Eject"]}]},t:7,e:"n-display",a:{title:"Beaker",button:0},f:[" ",{t:4,f:[{p:[25,5,951],t:7,e:"n-section",a:{label:"Remove"},f:[{t:4,f:[{p:[27,9,1031],t:7,e:"n-button",a:{icon:"minus",action:"remove",params:['{"amount": ',{t:2,r:".",p:[27,67,1089]},"}"]},f:[{t:2,r:".",p:[27,75,1097]}]}],n:52,r:"data.beakerTransferAmounts",p:[26,7,985]}]}],n:50,r:"data.beakerTransferAmounts",p:[24,3,911]}," ",{p:[31,3,1163],t:7,e:"n-section",a:{label:"Contents"},f:[{t:4,f:[{p:[33,7,1232],t:7,e:"span",f:[{t:2,x:{r:["adata.beakerCurrentVolume"],s:"Math.round(_0)"},p:[33,13,1238]},"/",{t:2,r:"data.beakerMaxVolume",p:[33,55,1280]}," Units"]}," ",{p:[34,7,1325],t:7,e:"br"}," ",{t:4,f:[{p:[36,9,1378],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[36,52,1421]}," units of ",{t:2,r:"name",p:[36,87,1456]}]},{p:[36,102,1471],t:7,e:"br"}],n:52,r:"adata.beakerContents",p:[35,7,1338]},{t:4,n:51,f:[{p:[38,9,1502],t:7,e:"span",a:{"class":"bad"},f:["Beaker Empty"]}],r:"adata.beakerContents"}],n:50,r:"data.isBeakerLoaded",p:[32,5,1197]},{t:4,n:51,f:[{p:[41,7,1578],t:7,e:"span",a:{"class":"average"},f:["No Beaker"]}],r:"data.isBeakerLoaded"}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],34:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"n-display",a:{title:"Thermostat"},f:[{p:[2,3,34],t:7,e:"n-section",a:{label:"Power"},f:[{p:[3,5,65],t:7,e:"n-button",a:{icon:[{t:2,x:{r:["data.isActive"],s:'_0?"power-off":"close"'},p:[3,21,81]}],style:[{t:2,x:{r:["data.isActive"],s:'_0?"selected":null'},p:[4,10,134]}],state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[5,10,183]}],action:"power"},f:[{t:2,x:{r:["data.isActive"],s:'_0?"On":"Off"'},p:[6,18,246]}]}]}," ",{p:[8,3,309],t:7,e:"n-section",a:{label:"Target"},f:[{p:[9,4,340],t:7,e:"n-button",a:{icon:"pencil",action:"temperature"},f:[{t:2,x:{r:["adata.targetTemp"],s:"Math.round(_0)"},p:[9,49,385]}," K"]}]}]}," ",{p:{button:[{p:[14,5,524],t:7,e:"n-button",a:{icon:"eject",state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[14,35,554]}],action:"eject"},f:["Eject"]}]},t:7,e:"n-display",a:{title:"Beaker",button:0},f:[" ",{p:[16,3,650],t:7,e:"n-section",a:{label:"Contents"},f:[{t:4,f:[{p:[18,7,719],t:7,e:"span",f:["Temperature: ",{t:2,x:{r:["adata.currentTemp"],s:"Math.round(_0)"},p:[18,26,738]}," K"]}," ",{p:[19,7,788],t:7,e:"br"}," ",{t:4,f:[{p:[21,9,842],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[21,52,885]}," units of ",{t:2,r:"name",p:[21,87,920]}]},{p:[21,102,935],t:7,e:"br"}],n:52,r:"adata.beakerContents",p:[20,7,802]},{t:4,n:51,f:[{p:[23,9,966],t:7,e:"span",a:{"class":"bad"},f:["Beaker Empty"]}],r:"adata.beakerContents"}],n:50,r:"data.isBeakerLoaded",p:[17,5,684]},{t:4,n:51,f:[{p:[26,7,1042],t:7,e:"span",a:{"class":"average"},f:["No Beaker"]}],r:"data.isBeakerLoaded"}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],35:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(t){t.exports={computed:{cellTemperatureState:function(){var t;return t=this.get("data.cellTemperature"),225>t?"good":273.15>t?"average":"bad"},occupantStatState:function(){var t;return t=this.get("data.occupant.stat"),0===t?"good":1===t?"average":"bad"}}}}(i),i.exports.template={v:3,t:[" ",{p:[16,1,414],t:7,e:"n-display",a:{title:"Occupant"},f:[{p:[17,3,446],t:7,e:"n-section",a:{label:"Occupant"},f:[{p:[18,3,478],t:7,e:"span",f:[{t:2,x:{r:["data.occupant.name"],s:'_0?_0:"No Occupant"'},p:[18,9,484]}]}]}," ",{t:4,f:[{p:[21,5,600],t:7,e:"n-section",a:{label:"State"},f:[{p:[22,7,633],t:7,e:"span",a:{"class":[{t:2,r:"occupantStatState",p:[22,20,646]}]},f:[{t:2,x:{r:["data.occupant.stat"],s:'_0==0?"Conscious":_0==1?"Unconcious":"Dead"'},p:[22,43,669]}]}]}," ",{p:[24,4,789],t:7,e:"n-section",a:{label:"Temperature"},f:[{p:[25,6,827],t:7,e:"span",f:[{t:2,x:{r:["adata.occupant.bodyTemperature"],s:"Math.round(_0)"},p:[25,12,833]}," K"]}]}," ",{p:[27,5,911],t:7,e:"n-section",a:{label:"Health"},f:[{p:[28,7,945],t:7,e:"n-bar",a:{min:[{t:2,r:"data.occupant.minHealth",p:[28,19,957]}],max:[{t:2,r:"data.occupant.maxHealth",p:[28,53,991]}],value:[{t:2,r:"data.occupant.health",p:[28,89,1027]}],state:[{t:2,x:{r:["data.occupant.health"],s:'_0>=0?"good":"average"'},p:[29,16,1069]}]},f:[{t:2,x:{r:["adata.occupant.health"],s:"Math.round(_0)"},p:[29,68,1121]}]}]}," ",{t:4,f:[{p:[32,7,1356],t:7,e:"n-section",a:{label:[{t:2,r:"label",p:[32,25,1374]}]},f:[{p:[33,9,1395],t:7,e:"n-bar",a:{min:"0",max:[{t:2,r:"data.occupant.maxHealth",p:[33,29,1415]}],value:[{t:2,rx:{r:"data.occupant",m:[{t:30,n:"type"}]},p:[33,65,1451]}],state:"bad"},f:[{t:2,x:{r:["type","adata.occupant"],s:"Math.round(_1[_0])"},p:[33,102,1488]}]}]}],n:52,x:{r:[],s:'[{label:"Brute",type:"bruteLoss"},{label:"Respiratory",type:"oxyLoss"},{label:"Toxin",type:"toxLoss"},{label:"Burn",type:"fireLoss"}]'},p:[31,5,1190]}],n:50,r:"data.hasOccupant",p:[20,3,570]}]}," ",{p:[38,1,1594],t:7,e:"n-display",a:{title:"Cell"},f:[{p:[39,3,1622],t:7,e:"n-section",a:{label:"Power"},f:[{p:[40,5,1653],t:7,e:"n-button",a:{icon:[{t:2,x:{r:["data.isOperating"],s:'_0?"power-off":"close"'},p:[40,21,1669]}],style:[{t:2,x:{r:["data.isOperating"],s:'_0?"selected":null'},p:[41,14,1729]}],state:[{t:2,x:{r:["data.isOpen"],s:'_0?"disabled":null'},p:[42,14,1785]}],action:"power"},f:[{t:2,x:{r:["data.isOperating"],s:'_0?"On":"Off"'},p:[43,22,1844]}]}]}," ",{p:[45,3,1910],t:7,e:"n-section",a:{label:"Temperature"},f:[{p:[46,3,1945],t:7,e:"span",a:{"class":[{t:2,r:"cellTemperatureState",p:[46,16,1958]}]},f:[{t:2,x:{r:["adata.cellTemperature"],s:"Math.round(_0)"},p:[46,42,1984]}," K"]}]}," ",{p:[48,2,2048],t:7,e:"n-section",a:{label:"Door"},f:[{p:[49,5,2078],t:7,e:"n-button",a:{icon:[{t:2,x:{r:["data.isOpen"],s:'_0?"unlock":"lock"'},p:[49,21,2094]}],action:"door"},f:[{t:2,x:{r:["data.isOpen"],s:'_0?"Open":"Closed"'},p:[49,72,2145]}]}," ",{p:[50,5,2197],t:7,e:"n-button",a:{icon:[{t:2,x:{r:["data.autoEject"],s:'_0?"sign-out":"sign-in"'},p:[50,21,2213]}],action:"autoeject"},f:[{t:2,x:{r:["data.autoEject"],s:'_0?"Auto":"Manual"'},p:[50,85,2277]}]}]}]}," ",{p:{button:[{p:[55,5,2419],t:7,e:"n-button",a:{icon:"eject",state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[55,35,2449]}],action:"ejectbeaker"},f:["Eject"]}]},t:7,e:"n-display",a:{title:"Beaker",button:0},f:[" ",{p:[57,3,2551],t:7,e:"n-section",a:{label:"Contents"},f:[{t:4,f:[{t:4,f:[{p:[60,9,2660],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[60,52,2703]}," units of ",{t:2,r:"name",p:[60,87,2738]}]},{p:[60,102,2753],t:7,e:"br"}],n:52,r:"adata.beakerContents",p:[59,7,2620]},{t:4,n:51,f:[{p:[62,9,2784],t:7,e:"span",a:{"class":"bad"},f:["Beaker Empty"]}],r:"adata.beakerContents"}],n:50,r:"data.isBeakerLoaded",p:[58,5,2585]},{t:4,n:51,f:[{p:[65,7,2860],t:7,e:"span",a:{"class":"average"},f:["No Beaker"]}],r:"data.isBeakerLoaded"}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],36:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"n-notice",f:[{p:[2,3,14],t:7,e:"span",f:["The requested interface (",{t:2,r:"config.interface",p:[2,34,45]},") was not found. Does it exist?"]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],37:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(t){t.exports={computed:{capacityPercentState:function(){var t;return t=this.get("data.capacityPercent"),t>50?"good":t>15?"average":"bad"},inputState:function(){var t,e;return t=this.get("data.capacityPercent"),e=this.get("data.inputting"),t>=100?"good":e?"average":"bad"},outputState:function(){var t,e;return t=this.get("data.charge"),e=this.get("data.outputting"),e?"good":t>0?"average":"bad"}}}}(i),i.exports.template={v:3,t:[" ",{p:[23,1,624],t:7,e:"n-display",a:{title:"Storage"},f:[{p:[24,3,655],t:7,e:"n-section",a:{label:"Stored Energy"},f:[{p:[25,5,694],t:7,e:"n-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.capacityPercent",p:[25,37,726]}],state:[{t:2,r:"capacityPercentState",p:[25,70,759]}]},f:[{t:2,x:{r:["adata.capacityPercent"],s:"Math.fixed(_0)"},p:[25,96,785]},"%"]}]}]}," ",{p:[28,1,863],t:7,e:"n-display",a:{title:"Input"},f:[{p:[29,3,892],t:7,e:"n-section",a:{label:"Charge Mode"},f:[{p:[30,5,929],t:7,e:"n-button",a:{icon:[{t:2,x:{r:["data.inputAttempt"],s:'_0?"refresh":"close"'},p:[30,21,945]}],style:[{t:2,x:{r:["data.inputAttempt"],s:'_0?"selected":null'},p:[30,73,997]}],action:"tryinput"},f:[{t:2,x:{r:["data.inputAttempt"],s:'_0?"Auto":"Off"'},p:[31,25,1065]}]},"   [",{p:[33,6,1133],t:7,e:"span",a:{"class":[{t:2,r:"inputState",p:[33,19,1146]}]},f:[{t:2,x:{r:["data.capacityPercent","data.inputting"],s:'_0>=100?"Fully Charged":_1?"Charging":"Not Charging"'},p:[33,35,1162]}]},"]"]}," ",{p:[35,3,1285],t:7,e:"n-section",a:{label:"Target Input"},f:[{p:[36,5,1323],t:7,e:"n-bar",a:{min:"0",max:[{t:2,r:"data.inputLevelMax",p:[36,25,1343]}],value:[{t:2,r:"data.inputLevel",p:[36,56,1374]}]},f:[{t:2,x:{r:["adata.inputLevel"],s:"Math.round(_0)"},p:[36,77,1395]},"W"]}]}," ",{p:[38,3,1455],t:7,e:"n-section",a:{label:"Adjust Input"},f:[{p:[39,5,1493],t:7,e:"n-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.inputLevel"],s:'_0==0?"disabled":null'},p:[39,43,1531]}],action:"input",params:'{"input": "min"}'}}," ",{p:[40,5,1625],t:7,e:"n-button",a:{icon:"backward",state:[{t:2,x:{r:["data.inputLevel"],s:'_0==0?"disabled":null'},p:[40,38,1658]}],action:"input",params:'{"input": "minus"}'}}," ",{p:[41,5,1754],t:7,e:"n-button",a:{icon:"pencil",action:"input",params:'{"input": "custom"}'},f:["Set"]}," ",{p:[42,5,1842],t:7,e:"n-button",a:{icon:"forward",state:[{t:2,x:{r:["data.inputLevel","data.inputLevelMax"],s:'_0==_1?"disabled":null'},p:[42,37,1874]}],action:"input",params:'{"input": "plus"}'}}," ",{p:[43,5,1986],t:7,e:"n-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.inputLevel","data.inputLevelMax"],s:'_0==_1?"disabled":null'},p:[43,42,2023]}],action:"input",params:'{"input": "max"}'}}]}," ",{p:[45,3,2148],t:7,e:"n-section",a:{label:"Available"},f:[{p:[46,3,2181],t:7,e:"span",f:[{t:2,x:{r:["adata.inputAvailable"],s:"Math.round(_0)"},p:[46,9,2187]},"W"]}]}]}," ",{p:[49,1,2262],t:7,e:"n-display",a:{title:"Output"},f:[{p:[50,3,2292],t:7,e:"n-section",a:{label:"Output Mode"},f:[{p:[51,5,2329],t:7,e:"n-button",a:{icon:[{t:2,x:{r:["data.outputAttempt"],s:'_0?"power-off":"close"'},p:[51,21,2345]}],style:[{t:2,x:{r:["data.outputAttempt"],s:'_0?"selected":null'},p:[51,76,2400]}],action:"tryoutput"},f:[{t:2,x:{r:["data.outputAttempt"],s:'_0?"On":"Off"'},p:[52,26,2470]}]},"   [",{p:[54,6,2537],t:7,e:"span",a:{"class":[{t:2,r:"outputState",p:[54,19,2550]}]},f:[{t:2,x:{r:["data.outputting","data.charge"],s:'_0?"Sending":_1>0?"Not Sending":"No Charge"'},p:[54,36,2567]}]},"]"]}," ",{p:[56,3,2673],t:7,e:"n-section",a:{label:"Target Output"},f:[{p:[57,5,2712],t:7,e:"n-bar",a:{min:"0",max:[{t:2,r:"data.outputLevelMax",p:[57,25,2732]}],value:[{t:2,r:"data.outputLevel",p:[57,57,2764]}]},f:[{t:2,x:{r:["adata.outputLevel"],s:"Math.round(_0)"},p:[57,79,2786]},"W"]}]}," ",{p:[59,3,2847],t:7,e:"n-section",a:{label:"Adjust Output"},f:[{p:[60,5,2886],t:7,e:"n-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.outputLevel"],s:'_0==0?"disabled":null'},p:[60,43,2924]}],action:"output",params:'{"output": "min"}'}}," ",{p:[61,5,3021],t:7,e:"n-button",a:{icon:"backward",state:[{t:2,x:{r:["data.outputLevel"],s:'_0==0?"disabled":null'},p:[61,38,3054]}],action:"output",params:'{"output": "minus"}'}}," ",{p:[62,5,3153],t:7,e:"n-button",a:{icon:"pencil",action:"output",params:'{"output": "custom"}'},f:["Set"]}," ",{p:[63,5,3243],t:7,e:"n-button",a:{icon:"forward",state:[{t:2,x:{r:["data.outputLevel","data.outputLevelMax"],s:'_0==_1?"disabled":null'},p:[63,37,3275]}],action:"output",params:'{"output": "plus"}'}}," ",{p:[64,5,3391],t:7,e:"n-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.outputLevel","data.outputLevelMax"],s:'_0==_1?"disabled":null'},p:[64,42,3428]}],action:"output",params:'{"output": "max"}'}}]}," ",{p:[66,3,3557],t:7,e:"n-section",a:{label:"Outputting"},f:[{p:[67,3,3591],t:7,e:"span",f:[{t:2,x:{r:["adata.outputUsed"],s:"Math.round(_0)"},p:[67,9,3597]},"W"]}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],38:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"n-display",a:{title:"Status"},f:[{p:[2,3,30],t:7,e:"n-section",a:{label:"Generated Power"},f:[{t:2,x:{r:["adata.generated"],s:"Math.round(_0)"},p:[3,5,71]},"W"]}," ",{p:[5,3,123],t:7,e:"n-section",a:{label:"Orientation"},f:[{p:[6,5,160],t:7,e:"span",f:[{t:2,x:{r:["adata.angle"],s:"Math.round(_0)"},p:[6,11,166]},"° (",{t:2,r:"data.direction",p:[6,45,200]},")"]}]}," ",{p:[8,3,246],t:7,e:"n-section",a:{label:"Adjust Angle"},f:[{p:[9,5,284],t:7,e:"n-button",a:{icon:"step-backward",action:"control",params:'{"cdir": -15}'},f:["15°"]}," ",{p:[10,5,379],t:7,e:"n-button",a:{icon:"backward",action:"control",params:'{"cdir": -5}'},f:["5°"]}," ",{p:[11,5,467],t:7,e:"n-button",a:{icon:"forward",action:"control",params:'{"cdir": 5}'},f:["5°"]}," ",{p:[12,5,553],t:7,e:"n-button",a:{icon:"step-forward",action:"control",params:'{"cdir": 15}'},f:["15°"]}]}]}," ",{p:[15,1,671],t:7,e:"n-display",a:{title:"Tracking"},f:[{p:[16,3,703],t:7,e:"n-section",a:{label:"Tracker Mode"},f:[{p:[17,5,741],t:7,e:"n-button",a:{icon:"close",state:[{t:2,x:{r:["data.tracking_state"],s:'_0==0?"selected":null'},p:[17,35,771]}],action:"tracking",params:'{"mode": 0}'},f:["Off"]}," ",{p:[19,5,887],t:7,e:"n-button",a:{icon:"clock-o",state:[{t:2,x:{r:["data.tracking_state"],s:'_0==1?"selected":null'},p:[19,37,919]}],action:"tracking",params:'{"mode": 1}'},f:["Timed"]}," ",{p:[21,5,1037],t:7,e:"n-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.connected_tracker","data.tracking_state"],s:'_0?_1==2?"selected":null:"disabled"'},p:[21,37,1069]}],action:"tracking",params:'{"mode": 2}'},f:["Auto"]}]}," ",{p:[24,3,1237],t:7,e:"n-section",a:{label:"Tracking Rate"},f:[{p:[25,3,1274],t:7,e:"span",f:[{t:2,x:{r:["adata.tracking_rate"],s:"Math.round(_0)"},p:[25,9,1280]},"°/h (",{t:2,r:"data.rotating_way",p:[25,53,1324]},")"]}]}," ",{p:[27,3,1372],t:7,e:"n-section",a:{label:"Adjust Rate"},f:[{p:[28,5,1409],t:7,e:"n-button",a:{icon:"fast-backward",action:"control",params:'{"tdir": -180}'},f:["180°"]}," ",{p:[29,5,1506],t:7,e:"n-button",a:{icon:"step-backward",action:"control",params:'{"tdir": -30}'},f:["30°"]}," ",{p:[30,5,1601],t:7,e:"n-button",a:{icon:"backward",action:"control",params:'{"tdir": -5}'},f:["5°"]}," ",{p:[31,5,1689],t:7,e:"n-button",a:{icon:"forward",action:"control",params:'{"tdir": 5}'},f:["5°"]}," ",{p:[32,5,1775],t:7,e:"n-button",a:{icon:"step-forward",action:"control",params:'{"tdir": 30}'},f:["30°"]}," ",{p:[33,5,1868],t:7,e:"n-button",a:{icon:"fast-forward",action:"control",params:'{"tdir": 180}'},f:["180°"]}]}]}," ",{p:{button:[{p:[38,5,2051],t:7,e:"n-button",a:{icon:"refresh",action:"refresh"},f:["Refresh"]}]},t:7,e:"n-display",a:{title:"Devices",button:0},f:[" ",{p:[40,2,2130],t:7,e:"n-section",a:{label:"Solar Tracker"},f:[{p:[41,5,2169],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.connected_tracker"],s:'_0?"good":"bad"'},p:[41,18,2182]}]},f:[{t:2,x:{r:["data.connected_tracker"],s:'_0?"":"Not "'},p:[41,63,2227]},"Found"]}]}," ",{p:[43,2,2297],t:7,e:"n-section",a:{label:"Solar Panels"},f:[{p:[44,3,2333],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.connected_panels"],s:'_0?"good":"bad"'},p:[44,16,2346]}]},f:[{t:2,x:{r:["adata.connected_panels"],s:"Math.round(_0)"},p:[44,60,2390]}," Panels Connected"]}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],39:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(e){e.exports={data:{text:t("../text")}}}(i),i.exports.template={v:3,t:[" ",{p:{button:[{t:4,f:[{p:[10,7,193],t:7,e:"n-button",a:{icon:"eject",action:"eject"},f:["Eject"]}],n:50,r:"data.open",p:[9,5,168]}]},t:7,e:"n-display",a:{title:"Power",button:0},f:[" ",{p:[13,3,280],t:7,e:"n-section",a:{label:"Power"},f:[{p:[14,5,311],t:7,e:"n-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[14,21,327]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[15,14,378]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[16,22,433]}]}]}," ",{p:[18,3,490],t:7,e:"n-section",a:{label:"Cell"},f:[{t:4,f:[{p:[20,7,553],t:7,e:"n-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.powerLevel",p:[20,39,585]}]},f:[{t:2,x:{r:["adata.powerLevel"],s:"Math.fixed(_0)"},p:[20,60,606]},"%"]}],n:50,r:"data.hasPowercell",p:[19,5,520]},{t:4,n:51,f:[{p:[22,4,664],t:7,e:"span",a:{"class":"bad"},f:["No Cell"]}],r:"data.hasPowercell"}]}]}," ",{p:[26,1,739],t:7,e:"n-display",a:{title:"Thermostat"},f:[{p:[27,3,773],t:7,e:"n-section",a:{label:"Current Temperature"},f:[{p:[28,3,816],t:7,e:"span",f:[{t:2,x:{r:["adata.currentTemp"],s:"Math.round(_0)"},p:[28,9,822]},"°C"]}]}," ",{p:[30,2,886],t:7,e:"n-section",a:{label:"Target Temperature"},f:[{p:[31,3,928],t:7,e:"span",f:[{t:2,x:{r:["adata.targetTemp"],s:"Math.round(_0)"},p:[31,9,934]},"°C"]}]}," ",{t:4,f:[{p:[34,2,1018],t:7,e:"n-section",a:{label:"Adjust Target"},f:[{p:[35,7,1059],t:7,e:"n-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.targetTemp","data.minTemp"],s:'_0>_1?null:"disabled"'},p:[35,45,1097]}],action:"target",params:'{"target": -20}'}}," ",{p:[36,7,1203],t:7,e:"n-button",a:{icon:"backward",state:[{t:2,x:{r:["data.targetTemp","data.minTemp"],s:'_0>_1?null:"disabled"'},p:[36,40,1236]}],action:"target",params:'{"target": -5}'}}," ",{p:[37,7,1341],t:7,e:"n-button",a:{icon:"pencil",action:"target",params:'{"target": "custom"}'},f:["Set"]}," ",{p:[38,7,1433],t:7,e:"n-button",a:{icon:"forward",state:[{t:2,x:{r:["data.targetTemp","data.maxTemp"],s:'_0<_1?null:"disabled"'},p:[38,39,1465]}],action:"target",params:'{"target": 5}'}}," ",{p:[39,7,1569],t:7,e:"n-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.targetTemp","data.maxTemp"],s:'_0<_1?null:"disabled"'},p:[39,44,1606]}],action:"target",params:'{"target": 20}'}}]}],n:50,r:"data.open",p:[33,3,998]}," ",{p:[42,3,1734],t:7,e:"n-section",a:{label:"Mode"},f:[{t:4,f:[{p:[44,7,1787],t:7,e:"n-button",a:{icon:"long-arrow-up",state:[{t:2,x:{r:["data.mode"],s:'_0=="heat"?"selected":null'},p:[44,45,1825]}],action:"mode",params:'{"mode": "heat"}'},f:["Heat"]}," ",{p:[45,7,1933],t:7,e:"n-button",a:{icon:"long-arrow-down",state:[{t:2,x:{r:["data.mode"],s:'_0=="cool"?"selected":null'},p:[45,47,1973]}],action:"mode",params:'{"mode": "cool"}'},f:["Cool"]}," ",{p:[46,7,2081],t:7,e:"n-button",a:{icon:"arrows-v",state:[{t:2,x:{r:["data.mode"],s:'_0=="auto"?"selected":null'},p:[46,40,2114]}],action:"mode",params:'{"mode": "auto"}'},f:["Auto"]}],n:50,r:"data.open",p:[43,3,1762]},{t:4,n:51,f:[{p:[48,4,2231],t:7,e:"span",f:[{t:2,x:{r:["text","data.mode"],s:"_0.titleCase(_1)"},p:[48,10,2237]}]}],r:"data.open"}]}]}]},e.exports=r.extend(i.exports)},{"../text":43,"ractive/ractive.runtime":7}],40:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(t){t.exports={data:{tankPressureState:function(){var t;return t=this.get("data.tankPressureState"),t>=200?"good":t>=100?"average":"bad"}}}}(i),i.exports.template={v:3,t:[" ",{p:[11,1,255],t:7,e:"n-notice",f:[{p:[12,3,269],t:7,e:"span",f:["The regulator ",{t:2,x:{r:["data.hasHoldingTank"],s:'_0?"is":"is not"'},p:[12,23,289]}," connected to a mask."]}]}," ",{p:[14,1,373],t:7,e:"n-display",f:[{p:[15,3,388],t:7,e:"n-section",a:{label:"Tank Pressure"},f:[{p:[16,7,429],t:7,e:"n-bar",a:{min:"0",max:"1013",value:[{t:2,r:"data.tankPressure",p:[16,40,462]}],state:[{t:2,r:"tankPressureState",p:[17,16,501]}]},f:[{t:2,x:{r:["adata.tankPressure"],s:"Math.round(_0)"},p:[17,39,524]}," kPa"]}]}," ",{p:[19,3,590],t:7,e:"n-section",a:{label:"Release Pressure"},f:[{p:[20,5,632],t:7,e:"n-bar",a:{min:[{t:2,r:"data.minReleasePressure",p:[20,17,644]}],max:[{t:2,r:"data.maxReleasePressure",p:[20,51,678]}],value:[{t:2,r:"data.releasePressure",p:[21,14,721]}]},f:[{t:2,x:{r:["adata.releasePressure"],s:"Math.round(_0)"},p:[21,40,747]}," kPa"]}]}," ",{p:[23,3,816],t:7,e:"n-section",a:{label:"Pressure Regulator"},f:[{p:[24,5,860],t:7,e:"n-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.releasePressure","data.defaultReleasePressure"],s:'_0!=_1?null:"disabled"'},p:[24,37,892]}],action:"pressure",params:'{"pressure": "reset"}'},f:["Reset"]}," ",{p:[26,5,1047],t:7,e:"n-button",a:{icon:"minus",state:[{t:2,x:{r:["data.releasePressure","data.minReleasePressure"],s:'_0>_1?null:"disabled"'},p:[26,35,1077]}],action:"pressure",params:'{"pressure": "min"}'},f:["Min"]}," ",{p:[28,5,1223],t:7,e:"n-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "custom"}'},f:["Set"]}," ",{p:[29,5,1317],t:7,e:"n-button",a:{icon:"plus",state:[{t:2,x:{r:["data.releasePressure","data.maxReleasePressure"],s:'_0<_1?null:"disabled"'},p:[29,34,1346]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}]}," ",{p:[32,3,1506],t:7,e:"n-section",a:{label:"Valve"},f:[{p:[33,5,1537],t:7,e:"n-button",a:{icon:[{t:2,x:{r:["data.valveOpen"],s:'_0?"unlock":"lock"'},p:[33,21,1553]}],state:[{t:2,x:{r:["data.maskConnected"],s:'_0?null:"disabled"'},p:[33,68,1600]}],action:"valve"},f:[{t:2,x:{r:["data.valveOpen"],s:'_0?"Open":"Closed"'},p:[34,22,1666]}]}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],41:[function(t,e,n){var r,i,a;t("ie8/build/ie8.max"),t("dom4/build/dom4.max"),t("es5-shim"),t("html5shiv"),t("./math"),r=t("ractive/ractive.runtime"),r.DEBUG=/minified/.test(function(t){}),i=t("webfontloader"),i.load({custom:{families:["FontAwesome"],urls:["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.5.0/css/font-awesome.min.css"]}}),a=t("./tgui"),window.tgui=new a({el:"#container",data:function(){var t;return t=JSON.parse(document.getElementById("data").textContent),(null==t||null==t.data||null==t.config)&&alert("Initial data did not load correctly."),t.adata=t.data,t},onrender:function(){return this.observe("config.style",function(t,e,n){return null!=e&&document.body.classList.remove(e),null!=t?document.body.classList.add(t):void 0})}})},{"./math":42,"./tgui":44,"dom4/build/dom4.max":1,"es5-shim":2,html5shiv:3,"ie8/build/ie8.max":4,"ractive/ractive.runtime":7,webfontloader:8}],42:[function(t,e,n){Math.clamp=function(t,e,n){return Math.max(e,Math.min(t,n))},Math.fixed=function(t,e){return null==e&&(e=1),+(Math.round(t+"e"+e)+"e-"+e)}},{}],43:[function(t,e,n){e.exports={upperCaseFirst:function(t){return t[0].toUpperCase()+t.slice(1).toLowerCase()},titleCase:function(t){return t.replace(/\w\S*/g,this.upperCaseFirst)}}},{}],44:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(e){e.exports={components:{"n-bar":t("./components/bar"),"n-button":t("./components/button"),"n-display":t("./components/display"),"n-notice":t("./components/notice"),"n-section":t("./components/section"),"n-subdisplay":t("./components/subdisplay")},events:{enter:t("ractive-events-keys").enter,space:t("ractive-events-keys").space},transitions:{fade:t("ractive-transitions-fade")},onconfig:function(){var e,n;return n=this.get("config.interface"),e={air_alarm:t("./interfaces/air_alarm.ract"),airlock_electronics:t("./interfaces/airlock_electronics.ract"),apc:t("./interfaces/apc.ract"),atmos_filter:t("./interfaces/atmos_filter.ract"),atmos_mixer:t("./interfaces/atmos_mixer.ract"),atmos_pump:t("./interfaces/atmos_pump.ract"),canister:t("./interfaces/canister.ract"),chem_dispenser:t("./interfaces/chem_dispenser.ract"),chem_heater:t("./interfaces/chem_heater.ract"),cryo:t("./interfaces/cryo.ract"),error:t("./interfaces/error.ract"),smes:t("./interfaces/smes.ract"),solar_control:t("./interfaces/solar_control.ract"),space_heater:t("./interfaces/space_heater.ract"),tanks:t("./interfaces/tanks.ract")},null!=e[n]?this.components["interface"]=e[n]:null==this.components["interface"]?this.components["interface"]=t("./interfaces/error"):void 0},onrender:function(){return this.observe("config.style",function(t,e,n){return null!=e&&this.el.classList.remove(e(e)),null!=t?this.el.classList.add(t(t)):void 0})}}}(i),i.exports.template={v:3,t:[" "," "," ",{p:[31,1,1244],t:7,e:"titlebar",f:[{t:3,r:"config.title",p:[31,11,1254]}]}," ",{p:[32,1,1285],t:7,e:"main",f:[{p:[33,3,1295],t:7,e:"interface"}]}," ",{p:[35,1,1319],t:7,e:"resize"}]},i.exports.components=i.exports.components||{};var a={titlebar:t("./components/titlebar.ract"),resize:t("./components/resize.ract")};for(var o in a)a.hasOwnProperty(o)&&(i.exports.components[o]=a[o]);e.exports=r.extend(i.exports)},{"./components/bar":10,"./components/button":11,"./components/display":12,"./components/notice":13,"./components/resize.ract":14,"./components/section":15,"./components/subdisplay":16,"./components/titlebar.ract":17,"./interfaces/air_alarm.ract":19,"./interfaces/airlock_electronics.ract":27,"./interfaces/apc.ract":28,"./interfaces/atmos_filter.ract":29,"./interfaces/atmos_mixer.ract":30,"./interfaces/atmos_pump.ract":31,"./interfaces/canister.ract":32,"./interfaces/chem_dispenser.ract":33,"./interfaces/chem_heater.ract":34,"./interfaces/cryo.ract":35,"./interfaces/error":36,"./interfaces/error.ract":36,"./interfaces/smes.ract":37,"./interfaces/solar_control.ract":38,"./interfaces/space_heater.ract":39,"./interfaces/tanks.ract":40,"ractive-events-keys":5,"ractive-transitions-fade":6,"ractive/ractive.runtime":7}]},{},[41]); \ No newline at end of file +},enabled:function(){return this.get("config.status")===r.UI_INTERACTIVE?!0:!1},styles:function(){var t,e,n;return t=this.get("enabled"),e=this.get("state"),n=this.get("style"),t?e?""+e:"normal "+[n]:"disabled"}},oninit:function(){return this.on("act",function(t){var e,r,i;return t.node.blur(),i=this.get(),e=i.action,r=i.params,null!=e?n.act(this.get("config.ref"),e,r):void 0})}}}(i),i.exports.template={v:3,t:[" ",{p:[28,1,733],t:7,e:"span",a:{"class":["button ",{t:2,r:"styles",p:[28,21,753]}," ",{t:4,f:["gridable"],r:"grid",p:[28,32,764]}],unselectable:"true"},m:[{t:4,f:["tabindex='0'"],r:"clickable",p:[30,3,814]}],v:{"click-enter":{n:[{t:4,f:["act"],r:"clickable",p:[31,19,865]}],d:[]}},f:[{t:4,f:[{p:[33,5,911],t:7,e:"i",a:{"class":["fa fa-",{t:2,r:"icon",p:[33,21,927]}]}}],n:50,r:"icon",p:[32,3,893]}," ",{t:16,p:[35,3,956]}]}]},e.exports=r.extend(i.exports)},{"../byond":9,"../constants":18,"ractive/ractive.runtime":7}],12:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"div",a:{"class":"display"},f:[{t:4,f:[{p:[3,5,44],t:7,e:"header",f:[{p:[4,7,60],t:7,e:"h3",f:[{t:2,r:"title",p:[4,11,64]}]}," ",{t:4,f:[{t:16,n:"button",p:[5,21,100]}],n:50,r:"button",p:[5,7,86]}]}],n:50,r:"title",p:[2,3,25]}," ",{p:[8,3,153],t:7,e:"article",f:[{t:16,p:[9,5,168]}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],13:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"div",a:{"class":"notice"},f:[{t:16,p:[2,3,24]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],14:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(e){var n;n=t("../byond"),e.exports={oninit:function(){return this.observe("config.fancy",function(t,e,r){return n.winset(this.get("config.window"),"can-resize",!t)}),this.on({startresize:function(){return this.toggle("resize"),!1},endresize:function(){return this.set("resize"),this.set("x"),this.set("y"),!1},resize:function(t){var e,r;return this.get("x")&&(e=Math.max(100,t.original.screenX-this.get("x")+window.innerWidth),r=Math.max(100,t.original.screenY-this.get("y")+window.innerHeight),n.winset(this.get("config.window"),"size",e+","+r)),this.set({x:t.original.screenX,y:t.original.screenY}),!1}})}}}(i),i.exports.template={v:3,t:[" ",{t:4,f:[{p:[22,3,750],t:7,e:"div",a:{"class":"resize"},v:{mousedown:"startresize","mouseup-mouseleave":"endresize",mousemove:{n:[{t:4,f:["resize"],r:"resize",p:[22,98,845]}],d:[]}}}],n:50,r:"config.fancy",p:[21,1,726]}]},e.exports=r.extend(i.exports)},{"../byond":9,"ractive/ractive.runtime":7}],15:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"section",f:[{t:4,f:[{p:[3,5,32],t:7,e:"span",a:{"class":"label"},f:[{t:2,r:"label",p:[3,25,52]},":"]}," ",{t:4,f:[{t:16,p:[5,7,97]}],n:50,r:"nowrap",p:[4,5,75]},{t:4,n:51,f:[{p:[7,7,128],t:7,e:"div",a:{"class":"content"},f:[{t:16,p:[8,9,159]}]}],r:"nowrap"}],n:50,r:"label",p:[2,3,13]},{t:4,n:51,f:[{t:16,p:[12,5,213]}],r:"label"}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],16:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"div",a:{"class":"subdisplay"},f:[{t:4,f:[{p:[3,5,47],t:7,e:"header",f:[{p:[4,7,63],t:7,e:"h4",f:[{t:2,r:"title",p:[4,11,67]}]}," ",{t:4,f:[{t:16,n:"button",p:[5,21,103]}],n:50,r:"button",p:[5,7,89]}]}],n:50,r:"title",p:[2,3,28]}," ",{p:[8,3,156],t:7,e:"article",f:[{t:16,p:[9,5,171]}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],17:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(e){var n;n=t("../byond"),e.exports={computed:{visualStatus:function(){var e,n;return n=this.get("config.status"),e=t("../constants"),n===e.UI_INTERACTIVE?"good":n===e.UI_UPDATE?"average":n===e.UI_DISABLED?"bad":void 0}},oninit:function(){return this.observe("config.fancy",function(t,e,r){return n.winset(this.get("config.window"),"titlebar",!t)}),this.on({startdrag:function(){return this.toggle("drag"),!1},enddrag:function(){return this.set("drag"),this.set("x"),this.set("y"),!1},drag:function(t){var e,r;return this.get("x")&&(e=t.original.screenX-this.get("x")+window.screenLeft,r=t.original.screenY-this.get("y")+window.screenTop,n.winset(this.get("config.window"),"pos",e+","+r)),this.set({x:t.original.screenX,y:t.original.screenY}),!1}}),this.on({close:function(){return n.winset(this.get("config.window"),"is-visible","false"),location.href=n.href({command:"uiclose "+this.get("config.ref")},"winset")},minimize:function(){return n.winset(this.get("config.window"),"is-minimized","true")}})}}}(i),i.exports.template={v:3,t:[" ",{p:[35,1,1246],t:7,e:"header",a:{"class":"titlebar"},v:{mousedown:"startdrag","mouseup-mouseleave":"enddrag",mousemove:{n:[{t:4,f:["drag"],r:"drag",p:[35,97,1342]}],d:[]}},f:[{p:[36,3,1366],t:7,e:"i",a:{"class":["statusicon fa fa-eye fa-2x ",{t:2,r:"visualStatus",p:[36,40,1403]}]}}," ",{p:[37,3,1429],t:7,e:"span",a:{"class":"title"},f:[{t:16,p:[37,23,1449]}]}," ",{t:4,f:[{p:[39,5,1495],t:7,e:"i",a:{"class":"minimize fa fa-minus fa-2x"},v:{click:"minimize"}}," ",{p:[40,5,1563],t:7,e:"i",a:{"class":"close fa fa-close fa-2x"},v:{click:"close"}}],n:50,r:"config.fancy",p:[38,3,1469]}]}]},e.exports=r.extend(i.exports)},{"../byond":9,"../constants":18,"ractive/ractive.runtime":7}],18:[function(t,e,n){e.exports={UI_INTERACTIVE:2,UI_UPDATE:1,UI_DISABLED:0,UI_CLOSE:-1}},{}],19:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[" "," "," "," "," "," ",{p:[8,1,327],t:7,e:"ui-notice",f:[{t:4,f:[{p:[10,5,372],t:7,e:"ui-section",a:{label:"Interface Lock"},f:[{p:[11,7,415],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.locked"],s:'_0?"lock":"unlock"'},p:[11,24,432]}],action:"lock"},f:[{t:2,x:{r:["data.locked"],s:'_0?"Engaged":"Disengaged"'},p:[11,75,483]}]}]}],n:50,r:"data.siliconUser",p:[9,3,342]},{t:4,n:51,f:[{p:[14,5,574],t:7,e:"span",f:["Swipe an ID card to ",{t:2,x:{r:["data.locked"],s:'_0?"unlock":"lock"'},p:[14,31,600]}," this interface."]}],r:"data.siliconUser"}]}," ",{p:[17,1,685],t:7,e:"status"}," ",{t:4,f:[{t:4,f:[{p:[20,5,769],t:7,e:"controls"}],n:50,x:{r:["data.screen"],s:"_0==1"},p:[19,2,739]},{t:4,n:51,f:[{t:4,n:50,x:{r:["data.screen"],s:"_0==2"},f:[{p:[22,5,816],t:7,e:"vents"}]},{t:4,n:50,x:{r:["data.screen"],s:"(!(_0==2))&&(_0==3)"},f:[" ",{p:[24,5,861],t:7,e:"scrubbers"}]},{t:4,n:50,x:{r:["data.screen"],s:"(!(_0==2))&&((!(_0==3))&&(_0==4))"},f:[" ",{p:[26,5,910],t:7,e:"modes"}]},{t:4,n:50,x:{r:["data.screen"],s:"(!(_0==2))&&((!(_0==3))&&((!(_0==4))&&(_0==5)))"},f:[" ",{p:[28,5,955],t:7,e:"thresholds"}]}],x:{r:["data.screen"],s:"_0==1"}}],n:50,x:{r:["data.locked","data.siliconUser"],s:"!_0||_1"},p:[18,1,696]}]},i.exports.components=i.exports.components||{};var a={vents:t("./air_alarm/vents.ract"),modes:t("./air_alarm/modes.ract"),thresholds:t("./air_alarm/thresholds.ract"),status:t("./air_alarm/status.ract"),scrubbers:t("./air_alarm/scrubbers.ract"),controls:t("./air_alarm/controls.ract")};for(var o in a)a.hasOwnProperty(o)&&(i.exports.components[o]=a[o]);e.exports=r.extend(i.exports)},{"./air_alarm/controls.ract":21,"./air_alarm/modes.ract":22,"./air_alarm/scrubbers.ract":23,"./air_alarm/status.ract":24,"./air_alarm/thresholds.ract":25,"./air_alarm/vents.ract":26,"ractive/ractive.runtime":7}],20:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-button",a:{icon:"arrow-left",action:"screen",params:'{"screen": 1}'},f:["Back"]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],21:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Air Controls"},f:[{p:[2,3,37],t:7,e:"ui-section",f:[{p:[3,5,55],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.atmos_alarm"],s:'_0?"exclamation-triangle":"exclamation"'},p:[3,22,72]}],style:[{t:2,x:{r:["data.atmos_alarm"],s:'_0?"caution":null'},p:[3,92,142]}],action:[{t:2,x:{r:["data.atmos_alarm"],s:'_0?"reset":"alarm"'},p:[4,17,200]}]},f:["Area Atmosphere Alarm"]}]}," ",{p:[6,3,296],t:7,e:"ui-section",f:[{p:[7,5,314],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.mode"],s:'_0==3?"exclamation-triangle":"exclamation"'},p:[7,22,331]}],style:[{t:2,x:{r:["data.mode"],s:'_0==3?"danger":null'},p:[7,90,399]}],action:"mode",params:['{"mode": ',{t:2,x:{r:["data.mode"],s:"_0==3?1:3"},p:[8,38,475]},"}"]},f:["Panic Siphon"]}]}," ",{p:[10,3,549],t:7,e:"br"}," ",{p:[11,3,558],t:7,e:"ui-section",f:[{p:[12,5,576],t:7,e:"ui-button",a:{icon:"sign-out",action:"screen",params:'{"screen": 2}'},f:["Vent Controls"]}]}," ",{p:[14,3,688],t:7,e:"ui-section",f:[{p:[15,5,706],t:7,e:"ui-button",a:{icon:"filter",action:"screen",params:'{"screen": 3}'},f:["Scrubber Controls"]}]}," ",{p:[17,3,820],t:7,e:"ui-section",f:[{p:[18,5,838],t:7,e:"ui-button",a:{icon:"cog",action:"screen",params:'{"screen": 4}'},f:["Operating Mode"]}]}," ",{p:[20,3,946],t:7,e:"ui-section",f:[{p:[21,5,964],t:7,e:"ui-button",a:{icon:"bar-chart",action:"screen",params:'{"screen": 5}'},f:["Alarm Thresholds"]}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],22:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[" ",{p:{button:[{p:[5,5,115],t:7,e:"back"}]},t:7,e:"ui-display",a:{title:"Operating Modes",button:0},f:[" ",{t:4,f:[{p:[8,5,168],t:7,e:"ui-section",f:[{p:[9,7,188],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["selected"],s:'_0?"check-square-o":"square-o"'},p:[9,24,205]}],state:[{t:2,x:{r:["selected","danger"],s:'_0?_1?"danger":"selected":null'},p:[10,16,267]}],action:"mode",params:['{"mode": ',{t:2,r:"mode",p:[11,40,361]},"}"]},f:[{t:2,r:"name",p:[11,51,372]}]}]}],n:52,r:"data.modes",p:[7,3,142]}]}]},i.exports.components=i.exports.components||{};var a={back:t("./back.ract")};for(var o in a)a.hasOwnProperty(o)&&(i.exports.components[o]=a[o]);e.exports=r.extend(i.exports)},{"./back.ract":20,"ractive/ractive.runtime":7}],23:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[" ",{p:{button:[{p:[5,5,117],t:7,e:"back"}]},t:7,e:"ui-display",a:{title:"Scrubber Controls",button:0},f:[" ",{t:4,f:[{p:[8,5,174],t:7,e:"ui-subdisplay",a:{title:[{t:2,r:"long_name",p:[8,27,196]}]},f:[{p:[9,7,219],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[10,9,255],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["power"],s:'_0?"power-off":"close"'},p:[10,26,272]}],style:[{t:2,x:{r:["power"],s:'_0?"selected":null'},p:[10,68,314]}],action:"power",params:['{"id_tag": "',{t:2,r:"id_tag",p:[11,46,391]},'", "val": ',{t:2,x:{r:["power"],s:"+!_0"},p:[11,66,411]},"}"]},f:[{t:2,x:{r:["power"],s:'_0?"On":"Off"'},p:[11,80,425]}]}]}," ",{p:[13,7,490],t:7,e:"ui-section",a:{label:"Mode"},f:[{p:[14,9,525],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["scrubbing"],s:'_0?"filter":"sign-in"'},p:[14,26,542]}],style:[{t:2,x:{r:["scrubbing"],s:'_0?null:"danger"'},p:[14,71,587]}],action:"scrubbing",params:['{"id_tag": "',{t:2,r:"id_tag",p:[15,50,670]},'", "val": ',{t:2,x:{r:["scrubbing"],s:"+!_0"},p:[15,70,690]},"}"]},f:[{t:2,x:{r:["scrubbing"],s:'_0?"Scrubbing":"Siphoning"'},p:[15,88,708]}]}]}," ",{p:[17,7,790],t:7,e:"ui-section",a:{label:"Range"},f:[{p:[18,9,826],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["widenet"],s:'_0?"expand":"compress"'},p:[18,26,843]}],style:[{t:2,x:{r:["widenet"],s:'_0?"selected":null'},p:[18,70,887]}],action:"widenet",params:['{"id_tag": "',{t:2,r:"id_tag",p:[19,48,968]},'", "val": ',{t:2,x:{r:["widenet"],s:"+!_0"},p:[19,68,988]},"}"]},f:[{t:2,x:{r:["widenet"],s:'_0?"Expanded":"Normal"'},p:[19,84,1004]}]}]}," ",{p:[21,7,1080],t:7,e:"ui-section",a:{label:"Filters"},f:[{p:[22,9,1118],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["filter_co2"],s:'_0?"check-square-o":"square-o"'},p:[22,26,1135]}],style:[{t:2,x:{r:["filter_co2"],s:'_0?"selected":null'},p:[22,81,1190]}],action:"co2_scrub",params:['{"id_tag": "',{t:2,r:"id_tag",p:[23,50,1276]},'", "val": ',{t:2,x:{r:["filter_co2"],s:"+!_0"},p:[23,70,1296]},"}"]},f:["Oxygen"]}," ",{p:[24,9,1343],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["filter_n2o"],s:'_0?"check-square-o":"square-o"'},p:[24,26,1360]}],style:[{t:2,x:{r:["filter_n2o"],s:'_0?"selected":null'},p:[24,81,1415]}],action:"n2o_scrub",params:['{"id_tag": "',{t:2,r:"id_tag",p:[25,50,1501]},'", "val": ',{t:2,x:{r:["filter_n2o"],s:"+!_0"},p:[25,70,1521]},"}"]},f:["Nitrogen"]}," ",{p:[26,9,1570],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["filter_toxins"],s:'_0?"check-square-o":"square-o"'},p:[26,26,1587]}],style:[{t:2,x:{r:["filter_toxins"],s:'_0?"selected":null'},p:[26,84,1645]}],action:"tox_scrub",params:['{"id_tag": "',{t:2,r:"id_tag",p:[27,50,1734]},'", "val": ',{t:2,x:{r:["filter_toxins"],s:"+!_0"},p:[27,70,1754]},"}"]},f:["Plasma"]}]}]}],n:52,r:"data.scrubbers",p:[7,3,144]},{t:4,n:51,f:[{p:[31,5,1855],t:7,e:"span",a:{"class":"bad"},f:["Error: No scrubbers connected."]}],r:"data.scrubbers"}]}]},i.exports.components=i.exports.components||{};var a={back:t("./back.ract")};for(var o in a)a.hasOwnProperty(o)&&(i.exports.components[o]=a[o]);e.exports=r.extend(i.exports)},{"./back.ract":20,"ractive/ractive.runtime":7}],24:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Air Status"},f:[{t:4,f:[{t:4,f:[{p:[4,7,109],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[4,26,128]}]},f:[{p:[5,6,145],t:7,e:"span",a:{"class":[{t:2,x:{r:["danger_level"],s:'_0==2?"bad":_0==1?"average":"good"'},p:[5,19,158]}]},f:[{t:2,x:{r:["value"],s:"Math.fixed(_0,2)"},p:[6,5,236]},{t:2,r:"unit",p:[6,29,260]}]}]}],n:52,r:"data.environment_data",p:[3,5,70]}," ",{p:[10,5,321],t:7,e:"ui-section",a:{label:"Local Status"},f:[{p:[11,7,362],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.danger_level"],s:'_0==2?"bad bold":_0==1?"average bold":"good"'},p:[11,20,375]}]},f:[{t:2,x:{r:["data.danger_level"],s:'_0==2?"Danger (Internals Required)":_0==1?"Caution":"Optimal"'},p:[12,6,474]}]}]}," ",{p:[15,5,618],t:7,e:"ui-section",a:{label:"Area Status"},f:[{p:[16,4,655],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.atmos_alarm","data.fire_alarm"],s:'_0||_1?"bad bold":"good"'},p:[16,17,668]}]},f:[{t:2,x:{r:["data.atmos_alarm","fire_alarm"],s:'_0?"Atmosphere Alarm":_1?"Fire Alarm":"Nominal"'},p:[17,8,740]}]}]}],n:50,r:"data.environment_data",p:[2,3,35]},{t:4,n:51,f:[{p:[21,5,872],t:7,e:"ui-section",f:[{p:[22,7,892],t:7,e:"span",a:{"class":"bad bold"},f:["Warning: Cannot obtain air sample for analysis."]}]}],r:"data.environment_data"}," ",{t:4,f:[{p:[26,5,1029],t:7,e:"hr"}," ",{p:[27,5,1040],t:7,e:"ui-section",f:[{p:[28,7,1060],t:7,e:"span",a:{"class":"bad bold"},f:["Warning: Safety measures offline. Device may exhibit abnormal behavior."]}]}],n:50,r:"data.emagged",p:[25,3,1003]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],25:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.css="th,\ntd {\n padding-right: 16px;\n text-align: left;\n}\n",i.exports.template={v:3,t:[" ",{p:{button:[{p:[5,5,116],t:7,e:"back"}]},t:7,e:"ui-display",a:{title:"Alarm Thresholds",button:0},f:[" ",{p:[7,3,143],t:7,e:"table",f:[{p:[8,5,156],t:7,e:"thead",f:[{p:[8,12,163],t:7,e:"tr",f:[{p:[9,7,175],t:7,e:"th"}," ",{p:[10,7,192],t:7,e:"th",f:[{p:[10,11,196],t:7,e:"span",a:{"class":"bad"},f:["min2"]}]}," ",{p:[11,7,238],t:7,e:"th",f:[{p:[11,11,242],t:7,e:"span",a:{"class":"average"},f:["min1"]}]}," ",{p:[12,7,288],t:7,e:"th",f:[{p:[12,11,292],t:7,e:"span",a:{"class":"average"},f:["max1"]}]}," ",{p:[13,7,338],t:7,e:"th",f:[{p:[13,11,342],t:7,e:"span",a:{"class":"bad"},f:["max2"]}]}]}]}," ",{p:[15,5,401],t:7,e:"tbody",f:[{t:4,f:[{p:[16,32,441],t:7,e:"tr",f:[{p:[17,9,455],t:7,e:"th",f:[{t:3,r:"name",p:[17,13,459]}]}," ",{t:4,f:[{p:[18,27,502],t:7,e:"td",f:[{p:[19,11,518],t:7,e:"ui-button",a:{action:"threshold",params:['{"env": "',{t:2,r:"env",p:[19,58,565]},'", "var": "',{t:2,r:"val",p:[19,76,583]},'"}']},f:[{t:2,x:{r:["selected"],s:"Math.fixed(_0,2)"},p:[19,87,594]}]}]}],n:52,r:"settings",p:[18,9,484]}]}],n:52,r:"data.thresholds",p:[16,7,416]}]}," ",{p:[23,3,697],t:7,e:"table",f:[]}]}]}," "]},i.exports.components=i.exports.components||{};var a={back:t("./back.ract")};for(var o in a)a.hasOwnProperty(o)&&(i.exports.components[o]=a[o]);e.exports=r.extend(i.exports)},{"./back.ract":20,"ractive/ractive.runtime":7}],26:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[" ",{p:{button:[{p:[5,5,113],t:7,e:"back"}]},t:7,e:"ui-display",a:{title:"Vent Controls",button:0},f:[" ",{t:4,f:[{p:[8,5,166],t:7,e:"ui-subdisplay",a:{title:[{t:2,r:"long_name",p:[8,27,188]}]},f:[{p:[9,7,211],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[10,9,247],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["power"],s:'_0?"power-off":"close"'},p:[10,26,264]}],style:[{t:2,x:{r:["power"],s:'_0?"selected":null'},p:[10,68,306]}],action:"power",params:['{"id_tag": "',{t:2,r:"id_tag",p:[11,46,383]},'", "val": ',{t:2,x:{r:["power"],s:"+!_0"},p:[11,66,403]},"}"]},f:[{t:2,x:{r:["power"],s:'_0?"On":"Off"'},p:[11,80,417]}]}]}," ",{p:[13,7,482],t:7,e:"ui-section",a:{label:"Mode"},f:[{p:[14,9,517],t:7,e:"span",f:[{t:2,x:{r:["direction"],s:'_0=="release"?"Pressurizing":"Siphoning"'},p:[14,15,523]}]}]}," ",{p:[16,7,616],t:7,e:"ui-section",a:{label:"Pressure Regulator"},f:[{p:[17,9,665],t:7,e:"ui-button",a:{icon:"sign-in",style:[{t:2,x:{r:["incheck"],s:'_0?"selected":null'},p:[17,42,698]}],action:"incheck",params:['{"id_tag": "',{t:2,r:"id_tag",p:[18,48,779]},'", "val": ',{t:2,r:"checks",p:[18,68,799]},"}"]},f:["Internal"]}," ",{p:[19,9,842],t:7,e:"ui-button",a:{icon:"sign-out",style:[{t:2,x:{r:["excheck"],s:'_0?"selected":null'},p:[19,43,876]}],action:"excheck",params:['{"id_tag": "',{t:2,r:"id_tag",p:[20,48,957]},'", "val": ',{t:2,r:"checks",p:[20,68,977]},"}"]},f:["External"]}]}," ",{p:[22,7,1039],t:7,e:"ui-section",a:{label:"Target Pressure"},f:[{p:[23,9,1085],t:7,e:"ui-button",a:{icon:"pencil",action:"external_pressure",params:['{"id_tag": "',{t:2,r:"id_tag",p:[24,31,1168]},'", "pressure": "custom"}']},f:[{t:2,x:{r:["external"],s:"Math.fixed(_0)"},p:[24,67,1204]}]}," ",{p:[25,9,1250],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["extdefault"],s:'_0?"disabled":null'},p:[25,42,1283]}],action:"external_pressure",params:['{"id_tag": "',{t:2,r:"id_tag",p:[26,31,1377]},'", "pressure": "reset"}']},f:["Reset"]}]}]}],n:52,r:"data.vents",p:[7,3,140]},{t:4,n:51,f:[{p:[30,5,1490],t:7,e:"span",a:{"class":"bad"},f:["Error: No vents connected."]}],r:"data.vents"}]}]},i.exports.components=i.exports.components||{};var a={back:t("./back.ract")};for(var o in a)a.hasOwnProperty(o)&&(i.exports.components[o]=a[o]);e.exports=r.extend(i.exports)},{"./back.ract":20,"ractive/ractive.runtime":7}],27:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.css="table {\n width: 100%;\n border-spacing: 2px;\n}\nth {\n text-align: left;\n}\ntd {\n vertical-align: top;\n}\ntd .button {\n margin-top: 4px;\n}\n",i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,3,16],t:7,e:"ui-section",f:[{p:[3,5,34],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.oneAccess"],s:'_0?"unlock":"lock"'},p:[3,22,51]}],action:"one_access"},f:[{t:2,x:{r:["data.oneAccess"],s:'_0?"One":"All"'},p:[3,82,111]}," Required"]}," ",{p:[4,5,172],t:7,e:"ui-button",a:{icon:"refresh",action:"clear"},f:["Clear"]}]}," ",{p:[6,3,251],t:7,e:"hr"}," ",{p:[7,3,260],t:7,e:"table",f:[{p:[8,3,271],t:7,e:"thead",f:[{p:[9,4,283],t:7,e:"tr",f:[{t:4,f:[{p:[10,5,315],t:7,e:"th",f:[{p:[10,9,319],t:7,e:"span",a:{"class":"highlight bold"},f:[{t:2,r:"name",p:[10,38,348]}]}]}],n:52,r:"data.regions",p:[9,8,287]}]}]}," ",{p:[13,3,403],t:7,e:"tbody",f:[{p:[14,4,415],t:7,e:"tr",f:[{t:4,f:[{p:[15,5,447],t:7,e:"td",f:[{t:4,f:[{p:[16,11,481],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["req"],s:'_0?"check-square-o":"square-o"'},p:[16,28,498]}],style:[{t:2,x:{r:["req"],s:'_0?"selected":null'},p:[16,76,546]}],action:"set",params:['{"access": "',{t:2,r:"id",p:[17,46,621]},'"}']},f:[{t:2,r:"name",p:[17,56,631]}]}," ",{p:[18,9,661],t:7,e:"br"}],n:52,r:"accesses",p:[15,9,451]}]}],n:52,r:"data.regions",p:[14,8,419]}]}]}]}]}," "]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],28:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(t){t.exports={data:{powerState:function(t){return 2===t?"good":1===t?"average":"bad"}},computed:{malfAction:function(){var t;return t=this.get("data.malfStatus"),1===t?"hack":2===t?"occupy":3===t?"deoccupy":void 0},malfButton:function(){var t;return t=this.get("data.malfStatus"),1===t?"Override Programming":"Shunt Core Process"},malfIcon:function(){var t;return t=this.get("data.malfStatus"),1===t?"terminal":"caret-square-o-down"},powerCellStatusState:function(){var t;return t=this.get("data.powerCellStatus"),t>50?"good":t>25?"average":"bad"}}}}(i),i.exports.template={v:3,t:[" ",{p:[31,1,988],t:7,e:"ui-notice",f:[{t:4,f:[{p:[33,5,1033],t:7,e:"ui-section",a:{label:"Interface Lock"},f:[{p:[34,7,1076],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.locked"],s:'_0?"lock":"unlock"'},p:[34,24,1093]}],action:"lock"},f:[{t:2,x:{r:["data.locked"],s:'_0?"Engaged":"Disengaged"'},p:[34,75,1144]}]}]}],n:50,r:"data.siliconUser",p:[32,3,1003]},{t:4,n:51,f:[{p:[37,5,1235],t:7,e:"span",f:["Swipe an ID card to ",{t:2,x:{r:["data.locked"],s:'_0?"unlock":"lock"'},p:[37,31,1261]}," this interface."]}],r:"data.siliconUser"}]}," ",{p:[40,1,1346],t:7,e:"ui-display",a:{title:"Power Status"},f:[{p:[41,3,1383],t:7,e:"ui-section",a:{label:"Main Breaker"},f:[{t:4,f:[{p:[43,7,1470],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.isOperating"],s:'_0?"good":"bad"'},p:[43,20,1483]}]},f:[{t:2,x:{r:["data.isOperating"],s:'_0?"On":"Off"'},p:[43,59,1522]}]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"},p:[42,5,1422]},{t:4,n:51,f:[{p:[45,7,1586],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isOperating"],s:'_0?"power-off":"close"'},p:[45,24,1603]}],style:[{t:2,x:{r:["data.isOperating"],s:'_0?"selected":null'},p:[45,77,1656]}],action:"breaker"},f:[{t:2,x:{r:["data.isOperating"],s:'_0?"On":"Off"'},p:[46,26,1724]}]}],x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"}}]}," ",{p:[49,3,1805],t:7,e:"ui-section",a:{label:"External Power"},f:[{p:[50,5,1846],t:7,e:"span",a:{"class":[{t:2,x:{r:["powerState","data.externalPower"],s:"_0(_1)"},p:[50,18,1859]}]},f:[{t:2,x:{r:["data.externalPower"],s:'_0==2?"Good":_0==1?"Low":"None"'},p:[50,54,1895]}]}]}," ",{p:[52,3,2002],t:7,e:"ui-section",a:{label:"Power Cell"},f:[{t:4,f:[{p:[54,7,2083],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.powerCellStatus",p:[54,40,2116]}],state:[{t:2,r:"powerCellStatusState",p:[54,73,2149]}]},f:[{t:2,x:{r:["adata.powerCellStatus"],s:"Math.fixed(_0)"},p:[54,99,2175]},"%"]}],n:50,x:{r:["data.powerCellStatus"],s:"_0!=null"},p:[53,5,2039]},{t:4,n:51,f:[{p:[56,7,2244],t:7,e:"span",a:{"class":"bad"},f:["Power cell removed."]}],x:{r:["data.powerCellStatus"],s:"_0!=null"}}]}," ",{t:4,f:[{p:[60,5,2364],t:7,e:"ui-section",a:{label:"Charge Mode"},f:[{t:4,f:[{p:[62,9,2454],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.chargeMode"],s:'_0?"good":"bad"'},p:[62,22,2467]}]},f:[{t:2,x:{r:["data.chargeMode"],s:'_0?"Auto":"Off"'},p:[62,60,2505]}]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"},p:[61,7,2404]},{t:4,n:51,f:[{p:[64,9,2574],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.chargeMode"],s:'_0?"refresh":"close"'},p:[64,26,2591]}],style:[{t:2,x:{r:["data.chargeMode"],s:'_0?"selected":null'},p:[64,76,2641]}],action:"charge"},f:[{t:2,x:{r:["data.chargeMode"],s:'_0?"Auto":"Off"'},p:[65,27,2709]}]}],x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"}}," [",{p:[68,8,2795],t:7,e:"span",a:{"class":[{t:2,x:{r:["powerState","data.chargingStatus"],s:"_0(_1)"},p:[68,21,2808]}]},f:[{t:2,x:{r:["data.chargingStatus"],s:'_0==2?"Fully Charged":_0==1?"Charging":"Not Charging"'},p:[68,58,2845]}]},"]"]}],n:50,x:{r:["data.powerCellStatus"],s:"_0!=null"},p:[59,3,2322]}]}," ",{p:[72,1,3003],t:7,e:"ui-display",a:{title:"Power Channels"},f:[{t:4,f:[{p:[74,5,3077],t:7,e:"ui-section",a:{label:[{t:2,r:"title",p:[74,24,3096]}],nowrap:0},f:[{p:[75,7,3122],t:7,e:"div",a:{"class":"content"},f:[{t:2,x:{r:["powerLoad"],s:"Math.round(_0)"},p:[75,28,3143]}," W"]}," ",{p:[76,7,3184],t:7,e:"div",a:{"class":"content"},f:[{p:[76,28,3205],t:7,e:"span",a:{"class":[{t:2,x:{r:["status"],s:'_0>=2?"good":"bad"'},p:[76,41,3218]}]},f:[{t:2,x:{r:["status"],s:'_0>=2?"On":"Off"'},p:[76,75,3252]}]}]}," ",{p:[77,7,3303],t:7,e:"div",a:{"class":"content"},f:["[",{p:[77,29,3325],t:7,e:"span",f:[{t:2,x:{r:["status"],s:'_0==1||_0==3?"Auto":"Manual"'},p:[77,35,3331]}]},"]"]}," ",{p:[78,7,3403],t:7,e:"div",a:{"class":"content",style:"float:right"},f:[{t:4,f:[{p:[80,11,3506],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["status"],s:'_0==1||_0==3?"selected":null'},p:[80,44,3539]}],action:"channel",params:[{t:2,r:"topicParams.auto",p:[81,38,3629]}]},f:["Auto"]}," ",{p:[82,11,3679],t:7,e:"ui-button",a:{icon:"power-off",state:[{t:2,x:{r:["status"],s:'_0==2?"selected":null'},p:[82,46,3714]}],action:"channel",params:[{t:2,r:"topicParams.on",p:[83,21,3789]}]},f:["On"]}," ",{p:[84,11,3835],t:7,e:"ui-button",a:{icon:"close",state:[{t:2,x:{r:["status"],s:'_0==0?"selected":null'},p:[84,42,3866]}],action:"channel",params:[{t:2,r:"topicParams.off",p:[85,21,3941]}]},f:["Off"]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"!_0||_1"},p:[79,9,3454]}]}]}],n:52,r:"adata.powerChannels",p:[73,3,3042]}," ",{p:[90,3,4044],t:7,e:"ui-section",a:{label:"Total Load"},f:[{p:[91,5,4081],t:7,e:"span",a:{"class":"bold"},f:[{t:2,x:{r:["adata.totalLoad"],s:"Math.round(_0)"},p:[91,24,4100]}," W"]}]}]}," ",{t:4,f:[{p:[95,3,4202],t:7,e:"ui-display",a:{title:"System Overrides"},f:[{p:[96,5,4245],t:7,e:"ui-button",a:{icon:"lightbulb-o",action:"overload"},f:["Overload"]}," ",{t:4,f:[{p:[98,7,4350],t:7,e:"ui-button",a:{icon:[{t:2,r:"malfIcon",p:[98,24,4367]}],state:[{t:2,x:{r:["data.malfStatus"],s:'_0==4?"disabled":null'},p:[98,45,4388]}],action:[{t:2,r:"malfAction",p:[98,99,4442]}]},f:[{t:2,r:"malfButton",p:[98,115,4458]}]}],n:50,r:"data.malfStatus",p:[97,5,4319]}]}],n:50,r:"data.siliconUser",p:[94,1,4174]},{p:[102,1,4525],t:7,e:"ui-notice",f:[{p:[103,3,4540],t:7,e:"ui-section",a:{label:"Cover Lock"},f:[{t:4,f:[{p:[105,7,4625],t:7,e:"span",f:[{t:2,x:{r:["data.coverLocked"],s:'_0?"Engaged":"Disengaged"'},p:[105,13,4631]}]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"},p:[104,5,4577]},{t:4,n:51,f:[{p:[107,7,4707],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.coverLocked"],s:'_0?"lock":"unlock"'},p:[107,24,4724]}],action:"cover"},f:[{t:2,x:{r:["data.coverLocked"],s:'_0?"Engaged":"Disengaged"'},p:[107,81,4781]}]}],x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"}}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],29:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,3,16],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[3,5,48],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[3,22,65]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[3,66,109]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[4,22,164]}]}]}," ",{p:[6,3,223],t:7,e:"ui-section",a:{label:"Output Pressure"},f:[{p:[7,5,265],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "custom"}'},f:["Set"]}," ",{p:[8,5,361],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.set_pressure","data.max_pressure"],s:'_0==_1?"disabled":null'},p:[8,35,391]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}," ",{p:[9,5,523],t:7,e:"span",a:{"class":"buttoninfo"},f:[{t:2,x:{r:["adata.set_pressure"],s:"Math.round(_0)"},p:[9,30,548]}," kPa"]}]}," ",{p:[11,3,614],t:7,e:"ui-section",a:{label:"Filter"},f:[{p:[12,5,647],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.filter_type"],s:'_0==-1?"selected":null'},p:[12,23,665]}],action:"filter",params:'{"mode": -1}'},f:["Nothing"]}," ",{p:[14,5,783],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.filter_type"],s:'_0==0?"selected":null'},p:[14,23,801]}],action:"filter",params:'{"mode": 0}'},f:["Plasma"]}," ",{p:[16,5,916],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.filter_type"],s:'_0==1?"selected":null'},p:[16,23,934]}],action:"filter",params:'{"mode": 1}'},f:["O2"]}," ",{p:[18,5,1045],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.filter_type"],s:'_0==2?"selected":null'},p:[18,23,1063]}],action:"filter",params:'{"mode": 2}'},f:["N2"]}," ",{p:[20,5,1174],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.filter_type"],s:'_0==3?"selected":null'},p:[20,23,1192]}],action:"filter",params:'{"mode": 3}'},f:["CO2"]}," ",{p:[22,5,1304],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.filter_type"],s:'_0==4?"selected":null'},p:[22,23,1322]}],action:"filter",params:'{"mode": 4}'},f:["N2O"]}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],30:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,3,16],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[3,5,48],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[3,22,65]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[3,66,109]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[4,22,164]}]}]}," ",{p:[6,3,223],t:7,e:"ui-section",a:{label:"Output Pressure"},f:[{p:[7,5,265],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "custom"}'},f:["Set"]}," ",{p:[8,5,361],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.set_pressure","data.max_pressure"],s:'_0==_1?"disabled":null'},p:[8,35,391]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}," ",{p:[9,5,523],t:7,e:"span",a:{"class":"buttoninfo"},f:[{t:2,x:{r:["adata.set_pressure"],s:"Math.round(_0)"},p:[9,30,548]}," kPa"]}]}," ",{p:[11,3,614],t:7,e:"ui-section",a:{label:"Node 1"},f:[{p:[12,5,647],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.node1_concentration"],s:'_0==0?"disabled":null'},p:[12,44,686]}],action:"node1",params:'{"concentration": -0.1}'}}," ",{p:[14,5,803],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.node1_concentration"],s:'_0==0?"disabled":null'},p:[14,39,837]}],action:"node1",params:'{"concentration": -0.01}'}}," ",{p:[16,5,955],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.node1_concentration"],s:'_0==100?"disabled":null'},p:[16,38,988]}],action:"node1",params:'{"concentration": 0.01}'}}," ",{p:[18,5,1107],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.node1_concentration"],s:'_0==100?"disabled":null'},p:[18,43,1145]}],action:"node1",params:'{"concentration": 0.1}'}}," ",{p:[20,5,1263],t:7,e:"span",a:{"class":"buttoninfo"},f:[{t:2,x:{r:["adata.node1_concentration"],s:"Math.round(_0)"},p:[20,30,1288]},"%"]}]}," ",{p:[22,3,1358],t:7,e:"ui-section",a:{label:"Node 2"},f:[{p:[23,5,1391],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.node2_concentration"],s:'_0==0?"disabled":null'},p:[23,44,1430]}],action:"node2",params:'{"concentration": -0.1}'}}," ",{p:[25,5,1547],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.node2_concentration"],s:'_0==0?"disabled":null'},p:[25,39,1581]}],action:"node2",params:'{"concentration": -0.01}'}}," ",{p:[27,5,1699],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.node2_concentration"],s:'_0==100?"disabled":null'},p:[27,38,1732]}],action:"node2",params:'{"concentration": 0.01}'}}," ",{p:[29,5,1851],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.node2_concentration"],s:'_0==100?"disabled":null'},p:[29,43,1889]}],action:"node2",params:'{"concentration": 0.1}'}}," ",{p:[31,5,2007],t:7,e:"span",a:{"class":"buttoninfo"},f:[{t:2,x:{r:["adata.node2_concentration"],s:"Math.round(_0)"},p:[31,30,2032]},"%"]}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],31:[function(t,e,n){ +var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,3,16],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[3,5,48],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[3,22,65]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[3,66,109]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[4,22,164]}]}]}," ",{t:4,f:[{p:[7,5,250],t:7,e:"ui-section",a:{label:"Transfer Rate"},f:[{p:[8,7,292],t:7,e:"ui-button",a:{icon:"pencil",action:"transfer",params:'{"rate": "custom"}'},f:["Set"]}," ",{p:[9,7,386],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.transfer_rate","data.max_rate"],s:'_0==_1?"disabled":null'},p:[9,37,416]}],action:"transfer",params:'{"rate": "max"}'},f:["Max"]}," ",{p:[10,7,543],t:7,e:"span",a:{"class":"buttoninfo"},f:[{t:2,x:{r:["adata.transfer_rate"],s:"Math.round(_0)"},p:[10,32,568]}," L/s"]}]}],n:50,r:"data.max_rate",p:[6,3,223]},{t:4,n:51,f:[{p:[13,5,651],t:7,e:"ui-section",a:{label:"Output Pressure"},f:[{p:[14,7,695],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "custom"}'},f:["Set"]}," ",{p:[15,7,793],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.set_pressure","data.max_pressure"],s:'_0==_1?"disabled":null'},p:[15,37,823]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}," ",{p:[16,7,957],t:7,e:"span",a:{"class":"buttoninfo"},f:[{t:2,x:{r:["adata.set_pressure"],s:"Math.round(_0)"},p:[16,32,982]}," kPa"]}]}],r:"data.max_rate"}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],32:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-notice",f:[{p:[2,3,15],t:7,e:"span",f:["The regulator ",{t:2,x:{r:["data.hasHoldingTank"],s:'_0?"is":"is not"'},p:[2,23,35]}," connected to a tank."]}]}," ",{p:{button:[{p:[6,5,185],t:7,e:"ui-button",a:{icon:"pencil",state:[{t:2,x:{r:["data.canLabel"],s:'_0?null:"disabled"'},p:[6,37,217]}],action:"relable"},f:["Relabel"]}]},t:7,e:"ui-display",a:{title:"Canister",button:0},f:[" ",{p:[8,3,312],t:7,e:"ui-section",a:{label:"Pressure"},f:[{p:[9,5,347],t:7,e:"span",f:[{t:2,x:{r:["adata.tankPressure"],s:"Math.round(_0)"},p:[9,11,353]}," kPa"]}]}," ",{p:[11,3,419],t:7,e:"ui-section",a:{label:"Port"},f:[{p:[12,5,450],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.portConnected"],s:'_0?"good":"average"'},p:[12,18,463]}]},f:[{t:2,x:{r:["data.portConnected"],s:'_0?"Connected":"Not Connected"'},p:[12,63,508]}]}]}]}," ",{p:[15,1,603],t:7,e:"ui-display",a:{title:"Valve"},f:[{p:[16,3,633],t:7,e:"ui-section",a:{label:"Release Pressure"},f:[{p:[17,5,676],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.minReleasePressure",p:[17,18,689]}],max:[{t:2,r:"data.maxReleasePressure",p:[17,52,723]}],value:[{t:2,r:"data.releasePressure",p:[18,14,766]}]},f:[{t:2,x:{r:["adata.releasePressure"],s:"Math.round(_0)"},p:[18,40,792]}," kPa"]}]}," ",{p:[20,3,863],t:7,e:"ui-section",a:{label:"Pressure Regulator"},f:[{p:[21,5,908],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.releasePressure","data.defaultReleasePressure"],s:'_0!=_1?null:"disabled"'},p:[21,38,941]}],action:"pressure",params:'{"pressure": "reset"}'},f:["Reset"]}," ",{p:[23,5,1097],t:7,e:"ui-button",a:{icon:"minus",state:[{t:2,x:{r:["data.releasePressure","data.minReleasePressure"],s:'_0>_1?null:"disabled"'},p:[23,36,1128]}],action:"pressure",params:'{"pressure": "min"}'},f:["Min"]}," ",{p:[25,5,1275],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "custom"}'},f:["Set"]}," ",{p:[26,5,1371],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.releasePressure","data.maxReleasePressure"],s:'_0<_1?null:"disabled"'},p:[26,35,1401]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}]}," ",{p:[29,3,1563],t:7,e:"ui-section",a:{label:"Valve"},f:[{p:[30,5,1595],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.valveOpen"],s:'_0?"unlock":"lock"'},p:[30,22,1612]}],style:[{t:2,x:{r:["data.valveOpen","data.hasHoldingTank"],s:'_0?_1?"caution":"danger":null'},p:[31,14,1666]}],action:"valve"},f:[{t:2,x:{r:["data.valveOpen"],s:'_0?"Open":"Closed"'},p:[32,22,1760]}]}]}]}," ",{p:{button:[{t:4,f:[{p:[38,7,1948],t:7,e:"ui-button",a:{icon:"eject",style:[{t:2,x:{r:["data.valveOpen"],s:'_0?"danger":null'},p:[38,38,1979]}],action:"eject"},f:["Eject"]}],n:50,r:"data.hasHoldingTank",p:[37,5,1913]}]},t:7,e:"ui-display",a:{title:"Holding Tank",button:0},f:[" ",{t:4,f:[{p:[42,3,2113],t:7,e:"ui-section",a:{label:"Label"},f:[{t:2,r:"data.holdingTank.name",p:[43,4,2144]}]}," ",{p:[45,3,2190],t:7,e:"ui-section",a:{label:"Pressure"},f:[{t:2,x:{r:["adata.holdingTank.tankPressure"],s:"Math.round(_0)"},p:[46,4,2224]}," kPa"]}],n:50,r:"data.hasHoldingTank",p:[41,3,2082]},{t:4,n:51,f:[{p:[49,3,2306],t:7,e:"ui-section",f:[{p:[50,4,2323],t:7,e:"span",a:{"class":"average"},f:["No Holding Tank"]}]}],r:"data.hasHoldingTank"}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],33:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Power"},f:[{p:[2,3,30],t:7,e:"ui-section",a:{label:"Energy"},f:[{p:[3,5,63],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.maxEnergy",p:[3,26,84]}],value:[{t:2,r:"data.energy",p:[3,53,111]}]},f:[{t:2,x:{r:["adata.energy"],s:"Math.fixed(_0)"},p:[3,70,128]}," Units"]}]}," ",{t:4,f:[{p:[6,5,232],t:7,e:"ui-section",a:{label:"Amount"},f:[{t:4,f:[{p:[8,9,313],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.amount","."],s:'_0==_1?"selected":null'},p:[8,39,343]}],action:"amount",params:['{"amount": ',{t:2,r:".",p:[8,116,420]},"}"]},f:[{t:2,r:".",p:[8,124,428]}]}],n:52,r:"data.beakerTransferAmounts",p:[7,7,267]}]}],n:50,r:"data.beakerTransferAmounts",p:[5,3,192]}]}," ",{p:[13,1,509],t:7,e:"ui-display",a:{title:"Dispense"},f:[{p:[14,3,542],t:7,e:"ui-section",f:[{t:4,f:[{p:[16,7,592],t:7,e:"ui-button",a:{grid:0,icon:"tint",action:"dispense",params:['{"reagent": "',{t:2,r:"id",p:[16,74,659]},'"}']},f:[{t:2,r:"title",p:[16,84,669]}]}],n:52,r:"data.chemicals",p:[15,5,560]}]}]}," ",{p:{button:[{p:[22,5,802],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[22,36,833]}],action:"eject"},f:["Eject"]}]},t:7,e:"ui-display",a:{title:"Beaker",button:0},f:[" ",{t:4,f:[{p:[25,5,970],t:7,e:"ui-section",a:{label:"Remove"},f:[{t:4,f:[{p:[27,9,1051],t:7,e:"ui-button",a:{icon:"minus",action:"remove",params:['{"amount": ',{t:2,r:".",p:[27,68,1110]},"}"]},f:[{t:2,r:".",p:[27,76,1118]}]}],n:52,r:"data.beakerTransferAmounts",p:[26,7,1005]}]}],n:50,r:"data.beakerTransferAmounts",p:[24,3,930]}," ",{p:[31,3,1186],t:7,e:"ui-section",a:{label:"Contents"},f:[{t:4,f:[{p:[33,7,1256],t:7,e:"span",f:[{t:2,x:{r:["adata.beakerCurrentVolume"],s:"Math.round(_0)"},p:[33,13,1262]},"/",{t:2,r:"data.beakerMaxVolume",p:[33,55,1304]}," Units"]}," ",{p:[34,7,1349],t:7,e:"br"}," ",{t:4,f:[{p:[36,9,1402],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[36,52,1445]}," units of ",{t:2,r:"name",p:[36,87,1480]}]},{p:[36,102,1495],t:7,e:"br"}],n:52,r:"adata.beakerContents",p:[35,7,1362]},{t:4,n:51,f:[{p:[38,9,1526],t:7,e:"span",a:{"class":"bad"},f:["Beaker Empty"]}],r:"adata.beakerContents"}],n:50,r:"data.isBeakerLoaded",p:[32,5,1221]},{t:4,n:51,f:[{p:[41,7,1602],t:7,e:"span",a:{"class":"average"},f:["No Beaker"]}],r:"data.isBeakerLoaded"}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],34:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Thermostat"},f:[{p:[2,3,35],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[3,5,67],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isActive"],s:'_0?"power-off":"close"'},p:[3,22,84]}],style:[{t:2,x:{r:["data.isActive"],s:'_0?"selected":null'},p:[4,10,137]}],state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[5,10,186]}],action:"power"},f:[{t:2,x:{r:["data.isActive"],s:'_0?"On":"Off"'},p:[6,18,249]}]}]}," ",{p:[8,3,314],t:7,e:"ui-section",a:{label:"Target"},f:[{p:[9,4,346],t:7,e:"ui-button",a:{icon:"pencil",action:"temperature"},f:[{t:2,x:{r:["adata.targetTemp"],s:"Math.round(_0)"},p:[9,50,392]}," K"]}]}]}," ",{p:{button:[{p:[14,5,535],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[14,36,566]}],action:"eject"},f:["Eject"]}]},t:7,e:"ui-display",a:{title:"Beaker",button:0},f:[" ",{p:[16,3,663],t:7,e:"ui-section",a:{label:"Contents"},f:[{t:4,f:[{p:[18,7,733],t:7,e:"span",f:["Temperature: ",{t:2,x:{r:["adata.currentTemp"],s:"Math.round(_0)"},p:[18,26,752]}," K"]}," ",{p:[19,7,802],t:7,e:"br"}," ",{t:4,f:[{p:[21,9,856],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[21,52,899]}," units of ",{t:2,r:"name",p:[21,87,934]}]},{p:[21,102,949],t:7,e:"br"}],n:52,r:"adata.beakerContents",p:[20,7,816]},{t:4,n:51,f:[{p:[23,9,980],t:7,e:"span",a:{"class":"bad"},f:["Beaker Empty"]}],r:"adata.beakerContents"}],n:50,r:"data.isBeakerLoaded",p:[17,5,698]},{t:4,n:51,f:[{p:[26,7,1056],t:7,e:"span",a:{"class":"average"},f:["No Beaker"]}],r:"data.isBeakerLoaded"}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],35:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(t){t.exports={computed:{cellTemperatureState:function(){var t;return t=this.get("data.cellTemperature"),225>t?"good":273.15>t?"average":"bad"},occupantStatState:function(){var t;return t=this.get("data.occupant.stat"),0===t?"good":1===t?"average":"bad"}}}}(i),i.exports.template={v:3,t:[" ",{p:[16,1,414],t:7,e:"ui-display",a:{title:"Occupant"},f:[{p:[17,3,447],t:7,e:"ui-section",a:{label:"Occupant"},f:[{p:[18,3,480],t:7,e:"span",f:[{t:2,x:{r:["data.occupant.name"],s:'_0?_0:"No Occupant"'},p:[18,9,486]}]}]}," ",{t:4,f:[{p:[21,5,603],t:7,e:"ui-section",a:{label:"State"},f:[{p:[22,7,637],t:7,e:"span",a:{"class":[{t:2,r:"occupantStatState",p:[22,20,650]}]},f:[{t:2,x:{r:["data.occupant.stat"],s:'_0==0?"Conscious":_0==1?"Unconcious":"Dead"'},p:[22,43,673]}]}]}," ",{p:[24,4,794],t:7,e:"ui-section",a:{label:"Temperature"},f:[{p:[25,6,833],t:7,e:"span",f:[{t:2,x:{r:["adata.occupant.bodyTemperature"],s:"Math.round(_0)"},p:[25,12,839]}," K"]}]}," ",{p:[27,5,918],t:7,e:"ui-section",a:{label:"Health"},f:[{p:[28,7,953],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.occupant.minHealth",p:[28,20,966]}],max:[{t:2,r:"data.occupant.maxHealth",p:[28,54,1e3]}],value:[{t:2,r:"data.occupant.health",p:[28,90,1036]}],state:[{t:2,x:{r:["data.occupant.health"],s:'_0>=0?"good":"average"'},p:[29,16,1078]}]},f:[{t:2,x:{r:["adata.occupant.health"],s:"Math.round(_0)"},p:[29,68,1130]}]}]}," ",{t:4,f:[{p:[32,7,1367],t:7,e:"ui-section",a:{label:[{t:2,r:"label",p:[32,26,1386]}]},f:[{p:[33,9,1407],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.occupant.maxHealth",p:[33,30,1428]}],value:[{t:2,rx:{r:"data.occupant",m:[{t:30,n:"type"}]},p:[33,66,1464]}],state:"bad"},f:[{t:2,x:{r:["type","adata.occupant"],s:"Math.round(_1[_0])"},p:[33,103,1501]}]}]}],n:52,x:{r:[],s:'[{label:"Brute",type:"bruteLoss"},{label:"Respiratory",type:"oxyLoss"},{label:"Toxin",type:"toxLoss"},{label:"Burn",type:"fireLoss"}]'},p:[31,5,1201]}],n:50,r:"data.hasOccupant",p:[20,3,573]}]}," ",{p:[38,1,1610],t:7,e:"ui-display",a:{title:"Cell"},f:[{p:[39,3,1639],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[40,5,1671],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isOperating"],s:'_0?"power-off":"close"'},p:[40,22,1688]}],style:[{t:2,x:{r:["data.isOperating"],s:'_0?"selected":null'},p:[41,14,1748]}],state:[{t:2,x:{r:["data.isOpen"],s:'_0?"disabled":null'},p:[42,14,1804]}],action:"power"},f:[{t:2,x:{r:["data.isOperating"],s:'_0?"On":"Off"'},p:[43,22,1863]}]}]}," ",{p:[45,3,1931],t:7,e:"ui-section",a:{label:"Temperature"},f:[{p:[46,3,1967],t:7,e:"span",a:{"class":[{t:2,r:"cellTemperatureState",p:[46,16,1980]}]},f:[{t:2,x:{r:["adata.cellTemperature"],s:"Math.round(_0)"},p:[46,42,2006]}," K"]}]}," ",{p:[48,2,2071],t:7,e:"ui-section",a:{label:"Door"},f:[{p:[49,5,2102],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isOpen"],s:'_0?"unlock":"lock"'},p:[49,22,2119]}],action:"door"},f:[{t:2,x:{r:["data.isOpen"],s:'_0?"Open":"Closed"'},p:[49,73,2170]}]}," ",{p:[50,5,2223],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.autoEject"],s:'_0?"sign-out":"sign-in"'},p:[50,22,2240]}],action:"autoeject"},f:[{t:2,x:{r:["data.autoEject"],s:'_0?"Auto":"Manual"'},p:[50,86,2304]}]}]}]}," ",{p:{button:[{p:[55,5,2450],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[55,36,2481]}],action:"ejectbeaker"},f:["Eject"]}]},t:7,e:"ui-display",a:{title:"Beaker",button:0},f:[" ",{p:[57,3,2584],t:7,e:"ui-section",a:{label:"Contents"},f:[{t:4,f:[{t:4,f:[{p:[60,9,2694],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[60,52,2737]}," units of ",{t:2,r:"name",p:[60,87,2772]}]},{p:[60,102,2787],t:7,e:"br"}],n:52,r:"adata.beakerContents",p:[59,7,2654]},{t:4,n:51,f:[{p:[62,9,2818],t:7,e:"span",a:{"class":"bad"},f:["Beaker Empty"]}],r:"adata.beakerContents"}],n:50,r:"data.isBeakerLoaded",p:[58,5,2619]},{t:4,n:51,f:[{p:[65,7,2894],t:7,e:"span",a:{"class":"average"},f:["No Beaker"]}],r:"data.isBeakerLoaded"}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],36:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-notice",f:[{p:[2,3,15],t:7,e:"span",f:["The requested interface (",{t:2,r:"config.interface",p:[2,34,46]},") was not found. Does it exist?"]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],37:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(t){t.exports={computed:{capacityPercentState:function(){var t;return t=this.get("data.capacityPercent"),t>50?"good":t>15?"average":"bad"},inputState:function(){var t,e;return t=this.get("data.capacityPercent"),e=this.get("data.inputting"),t>=100?"good":e?"average":"bad"},outputState:function(){var t,e;return t=this.get("data.charge"),e=this.get("data.outputting"),e?"good":t>0?"average":"bad"}}}}(i),i.exports.template={v:3,t:[" ",{p:[23,1,624],t:7,e:"ui-display",a:{title:"Storage"},f:[{p:[24,3,656],t:7,e:"ui-section",a:{label:"Stored Energy"},f:[{p:[25,5,696],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.capacityPercent",p:[25,38,729]}],state:[{t:2,r:"capacityPercentState",p:[25,71,762]}]},f:[{t:2,x:{r:["adata.capacityPercent"],s:"Math.fixed(_0)"},p:[25,97,788]},"%"]}]}]}," ",{p:[28,1,869],t:7,e:"ui-display",a:{title:"Input"},f:[{p:[29,3,899],t:7,e:"ui-section",a:{label:"Charge Mode"},f:[{p:[30,5,937],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.inputAttempt"],s:'_0?"refresh":"close"'},p:[30,22,954]}],style:[{t:2,x:{r:["data.inputAttempt"],s:'_0?"selected":null'},p:[30,74,1006]}],action:"tryinput"},f:[{t:2,x:{r:["data.inputAttempt"],s:'_0?"Auto":"Off"'},p:[31,25,1074]}]},"   [",{p:[33,6,1143],t:7,e:"span",a:{"class":[{t:2,r:"inputState",p:[33,19,1156]}]},f:[{t:2,x:{r:["data.capacityPercent","data.inputting"],s:'_0>=100?"Fully Charged":_1?"Charging":"Not Charging"'},p:[33,35,1172]}]},"]"]}," ",{p:[35,3,1296],t:7,e:"ui-section",a:{label:"Target Input"},f:[{p:[36,5,1335],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.inputLevelMax",p:[36,26,1356]}],value:[{t:2,r:"data.inputLevel",p:[36,57,1387]}]},f:[{t:2,x:{r:["adata.inputLevel"],s:"Math.round(_0)"},p:[36,78,1408]},"W"]}]}," ",{p:[38,3,1470],t:7,e:"ui-section",a:{label:"Adjust Input"},f:[{p:[39,5,1509],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.inputLevel"],s:'_0==0?"disabled":null'},p:[39,44,1548]}],action:"input",params:'{"input": "min"}'}}," ",{p:[40,5,1642],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.inputLevel"],s:'_0==0?"disabled":null'},p:[40,39,1676]}],action:"input",params:'{"input": "minus"}'}}," ",{p:[41,5,1772],t:7,e:"ui-button",a:{icon:"pencil",action:"input",params:'{"input": "custom"}'},f:["Set"]}," ",{p:[42,5,1862],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.inputLevel","data.inputLevelMax"],s:'_0==_1?"disabled":null'},p:[42,38,1895]}],action:"input",params:'{"input": "plus"}'}}," ",{p:[43,5,2007],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.inputLevel","data.inputLevelMax"],s:'_0==_1?"disabled":null'},p:[43,43,2045]}],action:"input",params:'{"input": "max"}'}}]}," ",{p:[45,3,2171],t:7,e:"ui-section",a:{label:"Available"},f:[{p:[46,3,2205],t:7,e:"span",f:[{t:2,x:{r:["adata.inputAvailable"],s:"Math.round(_0)"},p:[46,9,2211]},"W"]}]}]}," ",{p:[49,1,2288],t:7,e:"ui-display",a:{title:"Output"},f:[{p:[50,3,2319],t:7,e:"ui-section",a:{label:"Output Mode"},f:[{p:[51,5,2357],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.outputAttempt"],s:'_0?"power-off":"close"'},p:[51,22,2374]}],style:[{t:2,x:{r:["data.outputAttempt"],s:'_0?"selected":null'},p:[51,77,2429]}],action:"tryoutput"},f:[{t:2,x:{r:["data.outputAttempt"],s:'_0?"On":"Off"'},p:[52,26,2499]}]},"   [",{p:[54,6,2567],t:7,e:"span",a:{"class":[{t:2,r:"outputState",p:[54,19,2580]}]},f:[{t:2,x:{r:["data.outputting","data.charge"],s:'_0?"Sending":_1>0?"Not Sending":"No Charge"'},p:[54,36,2597]}]},"]"]}," ",{p:[56,3,2704],t:7,e:"ui-section",a:{label:"Target Output"},f:[{p:[57,5,2744],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.outputLevelMax",p:[57,26,2765]}],value:[{t:2,r:"data.outputLevel",p:[57,58,2797]}]},f:[{t:2,x:{r:["adata.outputLevel"],s:"Math.round(_0)"},p:[57,80,2819]},"W"]}]}," ",{p:[59,3,2882],t:7,e:"ui-section",a:{label:"Adjust Output"},f:[{p:[60,5,2922],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.outputLevel"],s:'_0==0?"disabled":null'},p:[60,44,2961]}],action:"output",params:'{"output": "min"}'}}," ",{p:[61,5,3058],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.outputLevel"],s:'_0==0?"disabled":null'},p:[61,39,3092]}],action:"output",params:'{"output": "minus"}'}}," ",{p:[62,5,3191],t:7,e:"ui-button",a:{icon:"pencil",action:"output",params:'{"output": "custom"}'},f:["Set"]}," ",{p:[63,5,3283],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.outputLevel","data.outputLevelMax"],s:'_0==_1?"disabled":null'},p:[63,38,3316]}],action:"output",params:'{"output": "plus"}'}}," ",{p:[64,5,3432],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.outputLevel","data.outputLevelMax"],s:'_0==_1?"disabled":null'},p:[64,43,3470]}],action:"output",params:'{"output": "max"}'}}]}," ",{p:[66,3,3600],t:7,e:"ui-section",a:{label:"Outputting"},f:[{p:[67,3,3635],t:7,e:"span",f:[{t:2,x:{r:["adata.outputUsed"],s:"Math.round(_0)"},p:[67,9,3641]},"W"]}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],38:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Status"},f:[{p:[2,3,31],t:7,e:"ui-section",a:{label:"Generated Power"},f:[{t:2,x:{r:["adata.generated"],s:"Math.round(_0)"},p:[3,5,73]},"W"]}," ",{p:[5,3,126],t:7,e:"ui-section",a:{label:"Orientation"},f:[{p:[6,5,164],t:7,e:"span",f:[{t:2,x:{r:["adata.angle"],s:"Math.round(_0)"},p:[6,11,170]},"° (",{t:2,r:"data.direction",p:[6,45,204]},")"]}]}," ",{p:[8,3,251],t:7,e:"ui-section",a:{label:"Adjust Angle"},f:[{p:[9,5,290],t:7,e:"ui-button",a:{icon:"step-backward",action:"control",params:'{"cdir": -15}'},f:["15°"]}," ",{p:[10,5,387],t:7,e:"ui-button",a:{icon:"backward",action:"control",params:'{"cdir": -5}'},f:["5°"]}," ",{p:[11,5,477],t:7,e:"ui-button",a:{icon:"forward",action:"control",params:'{"cdir": 5}'},f:["5°"]}," ",{p:[12,5,565],t:7,e:"ui-button",a:{icon:"step-forward",action:"control",params:'{"cdir": 15}'},f:["15°"]}]}]}," ",{p:[15,1,687],t:7,e:"ui-display",a:{title:"Tracking"},f:[{p:[16,3,720],t:7,e:"ui-section",a:{label:"Tracker Mode"},f:[{p:[17,5,759],t:7,e:"ui-button",a:{icon:"close",state:[{t:2,x:{r:["data.tracking_state"],s:'_0==0?"selected":null'},p:[17,36,790]}],action:"tracking",params:'{"mode": 0}'},f:["Off"]}," ",{p:[19,5,907],t:7,e:"ui-button",a:{icon:"clock-o",state:[{t:2,x:{r:["data.tracking_state"],s:'_0==1?"selected":null'},p:[19,38,940]}],action:"tracking",params:'{"mode": 1}'},f:["Timed"]}," ",{p:[21,5,1059],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.connected_tracker","data.tracking_state"],s:'_0?_1==2?"selected":null:"disabled"'},p:[21,38,1092]}],action:"tracking",params:'{"mode": 2}'},f:["Auto"]}]}," ",{p:[24,3,1262],t:7,e:"ui-section",a:{label:"Tracking Rate"},f:[{p:[25,3,1300],t:7,e:"span",f:[{t:2,x:{r:["adata.tracking_rate"],s:"Math.round(_0)"},p:[25,9,1306]},"°/h (",{t:2,r:"data.rotating_way",p:[25,53,1350]},")"]}]}," ",{p:[27,3,1399],t:7,e:"ui-section",a:{label:"Adjust Rate"},f:[{p:[28,5,1437],t:7,e:"ui-button",a:{icon:"fast-backward",action:"control",params:'{"tdir": -180}'},f:["180°"]}," ",{p:[29,5,1536],t:7,e:"ui-button",a:{icon:"step-backward",action:"control",params:'{"tdir": -30}'},f:["30°"]}," ",{p:[30,5,1633],t:7,e:"ui-button",a:{icon:"backward",action:"control",params:'{"tdir": -5}'},f:["5°"]}," ",{p:[31,5,1723],t:7,e:"ui-button",a:{icon:"forward",action:"control",params:'{"tdir": 5}'},f:["5°"]}," ",{p:[32,5,1811],t:7,e:"ui-button",a:{icon:"step-forward",action:"control",params:'{"tdir": 30}'},f:["30°"]}," ",{p:[33,5,1906],t:7,e:"ui-button",a:{icon:"fast-forward",action:"control",params:'{"tdir": 180}'},f:["180°"]}]}]}," ",{p:{button:[{p:[38,5,2094],t:7,e:"ui-button",a:{icon:"refresh",action:"refresh"},f:["Refresh"]}]},t:7,e:"ui-display",a:{title:"Devices",button:0},f:[" ",{p:[40,2,2175],t:7,e:"ui-section",a:{label:"Solar Tracker"},f:[{p:[41,5,2215],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.connected_tracker"],s:'_0?"good":"bad"'},p:[41,18,2228]}]},f:[{t:2,x:{r:["data.connected_tracker"],s:'_0?"":"Not "'},p:[41,63,2273]},"Found"]}]}," ",{p:[43,2,2344],t:7,e:"ui-section",a:{label:"Solar Panels"},f:[{p:[44,3,2381],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.connected_panels"],s:'_0?"good":"bad"'},p:[44,16,2394]}]},f:[{t:2,x:{r:["adata.connected_panels"],s:"Math.round(_0)"},p:[44,60,2438]}," Panels Connected"]}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],39:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(e){e.exports={data:{text:t("../text")}}}(i),i.exports.template={v:3,t:[" ",{p:{button:[{t:4,f:[{p:[10,7,194],t:7,e:"ui-button",a:{icon:"eject",action:"eject"},f:["Eject"]}],n:50,r:"data.open",p:[9,5,169]}]},t:7,e:"ui-display",a:{title:"Power",button:0},f:[" ",{p:[13,3,283],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[14,5,315],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[14,22,332]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[15,14,383]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[16,22,438]}]}]}," ",{p:[18,3,497],t:7,e:"ui-section",a:{label:"Cell"},f:[{t:4,f:[{p:[20,7,561],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.powerLevel",p:[20,40,594]}]},f:[{t:2,x:{r:["adata.powerLevel"],s:"Math.fixed(_0)"},p:[20,61,615]},"%"]}],n:50,r:"data.hasPowercell",p:[19,5,528]},{t:4,n:51,f:[{p:[22,4,674],t:7,e:"span",a:{"class":"bad"},f:["No Cell"]}],r:"data.hasPowercell"}]}]}," ",{p:[26,1,751],t:7,e:"ui-display",a:{title:"Thermostat"},f:[{p:[27,3,786],t:7,e:"ui-section",a:{label:"Current Temperature"},f:[{p:[28,3,830],t:7,e:"span",f:[{t:2,x:{r:["adata.currentTemp"],s:"Math.round(_0)"},p:[28,9,836]},"°C"]}]}," ",{p:[30,2,901],t:7,e:"ui-section",a:{label:"Target Temperature"},f:[{p:[31,3,944],t:7,e:"span",f:[{t:2,x:{r:["adata.targetTemp"],s:"Math.round(_0)"},p:[31,9,950]},"°C"]}]}," ",{t:4,f:[{p:[34,2,1035],t:7,e:"ui-section",a:{label:"Adjust Target"},f:[{p:[35,7,1077],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.targetTemp","data.minTemp"],s:'_0>_1?null:"disabled"'},p:[35,46,1116]}],action:"target",params:'{"target": -20}'}}," ",{p:[36,7,1222],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.targetTemp","data.minTemp"],s:'_0>_1?null:"disabled"'},p:[36,41,1256]}],action:"target",params:'{"target": -5}'}}," ",{p:[37,7,1361],t:7,e:"ui-button",a:{icon:"pencil",action:"target",params:'{"target": "custom"}'},f:["Set"]}," ",{p:[38,7,1455],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.targetTemp","data.maxTemp"],s:'_0<_1?null:"disabled"'},p:[38,40,1488]}],action:"target",params:'{"target": 5}'}}," ",{p:[39,7,1592],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.targetTemp","data.maxTemp"],s:'_0<_1?null:"disabled"'},p:[39,45,1630]}],action:"target",params:'{"target": 20}'}}]}],n:50,r:"data.open",p:[33,3,1015]}," ",{p:[42,3,1759],t:7,e:"ui-section",a:{label:"Mode"},f:[{t:4,f:[{p:[44,7,1813],t:7,e:"ui-button",a:{icon:"long-arrow-up",state:[{t:2,x:{r:["data.mode"],s:'_0=="heat"?"selected":null'},p:[44,46,1852]}],action:"mode",params:'{"mode": "heat"}'},f:["Heat"]}," ",{p:[45,7,1961],t:7,e:"ui-button",a:{icon:"long-arrow-down",state:[{t:2,x:{r:["data.mode"],s:'_0=="cool"?"selected":null'},p:[45,48,2002]}],action:"mode",params:'{"mode": "cool"}'},f:["Cool"]}," ",{p:[46,7,2111],t:7,e:"ui-button",a:{icon:"arrows-v",state:[{t:2,x:{r:["data.mode"],s:'_0=="auto"?"selected":null'},p:[46,41,2145]}],action:"mode",params:'{"mode": "auto"}'},f:["Auto"]}],n:50,r:"data.open",p:[43,3,1788]},{t:4,n:51,f:[{p:[48,4,2263],t:7,e:"span",f:[{t:2,x:{r:["text","data.mode"],s:"_0.titleCase(_1)"},p:[48,10,2269]}]}],r:"data.open"}]}]}]},e.exports=r.extend(i.exports)},{"../text":43,"ractive/ractive.runtime":7}],40:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(t){t.exports={data:{tankPressureState:function(){var t;return t=this.get("data.tankPressureState"),t>=200?"good":t>=100?"average":"bad"}}}}(i),i.exports.template={v:3,t:[" ",{p:[11,1,255],t:7,e:"ui-notice",f:[{p:[12,3,270],t:7,e:"span",f:["The regulator ",{t:2,x:{r:["data.hasHoldingTank"],s:'_0?"is":"is not"'},p:[12,23,290]}," connected to a mask."]}]}," ",{p:[14,1,375],t:7,e:"ui-display",f:[{p:[15,3,391],t:7,e:"ui-section",a:{label:"Tank Pressure"},f:[{p:[16,7,433],t:7,e:"ui-bar",a:{min:"0",max:"1013",value:[{t:2,r:"data.tankPressure",p:[16,41,467]}],state:[{t:2,r:"tankPressureState",p:[17,16,506]}]},f:[{t:2,x:{r:["adata.tankPressure"],s:"Math.round(_0)"},p:[17,39,529]}," kPa"]}]}," ",{p:[19,3,597],t:7,e:"ui-section",a:{label:"Release Pressure"},f:[{p:[20,5,640],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.minReleasePressure",p:[20,18,653]}],max:[{t:2,r:"data.maxReleasePressure",p:[20,52,687]}],value:[{t:2,r:"data.releasePressure",p:[21,14,730]}]},f:[{t:2,x:{r:["adata.releasePressure"],s:"Math.round(_0)"},p:[21,40,756]}," kPa"]}]}," ",{p:[23,3,827],t:7,e:"ui-section",a:{label:"Pressure Regulator"},f:[{p:[24,5,872],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.releasePressure","data.defaultReleasePressure"],s:'_0!=_1?null:"disabled"'},p:[24,38,905]}],action:"pressure",params:'{"pressure": "reset"}'},f:["Reset"]}," ",{p:[26,5,1061],t:7,e:"ui-button",a:{icon:"minus",state:[{t:2,x:{r:["data.releasePressure","data.minReleasePressure"],s:'_0>_1?null:"disabled"'},p:[26,36,1092]}],action:"pressure",params:'{"pressure": "min"}'},f:["Min"]}," ",{p:[28,5,1239],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "custom"}'},f:["Set"]}," ",{p:[29,5,1335],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.releasePressure","data.maxReleasePressure"],s:'_0<_1?null:"disabled"'},p:[29,35,1365]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}]}," ",{p:[32,3,1527],t:7,e:"ui-section",a:{label:"Valve"},f:[{p:[33,5,1559],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.valveOpen"],s:'_0?"unlock":"lock"'},p:[33,22,1576]}],state:[{t:2,x:{r:["data.maskConnected"],s:'_0?null:"disabled"'},p:[33,69,1623]}],action:"valve"},f:[{t:2,x:{r:["data.valveOpen"],s:'_0?"Open":"Closed"'},p:[34,22,1689]}]}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],41:[function(t,e,n){var r,i,a;t("ie8/build/ie8.max"),t("dom4/build/dom4.max"),t("es5-shim"),t("html5shiv"),t("./math"),r=t("ractive/ractive.runtime"),r.DEBUG=/minified/.test(function(t){}),i=t("webfontloader"),i.load({custom:{families:["FontAwesome"],urls:["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.5.0/css/font-awesome.min.css"]}}),a=t("./tgui"),window.tgui=new a({el:"#container",data:function(){var t;return t=JSON.parse(document.getElementById("data").textContent),(null==t||null==t.data||null==t.config)&&alert("Initial data did not load correctly."),t.adata=t.data,t},onrender:function(){return this.observe("config.style",function(t,e,n){return null!=e&&document.body.classList.remove(e),null!=t?document.body.classList.add(t):void 0})}})},{"./math":42,"./tgui":44,"dom4/build/dom4.max":1,"es5-shim":2,html5shiv:3,"ie8/build/ie8.max":4,"ractive/ractive.runtime":7,webfontloader:8}],42:[function(t,e,n){Math.clamp=function(t,e,n){return Math.max(e,Math.min(t,n))},Math.fixed=function(t,e){return null==e&&(e=1),+(Math.round(t+"e"+e)+"e-"+e)}},{}],43:[function(t,e,n){e.exports={upperCaseFirst:function(t){return t[0].toUpperCase()+t.slice(1).toLowerCase()},titleCase:function(t){return t.replace(/\w\S*/g,this.upperCaseFirst)}}},{}],44:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(e){e.exports={components:{"ui-bar":t("./components/bar"),"ui-button":t("./components/button"),"ui-display":t("./components/display"),"ui-notice":t("./components/notice"),"ui-section":t("./components/section"),"ui-subdisplay":t("./components/subdisplay")},events:{enter:t("ractive-events-keys").enter,space:t("ractive-events-keys").space},transitions:{fade:t("ractive-transitions-fade")},onconfig:function(){var e,n;return n=this.get("config.interface"),e={air_alarm:t("./interfaces/air_alarm.ract"),airlock_electronics:t("./interfaces/airlock_electronics.ract"),apc:t("./interfaces/apc.ract"),atmos_filter:t("./interfaces/atmos_filter.ract"),atmos_mixer:t("./interfaces/atmos_mixer.ract"),atmos_pump:t("./interfaces/atmos_pump.ract"),canister:t("./interfaces/canister.ract"),chem_dispenser:t("./interfaces/chem_dispenser.ract"),chem_heater:t("./interfaces/chem_heater.ract"),cryo:t("./interfaces/cryo.ract"),error:t("./interfaces/error.ract"),smes:t("./interfaces/smes.ract"),solar_control:t("./interfaces/solar_control.ract"),space_heater:t("./interfaces/space_heater.ract"),tanks:t("./interfaces/tanks.ract")},null!=e[n]?this.components["interface"]=e[n]:null==this.components["interface"]?this.components["interface"]=t("./interfaces/error"):void 0},onrender:function(){return this.observe("config.style",function(t,e,n){return null!=e&&this.el.classList.remove(e(e)),null!=t?this.el.classList.add(t(t)):void 0})}}}(i),i.exports.template={v:3,t:[" "," "," ",{p:[31,1,1250],t:7,e:"titlebar",f:[{t:3,r:"config.title",p:[31,11,1260]}]}," ",{p:[32,1,1291],t:7,e:"main",f:[{p:[33,3,1301],t:7,e:"interface"}]}," ",{p:[35,1,1325],t:7,e:"resize"}]},i.exports.components=i.exports.components||{};var a={titlebar:t("./components/titlebar.ract"),resize:t("./components/resize.ract")};for(var o in a)a.hasOwnProperty(o)&&(i.exports.components[o]=a[o]);e.exports=r.extend(i.exports)},{"./components/bar":10,"./components/button":11,"./components/display":12,"./components/notice":13,"./components/resize.ract":14,"./components/section":15,"./components/subdisplay":16,"./components/titlebar.ract":17,"./interfaces/air_alarm.ract":19,"./interfaces/airlock_electronics.ract":27,"./interfaces/apc.ract":28,"./interfaces/atmos_filter.ract":29,"./interfaces/atmos_mixer.ract":30,"./interfaces/atmos_pump.ract":31,"./interfaces/canister.ract":32,"./interfaces/chem_dispenser.ract":33,"./interfaces/chem_heater.ract":34,"./interfaces/cryo.ract":35,"./interfaces/error":36,"./interfaces/error.ract":36,"./interfaces/smes.ract":37,"./interfaces/solar_control.ract":38,"./interfaces/space_heater.ract":39,"./interfaces/tanks.ract":40,"ractive-events-keys":5,"ractive-transitions-fade":6,"ractive/ractive.runtime":7}]},{},[41]); \ No newline at end of file diff --git a/tgui/scripts/interfaces/air_alarm.ract b/tgui/scripts/interfaces/air_alarm.ract index 9139066184a..5dda754aac1 100644 --- a/tgui/scripts/interfaces/air_alarm.ract +++ b/tgui/scripts/interfaces/air_alarm.ract @@ -5,15 +5,15 @@ - + {{#if data.siliconUser}} - - {{data.locked ? "Engaged" : "Disengaged"}} - + + {{data.locked ? "Engaged" : "Disengaged"}} + {{else}} Swipe an ID card to {{data.locked ? "unlock" : "lock"}} this interface. {{/if}} - + {{#if !data.locked || data.siliconUser}} {{#if data.screen == 1}} diff --git a/tgui/scripts/interfaces/air_alarm/back.ract b/tgui/scripts/interfaces/air_alarm/back.ract index 8528495fc2f..cb0db0f5c20 100644 --- a/tgui/scripts/interfaces/air_alarm/back.ract +++ b/tgui/scripts/interfaces/air_alarm/back.ract @@ -1 +1 @@ -Back +Back diff --git a/tgui/scripts/interfaces/air_alarm/controls.ract b/tgui/scripts/interfaces/air_alarm/controls.ract index 530317a0c77..bd9ae86d908 100644 --- a/tgui/scripts/interfaces/air_alarm/controls.ract +++ b/tgui/scripts/interfaces/air_alarm/controls.ract @@ -1,23 +1,23 @@ - - - Area Atmosphere Alarm - - - Panic Siphon - + + + Area Atmosphere Alarm + + + Panic Siphon +
- - Vent Controls - - - Scrubber Controls - - - Operating Mode - - - Alarm Thresholds - -
+ + Vent Controls + + + Scrubber Controls + + + Operating Mode + + + Alarm Thresholds + + diff --git a/tgui/scripts/interfaces/air_alarm/modes.ract b/tgui/scripts/interfaces/air_alarm/modes.ract index c726a6d4ba2..cca50a7f730 100644 --- a/tgui/scripts/interfaces/air_alarm/modes.ract +++ b/tgui/scripts/interfaces/air_alarm/modes.ract @@ -1,14 +1,14 @@ - + {{#partial button}} {{/partial}} {{#each data.modes}} - - + {{name}} - + action='mode' params='{"mode": {{mode}}}'>{{name}} + {{/each}} - + diff --git a/tgui/scripts/interfaces/air_alarm/scrubbers.ract b/tgui/scripts/interfaces/air_alarm/scrubbers.ract index 1d80db754ac..efa4e63b97f 100644 --- a/tgui/scripts/interfaces/air_alarm/scrubbers.ract +++ b/tgui/scripts/interfaces/air_alarm/scrubbers.ract @@ -1,33 +1,33 @@ - + {{#partial button}} {{/partial}} {{#each data.scrubbers}} - - - {{power ? "On" : "Off"}} - - - {{scrubbing ? "Scrubbing" : "Siphoning"}} - - - {{widenet ? "Expanded" : "Normal"}} - - - Oxygen - Nitrogen - Plasma - - + + + {{power ? "On" : "Off"}} + + + {{scrubbing ? "Scrubbing" : "Siphoning"}} + + + {{widenet ? "Expanded" : "Normal"}} + + + Oxygen + Nitrogen + Plasma + + {{else}} Error: No scrubbers connected. {{/each}} - + diff --git a/tgui/scripts/interfaces/air_alarm/status.ract b/tgui/scripts/interfaces/air_alarm/status.ract index c8c3412ec36..ddb278d0d76 100644 --- a/tgui/scripts/interfaces/air_alarm/status.ract +++ b/tgui/scripts/interfaces/air_alarm/status.ract @@ -1,31 +1,31 @@ - + {{#if data.environment_data}} {{#each data.environment_data}} - + {{Math.fixed(value, 2)}}{{unit}} - + {{/each}} - + {{data.danger_level == 2 ? "Danger (Internals Required)" : data.danger_level == 1 ? "Caution" : "Optimal"}} - - + + {{data.atmos_alarm ? "Atmosphere Alarm" : fire_alarm ? "Fire Alarm" : "Nominal"}} - + {{else}} - + Warning: Cannot obtain air sample for analysis. - + {{/if}} {{#if data.emagged}}
- + Warning: Safety measures offline. Device may exhibit abnormal behavior. - + {{/if}} -
+ diff --git a/tgui/scripts/interfaces/air_alarm/thresholds.ract b/tgui/scripts/interfaces/air_alarm/thresholds.ract index 600baa3339a..a524e84ae27 100644 --- a/tgui/scripts/interfaces/air_alarm/thresholds.ract +++ b/tgui/scripts/interfaces/air_alarm/thresholds.ract @@ -1,6 +1,6 @@ - + {{#partial button}} {{/partial}} @@ -16,12 +16,12 @@ {{#each data.thresholds}} {{{name}}} {{#each settings}} - {{Math.fixed(selected, 2)}} + {{Math.fixed(selected, 2)}} {{/each}} {{/each}} - +",r.insertBefore(n.lastChild,r.firstChild)}function i(){var t=w.elements;return"string"==typeof t?t.split(" "):t}function a(t,e){var n=w.elements;"string"!=typeof n&&(n=n.join(" ")),"string"!=typeof t&&(t=t.join(" ")),w.elements=n+" "+t,l(e)}function o(t){var e=y[t[g]];return e||(e={},b++,t[g]=b,y[b]=e),e}function s(t,e,r){if(e||(e=n),h)return e.createElement(t);r||(r=o(e));var i;return i=r.cache[t]?r.cache[t].cloneNode():v.test(t)?(r.cache[t]=r.createElem(t)).cloneNode():r.createElem(t),!i.canHaveChildren||m.test(t)||i.tagUrn?i:r.frag.appendChild(i)}function u(t,e){if(t||(t=n),h)return t.createDocumentFragment();e=e||o(t);for(var r=e.frag.cloneNode(),a=0,s=i(),u=s.length;u>a;a++)r.createElement(s[a]);return r}function c(t,e){e.cache||(e.cache={},e.createElem=t.createElement,e.createFrag=t.createDocumentFragment,e.frag=e.createFrag()),t.createElement=function(n){return w.shivMethods?s(n,t,e):e.createElem(n)},t.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+i().join().replace(/[\w\-:]+/g,function(t){return e.createElem(t),e.frag.createElement(t),'c("'+t+'")'})+");return n}")(w,e.frag)}function l(t){t||(t=n);var e=o(t);return!w.shivCSS||p||e.hasCSS||(e.hasCSS=!!r(t,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),h||c(t,e),t}var p,h,f="3.7.3-pre",d=t.html5||{},m=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,v=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,g="_html5shiv",b=0,y={};!function(){try{var t=n.createElement("a");t.innerHTML="",p="hidden"in t,h=1==t.childNodes.length||function(){n.createElement("a");var t=n.createDocumentFragment();return void 0===t.cloneNode||void 0===t.createDocumentFragment||void 0===t.createElement}()}catch(e){p=!0,h=!0}}();var w={elements:d.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:f,shivCSS:d.shivCSS!==!1,supportsUnknownElements:h,shivMethods:d.shivMethods!==!1,type:"default",shivDocument:l,createElement:s,createDocumentFragment:u,addElements:a};t.html5=w,l(n),"object"==typeof e&&e.exports&&(e.exports=w)}("undefined"!=typeof window?window:this,document)},{}],4:[function(t,e,n){(function(t){!function(t){function e(t,e,n,r){for(var a,o=n.slice(),s=i(e,t),u=0,c=o.length;c>u&&(handler=o[u],"object"==typeof handler&&"function"==typeof handler.handleEvent?handler.handleEvent(s):handler.call(t,s),!s.stoppedImmediatePropagation);u++);return a=!s.stoppedPropagation,r&&a&&t.parentNode?t.parentNode.dispatchEvent(s):!s.defaultPrevented}function n(t,e){return{configurable:!0,get:t,set:e}}function r(t,e,r){var i=b(e||t,r);v(t,"textContent",n(function(){return i.get.call(this)},function(t){i.set.call(this,t)}))}function i(t,e){return t.currentTarget=e,t.eventPhase=t.target===t.currentTarget?2:3,t}function a(t,e){for(var n=t.length;n--&&t[n]!==e;);return n}function o(){if("BR"===this.tagName)return"\n";for(var t=this.firstChild,e=[];t;)8!==t.nodeType&&7!==t.nodeType&&e.push(t.textContent),t=t.nextSibling;return e.join("")}function s(t){var e=document.createEvent("Event");e.initEvent("input",!0,!0),(t.srcElement||t.fromElement||document).dispatchEvent(e)}function u(t){!h&&k.test(document.readyState)&&(h=!h,document.detachEvent(f,u),t=document.createEvent("Event"),t.initEvent(d,!0,!0),document.dispatchEvent(t))}function c(t){for(var e;e=this.lastChild;)this.removeChild(e);null!=t&&this.appendChild(document.createTextNode(t))}function l(e,n){return n||(n=t.event),n.target||(n.target=n.srcElement||n.fromElement||document),n.timeStamp||(n.timeStamp=(new Date).getTime()),n}if(!document.createEvent){var p=!0,h=!1,f="onreadystatechange",d="DOMContentLoaded",m="__IE8__"+Math.random(),v=Object.defineProperty||function(t,e,n){t[e]=n.value},g=Object.defineProperties||function(e,n){for(var r in n)if(y.call(n,r))try{v(e,r,n[r])}catch(i){t.console&&console.log(r+" failed on object:",e,i.message)}},b=Object.getOwnPropertyDescriptor,y=Object.prototype.hasOwnProperty,w=t.Element.prototype,x=t.Text.prototype,_=/^[a-z]+$/,k=/loaded|complete/,E={},T=document.createElement("div"),C=document.documentElement,O=C.removeAttribute,S=C.setAttribute;r(t.HTMLCommentElement.prototype,w,"nodeValue"),r(t.HTMLScriptElement.prototype,null,"text"),r(x,null,"nodeValue"),r(t.HTMLTitleElement.prototype,null,"text"),v(t.HTMLStyleElement.prototype,"textContent",function(t){return n(function(){return t.get.call(this.styleSheet)},function(e){t.set.call(this.styleSheet,e)})}(b(t.CSSStyleSheet.prototype,"cssText"))),g(w,{textContent:{get:o,set:c},firstElementChild:{get:function(){for(var t=this.childNodes||[],e=0,n=t.length;n>e;e++)if(1==t[e].nodeType)return t[e]}},lastElementChild:{get:function(){for(var t=this.childNodes||[],e=t.length;e--;)if(1==t[e].nodeType)return t[e]}},oninput:{get:function(){return this._oninput||null},set:function(t){this._oninput&&(this.removeEventListener("input",this._oninput),this._oninput=t,t&&this.addEventListener("input",t))}},previousElementSibling:{get:function(){for(var t=this.previousSibling;t&&1!=t.nodeType;)t=t.previousSibling;return t}},nextElementSibling:{get:function(){for(var t=this.nextSibling;t&&1!=t.nodeType;)t=t.nextSibling;return t}},childElementCount:{get:function(){for(var t=0,e=this.childNodes||[],n=e.length;n--;t+=1==e[n].nodeType);return t}},addEventListener:{value:function(t,n,r){var i,o,u=this,c="on"+t,p=u[m]||v(u,m,{value:{}})[m],h=p[c]||(p[c]={}),f=h.h||(h.h=[]);if(!y.call(h,"w")){if(h.w=function(t){return t[m]||e(u,l(u,t),f,!1)},!y.call(E,c))if(_.test(t)){try{i=document.createEventObject(),i[m]=!0,9!=u.nodeType&&null==u.parentNode&&T.appendChild(u),(o=u.getAttribute(c))&&O.call(u,c),u.fireEvent(c,i),E[c]=!0}catch(i){for(E[c]=!1;T.hasChildNodes();)T.removeChild(T.firstChild)}null!=o&&S.call(u,c,o)}else E[c]=!1;(h.n=E[c])&&u.attachEvent(c,h.w)}a(f,n)<0&&f[r?"unshift":"push"](n),"input"===t&&u.attachEvent("onkeyup",s)}},dispatchEvent:{value:function(t){var n,r=this,i="on"+t.type,a=r[m],o=a&&a[i],s=!!o;return t.target||(t.target=r),s?o.n?r.fireEvent(i,t):e(r,t,o.h,!0):(n=r.parentNode)?n.dispatchEvent(t):!0,!t.defaultPrevented}},removeEventListener:{value:function(t,e,n){var r=this,i="on"+t,o=r[m],s=o&&o[i],u=s&&s.h,c=u?a(u,e):-1;c>-1&&u.splice(c,1)}}}),g(x,{addEventListener:{value:w.addEventListener},dispatchEvent:{value:w.dispatchEvent},removeEventListener:{value:w.removeEventListener}}),g(t.XMLHttpRequest.prototype,{addEventListener:{value:function(t,e,n){var r=this,i="on"+t,o=r[m]||v(r,m,{value:{}})[m],s=o[i]||(o[i]={}),u=s.h||(s.h=[]);a(u,e)<0&&(r[i]||(r[i]=function(){var e=document.createEvent("Event");e.initEvent(t,!0,!0),r.dispatchEvent(e)}),u[n?"unshift":"push"](e))}},dispatchEvent:{value:function(t){var n=this,r="on"+t.type,i=n[m],a=i&&i[r],o=!!a;return o&&(a.n?n.fireEvent(r,t):e(n,t,a.h,!0))}},removeEventListener:{value:w.removeEventListener}}),g(t.Event.prototype,{bubbles:{value:!0,writable:!0},cancelable:{value:!0,writable:!0},preventDefault:{value:function(){this.cancelable&&(this.defaultPrevented=!0,this.returnValue=!1)}},stopPropagation:{value:function(){this.stoppedPropagation=!0,this.cancelBubble=!0}},stopImmediatePropagation:{value:function(){this.stoppedImmediatePropagation=!0,this.stopPropagation()}},initEvent:{value:function(t,e,n){this.type=t,this.bubbles=!!e,this.cancelable=!!n,this.bubbles||this.stopPropagation()}}}),g(t.HTMLDocument.prototype,{defaultView:{get:function(){ -return this.parentWindow}},textContent:{get:function(){return 11===this.nodeType?o.call(this):null},set:function(t){11===this.nodeType&&c.call(this,t)}},addEventListener:{value:function(e,n,r){var i=this;w.addEventListener.call(i,e,n,r),p&&e===d&&!k.test(i.readyState)&&(p=!1,i.attachEvent(f,u),t==top&&!function a(t){try{i.documentElement.doScroll("left"),u()}catch(e){setTimeout(a,50)}}())}},dispatchEvent:{value:w.dispatchEvent},removeEventListener:{value:w.removeEventListener},createEvent:{value:function(t){var e;if("Event"!==t)throw Error("unsupported "+t);return e=document.createEventObject(),e.timeStamp=(new Date).getTime(),e}}}),g(t.Window.prototype,{getComputedStyle:{value:function(){function t(t){this._=t}function e(){}var n=/^(?:[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|))(?!px)[a-z%]+$/,r=/^(top|right|bottom|left)$/,i=/\-([a-z])/g,a=function(t,e){return e.toUpperCase()};return t.prototype.getPropertyValue=function(t){var e,o,s,u=this._,c=u.style,l=u.currentStyle,p=u.runtimeStyle;return t=("float"===t?"style-float":t).replace(i,a),e=l?l[t]:c[t],n.test(e)&&!r.test(t)&&(o=c.left,s=p&&p.left,s&&(p.left=l.left),c.left="fontSize"===t?"1em":e,e=c.pixelLeft+"px",c.left=o,s&&(p.left=s)),null==e?e:e+""||"auto"},e.prototype.getPropertyValue=function(){return null},function(n,r){return r?new e(n):new t(n)}}()},addEventListener:{value:function(n,r,i){var o,s=t,u="on"+n;s[u]||(s[u]=function(t){return e(s,l(s,t),o,!1)}),o=s[u][m]||(s[u][m]=[]),a(o,r)<0&&o[i?"unshift":"push"](r)}},dispatchEvent:{value:function(e){var n=t["on"+e.type];return n?n.call(t,e)!==!1&&!e.defaultPrevented:!0}},removeEventListener:{value:function(e,n,r){var i="on"+e,o=(t[i]||Object)[m],s=o?a(o,n):-1;s>-1&&o.splice(s,1)}}}),function(t,e,n){for(n=0;n1?e-1:0),r=1;e>r;r++)n[r-1]=arguments[r];for(var i,a;a=n.shift();)for(i in a)So.call(a,i)&&(t[i]=a[i]);return t}function i(t){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;e>r;r++)n[r-1]=arguments[r];return n.forEach(function(e){for(var n in e)!e.hasOwnProperty(n)||n in t||(t[n]=e[n])}),t}function a(t){return"[object Array]"===Ao.call(t)}function o(t){return Po.test(Ao.call(t))}function s(t,e){return null===t&&null===e?!0:"object"==typeof t||"object"==typeof e?!1:t===e}function u(t){return!isNaN(parseFloat(t))&&isFinite(t)}function c(t){return t&&"[object Object]"===Ao.call(t)}function l(t,e){return t.replace(/%s/g,function(){return e.shift()})}function p(t){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;e>r;r++)n[r-1]=arguments[r];throw t=l(t,n),Error(t)}function h(){Av.DEBUG&&To.apply(null,arguments)}function f(t){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;e>r;r++)n[r-1]=arguments[r];t=l(t,n),Co(t,n)}function d(t){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;e>r;r++)n[r-1]=arguments[r];t=l(t,n),No[t]||(No[t]=!0,Co(t,n))}function m(){Av.DEBUG&&f.apply(null,arguments)}function v(){Av.DEBUG&&d.apply(null,arguments)}function g(t,e,n){var r=b(t,e,n);return r?r[t][n]:null}function b(t,e,n){for(;e;){if(n in e[t])return e;if(e.isolated)return null;e=e.parent}}function y(t){return function(){return t}}function w(t){var e,n,r,i,a,o;for(e=t.split("."),(n=Bo[e.length])||(n=x(e.length)),a=[],r=function(t,n){return t?"*":e[n]},i=n.length;i--;)o=n[i].map(r).join("."),a.hasOwnProperty(o)||(a.push(o),a[o]=!0);return a}function x(t){var e,n,r,i,a,o,s,u,c="";if(!Bo[t]){for(r=[];c.length=a;a+=1){for(n=a.toString(2);n.lengtho;o++)u.push(i(n[o]));r[a]=u}Bo[t]=r}return Bo[t]}function _(t,e,n,r){var i=t[e];if(!i||!i.equalsOrStartsWith(r)&&i.equalsOrStartsWith(n))return t[e]=i?i.replace(n,r):r,!0}function k(t){var e=t.slice(2);return"i"===t[1]&&u(e)?+e:e}function E(t){return null==t?t:(Ho.hasOwnProperty(t)||(Ho[t]=new Wo(t)),Ho[t])}function T(t,e){function n(e,n){var r,i,o;return n.isRoot?o=[].concat(Object.keys(t.viewmodel.data),Object.keys(t.viewmodel.mappings),Object.keys(t.viewmodel.computations)):(r=t.viewmodel.wrapped[n.str],i=r?r.get():t.viewmodel.get(n),o=i?Object.keys(i):null),o&&o.forEach(function(t){"_ractive"===t&&a(i)||e.push(n.join(t))}),e}var r,i,o;for(r=e.str.split("."),o=[Go];i=r.shift();)"*"===i?o=o.reduce(n,[]):o[0]===Go?o[0]=E(i):o=o.map(C(i));return o}function C(t){return function(e){return e.join(t)}}function O(t){return t?t.replace(qo,".$1"):""}function S(t,e,n){if("string"!=typeof e||!u(n))throw Error("Bad arguments");var r=void 0,i=void 0;if(/\*/.test(e))return i={},T(t,E(O(e))).forEach(function(e){var r=t.viewmodel.get(e);if(!u(r))throw Error(Qo);i[e.str]=r+n}),t.set(i);if(r=t.get(e),!u(r))throw Error(Qo);return t.set(e,+r+n)}function A(t,e){return Ko(this,t,void 0===e?1:+e)}function P(t){this.event=t,this.method="on"+t,this.deprecate=ts[t]}function j(t,e){var n=t.indexOf(e);-1===n&&t.push(e)}function N(t,e){for(var n=0,r=t.length;r>n;n++)if(t[n]==e)return!0;return!1}function F(t,e){var n;if(!a(t)||!a(e))return!1;if(t.length!==e.length)return!1;for(n=t.length;n--;)if(t[n]!==e[n])return!1;return!0}function M(t){return"string"==typeof t?[t]:void 0===t?[]:t}function R(t){return t[t.length-1]}function L(t,e){var n=t.indexOf(e);-1!==n&&t.splice(n,1)}function I(t){for(var e=[],n=t.length;n--;)e[n]=t[n];return e}function D(t){setTimeout(t,0)}function U(t,e){return function(){for(var n;n=t.shift();)n(e)}}function V(t,e,n,r){var i;if(e===t)throw new TypeError("A promise's fulfillment handler cannot return the same promise");if(e instanceof es)e.then(n,r);else if(!e||"object"!=typeof e&&"function"!=typeof e)n(e);else{try{i=e.then}catch(a){return void r(a)}if("function"==typeof i){var o,s,u;s=function(e){o||(o=!0,V(t,e,n,r))},u=function(t){o||(o=!0,r(t))};try{i.call(e,s,u)}catch(a){if(!o)return r(a),void(o=!0)}}else n(e)}}function B(t,e,n){var r;return e=O(e),"~/"===e.substr(0,2)?(r=E(e.substring(2)),H(t,r.firstKey,n)):"."===e[0]?(r=q(ss(n),e),r&&H(t,r.firstKey,n)):r=z(t,E(e),n),r}function q(t,e){var n;if(void 0!=t&&"string"!=typeof t&&(t=t.str),"."===e)return E(t);if(n=t?t.split("."):[],"../"===e.substr(0,3)){for(;"../"===e.substr(0,3);){if(!n.length)throw Error('Could not resolve reference - too many "../" prefixes');n.pop(),e=e.substring(3)}return n.push(e),E(n.join("."))}return E(t?t+e.replace(/^\.\//,"."):e.replace(/^\.\/?/,""))}function z(t,e,n,r){var i,a,o,s,u;if(e.isRoot)return e;for(a=e.firstKey;n;)if(i=n.context,n=n.parent,i&&(s=!0,o=t.viewmodel.get(i),o&&("object"==typeof o||"function"==typeof o)&&a in o))return i.join(e.str);return W(t.viewmodel,a)?e:t.parent&&!t.isolated&&(s=!0,n=t.component.parentFragment,a=E(a),u=z(t.parent,a,n,!0))?(t.viewmodel.map(a,{origin:t.parent.viewmodel,keypath:u}),e):r||s?void 0:(t.viewmodel.set(e,void 0),e)}function H(t,e){var n;!t.parent||t.isolated||W(t.viewmodel,e)||(e=E(e),(n=z(t.parent,e,t.component.parentFragment,!0))&&t.viewmodel.map(e,{origin:t.parent.viewmodel,keypath:n}))}function W(t,e){return""===e||e in t.data||e in t.computations||e in t.mappings}function $(t){t.teardown()}function G(t){t.unbind()}function K(t){t.unrender()}function Q(t){t.cancel()}function Y(t){t.detach()}function J(t){t.detachNodes()}function Z(t){!t.ready||t.outros.length||t.outroChildren||(t.outrosComplete||(t.parent?t.parent.decrementOutros(t):t.detachNodes(),t.outrosComplete=!0),t.intros.length||t.totalChildren||("function"==typeof t.callback&&t.callback(),t.parent&&t.parent.decrementTotal()))}function X(){for(var t,e,n;ls.ractives.length;)e=ls.ractives.pop(),n=e.viewmodel.applyChanges(),n&&ds.fire(e,n);for(tt(),t=0;t=0;a--)i=t._subs[e[a]],i&&(s=gt(t,i,n,r)&&s);if(Vs.dequeue(t),t.parent&&s){if(o&&t.component){var u=t.component.name+"."+e[e.length-1];e=E(u).wildcardMatches(),n&&(n.component=t)}vt(t.parent,e,n,r)}}function gt(t,e,n,r){var i=null,a=!1;n&&!n._noArg&&(r=[n].concat(r)),e=e.slice();for(var o=0,s=e.length;s>o;o+=1)e[o].apply(t,r)===!1&&(a=!0);return n&&!n._noArg&&a&&(i=n.original)&&(i.preventDefault&&i.preventDefault(),i.stopPropagation&&i.stopPropagation()),!a}function bt(t){var e={args:Array.prototype.slice.call(arguments,1)};Bs(this,t,e)}function yt(t){var e;return t=E(O(t)),e=this.viewmodel.get(t,Hs),void 0===e&&this.parent&&!this.isolated&&us(this,t.str,this.component.parentFragment)&&(e=this.viewmodel.get(t)),e}function wt(e,n){if(!this.fragment.rendered)throw Error("The API has changed - you must call `ractive.render(target[, anchor])` to render your Ractive instance. Once rendered you can use `ractive.insert()`.");if(e=t(e),n=t(n)||null,!e)throw Error("You must specify a valid target to insert into");e.insertBefore(this.detach(),n),this.el=e,(e.__ractive_instances__||(e.__ractive_instances__=[])).push(this),this.detached=null,xt(this)}function xt(t){$s.fire(t),t.findAllComponents("*").forEach(function(t){xt(t.instance)})}function _t(t,e,n){var r,i;return t=E(O(t)),r=this.viewmodel.get(t),a(r)&&a(e)?(i=ms.start(this,!0),this.viewmodel.merge(t,r,e,n),ms.end(),i):this.set(t,e,n&&n.complete)}function kt(t,e){var n,r;return n=T(t,e),r={},n.forEach(function(e){r[e.str]=t.get(e.str)}),r}function Et(t,e,n,r){var i,a,o;e=E(O(e)),r=r||su,e.isPattern?(i=new au(t,e,n,r),t.viewmodel.patternObservers.push(i),a=!0):i=new Ys(t,e,n,r),i.init(r.init),t.viewmodel.register(e,i,a?"patternObservers":"observers"),i.ready=!0;var s={cancel:function(){var n;o||(a?(n=t.viewmodel.patternObservers.indexOf(i),t.viewmodel.patternObservers.splice(n,1),t.viewmodel.unregister(e,i,"patternObservers")):t.viewmodel.unregister(e,i,"observers"),o=!0)}};return t._observers.push(s),s}function Tt(t,e,n){var r,i,a,o;if(c(t)){n=e,i=t,r=[];for(t in i)i.hasOwnProperty(t)&&(e=i[t],r.push(this.observe(t,e,n)));return{cancel:function(){for(;r.length;)r.pop().cancel()}}}if("function"==typeof t)return n=e,e=t,t="",ou(this,t,e,n);if(a=t.split(" "),1===a.length)return ou(this,t,e,n);for(r=[],o=a.length;o--;)t=a[o],t&&r.push(ou(this,t,e,n));return{cancel:function(){for(;r.length;)r.pop().cancel()}}}function Ct(t,e,n){var r=this.observe(t,function(){e.apply(this,arguments),r.cancel()},{init:!1,defer:n&&n.defer});return r}function Ot(t,e){var n,r=this;if(t)n=t.split(" ").map(lu).filter(pu),n.forEach(function(t){var n,i;(n=r._subs[t])&&(e?(i=n.indexOf(e),-1!==i&&n.splice(i,1)):r._subs[t]=[])});else for(t in this._subs)delete this._subs[t];return this}function St(t,e){var n,r,i,a=this;if("object"==typeof t){n=[];for(r in t)t.hasOwnProperty(r)&&n.push(this.on(r,t[r]));return{cancel:function(){for(var t;t=n.pop();)t.cancel()}}}return i=t.split(" ").map(lu).filter(pu),i.forEach(function(t){(a._subs[t]||(a._subs[t]=[])).push(e)}),{cancel:function(){return a.off(t,e)}}}function At(t,e){var n=this.on(t,function(){e.apply(this,arguments),n.cancel()});return n}function Pt(t,e,n){var r,i,a,o,s,u,c=[];if(r=jt(t,e,n),!r)return null;for(i=t.length,s=r.length-2-r[1],a=Math.min(i,r[0]),o=a+r[1],u=0;a>u;u+=1)c.push(u);for(;o>u;u+=1)c.push(-1);for(;i>u;u+=1)c.push(u+s);return 0!==s?c.touchedFrom=r[0]:c.touchedFrom=t.length,c}function jt(t,e,n){switch(e){case"splice":for(void 0!==n[0]&&n[0]<0&&(n[0]=t.length+Math.max(n[0],-t.length));n.length<2;)n.push(0);return n[1]=Math.min(n[1],t.length-n[0]),n;case"sort":case"reverse":return null;case"pop":return t.length?[t.length-1,1]:[0,0];case"push":return[t.length,0].concat(n);case"shift":return[0,t.length?1:0];case"unshift":return[0,0].concat(n)}}function Nt(e,n){var r,i,a,o=this;if(a=this.transitionsEnabled,this.noIntro&&(this.transitionsEnabled=!1),r=ms.start(this,!0),ms.scheduleTask(function(){return Su.fire(o)},!0),this.fragment.rendered)throw Error("You cannot call ractive.render() on an already rendered instance! Call ractive.unrender() first");if(e=t(e)||this.el,n=t(n)||this.anchor,this.el=e,this.anchor=n,!this.append&&e){var s=e.__ractive_instances__;s&&s.length&&Ft(s),e.innerHTML=""}return this.cssId&&Cu.apply(),e&&((i=e.__ractive_instances__)?i.push(this):e.__ractive_instances__=[this],n?e.insertBefore(this.fragment.render(),n):e.appendChild(this.fragment.render())),ms.end(),this.transitionsEnabled=a,r.then(function(){return Au.fire(o)})}function Ft(t){t.splice(0,t.length).forEach($)}function Mt(t,e){for(var n=t.slice(),r=e.length;r--;)~n.indexOf(e[r])||n.push(e[r]);return n}function Rt(t,e){var n,r,i;return r='[data-ractive-css~="{'+e+'}"]',i=function(t){var e,n,i,a,o,s,u,c=[];for(e=[];n=Ru.exec(t);)e.push({str:n[0],base:n[1],modifiers:n[2]});for(a=e.map(It),u=e.length;u--;)s=a.slice(),i=e[u],s[u]=i.base+r+i.modifiers||"",o=a.slice(),o[u]=r+" "+o[u],c.push(s.join(" "),o.join(" "));return c.join(", ")},n=Iu.test(t)?t.replace(Iu,r):t.replace(Mu,"").replace(Fu,function(t,e){var n,r;return Lu.test(e)?t:(n=e.split(",").map(Lt),r=n.map(i).join(", ")+" ",t.replace(e,r))})}function Lt(t){return t.trim?t.trim():t.replace(/^\s+/,"").replace(/\s+$/,"")}function It(t){return t.str}function Dt(t){t&&t.constructor!==Object&&("function"==typeof t||("object"!=typeof t?p("data option must be an object or a function, `"+t+"` is not valid"):m("If supplied, options.data should be a plain JavaScript object - using a non-POJO as the root object may work, but is discouraged")))}function Ut(t,e){Dt(e);var n="function"==typeof t,r="function"==typeof e;return e||n||(e={}),n||r?function(){var i=r?Vt(e,this):e,a=n?Vt(t,this):t;return Bt(i,a)}:Bt(e,t)}function Vt(t,e){var n=t.call(e);if(n)return"object"!=typeof n&&p("Data function must return an object"),n.constructor!==Object&&v("Data function returned something other than a plain JavaScript object. This might work, but is strongly discouraged"),n}function Bt(t,e){if(t&&e){for(var n in e)n in t||(t[n]=e[n]);return t}return t||e}function qt(t){var e=wo(Wu);return e.parse=function(e,n){return zt(e,n||t)},e}function zt(t,e){if(!zu)throw Error("Missing Ractive.parse - cannot parse template. Either preparse or use the version that includes the parser");return zu(t,e||this.options)}function Ht(t,e){var n;if(!Za){if(e&&e.noThrow)return;throw Error("Cannot retrieve template #"+t+" as Ractive is not running in a browser.")}if(Wt(t)&&(t=t.substring(1)),!(n=document.getElementById(t))){if(e&&e.noThrow)return;throw Error("Could not find template element with id #"+t)}if("SCRIPT"!==n.tagName.toUpperCase()){if(e&&e.noThrow)return;throw Error("Template element with id #"+t+", must be a {{#if config.fancy}} -
+
{{/if}} diff --git a/tgui/scripts/components/titlebar.ract b/tgui/scripts/components/titlebar.ract index f4cc29dc0fe..b5ec50a5b1f 100644 --- a/tgui/scripts/components/titlebar.ract +++ b/tgui/scripts/components/titlebar.ract @@ -13,17 +13,6 @@ component.exports = @observe "config.fancy", (newkey, oldkey, keypath) -> byond.winset @get("config.window"), "titlebar", !!!newkey - @on - startdrag: -> @toggle "drag"; false - enddrag: -> @set "drag"; @set "x"; @set "y"; false - drag: (event) -> - if @get "x" - x = (event.original.screenX - @get "x") + window.screenLeft - y = (event.original.screenY - @get "y") + window.screenTop - byond.winset @get("config.window"), "pos", "#{x},#{y}" - @set x: event.original.screenX, y: event.original.screenY - false - @on close: -> byond.winset @get("config.window"), "is-visible", "false" @@ -32,7 +21,7 @@ component.exports = byond.winset @get("config.window"), "is-minimized", "true" -
+
{{yield}} {{#if config.fancy}} diff --git a/tgui/scripts/dragresize.coffee b/tgui/scripts/dragresize.coffee new file mode 100644 index 00000000000..c4e6e6d0b07 --- /dev/null +++ b/tgui/scripts/dragresize.coffee @@ -0,0 +1,37 @@ +byond = require "./byond" + + +module.exports = + drag: (ractive, event) -> + lock = (x, y) -> + if x < 0 # Left + x = 0 + if y < 0 # Top + y = 0 + if x + window.innerWidth > screen.availWidth # Right + x = screen.availWidth - window.innerWidth + if y + window.innerHeight > screen.availHeight # Bottom + y = screen.availHeight - window.innerHeight + {x: x, y: y} + + if ractive.get "x" + x = (event.screenX - ractive.get "x") + window.screenLeft + y = (event.screenY - ractive.get "y") + window.screenTop + if ractive.get "config.locked" then {x, y} = lock x, y # Lock to primary monitor. + + byond.winset ractive.get("config.window"), "pos", "#{x},#{y}" + ractive.set x: event.screenX, y: event.screenY + + resize: (ractive, event) -> + sane = (x, y) -> + x = Math.clamp x, 100, screen.width + y = Math.clamp y, 100, screen.height + {x: x, y: y} + + if ractive.get "x" + x = (event.screenX - ractive.get "x") + window.innerWidth + y = (event.screenY - ractive.get "y") + window.innerHeight + {x, y} = sane x, y + + byond.winset ractive.get("config.window"), "size", "#{x},#{y}" + ractive.set x: event.screenX, y: event.screenY diff --git a/tgui/scripts/tgui.ract b/tgui/scripts/tgui.ract index baf6ac0eb6f..e8c138a93c1 100644 --- a/tgui/scripts/tgui.ract +++ b/tgui/scripts/tgui.ract @@ -2,6 +2,8 @@ {{{config.title}}} From 78295d823838d650e6d1028f21330dd29275566e Mon Sep 17 00:00:00 2001 From: phil235 Date: Sun, 3 Jan 2016 18:11:18 +0100 Subject: [PATCH 103/310] Fixes runtime when trying to cremate an animal that deletes itself upon death (mouse, cockroach). --- code/game/objects/structures/morgue.dm | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm index 97687c2fa1f..cd8c190569e 100644 --- a/code/game/objects/structures/morgue.dm +++ b/code/game/objects/structures/morgue.dm @@ -180,7 +180,7 @@ var/global/list/crematoriums = new/list() update_icon() for(var/mob/living/M in contents) - if (M.stat!=2) + if (M.stat != DEAD) M.emote("scream") if(user) user.attack_log +="\[[time_stamp()]\] Cremated [M]/[M.ckey]" @@ -188,8 +188,9 @@ var/global/list/crematoriums = new/list() else log_attack("\[[time_stamp()]\] UNKNOWN cremated [M]/[M.ckey]") M.death(1) - M.ghostize() - qdel(M) + if(M) //some animals get automatically deleted on death. + M.ghostize() + qdel(M) for(var/obj/O in contents) //obj instead of obj/item so that bodybags and ashes get destroyed. We dont want tons and tons of ash piling up if(O != connected) //Creamtorium does not burn hot enough to destroy the tray From bbb67293fc7a4588de5a3d0418e6f56564dc2739 Mon Sep 17 00:00:00 2001 From: Bjorn Neergaard Date: Sun, 3 Jan 2016 11:40:06 -0600 Subject: [PATCH 104/310] Remove extra HTML; fix drag/resize in old IE --- tgui/assets/tgui.js | 2 +- tgui/scripts/tgui.ract | 4 ++-- tgui/tgui.html | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tgui/assets/tgui.js b/tgui/assets/tgui.js index b148dd3de62..8e558814ac0 100644 --- a/tgui/assets/tgui.js +++ b/tgui/assets/tgui.js @@ -5,5 +5,5 @@ return this.parentWindow}},textContent:{get:function(){return 11===this.nodeType Ecirc:202,Euml:203,Igrave:204,Iacute:205,Icirc:206,Iuml:207,ETH:208,Ntilde:209,Ograve:210,Oacute:211,Ocirc:212,Otilde:213,Ouml:214,times:215,Oslash:216,Ugrave:217,Uacute:218,Ucirc:219,Uuml:220,Yacute:221,THORN:222,szlig:223,agrave:224,aacute:225,acirc:226,atilde:227,auml:228,aring:229,aelig:230,ccedil:231,egrave:232,eacute:233,ecirc:234,euml:235,igrave:236,iacute:237,icirc:238,iuml:239,eth:240,ntilde:241,ograve:242,oacute:243,ocirc:244,otilde:245,ouml:246,divide:247,oslash:248,ugrave:249,uacute:250,ucirc:251,uuml:252,yacute:253,thorn:254,yuml:255,OElig:338,oelig:339,Scaron:352,scaron:353,Yuml:376,fnof:402,circ:710,tilde:732,Alpha:913,Beta:914,Gamma:915,Delta:916,Epsilon:917,Zeta:918,Eta:919,Theta:920,Iota:921,Kappa:922,Lambda:923,Mu:924,Nu:925,Xi:926,Omicron:927,Pi:928,Rho:929,Sigma:931,Tau:932,Upsilon:933,Phi:934,Chi:935,Psi:936,Omega:937,alpha:945,beta:946,gamma:947,delta:948,epsilon:949,zeta:950,eta:951,theta:952,iota:953,kappa:954,lambda:955,mu:956,nu:957,xi:958,omicron:959,pi:960,rho:961,sigmaf:962,sigma:963,tau:964,upsilon:965,phi:966,chi:967,psi:968,omega:969,thetasym:977,upsih:978,piv:982,ensp:8194,emsp:8195,thinsp:8201,zwnj:8204,zwj:8205,lrm:8206,rlm:8207,ndash:8211,mdash:8212,lsquo:8216,rsquo:8217,sbquo:8218,ldquo:8220,rdquo:8221,bdquo:8222,dagger:8224,Dagger:8225,bull:8226,hellip:8230,permil:8240,prime:8242,Prime:8243,lsaquo:8249,rsaquo:8250,oline:8254,frasl:8260,euro:8364,image:8465,weierp:8472,real:8476,trade:8482,alefsym:8501,larr:8592,uarr:8593,rarr:8594,darr:8595,harr:8596,crarr:8629,lArr:8656,uArr:8657,rArr:8658,dArr:8659,hArr:8660,forall:8704,part:8706,exist:8707,empty:8709,nabla:8711,isin:8712,notin:8713,ni:8715,prod:8719,sum:8721,minus:8722,lowast:8727,radic:8730,prop:8733,infin:8734,ang:8736,and:8743,or:8744,cap:8745,cup:8746,"int":8747,there4:8756,sim:8764,cong:8773,asymp:8776,ne:8800,equiv:8801,le:8804,ge:8805,sub:8834,sup:8835,nsub:8836,sube:8838,supe:8839,oplus:8853,otimes:8855,perp:8869,sdot:8901,lceil:8968,rceil:8969,lfloor:8970,rfloor:8971,lang:9001,rang:9002,loz:9674,spades:9824,clubs:9827,hearts:9829,diams:9830},il=[8364,129,8218,402,8222,8230,8224,8225,710,8240,352,8249,338,141,381,143,144,8216,8217,8220,8221,8226,8211,8212,732,8482,353,8250,339,157,382,376],al=RegExp("&(#?(?:x[\\w\\d]+|\\d+|"+Object.keys(rl).join("|")+"));?","g"),ol=//g,ul=/&/g;var dl=function(){return e(this.node)},ml=function(t){this.type=wc,this.text=t.template};ml.prototype={detach:dl,firstNode:function(){return this.node},render:function(){return this.node||(this.node=document.createTextNode(this.text)),this.node},toString:function(t){return t?Ee(this.text):this.text},unrender:function(t){return t?this.detach():void 0}};var vl=ml,gl=Te,bl=Ce,yl=function(t,e,n){var r;this.ref=e,this.resolved=!1,this.root=t.root,this.parentFragment=t.parentFragment,this.callback=n,r=us(t.root,e,t.parentFragment),void 0!=r?this.resolve(r):ms.addUnresolved(this)};yl.prototype={resolve:function(t){this.keypath&&!t&&ms.addUnresolved(this),this.resolved=!0,this.keypath=t,this.callback(t)},forceResolution:function(){this.resolve(E(this.ref))},rebind:function(t,e){var n;void 0!=this.keypath&&(n=this.keypath.replace(t,e),void 0!==n&&this.resolve(n))},unbind:function(){this.resolved||ms.removeUnresolved(this)}};var wl=yl,xl=function(t,e,n){this.parentFragment=t.parentFragment,this.ref=e,this.callback=n,this.rebind()},_l={"@keypath":{prefix:"c",prop:["context"]},"@index":{prefix:"i",prop:["index"]},"@key":{prefix:"k",prop:["key","index"]}};xl.prototype={rebind:function(){var t,e=this.ref,n=this.parentFragment,r=_l[e];if(!r)throw Error('Unknown special reference "'+e+'" - valid references are @index, @key and @keypath');if(this.cached)return this.callback(E("@"+r.prefix+Se(this.cached,r)));if(-1!==r.prop.indexOf("index")||-1!==r.prop.indexOf("key"))for(;n;){if(n.owner.currentSubtype===Lc&&void 0!==(t=Se(n,r)))return this.cached=n,n.registerIndexRef(this),this.callback(E("@"+r.prefix+t));n=!n.parent&&n.owner&&n.owner.component&&n.owner.component.parentFragment&&!n.owner.component.instance.isolated?n.owner.component.parentFragment:n.parent}else for(;n;){if(void 0!==(t=Se(n,r)))return this.callback(E("@"+r.prefix+t.str));n=n.parent}},unbind:function(){this.cached&&this.cached.unregisterIndexRef(this)}};var kl=xl,El=function(t,e,n){this.parentFragment=t.parentFragment,this.ref=e,this.callback=n,e.ref.fragment.registerIndexRef(this),this.rebind()};El.prototype={rebind:function(){var t,e=this.ref.ref;t="k"===e.ref.t?"k"+e.fragment.key:"i"+e.fragment.index,void 0!==t&&this.callback(E("@"+t))},unbind:function(){this.ref.ref.fragment.unregisterIndexRef(this)}};var Tl=El,Cl=Oe;Oe.resolve=function(t){var e,n,r={};for(e in t.refs)n=t.refs[e],r[n.ref.n]="k"===n.ref.t?n.fragment.key:n.fragment.index;return r};var Sl,Ol=Ae,Al=Pe,Pl={},jl=Function.prototype.bind;Sl=function(t,e,n,r){var i,a=this;i=t.root,this.root=i,this.parentFragment=e,this.callback=r,this.owner=t,this.str=n.s,this.keypaths=[],this.pending=n.r.length,this.refResolvers=n.r.map(function(t,e){return Ol(a,t,function(t){a.resolve(e,t)})}),this.ready=!0,this.bubble()},Sl.prototype={bubble:function(){this.ready&&(this.uniqueString=Ne(this.str,this.keypaths),this.keypath=Fe(this.uniqueString),this.createEvaluator(),this.callback(this.keypath))},unbind:function(){for(var t;t=this.refResolvers.pop();)t.unbind()},resolve:function(t,e){this.keypaths[t]=e,this.bubble()},createEvaluator:function(){var t,e,n,r,i,a=this;r=this.keypath,t=this.root.viewmodel.computations[r.str],t?this.root.viewmodel.mark(r):(i=Al(this.str,this.refResolvers.length),e=this.keypaths.map(function(t){var e;return"undefined"===t?function(){}:t.isSpecial?(e=t.value,function(){return e}):function(){var e=a.root.viewmodel.get(t,{noUnwrap:!0,fullRootGet:!0});return"function"==typeof e&&(e=Re(e,a.root)),e}}),n={deps:this.keypaths.filter(Me),getter:function(){var t=e.map(je);return i.apply(null,t)}},t=this.root.viewmodel.compute(r,n))},rebind:function(t,e){this.refResolvers.forEach(function(n){return n.rebind(t,e)})}};var Nl=Sl,Fl=function(t,e,n){var r=this;this.resolver=e,this.root=e.root,this.parentFragment=n,this.viewmodel=e.root.viewmodel,"string"==typeof t?this.value=t:t.t===Fc?this.refResolver=Ol(this,t.n,function(t){r.resolve(t)}):new Nl(e,n,t,function(t){r.resolve(t)})};Fl.prototype={resolve:function(t){this.keypath&&this.viewmodel.unregister(this.keypath,this),this.keypath=t,this.value=this.viewmodel.get(t),this.bind(),this.resolver.bubble()},bind:function(){this.viewmodel.register(this.keypath,this)},rebind:function(t,e){this.refResolver&&this.refResolver.rebind(t,e)},setValue:function(t){this.value=t,this.resolver.bubble()},unbind:function(){this.keypath&&this.viewmodel.unregister(this.keypath,this),this.refResolver&&this.refResolver.unbind()},forceResolution:function(){this.refResolver&&this.refResolver.forceResolution()}};var Ml=Fl,Rl=function(t,e,n){var r,i,a,o,s=this;this.parentFragment=o=t.parentFragment,this.root=r=t.root,this.mustache=t,this.ref=i=e.r,this.callback=n,this.unresolved=[],(a=us(r,i,o))?this.base=a:this.baseResolver=new wl(this,i,function(t){s.base=t,s.baseResolver=null,s.bubble()}),this.members=e.m.map(function(t){return new Ml(t,s,o)}),this.ready=!0,this.bubble()};Rl.prototype={getKeypath:function(){var t=this.members.map(Le);return!t.every(Ie)||this.baseResolver?null:this.base.join(t.join("."))},bubble:function(){this.ready&&!this.baseResolver&&this.callback(this.getKeypath())},unbind:function(){this.members.forEach(G)},rebind:function(t,e){var n;if(this.base){var r=this.base.replace(t,e);r&&r!==this.base&&(this.base=r,n=!0)}this.members.forEach(function(r){r.rebind(t,e)&&(n=!0)}),n&&this.bubble()},forceResolution:function(){this.baseResolver&&(this.base=E(this.ref),this.baseResolver.unbind(),this.baseResolver=null),this.members.forEach(De),this.bubble()}};var Ll=Rl,Il=Ue,Dl=Ve,Ul=Be,Vl={getValue:bl,init:Il,resolve:Dl,rebind:Ul},Bl=function(t){this.type=xc,Vl.init(this,t)};Bl.prototype={update:function(){this.node.data=void 0==this.value?"":this.value},resolve:Vl.resolve,rebind:Vl.rebind,detach:dl,unbind:gl,render:function(){return this.node||(this.node=document.createTextNode(n(this.value))),this.node},unrender:function(t){t&&e(this.node)},getValue:Vl.getValue,setValue:function(t){var e;this.keypath&&(e=this.root.viewmodel.wrapped[this.keypath.str])&&(t=e.get()),s(t,this.value)||(this.value=t,this.parentFragment.bubble(),this.node&&ms.addView(this))},firstNode:function(){return this.node},toString:function(t){var e=""+n(this.value);return t?Ee(e):e}};var ql=Bl,Hl=qe,zl=He,Wl=ze,$l=We,Gl=$e,Kl=Ge,Ql=Ke,Yl=Qe,Jl=Ye,Zl=function(t,e){Vl.rebind.call(this,t,e)},Xl=Ze,tp=Xe,ep=pn,np=hn,rp=fn,ip=vn,ap=function(t){this.type=kc,this.subtype=this.currentSubtype=t.template.n,this.inverted=this.subtype===Rc,this.pElement=t.pElement,this.fragments=[],this.fragmentsToCreate=[],this.fragmentsToRender=[],this.fragmentsToUnrender=[],t.template.i&&(this.indexRefs=t.template.i.split(",").map(function(t,e){return{n:t,t:0===e?"k":"i"}})),this.renderedFragments=[],this.length=0,Vl.init(this,t)};ap.prototype={bubble:Hl,detach:zl,find:Wl,findAll:$l,findAllComponents:Gl,findComponent:Kl,findNextNode:Ql,firstNode:Yl,getIndexRef:function(t){if(this.indexRefs)for(var e=this.indexRefs.length;e--;){var n=this.indexRefs[e];if(n.n===t)return n}},getValue:Vl.getValue,shuffle:Jl,rebind:Zl,render:Xl,resolve:Vl.resolve,setValue:tp,toString:ep,unbind:np,unrender:rp,update:ip};var op,sp,up=ap,cp=gn,lp=bn,pp=yn,hp=wn,fp={};try{lo("table").innerHTML="foo"}catch(Eo){op=!0,sp={TABLE:['
',"
"],THEAD:['',"
"],TBODY:['',"
"],TR:['',"
"],SELECT:['"]}}var dp=function(t,e,n){var r,i,a,o,s,u=[];if(null!=t&&""!==t){for(op&&(i=sp[e.tagName])?(r=xn("DIV"),r.innerHTML=i[0]+t+i[1],r=r.querySelector(".x"),"SELECT"===r.tagName&&(a=r.options[r.selectedIndex])):e.namespaceURI===no.svg?(r=xn("DIV"),r.innerHTML=''+t+"",r=r.querySelector(".x")):(r=xn(e.tagName),r.innerHTML=t,"SELECT"===r.tagName&&(a=r.options[r.selectedIndex]));o=r.firstChild;)u.push(o),n.appendChild(o);if("SELECT"===e.tagName)for(s=u.length;s--;)u[s]!==a&&(u[s].selected=!1)}return u},mp=_n,vp=En,gp=Tn,bp=Cn,yp=Sn,wp=On,xp=function(t){this.type=_c,Vl.init(this,t)};xp.prototype={detach:cp,find:lp,findAll:pp,firstNode:hp,getValue:Vl.getValue,rebind:Vl.rebind,render:vp,resolve:Vl.resolve,setValue:gp,toString:bp,unbind:gl,unrender:yp,update:wp};var _p,kp,Ep,Tp,Cp=xp,Sp=function(){this.parentFragment.bubble()},Op=An,Ap=function(t){return this.node?po(this.node,t)?this.node:this.fragment&&this.fragment.find?this.fragment.find(t):void 0:null},Pp=function(t,e){e._test(this,!0)&&e.live&&(this.liveQueries||(this.liveQueries=[])).push(e),this.fragment&&this.fragment.findAll(t,e)},jp=function(t,e){this.fragment&&this.fragment.findAllComponents(t,e)},Np=function(t){return this.fragment?this.fragment.findComponent(t):void 0},Fp=Pn,Mp=jn,Rp=Nn,Lp=/^true|on|yes|1$/i,Ip=/^[0-9]+$/,Dp=function(t,e){var n,r,i;return i=e.a||{},r={},n=i.twoway,void 0!==n&&(r.twoway=0===n||Lp.test(n)),n=i.lazy,void 0!==n&&(0!==n&&Ip.test(n)?r.lazy=parseInt(n):r.lazy=0===n||Lp.test(n)),r},Up=Fn;_p="altGlyph altGlyphDef altGlyphItem animateColor animateMotion animateTransform clipPath feBlend feColorMatrix feComponentTransfer feComposite feConvolveMatrix feDiffuseLighting feDisplacementMap feDistantLight feFlood feFuncA feFuncB feFuncG feFuncR feGaussianBlur feImage feMerge feMergeNode feMorphology feOffset fePointLight feSpecularLighting feSpotLight feTile feTurbulence foreignObject glyphRef linearGradient radialGradient textPath vkern".split(" "),kp="attributeName attributeType baseFrequency baseProfile calcMode clipPathUnits contentScriptType contentStyleType diffuseConstant edgeMode externalResourcesRequired filterRes filterUnits glyphRef gradientTransform gradientUnits kernelMatrix kernelUnitLength keyPoints keySplines keyTimes lengthAdjust limitingConeAngle markerHeight markerUnits markerWidth maskContentUnits maskUnits numOctaves pathLength patternContentUnits patternTransform patternUnits pointsAtX pointsAtY pointsAtZ preserveAlpha preserveAspectRatio primitiveUnits refX refY repeatCount repeatDur requiredExtensions requiredFeatures specularConstant specularExponent spreadMethod startOffset stdDeviation stitchTiles surfaceScale systemLanguage tableValues targetX targetY textLength viewBox viewTarget xChannelSelector yChannelSelector zoomAndPan".split(" "),Ep=function(t){for(var e={},n=t.length;n--;)e[t[n].toLowerCase()]=t[n];return e},Tp=Ep(_p.concat(kp));var Vp=function(t){var e=t.toLowerCase();return Tp[e]||e},Bp=function(t,e){var n,r;if(n=e.indexOf(":"),-1===n||(r=e.substr(0,n),"xmlns"===r))t.name=t.element.namespace!==no.html?Vp(e):e;else if(e=e.substring(n+1),t.name=Vp(e),t.namespace=no[r.toLowerCase()],t.namespacePrefix=r,!t.namespace)throw'Unknown namespace ("'+r+'")'},qp=Mn,Hp=Rn,zp=Ln,Wp=In,$p={"accept-charset":"acceptCharset",accesskey:"accessKey",bgcolor:"bgColor","class":"className",codebase:"codeBase",colspan:"colSpan",contenteditable:"contentEditable",datetime:"dateTime",dirname:"dirName","for":"htmlFor","http-equiv":"httpEquiv",ismap:"isMap",maxlength:"maxLength",novalidate:"noValidate",pubdate:"pubDate",readonly:"readOnly",rowspan:"rowSpan",tabindex:"tabIndex",usemap:"useMap"},Gp=Dn,Kp=Vn,Qp=Bn,Yp=qn,Jp=Hn,Zp=zn,Xp=Wn,th=$n,eh=Gn,nh=Kn,rh=Qn,ih=Yn,ah=Jn,oh=Zn,sh=Xn,uh=function(t){this.init(t)};uh.prototype={bubble:Up,init:Hp,rebind:zp,render:Wp,toString:Gp,unbind:Kp,update:sh};var ch,lh=uh,ph=function(t,e){var n,r,i=[];for(n in e)"twoway"!==n&&"lazy"!==n&&e.hasOwnProperty(n)&&(r=new lh({element:t,name:n,value:e[n],root:t.root}),i[n]=r,"value"!==n&&i.push(r));return(r=i.value)&&i.push(r),i};"undefined"!=typeof document&&(ch=lo("div"));var hh=function(t,e){this.element=t,this.root=t.root,this.parentFragment=t.parentFragment,this.attributes=[],this.fragment=new ev({root:t.root,owner:this,template:[e]})};hh.prototype={bubble:function(){this.node&&this.update(),this.element.bubble()},rebind:function(t,e){this.fragment.rebind(t,e)},render:function(t){this.node=t,this.isSvg=t.namespaceURI===no.svg,this.update()},unbind:function(){this.fragment.unbind()},update:function(){var t,e,n=this;t=""+this.fragment,e=tr(t,this.isSvg),this.attributes.filter(function(t){return er(e,t)}).forEach(function(t){n.node.removeAttribute(t.name)}),e.forEach(function(t){n.node.setAttribute(t.name,t.value)}),this.attributes=e},toString:function(){return""+this.fragment}};var fh=hh,dh=function(t,e){return e?e.map(function(e){return new fh(t,e)}):[]},mh=function(t){var e,n,r,i;if(this.element=t,this.root=t.root,this.attribute=t.attributes[this.name||"value"],e=this.attribute.interpolator,e.twowayBinding=this,n=e.keypath){if("}"===n.str.slice(-1))return v("Two-way binding does not work with expressions (`%s` on <%s>)",e.resolver.uniqueString,t.name,{ractive:this.root}),!1;if(n.isSpecial)return v("Two-way binding does not work with %s",e.resolver.ref,{ractive:this.root}),!1}else{var a=e.template.r?"'"+e.template.r+"' reference":"expression";m("The %s being used for two-way binding is ambiguous, and may cause unexpected results. Consider initialising your data to eliminate the ambiguity",a,{ractive:this.root}),e.resolver.forceResolution(),n=e.keypath}this.attribute.isTwoway=!0,this.keypath=n,r=this.root.viewmodel.get(n),void 0===r&&this.getInitialValue&&(r=this.getInitialValue(),void 0!==r&&this.root.viewmodel.set(n,r)),(i=nr(t))&&(this.resetValue=r,i.formBindings.push(this))};mh.prototype={handleChange:function(){var t=this;ms.start(this.root),this.attribute.locked=!0,this.root.viewmodel.set(this.keypath,this.getValue()),ms.scheduleTask(function(){return t.attribute.locked=!1}),ms.end()},rebound:function(){var t,e,n;e=this.keypath,n=this.attribute.interpolator.keypath,e!==n&&(L(this.root._twowayBindings[e.str],this),this.keypath=n,t=this.root._twowayBindings[n.str]||(this.root._twowayBindings[n.str]=[]),t.push(this))},unbind:function(){}},mh.extend=function(t){var e,n=this;return e=function(t){mh.call(this,t),this.init&&this.init()},e.prototype=wo(n.prototype),r(e.prototype,t),e.extend=mh.extend,e};var vh,gh=mh,bh=rr;vh=gh.extend({getInitialValue:function(){return""},getValue:function(){return this.element.node.value},render:function(){var t,e=this.element.node,n=!1;this.rendered=!0,t=this.root.lazy,this.element.lazy===!0?t=!0:this.element.lazy===!1?t=!1:u(this.element.lazy)?(t=!1,n=+this.element.lazy):u(t||"")&&(n=+t,t=!1,this.element.lazy=n),this.handler=n?ar:bh,e.addEventListener("change",bh,!1),t||(e.addEventListener("input",this.handler,!1),e.attachEvent&&e.addEventListener("keyup",this.handler,!1)),e.addEventListener("blur",ir,!1)},unrender:function(){var t=this.element.node;this.rendered=!1,t.removeEventListener("change",bh,!1),t.removeEventListener("input",this.handler,!1),t.removeEventListener("keyup",this.handler,!1),t.removeEventListener("blur",ir,!1)}});var yh=vh,wh=yh.extend({getInitialValue:function(){return this.element.fragment?""+this.element.fragment:""},getValue:function(){return this.element.node.innerHTML}}),xh=wh,_h=or,kh={},Eh=gh.extend({name:"checked",init:function(){this.siblings=_h(this.root._guid,"radio",this.element.getAttribute("name")),this.siblings.push(this)},render:function(){var t=this.element.node;t.addEventListener("change",bh,!1),t.attachEvent&&t.addEventListener("click",bh,!1)},unrender:function(){var t=this.element.node;t.removeEventListener("change",bh,!1),t.removeEventListener("click",bh,!1)},handleChange:function(){ms.start(this.root),this.siblings.forEach(function(t){t.root.viewmodel.set(t.keypath,t.getValue())}),ms.end()},getValue:function(){return this.element.node.checked},unbind:function(){L(this.siblings,this)}}),Th=Eh,Ch=gh.extend({name:"name",init:function(){this.siblings=_h(this.root._guid,"radioname",this.keypath.str),this.siblings.push(this),this.radioName=!0},getInitialValue:function(){return this.element.getAttribute("checked")?this.element.getAttribute("value"):void 0},render:function(){var t=this.element.node;t.name="{{"+this.keypath.str+"}}",t.checked=this.root.viewmodel.get(this.keypath)==this.element.getAttribute("value"),t.addEventListener("change",bh,!1),t.attachEvent&&t.addEventListener("click",bh,!1)},unrender:function(){var t=this.element.node;t.removeEventListener("change",bh,!1),t.removeEventListener("click",bh,!1)},getValue:function(){var t=this.element.node;return t._ractive?t._ractive.value:t.value},handleChange:function(){this.element.node.checked&&gh.prototype.handleChange.call(this)},rebound:function(t,e){var n;gh.prototype.rebound.call(this,t,e),(n=this.element.node)&&(n.name="{{"+this.keypath.str+"}}")},unbind:function(){L(this.siblings,this)}}),Sh=Ch,Oh=gh.extend({name:"name",getInitialValue:function(){return this.noInitialValue=!0,[]},init:function(){var t,e;this.checkboxName=!0,this.siblings=_h(this.root._guid,"checkboxes",this.keypath.str),this.siblings.push(this),this.noInitialValue&&(this.siblings.noInitialValue=!0),this.siblings.noInitialValue&&this.element.getAttribute("checked")&&(t=this.root.viewmodel.get(this.keypath),e=this.element.getAttribute("value"),t.push(e))},unbind:function(){L(this.siblings,this)},render:function(){var t,e,n=this.element.node;t=this.root.viewmodel.get(this.keypath),e=this.element.getAttribute("value"),a(t)?this.isChecked=N(t,e):this.isChecked=t==e,n.name="{{"+this.keypath.str+"}}",n.checked=this.isChecked,n.addEventListener("change",bh,!1),n.attachEvent&&n.addEventListener("click",bh,!1)},unrender:function(){var t=this.element.node;t.removeEventListener("change",bh,!1),t.removeEventListener("click",bh,!1)},changed:function(){var t=!!this.isChecked;return this.isChecked=this.element.node.checked,this.isChecked===t},handleChange:function(){this.isChecked=this.element.node.checked,gh.prototype.handleChange.call(this)},getValue:function(){return this.siblings.filter(sr).map(ur)}}),Ah=Oh,Ph=gh.extend({name:"checked",render:function(){var t=this.element.node;t.addEventListener("change",bh,!1),t.attachEvent&&t.addEventListener("click",bh,!1)},unrender:function(){var t=this.element.node;t.removeEventListener("change",bh,!1),t.removeEventListener("click",bh,!1)},getValue:function(){return this.element.node.checked}}),jh=Ph,Nh=gh.extend({getInitialValue:function(){var t,e,n,r,i=this.element.options;if(void 0===this.element.getAttribute("value")&&(e=t=i.length,t)){for(;e--;)if(i[e].getAttribute("selected")){n=i[e].getAttribute("value"),r=!0;break}if(!r)for(;++ee;e+=1)if(r=t[e],t[e].selected)return i=r._ractive?r._ractive.value:r.value},forceUpdate:function(){var t=this,e=this.getValue();void 0!==e&&(this.attribute.locked=!0,ms.scheduleTask(function(){return t.attribute.locked=!1}),this.root.viewmodel.set(this.keypath,e))}}),Fh=Nh,Mh=Fh.extend({getInitialValue:function(){return this.element.options.filter(function(t){return t.getAttribute("selected")}).map(function(t){return t.getAttribute("value")})},render:function(){var t;this.element.node.addEventListener("change",bh,!1),t=this.root.viewmodel.get(this.keypath),void 0===t&&this.handleChange()},unrender:function(){this.element.node.removeEventListener("change",bh,!1)},setValue:function(){throw Error("TODO not implemented yet")},getValue:function(){var t,e,n,r,i,a;for(t=[],e=this.element.node.options,r=e.length,n=0;r>n;n+=1)i=e[n],i.selected&&(a=i._ractive?i._ractive.value:i.value,t.push(a));return t},handleChange:function(){var t,e,n;return t=this.attribute,e=t.value,n=this.getValue(),void 0!==e&&F(n,e)||Fh.prototype.handleChange.call(this),this},forceUpdate:function(){var t=this,e=this.getValue();void 0!==e&&(this.attribute.locked=!0,ms.scheduleTask(function(){return t.attribute.locked=!1}),this.root.viewmodel.set(this.keypath,e))},updateModel:function(){void 0!==this.attribute.value&&this.attribute.value.length||this.root.viewmodel.set(this.keypath,this.initialValue)}}),Rh=Mh,Lh=gh.extend({render:function(){this.element.node.addEventListener("change",bh,!1)},unrender:function(){this.element.node.removeEventListener("change",bh,!1)},getValue:function(){return this.element.node.files}}),Ih=Lh,Dh=yh.extend({getInitialValue:function(){},getValue:function(){var t=parseFloat(this.element.node.value);return isNaN(t)?void 0:t}}),Uh=cr,Vh=pr,Bh=hr,qh=fr,Hh=dr,zh=/^event(?:\.(.+))?/,Wh=br,$h=yr,Gh={},Kh={touchstart:!0,touchmove:!0,touchend:!0,touchcancel:!0,touchleave:!0},Qh=xr,Yh=_r,Jh=kr,Zh=Er,Xh=Tr,tf=function(t,e,n){this.init(t,e,n)};tf.prototype={bubble:Vh,fire:Bh,getAction:qh,init:Hh,listen:$h,rebind:Qh,render:Yh,resolve:Jh,unbind:Zh,unrender:Xh};var ef=tf,nf=function(t,e){var n,r,i,a,o=[];for(r in e)if(e.hasOwnProperty(r))for(i=r.split("-"),n=i.length;n--;)a=new ef(t,i[n],e[r]),o.push(a);return o},rf=function(t,e){var n,r,i,a=this;this.element=t,this.root=n=t.root,r=e.n||e,("string"==typeof r||(i=new ev({template:r,root:n,owner:t}),r=""+i,i.unbind(),""!==r))&&(e.a?this.params=e.a:e.d&&(this.fragment=new ev({template:e.d,root:n,owner:t}),this.params=this.fragment.getArgsList(),this.fragment.bubble=function(){this.dirtyArgs=this.dirtyValue=!0,a.params=this.getArgsList(),a.ready&&a.update()}),this.fn=g("decorators",n,r),this.fn||p(Ro(r,"decorator")))};rf.prototype={init:function(){var t,e,n;if(t=this.element.node,this.params?(n=[t].concat(this.params),e=this.fn.apply(this.root,n)):e=this.fn.call(this.root,t),!e||!e.teardown)throw Error("Decorator definition must return an object with a teardown method");this.actual=e,this.ready=!0},update:function(){this.actual.update?this.actual.update.apply(this.root,this.params):(this.actual.teardown(!0),this.init())},rebind:function(t,e){this.fragment&&this.fragment.rebind(t,e)},teardown:function(t){this.torndown=!0,this.ready&&this.actual.teardown(),!t&&this.fragment&&this.fragment.unbind()}};var af,of,sf,uf=rf,cf=Nr,lf=Fr,pf=Ur,hf=function(t){return t.replace(/-([a-zA-Z])/g,function(t,e){return e.toUpperCase()})};Za?(of={},sf=lo("div").style,af=function(t){var e,n,r;if(t=hf(t),!of[t])if(void 0!==sf[t])of[t]=t;else for(r=t.charAt(0).toUpperCase()+t.substring(1),e=io.length;e--;)if(n=io[e],void 0!==sf[n+r]){of[t]=n+r;break}return of[t]}):af=null;var ff,df,mf=af;Za?(df=window.getComputedStyle||ko.getComputedStyle,ff=function(t){var e,n,r,i,o;if(e=df(this.node),"string"==typeof t)return o=e[mf(t)],"0px"===o&&(o=0),o;if(!a(t))throw Error("Transition$getStyle must be passed a string, or an array of strings representing CSS properties");for(n={},r=t.length;r--;)i=t[r],o=e[mf(i)],"0px"===o&&(o=0),n[i]=o;return n}):ff=null;var vf=ff,gf=function(t,e){var n;if("string"==typeof t)this.node.style[mf(t)]=e;else for(n in t)t.hasOwnProperty(n)&&(this.node.style[mf(n)]=t[n]);return this},bf=function(t){var e;this.duration=t.duration,this.step=t.step,this.complete=t.complete,"string"==typeof t.easing?(e=t.root.easing[t.easing],e||(v(Ro(t.easing,"easing")),e=Vr)):e="function"==typeof t.easing?t.easing:Vr,this.easing=e,this.start=Xo(),this.end=this.start+this.duration,this.running=!0,bs.add(this)};bf.prototype={tick:function(t){var e,n;return this.running?t>this.end?(this.step&&this.step(1),this.complete&&this.complete(1),!1):(e=t-this.start,n=this.easing(e/this.duration),this.step&&this.step(n),!0):!1},stop:function(){this.abort&&this.abort(),this.running=!1}};var yf,wf,xf,_f,kf,Ef,Tf,Cf,Sf=bf,Of=RegExp("^-(?:"+io.join("|")+")-"),Af=function(t){return t.replace(Of,"")},Pf=RegExp("^(?:"+io.join("|")+")([A-Z])"),jf=function(t){var e;return t?(Pf.test(t)&&(t="-"+t),e=t.replace(/[A-Z]/g,function(t){return"-"+t.toLowerCase()})):""},Nf={},Ff={};Za?(wf=lo("div").style,function(){void 0!==wf.transition?(xf="transition",_f="transitionend",kf=!0):void 0!==wf.webkitTransition?(xf="webkitTransition",_f="webkitTransitionEnd",kf=!0):kf=!1}(),xf&&(Ef=xf+"Duration",Tf=xf+"Property",Cf=xf+"TimingFunction"),yf=function(t,e,n,r,i){setTimeout(function(){var a,o,s,u,c;u=function(){o&&s&&(t.root.fire(t.name+":end",t.node,t.isIntro),i())},a=(t.node.namespaceURI||"")+t.node.tagName,t.node.style[Tf]=r.map(mf).map(jf).join(","),t.node.style[Cf]=jf(n.easing||"linear"),t.node.style[Ef]=n.duration/1e3+"s",c=function(e){var n;n=r.indexOf(hf(Af(e.propertyName))),-1!==n&&r.splice(n,1),r.length||(t.node.removeEventListener(_f,c,!1),s=!0,u())},t.node.addEventListener(_f,c,!1),setTimeout(function(){for(var i,l,p,h,f,d=r.length,v=[];d--;)h=r[d],i=a+h,kf&&!Ff[i]&&(t.node.style[mf(h)]=e[h],Nf[i]||(l=t.getStyle(h),Nf[i]=t.getStyle(h)!=e[h],Ff[i]=!Nf[i],Ff[i]&&(t.node.style[mf(h)]=l))),(!kf||Ff[i])&&(void 0===l&&(l=t.getStyle(h)),p=r.indexOf(h),-1===p?m("Something very strange happened with transitions. Please raise an issue at https://github.com/ractivejs/ractive/issues - thanks!",{node:t.node}):r.splice(p,1),f=/[^\d]*$/.exec(e[h])[0],v.push({name:mf(h),interpolator:Io(parseFloat(l),parseFloat(e[h])),suffix:f}));v.length?new Sf({root:t.root,duration:n.duration,easing:hf(n.easing||""),step:function(e){var n,r;for(r=v.length;r--;)n=v[r],t.node.style[n.name]=n.interpolator(e)+n.suffix},complete:function(){o=!0,u()}}):o=!0,r.length||(t.node.removeEventListener(_f,c,!1),s=!0,u())},0)},n.delay||0)}):yf=null;var Mf,Rf,Lf,If,Df,Uf=yf;if("undefined"!=typeof document){if(Mf="hidden",Df={},Mf in document)Lf="";else for(If=io.length;If--;)Rf=io[If],Mf=Rf+"Hidden",Mf in document&&(Lf=Rf);void 0!==Lf?(document.addEventListener(Lf+"visibilitychange",Br),Br()):("onfocusout"in document?(document.addEventListener("focusout",qr),document.addEventListener("focusin",Hr)):(window.addEventListener("pagehide",qr),window.addEventListener("blur",qr),window.addEventListener("pageshow",Hr),window.addEventListener("focus",Hr)),Df.hidden=!1)}var Vf,Bf,qf,Hf=Df;Za?(Bf=window.getComputedStyle||ko.getComputedStyle,Vf=function(t,e,n){var r,i=this;if(4===arguments.length)throw Error("t.animateStyle() returns a promise - use .then() instead of passing a callback");if(Hf.hidden)return this.setStyle(t,e),qf||(qf=os.resolve());"string"==typeof t?(r={},r[t]=e):(r=t,n=e),n||(v('The "%s" transition does not supply an options object to `t.animateStyle()`. This will break in a future version of Ractive. For more info see https://github.com/RactiveJS/Ractive/issues/340',this.name),n=this);var a=new os(function(t){var e,a,o,s,u,c,l;if(!n.duration)return i.setStyle(r),void t();for(e=Object.keys(r),a=[],o=Bf(i.node),u={},c=e.length;c--;)l=e[c],s=o[mf(l)],"0px"===s&&(s=0),s!=r[l]&&(a.push(l),i.node.style[mf(l)]=s);return a.length?void Uf(i,r,n,a,t):void t()});return a}):Vf=null;var zf=Vf,Wf=function(t,e){return"number"==typeof t?t={duration:t}:"string"==typeof t?t="slow"===t?{duration:600}:"fast"===t?{duration:200}:{duration:400}:t||(t={}),i({},t,e)},$f=zr,Gf=function(t,e,n){this.init(t,e,n)};Gf.prototype={init:pf,start:$f,getStyle:vf,setStyle:gf,animateStyle:zf,processParams:Wf};var Kf,Qf,Yf=Gf,Jf=$r;Kf=function(){var t=this.node,e=this.fragment.toString(!1);if(window&&window.appearsToBeIELessEqual8&&(t.type="text/css"),t.styleSheet)t.styleSheet.cssText=e;else{for(;t.hasChildNodes();)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}},Qf=function(){this.node.type&&"text/javascript"!==this.node.type||m("Script tag was updated. This does not cause the code to be re-evaluated!",{ractive:this.root}),this.node.text=this.fragment.toString(!1)};var Zf=function(){var t,e;return this.template.y?"":(t="<"+this.template.e,t+=this.attributes.map(Zr).join("")+this.conditionalAttributes.map(Zr).join(""),"option"===this.name&&Yr(this)&&(t+=" selected"),"input"===this.name&&Jr(this)&&(t+=" checked"),t+=">","textarea"===this.name&&void 0!==this.getAttribute("value")?t+=Ee(this.getAttribute("value")):void 0!==this.getAttribute("contenteditable")&&(t+=this.getAttribute("value")||""),this.fragment&&(e="script"!==this.name&&"style"!==this.name,t+=this.fragment.toString(e)),nl.test(this.template.e)||(t+=""),t)},Xf=Xr,td=ti,ed=function(t){this.init(t)};ed.prototype={bubble:Sp,detach:Op,find:Ap,findAll:Pp,findAllComponents:jp,findComponent:Np,findNextNode:Fp,firstNode:Mp,getAttribute:Rp,init:cf,rebind:lf,render:Jf,toString:Zf,unbind:Xf,unrender:td};var nd=ed,rd=/^\s*$/,id=/^\s*/,ad=function(t){var e,n,r,i;return e=t.split("\n"),n=e[0],void 0!==n&&rd.test(n)&&e.shift(),r=R(e),void 0!==r&&rd.test(r)&&e.pop(),i=e.reduce(ni,null),i&&(t=e.map(function(t){return t.replace(i,"")}).join("\n")),t},od=ri,sd=function(t,e){var n;return e?n=t.split("\n").map(function(t,n){return n?e+t:t}).join("\n"):t},ud='Could not find template for partial "%s"',cd=function(t){var e,n;e=this.parentFragment=t.parentFragment,this.root=e.root,this.type=Tc,this.index=t.index,this.name=t.template.r,this.rendered=!1,this.fragment=this.fragmentToRender=this.fragmentToUnrender=null,Vl.init(this,t),this.keypath||((n=od(this.root,this.name,e))?(gl.call(this),this.isNamed=!0,this.setTemplate(n)):v(ud,this.name))};cd.prototype={bubble:function(){this.parentFragment.bubble()},detach:function(){return this.fragment.detach()},find:function(t){return this.fragment.find(t)},findAll:function(t,e){return this.fragment.findAll(t,e)},findComponent:function(t){return this.fragment.findComponent(t)},findAllComponents:function(t,e){return this.fragment.findAllComponents(t,e)},firstNode:function(){return this.fragment.firstNode()},findNextNode:function(){return this.parentFragment.findNextNode(this)},getPartialName:function(){return this.isNamed&&this.name?this.name:void 0===this.value?this.name:this.value},getValue:function(){ return this.fragment.getValue()},rebind:function(t,e){this.isNamed||Ul.call(this,t,e),this.fragment&&this.fragment.rebind(t,e)},render:function(){return this.docFrag=document.createDocumentFragment(),this.update(),this.rendered=!0,this.docFrag},resolve:Vl.resolve,setValue:function(t){var e;(void 0===t||t!==this.value)&&(void 0!==t&&(e=od(this.root,""+t,this.parentFragment)),!e&&this.name&&(e=od(this.root,this.name,this.parentFragment))&&(gl.call(this),this.isNamed=!0),e||v(ud,this.name,{ractive:this.root}),this.value=t,this.setTemplate(e||[]),this.bubble(),this.rendered&&ms.addView(this))},setTemplate:function(t){this.fragment&&(this.fragment.unbind(),this.rendered&&(this.fragmentToUnrender=this.fragment)),this.fragment=new ev({template:t,root:this.root,owner:this,pElement:this.parentFragment.pElement}),this.fragmentToRender=this.fragment},toString:function(t){var e,n,r,i;return e=this.fragment.toString(t),n=this.parentFragment.items[this.index-1],n&&n.type===wc?(r=n.text.split("\n").pop(),(i=/^\s+$/.exec(r))?sd(e,i[0]):e):e},unbind:function(){this.isNamed||gl.call(this),this.fragment&&this.fragment.unbind()},unrender:function(t){this.rendered&&(this.fragment&&this.fragment.unrender(t),this.rendered=!1)},update:function(){var t,e;this.fragmentToUnrender&&(this.fragmentToUnrender.unrender(!0),this.fragmentToUnrender=null),this.fragmentToRender&&(this.docFrag.appendChild(this.fragmentToRender.render()),this.fragmentToRender=null),this.rendered&&(t=this.parentFragment.getNode(),e=this.parentFragment.findNextNode(this),t.insertBefore(this.docFrag,e))}};var ld,pd,hd,fd=cd,dd=ui,md=ci,vd=new ns("detach"),gd=li,bd=pi,yd=hi,wd=fi,xd=di,_d=mi,kd=function(t,e,n,r){var i=t.root,a=t.keypath;r?i.viewmodel.smartUpdate(a,e,r):i.viewmodel.mark(a)},Ed=[],Td=["pop","push","reverse","shift","sort","splice","unshift"];Td.forEach(function(t){var e=function(){for(var e=arguments.length,n=Array(e),r=0;e>r;r++)n[r]=arguments[r];var i,a,o,s;for(i=mu(this,t,n),a=Array.prototype[t].apply(this,arguments),ms.start(),this._ractive.setting=!0,s=this._ractive.wrappers.length;s--;)o=this._ractive.wrappers[s],ms.addRactive(o.root),kd(o,this,t,i);return ms.end(),this._ractive.setting=!1,a};xo(Ed,t,{value:e})}),ld={},ld.__proto__?(pd=function(t){t.__proto__=Ed},hd=function(t){t.__proto__=Array.prototype}):(pd=function(t){var e,n;for(e=Td.length;e--;)n=Td[e],xo(t,n,{value:Ed[n],configurable:!0})},hd=function(t){var e;for(e=Td.length;e--;)delete t[Td[e]]}),pd.unpatch=hd;var Cd,Sd,Od,Ad=pd;Cd={filter:function(t){return a(t)&&(!t._ractive||!t._ractive.setting)},wrap:function(t,e,n){return new Sd(t,e,n)}},Sd=function(t,e,n){this.root=t,this.value=e,this.keypath=E(n),e._ractive||(xo(e,"_ractive",{value:{wrappers:[],instances:[],setting:!1},configurable:!0}),Ad(e)),e._ractive.instances[t._guid]||(e._ractive.instances[t._guid]=0,e._ractive.instances.push(t)),e._ractive.instances[t._guid]+=1,e._ractive.wrappers.push(this)},Sd.prototype={get:function(){return this.value},teardown:function(){var t,e,n,r,i;if(t=this.value,e=t._ractive,n=e.wrappers,r=e.instances,e.setting)return!1;if(i=n.indexOf(this),-1===i)throw Error(Od);if(n.splice(i,1),n.length){if(r[this.root._guid]-=1,!r[this.root._guid]){if(i=r.indexOf(this.root),-1===i)throw Error(Od);r.splice(i,1)}}else delete t._ractive,Ad.unpatch(this.value)}},Od="Something went wrong in a rather interesting way";var Pd,jd,Nd=Cd,Fd=/^\s*[0-9]+\s*$/,Md=function(t){return Fd.test(t)?[]:{}};try{Object.defineProperty({},"test",{value:0}),Pd={filter:function(t,e,n){var r,i;return e?(e=E(e),(r=n.viewmodel.wrapped[e.parent.str])&&!r.magic?!1:(i=n.viewmodel.get(e.parent),a(i)&&/^[0-9]+$/.test(e.lastKey)?!1:i&&("object"==typeof i||"function"==typeof i))):!1},wrap:function(t,e,n){return new jd(t,e,n)}},jd=function(t,e,n){var r,i,a;return n=E(n),this.magic=!0,this.ractive=t,this.keypath=n,this.value=e,this.prop=n.lastKey,r=n.parent,this.obj=r.isRoot?t.viewmodel.data:t.viewmodel.get(r),i=this.originalDescriptor=Object.getOwnPropertyDescriptor(this.obj,this.prop),i&&i.set&&(a=i.set._ractiveWrappers)?void(-1===a.indexOf(this)&&a.push(this)):void vi(this,e,i)},jd.prototype={get:function(){return this.value},reset:function(t){return this.updating?void 0:(this.updating=!0,this.obj[this.prop]=t,ms.addRactive(this.ractive),this.ractive.viewmodel.mark(this.keypath,{keepExistingWrapper:!0}),this.updating=!1,!0)},set:function(t,e){this.updating||(this.obj[this.prop]||(this.updating=!0,this.obj[this.prop]=Md(t),this.updating=!1),this.obj[this.prop][t]=e)},teardown:function(){var t,e,n,r,i;return this.updating?!1:(t=Object.getOwnPropertyDescriptor(this.obj,this.prop),e=t&&t.set,void(e&&(r=e._ractiveWrappers,i=r.indexOf(this),-1!==i&&r.splice(i,1),r.length||(n=this.obj[this.prop],Object.defineProperty(this.obj,this.prop,this.originalDescriptor||{writable:!0,enumerable:!0,configurable:!0}),this.obj[this.prop]=n))))}}}catch(Eo){Pd=!1}var Rd,Ld,Id=Pd;Id&&(Rd={filter:function(t,e,n){return Id.filter(t,e,n)&&Nd.filter(t)},wrap:function(t,e,n){return new Ld(t,e,n)}},Ld=function(t,e,n){this.value=e,this.magic=!0,this.magicWrapper=Id.wrap(t,e,n),this.arrayWrapper=Nd.wrap(t,e,n)},Ld.prototype={get:function(){return this.value},teardown:function(){this.arrayWrapper.teardown(),this.magicWrapper.teardown()},reset:function(t){return this.magicWrapper.reset(t)}});var Dd=Rd,Ud=gi,Vd={},Bd=wi,qd=xi,Hd=Ei,zd=Ai,Wd=Pi,$d=function(t,e){this.computation=t,this.viewmodel=t.viewmodel,this.ref=e,this.root=this.viewmodel.ractive,this.parentFragment=this.root.component&&this.root.component.parentFragment};$d.prototype={resolve:function(t){this.computation.softDeps.push(t),this.computation.unresolvedDeps[t.str]=null,this.viewmodel.register(t,this.computation,"computed")}};var Gd=$d,Kd=function(t,e){this.key=t,this.getter=e.getter,this.setter=e.setter,this.hardDeps=e.deps||[],this.softDeps=[],this.unresolvedDeps={},this.depValues={},this._dirty=this._firstRun=!0};Kd.prototype={constructor:Kd,init:function(t){var e,n=this;this.viewmodel=t,this.bypass=!0,e=t.get(this.key),t.clearCache(this.key.str),this.bypass=!1,this.setter&&void 0!==e&&this.set(e),this.hardDeps&&this.hardDeps.forEach(function(e){return t.register(e,n,"computed")})},invalidate:function(){this._dirty=!0},get:function(){var t,e,n=this,r=!1;if(this.getting){var i="The "+this.key.str+" computation indirectly called itself. This probably indicates a bug in the computation. It is commonly caused by `array.sort(...)` - if that's the case, clone the array first with `array.slice().sort(...)`";return d(i),this.value}if(this.getting=!0,this._dirty){if(this._firstRun||!this.hardDeps.length&&!this.softDeps.length?r=!0:[this.hardDeps,this.softDeps].forEach(function(t){var e,i,a;if(!r)for(a=t.length;a--;)if(e=t[a],i=n.viewmodel.get(e),!s(i,n.depValues[e.str]))return n.depValues[e.str]=i,void(r=!0)}),r){this.viewmodel.capture();try{this.value=this.getter()}catch(a){m('Failed to compute "%s"',this.key.str),h(a.stack||a),this.value=void 0}t=this.viewmodel.release(),e=this.updateDependencies(t),e&&[this.hardDeps,this.softDeps].forEach(function(t){t.forEach(function(t){n.depValues[t.str]=n.viewmodel.get(t)})})}this._dirty=!1}return this.getting=this._firstRun=!1,this.value},set:function(t){if(this.setting)return void(this.value=t);if(!this.setter)throw Error("Computed properties without setters are read-only. (This may change in a future version of Ractive!)");this.setter(t)},updateDependencies:function(t){var e,n,r,i,a;for(n=this.softDeps,e=n.length;e--;)r=n[e],-1===t.indexOf(r)&&(i=!0,this.viewmodel.unregister(r,this,"computed"));for(e=t.length;e--;)r=t[e],-1!==n.indexOf(r)||this.hardDeps&&-1!==this.hardDeps.indexOf(r)||(i=!0,ji(this.viewmodel,r)&&!this.unresolvedDeps[r.str]?(a=new Gd(this,r.str),t.splice(e,1),this.unresolvedDeps[r.str]=a,ms.addUnresolved(a)):this.viewmodel.register(r,this,"computed"));return i&&(this.softDeps=t.slice()),i}};var Qd=Kd,Yd=Ni,Jd={FAILED_LOOKUP:!0},Zd=Fi,Xd={},tm=Ri,em=Li,nm=function(t,e){this.localKey=t,this.keypath=e.keypath,this.origin=e.origin,this.deps=[],this.unresolved=[],this.resolved=!1};nm.prototype={forceResolution:function(){this.keypath=this.localKey,this.setup()},get:function(t,e){return this.resolved?this.origin.get(this.map(t),e):void 0},getValue:function(){return this.keypath?this.origin.get(this.keypath):void 0},initViewmodel:function(t){this.local=t,this.setup()},map:function(t){return void 0===typeof this.keypath?this.localKey:t.replace(this.localKey,this.keypath)},register:function(t,e,n){this.deps.push({keypath:t,dep:e,group:n}),this.resolved&&this.origin.register(this.map(t),e,n)},resolve:function(t){void 0!==this.keypath&&this.unbind(!0),this.keypath=t,this.setup()},set:function(t,e){this.resolved||this.forceResolution(),this.origin.set(this.map(t),e)},setup:function(){var t=this;void 0!==this.keypath&&(this.resolved=!0,this.deps.length&&(this.deps.forEach(function(e){var n=t.map(e.keypath);if(t.origin.register(n,e.dep,e.group),e.dep.setValue)e.dep.setValue(t.origin.get(n));else{if(!e.dep.invalidate)throw Error("An unexpected error occurred. Please raise an issue at https://github.com/ractivejs/ractive/issues - thanks!");e.dep.invalidate()}}),this.origin.mark(this.keypath)))},setValue:function(t){if(!this.keypath)throw Error("Mapping does not have keypath, cannot set value. Please raise an issue at https://github.com/ractivejs/ractive/issues - thanks!");this.origin.set(this.keypath,t)},unbind:function(t){var e=this;t||delete this.local.mappings[this.localKey],this.resolved&&(this.deps.forEach(function(t){e.origin.unregister(e.map(t.keypath),t.dep,t.group)}),this.tracker&&this.origin.unregister(this.keypath,this.tracker))},unregister:function(t,e,n){var r,i;if(this.resolved){for(r=this.deps,i=r.length;i--;)if(r[i].dep===e){r.splice(i,1);break}this.origin.unregister(this.map(t),e,n)}}};var rm=Ii,im=function(t,e){var n,r,i,a;return n={},r=0,i=t.map(function(t,i){var o,s,u;s=r,u=e.length;do{if(o=e.indexOf(t,s),-1===o)return a=!0,-1;s=o+1}while(n[o]&&u>s);return o===r&&(r+=1),o!==i&&(a=!0),n[o]=!0,o})},am=Di,om={},sm=Bi,um=Hi,cm=zi,lm=Wi,pm=Gi,hm={implicit:!0},fm={noCascade:!0},dm=Qi,mm=Yi,vm=function(t){var e,n,r=t.adapt,i=t.data,a=t.ractive,o=t.computed,s=t.mappings;this.ractive=a,this.adaptors=r,this.onchange=t.onchange,this.cache={},this.cacheMap=wo(null),this.deps={computed:wo(null),"default":wo(null)},this.depsMap={computed:wo(null),"default":wo(null)},this.patternObservers=[],this.specials=wo(null),this.wrapped=wo(null),this.computations=wo(null),this.captureGroups=[],this.unresolvedImplicitDependencies=[],this.changes=[],this.implicitChanges={},this.noCascade={},this.data=i,this.mappings=wo(null);for(e in s)this.map(E(e),s[e]);if(i)for(e in i)(n=this.mappings[e])&&void 0===n.getValue()&&n.setValue(i[e]);for(e in o)s&&e in s&&p("Cannot map to a computed property ('%s')",e),this.compute(E(e),o[e]);this.ready=!0};vm.prototype={adapt:Ud,applyChanges:Hd,capture:zd,clearCache:Wd,compute:Yd,get:Zd,init:tm,map:em,mark:rm,merge:am,register:sm,release:um,reset:cm,set:lm,smartUpdate:pm,teardown:dm,unregister:mm};var gm=vm;Zi.prototype={constructor:Zi,begin:function(t){this.inProcess[t._guid]=!0},end:function(t){var e=t.parent;e&&this.inProcess[e._guid]?Xi(this.queue,e).push(t):ta(this,t),delete this.inProcess[t._guid]}};var bm=Zi,ym=ea,wm=/\$\{([^\}]+)\}/g,xm=new ns("construct"),_m=new ns("config"),km=new bm("init"),Em=0,Tm=["adaptors","components","decorators","easing","events","interpolators","partials","transitions"],Cm=aa,Sm=la;la.prototype={bubble:function(){this.dirty||(this.dirty=!0,ms.addView(this))},update:function(){this.callback(this.fragment.getValue()),this.dirty=!1},rebind:function(t,e){this.fragment.rebind(t,e)},unbind:function(){this.fragment.unbind()}};var Om=function(t,e,n,i,o){var s,u,c,l,p,h,f={},d={},v={},g=[];for(u=t.parentFragment,c=t.root,o=o||{},r(f,o),o.content=i||[],f[""]=o.content,e.defaults.el&&m("The <%s/> component has a default `el` property; it has been disregarded",t.name),l=u;l;){if(l.owner.type===Ac){p=l.owner.container;break}l=l.parent}return n&&Object.keys(n).forEach(function(e){var r,i,o=n[e];if("string"==typeof o)r=cl(o),d[e]=r?r.value:o;else if(0===o)d[e]=!0;else{if(!a(o))throw Error("erm wut");ha(o)?(v[e]={origin:t.root.viewmodel,keypath:void 0},i=pa(t,o[0],function(t){t.isSpecial?h?s.set(e,t.value):(d[e]=t.value,delete v[e]):h?s.viewmodel.mappings[e].resolve(t):v[e].keypath=t})):i=new Sm(t,o,function(t){h?s.set(e,t):d[e]=t}),g.push(i)}}),s=wo(e.prototype),Cm(s,{el:null,append:!0,data:d,partials:o,magic:c.magic||e.defaults.magic,modifyArrays:c.modifyArrays,adapt:c.adapt},{parent:c,component:t,container:p,mappings:v,inlinePartials:f,cssIds:u.cssIds}),h=!0,t.resolvers=g,s},Am=fa,Pm=function(t){var e,n;for(e=t.root;e;)(n=e._liveComponentQueries["_"+t.name])&&n.push(t.instance),e=e.parent},jm=ma,Nm=va,Fm=ga,Mm=ba,Rm=ya,Lm=new ns("teardown"),Im=xa,Dm=function(t,e){this.init(t,e)};Dm.prototype={detach:md,find:gd,findAll:bd,findAllComponents:yd,findComponent:wd,findNextNode:xd,firstNode:_d,init:jm,rebind:Nm,render:Fm,toString:Mm,unbind:Rm,unrender:Im};var Um=Dm,Vm=function(t){this.type=Cc,this.value=t.template.c};Vm.prototype={detach:dl,firstNode:function(){return this.node},render:function(){return this.node||(this.node=document.createComment(this.value)),this.node},toString:function(){return""},unrender:function(t){t&&this.node.parentNode.removeChild(this.node)}};var Bm=Vm,qm=function(t){var e,n;this.type=Ac,this.container=e=t.parentFragment.root,this.component=n=e.component,this.container=e,this.containerFragment=t.parentFragment,this.parentFragment=n.parentFragment;var r=this.name=t.template.n||"",i=e._inlinePartials[r];i||(m('Could not find template for partial "'+r+'"',{ractive:t.root}),i=[]),this.fragment=new ev({owner:this,root:e.parent,template:i,pElement:this.containerFragment.pElement}),a(n.yielders[r])?n.yielders[r].push(this):n.yielders[r]=[this],ms.scheduleTask(function(){if(n.yielders[r].length>1)throw Error("A component template can only have one {{yield"+(r?" "+r:"")+"}} declaration at a time")})};qm.prototype={detach:function(){return this.fragment.detach()},find:function(t){return this.fragment.find(t)},findAll:function(t,e){return this.fragment.findAll(t,e)},findComponent:function(t){return this.fragment.findComponent(t)},findAllComponents:function(t,e){return this.fragment.findAllComponents(t,e)},findNextNode:function(){return this.containerFragment.findNextNode(this)},firstNode:function(){return this.fragment.firstNode()},getValue:function(t){return this.fragment.getValue(t)},render:function(){return this.fragment.render()},unbind:function(){this.fragment.unbind()},unrender:function(t){this.fragment.unrender(t),L(this.component.yielders[this.name],this)},rebind:function(t,e){this.fragment.rebind(t,e)},toString:function(){return""+this.fragment}};var Hm=qm,zm=function(t){this.declaration=t.template.a};zm.prototype={init:jo,render:jo,unrender:jo,teardown:jo,toString:function(){return""}};var Wm=zm,$m=_a,Gm=Ea,Km=Ta,Qm=Ca,Ym=Aa,Jm=ja,Zm=function(t){this.init(t)};Zm.prototype={bubble:sc,detach:uc,find:cc,findAll:lc,findAllComponents:pc,findComponent:hc,findNextNode:fc,firstNode:dc,getArgsList:pl,getNode:hl,getValue:fl,init:$m,rebind:Gm,registerIndexRef:function(t){var e=this.registeredIndexRefs;-1===e.indexOf(t)&&e.push(t)},render:Km,toString:Qm,unbind:Ym,unregisterIndexRef:function(t){var e=this.registeredIndexRefs;e.splice(e.indexOf(t),1)},unrender:Jm};var Xm,tv,ev=Zm,nv=Na,rv=["template","partials","components","decorators","events"],iv=new ns("reset"),av=function(t,e){function n(e,r,i){i&&i.partials[t]||e.forEach(function(e){e.type===Tc&&e.getPartialName()===t&&r.push(e),e.fragment&&n(e.fragment.items,r,i),a(e.fragments)?n(e.fragments,r,i):a(e.items)?n(e.items,r,i):e.type===Oc&&e.instance&&n(e.instance.fragment.items,r,e.instance),e.type===Ec&&(a(e.attributes)&&n(e.attributes,r,i),a(e.conditionalAttributes)&&n(e.conditionalAttributes,r,i))})}var r,i=[];return n(this.fragment.items,i),this.partials[t]=e,r=ms.start(this,!0),i.forEach(function(e){e.value=void 0,e.setValue(t)}),ms.end(),r},ov=Fa,sv=gu("reverse"),uv=Ma,cv=gu("shift"),lv=gu("sort"),pv=gu("splice"),hv=La,fv=Ia,dv=new ns("teardown"),mv=Ua,vv=Va,gv=Ba,bv=new ns("unrender"),yv=gu("unshift"),wv=qa,xv=new ns("update"),_v=Ha,kv={add:Yo,animate:xs,detach:ks,find:Ts,findAll:Ms,findAllComponents:Rs,findComponent:Ls,findContainer:Is,findParent:Ds,fire:qs,get:Hs,insert:Ws,merge:Gs,observe:uu,observeOnce:cu,off:hu,on:fu,once:du,pop:bu,push:yu,render:Su,reset:nv,resetPartial:av,resetTemplate:ov,reverse:sv,set:uv,shift:cv,sort:lv,splice:pv,subtract:hv,teardown:fv,toggle:mv,toHTML:vv,toHtml:vv,unrender:gv,unshift:yv,update:wv,updateModel:_v},Ev=function(t,e,n){return n||Wa(t,e)?function(){var n,r="_super"in this,i=this._super;return this._super=e,n=t.apply(this,arguments),r&&(this._super=i),n}:t},Tv=$a,Cv=Ya,Sv=function(t){var e,n,r={};return t&&(e=t._ractive)?(r.ractive=e.root,r.keypath=e.keypath.str,r.index={},(n=Cl(e.proxy.parentFragment))&&(r.index=Cl.resolve(n)),r):r};Xm=function(t){return this instanceof Xm?void Cm(this,t):new Xm(t)},tv={DEBUG:{writable:!0,value:!0},DEBUG_PROMISES:{writable:!0,value:!0},extend:{value:Cv},getNodeInfo:{value:Sv},parse:{value:Hu},Promise:{value:os},svg:{value:ro},magic:{value:eo},VERSION:{value:"0.7.3"},adaptors:{writable:!0,value:{}},components:{writable:!0,value:{}},decorators:{writable:!0,value:{}},easing:{writable:!0,value:uo},events:{writable:!0,value:{}},interpolators:{writable:!0,value:Uo},partials:{writable:!0,value:{}},transitions:{writable:!0,value:{}}},_o(Xm,tv),Xm.prototype=r(kv,so),Xm.prototype.constructor=Xm,Xm.defaults=Xm.prototype;var Ov="function";if(typeof Date.now!==Ov||typeof String.prototype.trim!==Ov||typeof Object.keys!==Ov||typeof Array.prototype.indexOf!==Ov||typeof Array.prototype.forEach!==Ov||typeof Array.prototype.map!==Ov||typeof Array.prototype.filter!==Ov||"undefined"!=typeof window&&typeof window.addEventListener!==Ov)throw Error("It looks like you're attempting to use Ractive.js in an older browser. You'll need to use one of the 'legacy builds' in order to continue - see http://docs.ractivejs.org/latest/legacy-builds for more information.");var Av=Xm;return Av})},{}],8:[function(t,e,n){!function(){function t(t,e,n){return t.call.apply(t.bind,arguments)}function n(t,e,n){if(!t)throw Error();if(2r;r++)if(n[r]==e)return!0;return!1}function u(t){if("string"==typeof t.fa)return t.fa;var e=t.k.location.protocol;return"about:"==e&&(e=t.F.location.protocol),"https:"==e?"https:":"http:"}function c(t,e,n){function r(){u&&i&&o&&(u(s),u=null)}e=t.createElement("link",{rel:"stylesheet",href:e,media:"all"});var i=!1,o=!0,s=null,u=n||null;Z?(e.onload=function(){i=!0,r()},e.onerror=function(){i=!0,s=Error("Stylesheet failed to load"),r()}):setTimeout(function(){i=!0,r()},0),a(t,"head",e)}function l(t,e,n,r){var i=t.H.getElementsByTagName("head")[0];if(i){var a=t.createElement("script",{src:e}),o=!1;return a.onload=a.onreadystatechange=function(){o||this.readyState&&"loaded"!=this.readyState&&"complete"!=this.readyState||(o=!0,n&&n(null),a.onload=a.onreadystatechange=null,"HEAD"==a.parentNode.tagName&&i.removeChild(a))},i.appendChild(a),setTimeout(function(){o||(o=!0,n&&n(Error("Script load timeout")))},r||5e3),a}return null}function p(){this.S=0,this.K=null}function h(t){return t.S++,function(){t.S--,d(t)}}function f(t,e){t.K=e,d(t)}function d(t){0==t.S&&t.K&&(t.K(),t.K=null)}function m(t){this.ea=t||"-"}function v(t,e){this.Q=t,this.M=4,this.L="n";var n=(e||"n4").match(/^([nio])([1-9])$/i);n&&(this.L=n[1],this.M=parseInt(n[2],10))}function g(t){return w(t)+" "+(t.M+"00")+" 300px "+b(t.Q)}function b(t){var e=[];t=t.split(/,\s*/);for(var n=0;nparseInt(t[1],10)||536===parseInt(t[1],10)&&11>=parseInt(t[2],10))}return tt}function M(t,e,n){for(var r in X)if(X.hasOwnProperty(r)&&e===t.s[X[r]]&&n===t.s[X[r]])return!0;return!1}function R(t){var e,n=t.w.m.offsetWidth,r=t.A.m.offsetWidth;(e=n===t.s.serif&&r===t.s["sans-serif"])||(e=F()&&M(t,n,r)),e?J()-t.ga>=t.v?F()&&M(t,n,r)&&(null===t.Z||t.Z.hasOwnProperty(t.g.getName()))?I(t,t.G):I(t,t.J):L(t):I(t,t.G)}function L(t){setTimeout(r(function(){R(this)},t),50)}function I(t,e){setTimeout(r(function(){this.w.remove(),this.A.remove(),this.C.remove(),this.D.remove(),e(this.g)},t),0)}function D(t,e,n){this.a=t,this.p=e,this.P=0,this.ba=this.Y=!1,this.v=n}function U(t){0==--t.P&&t.Y&&(t.ba?(t=t.p,t.u&&o(t.j,[t.e.d(t.f,"active")],[t.e.d(t.f,"loading"),t.e.d(t.f,"inactive")]),T(t,"active")):E(t.p))}function V(t){this.F=t,this.q=new C,this.$=0,this.T=this.U=!0}function B(t,e,n,i,a){var s=0==--t.$;(t.T||t.U)&&setTimeout(function(){var t=a||null,u=i||null||{};if(0===n.length&&s)E(e.p);else{e.P+=n.length,s&&(e.Y=s);var c,l=[];for(c=0;ce;e++)r[e].load(function(e,n,r){B(t,a,e,n,r)})}function H(t,e,n){this.N=t?t:e+nt,this.o=[],this.R=[],this.ca=n||""}function z(t,e){for(var n=e.length,r=0;n>r;r++){var i=e[r].split(":");3==i.length&&t.R.push(i.pop());var a="";2==i.length&&""!=i[1]&&(a=":"),t.o.push(i.join(a))}}function W(t){this.o=t,this.aa=[],this.I={}}function $(t,e){this.a=t,this.c=e}function G(t,e){this.a=t,this.c=e,this.X=[]}function K(t,e){this.a=t,this.c=e}function Q(t,e){this.a=t,this.c=e}function Y(t,e){this.a=t,this.c=e}var J=Date.now||function(){return+new Date},Z=!!window.FontFace;i.prototype.createElement=function(t,e,n){if(t=this.H.createElement(t),e)for(var r in e)e.hasOwnProperty(r)&&("style"==r?t.style.cssText=e[r]:t.setAttribute(r,e[r]));return n&&t.appendChild(this.H.createTextNode(n)),t},m.prototype.d=function(t){for(var e=[],n=0;n=n.v?n.J(n.g):e.fonts.load(g(n.g),n.h).then(function(e){1<=e.length?n.G(n.g):setTimeout(t,25)},function(){n.J(n.g)})}var e=this.a.k.document,n=this,r=J();t()};var X={ia:"serif",ha:"sans-serif"},tt=null;N.prototype.start=function(){this.s.serif=this.C.m.offsetWidth,this.s["sans-serif"]=this.D.m.offsetWidth,this.ga=J(),R(this)};var et=null;D.prototype.V=function(t){var e=this.p;e.u&&o(e.j,[e.e.d(e.f,t.getName(),""+y(t),"active")],[e.e.d(e.f,t.getName(),""+y(t),"loading"),e.e.d(e.f,t.getName(),""+y(t),"inactive")]),T(e,"fontactive",t),this.ba=!0,U(this)},D.prototype.W=function(t){var e=this.p;if(e.u){var n=s(e.j,e.e.d(e.f,t.getName(),""+y(t),"active")),r=[],i=[e.e.d(e.f,t.getName(),""+y(t),"loading")];n||r.push(e.e.d(e.f,t.getName(),""+y(t),"inactive")),o(e.j,r,i)}T(e,"fontinactive",t),U(this)},V.prototype.load=function(t){this.a=new i(this.F,t.context||this.F),this.U=!1!==t.events,this.T=!1!==t.classes,q(this,new _(this.a,t),t)};var nt="//fonts.googleapis.com/css";H.prototype.d=function(){if(0==this.o.length)throw Error("No fonts to load!");if(-1!=this.N.indexOf("kit="))return this.N;for(var t=this.o.length,e=[],n=0;t>n;n++)e.push(this.o[n].replace(/ /g,"+"));return t=this.N+"?family="+e.join("%7C"),0e;e++){var n=this.o[e].split(":"),r=n[0].replace(/\+/g," "),i=["n4"];if(2<=n.length){var a,o=n[1];if(a=[],o)for(var o=o.split(","),s=o.length,u=0;s>u;u++){var c;if(c=o[u],c.match(/^[\w-]+$/))if(c=ot.exec(c.toLowerCase()),null==c)c="";else{var l;if(l=c[1],null==l||""==l)l="4";else{var p=it[l];l=p?p:isNaN(l)?"4":l.substr(0,1)}c=c[2],c=""+(null==c||""==c?"n":at[c])+l}else c="";c&&a.push(c)}0i;++i){var o=n.fonts[i];r.X.push(new v(o.name,x("font-weight:"+o.weight+";font-style:"+o.style)))}t(r.X)},l(this.a,this.B(e),function(e){e&&t([])})):t([])},K.prototype.B=function(t){return(this.c.api||"https://use.typekit.net")+"/"+t+".js"},K.prototype.load=function(t){var e=this.c.id,n=this.a.k;e?l(this.a,this.B(e),function(e){if(e)t([]);else if(n.Typekit&&n.Typekit.config&&n.Typekit.config.fn){e=n.Typekit.config.fn;for(var r=[],i=0;ie;e++)c(this.a,r[e],h(o));var s=[];for(e=0,n=i.length;n>e;e++)if(r=i[e].split(":"),r[1])for(var u=r[1].split(","),l=0;lt&&(t=0),0>e&&(e=0),t+window.innerWidth>screen.availWidth&&(t=screen.availWidth-window.innerWidth),e+window.innerHeight>screen.availHeight&&(e=screen.availHeight-window.innerHeight),{x:t,y:e}},t.get("x")&&(a=e.screenX-t.get("x")+window.screenLeft,o=e.screenY-t.get("y")+window.screenTop,t.get("config.locked")&&(i=n(a,o),a=i.x,o=i.y),r.winset(t.get("config.window"),"pos",a+","+o)),t.set({x:e.screenX,y:e.screenY})},resize:function(t,e){var n,i,a,o;return i=function(t,e){return t=Math.clamp(t,100,screen.width),e=Math.clamp(e,100,screen.height),{x:t,y:e}},t.get("x")&&(a=e.screenX-t.get("x")+window.innerWidth,o=e.screenY-t.get("y")+window.innerHeight,n=i(a,o),a=n.x,o=n.y,r.winset(t.get("config.window"),"size",a+","+o)),t.set({x:e.screenX,y:e.screenY})}}},{"./byond":9}],20:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[" "," "," "," "," "," ",{p:[8,1,327],t:7,e:"ui-notice",f:[{t:4,f:[{p:[10,5,372],t:7,e:"ui-section",a:{label:"Interface Lock"},f:[{p:[11,7,415],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.locked"],s:'_0?"lock":"unlock"'},p:[11,24,432]}],action:"lock"},f:[{t:2,x:{r:["data.locked"],s:'_0?"Engaged":"Disengaged"'},p:[11,75,483]}]}]}],n:50,r:"data.siliconUser",p:[9,3,342]},{t:4,n:51,f:[{p:[14,5,574],t:7,e:"span",f:["Swipe an ID card to ",{t:2,x:{r:["data.locked"],s:'_0?"unlock":"lock"'},p:[14,31,600]}," this interface."]}],r:"data.siliconUser"}]}," ",{p:[17,1,685],t:7,e:"status"}," ",{t:4,f:[{t:4,f:[{p:[20,5,770],t:7,e:"controls"}],n:50,x:{r:["data.screen"],s:"_0==1"},p:[19,3,740]},{t:4,n:51,f:[{t:4,n:50,x:{r:["data.screen"],s:"_0==2"},f:[{p:[22,5,817],t:7,e:"vents"}]},{t:4,n:50,x:{r:["data.screen"],s:"(!(_0==2))&&(_0==3)"},f:[" ",{p:[24,5,862],t:7,e:"scrubbers"}]},{t:4,n:50,x:{r:["data.screen"],s:"(!(_0==2))&&((!(_0==3))&&(_0==4))"},f:[" ",{p:[26,5,911],t:7,e:"modes"}]},{t:4,n:50,x:{r:["data.screen"],s:"(!(_0==2))&&((!(_0==3))&&((!(_0==4))&&(_0==5)))"},f:[" ",{p:[28,5,956],t:7,e:"thresholds"}]}],x:{r:["data.screen"],s:"_0==1"}}],n:50,x:{r:["data.locked","data.siliconUser"],s:"!_0||_1"},p:[18,1,696]}]},i.exports.components=i.exports.components||{};var a={vents:t("./air_alarm/vents.ract"),modes:t("./air_alarm/modes.ract"),thresholds:t("./air_alarm/thresholds.ract"),status:t("./air_alarm/status.ract"),scrubbers:t("./air_alarm/scrubbers.ract"),controls:t("./air_alarm/controls.ract")};for(var o in a)a.hasOwnProperty(o)&&(i.exports.components[o]=a[o]);e.exports=r.extend(i.exports)},{"./air_alarm/controls.ract":22,"./air_alarm/modes.ract":23,"./air_alarm/scrubbers.ract":24,"./air_alarm/status.ract":25,"./air_alarm/thresholds.ract":26,"./air_alarm/vents.ract":27,"ractive/ractive.runtime":7}],21:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-button",a:{icon:"arrow-left",action:"screen",params:'{"screen": 1}'},f:["Back"]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],22:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Air Controls"},f:[{p:[2,3,37],t:7,e:"ui-section",f:[{p:[3,5,55],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.atmos_alarm"],s:'_0?"exclamation-triangle":"exclamation"'},p:[3,22,72]}],style:[{t:2,x:{r:["data.atmos_alarm"],s:'_0?"caution":null'},p:[3,92,142]}],action:[{t:2,x:{r:["data.atmos_alarm"],s:'_0?"reset":"alarm"'},p:[4,17,200]}]},f:["Area Atmosphere Alarm"]}]}," ",{p:[6,3,296],t:7,e:"ui-section",f:[{p:[7,5,314],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.mode"],s:'_0==3?"exclamation-triangle":"exclamation"'},p:[7,22,331]}],style:[{t:2,x:{r:["data.mode"],s:'_0==3?"danger":null'},p:[7,90,399]}],action:"mode",params:['{"mode": ',{t:2,x:{r:["data.mode"],s:"_0==3?1:3"},p:[8,38,475]},"}"]},f:["Panic Siphon"]}]}," ",{p:[10,3,549],t:7,e:"br"}," ",{p:[11,3,558],t:7,e:"ui-section",f:[{p:[12,5,576],t:7,e:"ui-button",a:{icon:"sign-out",action:"screen",params:'{"screen": 2}'},f:["Vent Controls"]}]}," ",{p:[14,3,688],t:7,e:"ui-section",f:[{p:[15,5,706],t:7,e:"ui-button",a:{icon:"filter",action:"screen",params:'{"screen": 3}'},f:["Scrubber Controls"]}]}," ",{p:[17,3,820],t:7,e:"ui-section",f:[{p:[18,5,838],t:7,e:"ui-button",a:{icon:"cog",action:"screen",params:'{"screen": 4}'},f:["Operating Mode"]}]}," ",{p:[20,3,946],t:7,e:"ui-section",f:[{p:[21,5,964],t:7,e:"ui-button",a:{icon:"bar-chart",action:"screen",params:'{"screen": 5}'},f:["Alarm Thresholds"]}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],23:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[" ",{p:{button:[{p:[5,5,115],t:7,e:"back"}]},t:7,e:"ui-display",a:{title:"Operating Modes",button:0},f:[" ",{t:4,f:[{p:[8,5,168],t:7,e:"ui-section",f:[{p:[9,7,188],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["selected"],s:'_0?"check-square-o":"square-o"'},p:[9,24,205]}],state:[{t:2,x:{r:["selected","danger"],s:'_0?_1?"danger":"selected":null'},p:[10,16,267]}],action:"mode",params:['{"mode": ',{t:2,r:"mode",p:[11,40,361]},"}"]},f:[{t:2,r:"name",p:[11,51,372]}]}]}],n:52,r:"data.modes",p:[7,3,142]}]}]},i.exports.components=i.exports.components||{};var a={back:t("./back.ract")};for(var o in a)a.hasOwnProperty(o)&&(i.exports.components[o]=a[o]);e.exports=r.extend(i.exports)},{"./back.ract":21,"ractive/ractive.runtime":7}],24:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[" ",{p:{button:[{p:[5,5,117],t:7,e:"back"}]},t:7,e:"ui-display",a:{title:"Scrubber Controls",button:0},f:[" ",{t:4,f:[{p:[8,5,174],t:7,e:"ui-subdisplay",a:{title:[{t:2,r:"long_name",p:[8,27,196]}]},f:[{p:[9,7,219],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[10,9,255],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["power"],s:'_0?"power-off":"close"'},p:[10,26,272]}],style:[{t:2,x:{r:["power"],s:'_0?"selected":null'},p:[10,68,314]}],action:"power",params:['{"id_tag": "',{t:2,r:"id_tag",p:[11,46,391]},'", "val": ',{t:2,x:{r:["power"],s:"+!_0"},p:[11,66,411]},"}"]},f:[{t:2,x:{r:["power"],s:'_0?"On":"Off"'},p:[11,80,425]}]}]}," ",{p:[13,7,490],t:7,e:"ui-section",a:{label:"Mode"},f:[{p:[14,9,525],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["scrubbing"],s:'_0?"filter":"sign-in"'},p:[14,26,542]}],style:[{t:2,x:{r:["scrubbing"],s:'_0?null:"danger"'},p:[14,71,587]}],action:"scrubbing",params:['{"id_tag": "',{t:2,r:"id_tag",p:[15,50,670]},'", "val": ',{t:2,x:{r:["scrubbing"],s:"+!_0"},p:[15,70,690]},"}"]},f:[{t:2,x:{r:["scrubbing"],s:'_0?"Scrubbing":"Siphoning"'},p:[15,88,708]}]}]}," ",{p:[17,7,790],t:7,e:"ui-section",a:{label:"Range"},f:[{p:[18,9,826],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["widenet"],s:'_0?"expand":"compress"'},p:[18,26,843]}],style:[{t:2,x:{r:["widenet"],s:'_0?"selected":null'},p:[18,70,887]}],action:"widenet",params:['{"id_tag": "',{t:2,r:"id_tag",p:[19,48,968]},'", "val": ',{t:2,x:{r:["widenet"],s:"+!_0"},p:[19,68,988]},"}"]},f:[{t:2,x:{r:["widenet"],s:'_0?"Expanded":"Normal"'},p:[19,84,1004]}]}]}," ",{p:[21,7,1080],t:7,e:"ui-section",a:{label:"Filters"},f:[{p:[22,9,1118],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["filter_co2"],s:'_0?"check-square-o":"square-o"'},p:[22,26,1135]}],style:[{t:2,x:{r:["filter_co2"],s:'_0?"selected":null'},p:[22,81,1190]}],action:"co2_scrub",params:['{"id_tag": "',{t:2,r:"id_tag",p:[23,50,1276]},'", "val": ',{t:2,x:{r:["filter_co2"],s:"+!_0"},p:[23,70,1296]},"}"]},f:["Oxygen"]}," ",{p:[24,9,1343],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["filter_n2o"],s:'_0?"check-square-o":"square-o"'},p:[24,26,1360]}],style:[{t:2,x:{r:["filter_n2o"],s:'_0?"selected":null'},p:[24,81,1415]}],action:"n2o_scrub",params:['{"id_tag": "',{t:2,r:"id_tag",p:[25,50,1501]},'", "val": ',{t:2,x:{r:["filter_n2o"],s:"+!_0"},p:[25,70,1521]},"}"]},f:["Nitrogen"]}," ",{p:[26,9,1570],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["filter_toxins"],s:'_0?"check-square-o":"square-o"'},p:[26,26,1587]}],style:[{t:2,x:{r:["filter_toxins"],s:'_0?"selected":null'},p:[26,84,1645]}],action:"tox_scrub",params:['{"id_tag": "',{t:2,r:"id_tag",p:[27,50,1734]},'", "val": ',{t:2,x:{r:["filter_toxins"],s:"+!_0"},p:[27,70,1754]},"}"]},f:["Plasma"]}]}]}],n:52,r:"data.scrubbers",p:[7,3,144]},{t:4,n:51,f:[{p:[31,5,1855],t:7,e:"span",a:{"class":"bad"},f:["Error: No scrubbers connected."]}],r:"data.scrubbers"}]}]},i.exports.components=i.exports.components||{};var a={back:t("./back.ract")};for(var o in a)a.hasOwnProperty(o)&&(i.exports.components[o]=a[o]);e.exports=r.extend(i.exports)},{"./back.ract":21,"ractive/ractive.runtime":7}],25:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Air Status"},f:[{t:4,f:[{t:4,f:[{p:[4,7,109],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[4,26,128]}]},f:[{p:[5,6,145],t:7,e:"span",a:{"class":[{t:2,x:{r:["danger_level"],s:'_0==2?"bad":_0==1?"average":"good"'},p:[5,19,158]}]},f:[{t:2,x:{r:["value"],s:"Math.fixed(_0,2)"},p:[6,5,236]},{t:2,r:"unit",p:[6,29,260]}]}]}],n:52,r:"data.environment_data",p:[3,5,70]}," ",{p:[10,5,321],t:7,e:"ui-section",a:{label:"Local Status"},f:[{p:[11,7,362],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.danger_level"],s:'_0==2?"bad bold":_0==1?"average bold":"good"'},p:[11,20,375]}]},f:[{t:2,x:{r:["data.danger_level"],s:'_0==2?"Danger (Internals Required)":_0==1?"Caution":"Optimal"'},p:[12,6,474]}]}]}," ",{p:[15,5,618],t:7,e:"ui-section",a:{label:"Area Status"},f:[{p:[16,4,655],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.atmos_alarm","data.fire_alarm"],s:'_0||_1?"bad bold":"good"'},p:[16,17,668]}]},f:[{t:2,x:{r:["data.atmos_alarm","fire_alarm"],s:'_0?"Atmosphere Alarm":_1?"Fire Alarm":"Nominal"'},p:[17,8,740]}]}]}],n:50,r:"data.environment_data",p:[2,3,35]},{t:4,n:51,f:[{p:[21,5,872],t:7,e:"ui-section",f:[{p:[22,7,892],t:7,e:"span",a:{"class":"bad bold"},f:["Warning: Cannot obtain air sample for analysis."]}]}],r:"data.environment_data"}," ",{t:4,f:[{p:[26,5,1029],t:7,e:"hr"}," ",{p:[27,5,1040],t:7,e:"ui-section",f:[{p:[28,7,1060],t:7,e:"span",a:{"class":"bad bold"},f:["Warning: Safety measures offline. Device may exhibit abnormal behavior."]}]}],n:50,r:"data.emagged",p:[25,3,1003]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],26:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.css="th,\ntd {\n padding-right: 16px;\n text-align: left;\n}\n",i.exports.template={v:3,t:[" ",{p:{button:[{p:[5,5,116],t:7,e:"back"}]},t:7,e:"ui-display",a:{title:"Alarm Thresholds",button:0},f:[" ",{p:[7,3,143],t:7,e:"table",f:[{p:[8,5,156],t:7,e:"thead",f:[{p:[8,12,163],t:7,e:"tr",f:[{p:[9,7,175],t:7,e:"th"}," ",{p:[10,7,192],t:7,e:"th",f:[{p:[10,11,196],t:7,e:"span",a:{"class":"bad"},f:["min2"]}]}," ",{p:[11,7,238],t:7,e:"th",f:[{p:[11,11,242],t:7,e:"span",a:{"class":"average"},f:["min1"]}]}," ",{p:[12,7,288],t:7,e:"th",f:[{p:[12,11,292],t:7,e:"span",a:{"class":"average"},f:["max1"]}]}," ",{p:[13,7,338],t:7,e:"th",f:[{p:[13,11,342],t:7,e:"span",a:{"class":"bad"},f:["max2"]}]}]}]}," ",{p:[15,5,401],t:7,e:"tbody",f:[{t:4,f:[{p:[16,32,441],t:7,e:"tr",f:[{p:[17,9,455],t:7,e:"th",f:[{t:3,r:"name",p:[17,13,459]}]}," ",{t:4,f:[{p:[18,27,502],t:7,e:"td",f:[{p:[19,11,518],t:7,e:"ui-button",a:{action:"threshold",params:['{"env": "',{t:2,r:"env",p:[19,58,565]},'", "var": "',{t:2,r:"val",p:[19,76,583]},'"}']},f:[{t:2,x:{r:["selected"],s:"Math.fixed(_0,2)"},p:[19,87,594]}]}]}],n:52,r:"settings",p:[18,9,484]}]}],n:52,r:"data.thresholds",p:[16,7,416]}]}," ",{p:[23,3,697],t:7,e:"table",f:[]}]}]}," "]},i.exports.components=i.exports.components||{};var a={back:t("./back.ract")};for(var o in a)a.hasOwnProperty(o)&&(i.exports.components[o]=a[o]);e.exports=r.extend(i.exports)},{"./back.ract":21,"ractive/ractive.runtime":7}],27:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[" ",{p:{button:[{p:[5,5,113],t:7,e:"back"}]},t:7,e:"ui-display",a:{title:"Vent Controls",button:0},f:[" ",{t:4,f:[{p:[8,5,166],t:7,e:"ui-subdisplay",a:{title:[{t:2,r:"long_name",p:[8,27,188]}]},f:[{p:[9,7,211],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[10,9,247],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["power"],s:'_0?"power-off":"close"'},p:[10,26,264]}],style:[{t:2,x:{r:["power"],s:'_0?"selected":null'},p:[10,68,306]}],action:"power",params:['{"id_tag": "',{t:2,r:"id_tag",p:[11,46,383]},'", "val": ',{t:2,x:{r:["power"],s:"+!_0"},p:[11,66,403]},"}"]},f:[{t:2,x:{r:["power"],s:'_0?"On":"Off"'},p:[11,80,417]}]}]}," ",{p:[13,7,482],t:7,e:"ui-section",a:{label:"Mode"},f:[{p:[14,9,517],t:7,e:"span",f:[{t:2,x:{r:["direction"],s:'_0=="release"?"Pressurizing":"Siphoning"'},p:[14,15,523]}]}]}," ",{p:[16,7,616],t:7,e:"ui-section",a:{label:"Pressure Regulator"},f:[{p:[17,9,665],t:7,e:"ui-button",a:{icon:"sign-in",style:[{t:2,x:{r:["incheck"],s:'_0?"selected":null'},p:[17,42,698]}],action:"incheck",params:['{"id_tag": "',{t:2,r:"id_tag",p:[18,48,779]},'", "val": ',{t:2,r:"checks",p:[18,68,799]},"}"]},f:["Internal"]}," ",{p:[19,9,842],t:7,e:"ui-button",a:{icon:"sign-out",style:[{t:2,x:{r:["excheck"],s:'_0?"selected":null'},p:[19,43,876]}],action:"excheck",params:['{"id_tag": "',{t:2,r:"id_tag",p:[20,48,957]},'", "val": ',{t:2,r:"checks",p:[20,68,977]},"}"]},f:["External"]}]}," ",{p:[22,7,1039],t:7,e:"ui-section",a:{label:"Target Pressure"},f:[{p:[23,9,1085],t:7,e:"ui-button",a:{icon:"pencil",action:"external_pressure",params:['{"id_tag": "',{t:2,r:"id_tag",p:[24,31,1168]},'", "pressure": "custom"}']},f:[{t:2,x:{r:["external"],s:"Math.fixed(_0)"},p:[24,67,1204]}]}," ",{p:[25,9,1250],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["extdefault"],s:'_0?"disabled":null'},p:[25,42,1283]}],action:"external_pressure",params:['{"id_tag": "',{t:2,r:"id_tag",p:[26,31,1377]},'", "pressure": "reset"}']},f:["Reset"]}]}]}],n:52,r:"data.vents",p:[7,3,140]},{t:4,n:51,f:[{p:[30,5,1490],t:7,e:"span",a:{"class":"bad"},f:["Error: No vents connected."]}],r:"data.vents"}]}]},i.exports.components=i.exports.components||{};var a={back:t("./back.ract")};for(var o in a)a.hasOwnProperty(o)&&(i.exports.components[o]=a[o]);e.exports=r.extend(i.exports)},{"./back.ract":21,"ractive/ractive.runtime":7}],28:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.css="table {\n width: 100%;\n border-spacing: 2px;\n}\nth {\n text-align: left;\n}\ntd {\n vertical-align: top;\n}\ntd .button {\n margin-top: 4px;\n}\n",i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,3,16],t:7,e:"ui-section",f:[{p:[3,5,34],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.oneAccess"],s:'_0?"unlock":"lock"'},p:[3,22,51]}],action:"one_access"},f:[{t:2,x:{r:["data.oneAccess"],s:'_0?"One":"All"'},p:[3,82,111]}," Required"]}," ",{p:[4,5,172],t:7,e:"ui-button",a:{icon:"refresh",action:"clear"},f:["Clear"]}]}," ",{p:[6,3,251],t:7,e:"hr"}," ",{p:[7,3,260],t:7,e:"table",f:[{p:[8,3,271],t:7,e:"thead",f:[{p:[9,4,283],t:7,e:"tr",f:[{t:4,f:[{p:[10,5,315],t:7,e:"th",f:[{p:[10,9,319],t:7,e:"span",a:{"class":"highlight bold"},f:[{t:2,r:"name",p:[10,38,348]}]}]}],n:52,r:"data.regions",p:[9,8,287]}]}]}," ",{p:[13,3,403],t:7,e:"tbody",f:[{p:[14,4,415],t:7,e:"tr",f:[{t:4,f:[{p:[15,5,447],t:7,e:"td",f:[{t:4,f:[{p:[16,11,481],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["req"],s:'_0?"check-square-o":"square-o"'},p:[16,28,498]}],style:[{t:2,x:{r:["req"],s:'_0?"selected":null'},p:[16,76,546]}],action:"set",params:['{"access": "',{t:2,r:"id",p:[17,46,621]},'"}']},f:[{t:2,r:"name",p:[17,56,631]}]}," ",{p:[18,9,661],t:7,e:"br"}],n:52,r:"accesses",p:[15,9,451]}]}],n:52,r:"data.regions",p:[14,8,419]}]}]}]}]}," "]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],29:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(t){t.exports={data:{powerState:function(t){return 2===t?"good":1===t?"average":"bad"}},computed:{malfAction:function(){var t;return t=this.get("data.malfStatus"),1===t?"hack":2===t?"occupy":3===t?"deoccupy":void 0},malfButton:function(){var t;return t=this.get("data.malfStatus"),1===t?"Override Programming":"Shunt Core Process"},malfIcon:function(){var t;return t=this.get("data.malfStatus"),1===t?"terminal":"caret-square-o-down"},powerCellStatusState:function(){var t;return t=this.get("data.powerCellStatus"),t>50?"good":t>25?"average":"bad"}}}}(i),i.exports.template={v:3,t:[" ",{p:[31,1,988],t:7,e:"ui-notice",f:[{t:4,f:[{p:[33,5,1033],t:7,e:"ui-section",a:{label:"Interface Lock"},f:[{p:[34,7,1076],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.locked"],s:'_0?"lock":"unlock"'},p:[34,24,1093]}],action:"lock"},f:[{t:2,x:{r:["data.locked"],s:'_0?"Engaged":"Disengaged"'},p:[34,75,1144]}]}]}],n:50,r:"data.siliconUser",p:[32,3,1003]},{t:4,n:51,f:[{p:[37,5,1235],t:7,e:"span",f:["Swipe an ID card to ",{t:2,x:{r:["data.locked"],s:'_0?"unlock":"lock"'},p:[37,31,1261]}," this interface."]}],r:"data.siliconUser"}]}," ",{p:[40,1,1346],t:7,e:"ui-display",a:{title:"Power Status"},f:[{p:[41,3,1383],t:7,e:"ui-section",a:{label:"Main Breaker"},f:[{t:4,f:[{p:[43,7,1470],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.isOperating"],s:'_0?"good":"bad"'},p:[43,20,1483]}]},f:[{t:2,x:{r:["data.isOperating"],s:'_0?"On":"Off"'},p:[43,59,1522]}]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"},p:[42,5,1422]},{t:4,n:51,f:[{p:[45,7,1586],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isOperating"],s:'_0?"power-off":"close"'},p:[45,24,1603]}],style:[{t:2,x:{r:["data.isOperating"],s:'_0?"selected":null'},p:[45,77,1656]}],action:"breaker"},f:[{t:2,x:{r:["data.isOperating"],s:'_0?"On":"Off"'},p:[46,26,1724]}]}],x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"}}]}," ",{p:[49,3,1805],t:7,e:"ui-section",a:{label:"External Power"},f:[{p:[50,5,1846],t:7,e:"span",a:{"class":[{t:2,x:{r:["powerState","data.externalPower"],s:"_0(_1)"},p:[50,18,1859]}]},f:[{t:2,x:{r:["data.externalPower"],s:'_0==2?"Good":_0==1?"Low":"None"'},p:[50,54,1895]}]}]}," ",{p:[52,3,2002],t:7,e:"ui-section",a:{label:"Power Cell"},f:[{t:4,f:[{p:[54,7,2083],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.powerCellStatus",p:[54,40,2116]}],state:[{t:2,r:"powerCellStatusState",p:[54,73,2149]}]},f:[{t:2,x:{r:["adata.powerCellStatus"],s:"Math.fixed(_0)"},p:[54,99,2175]},"%"]}],n:50,x:{r:["data.powerCellStatus"],s:"_0!=null"},p:[53,5,2039]},{t:4,n:51,f:[{p:[56,7,2244],t:7,e:"span",a:{"class":"bad"},f:["Power cell removed."]}],x:{r:["data.powerCellStatus"],s:"_0!=null"}}]}," ",{t:4,f:[{p:[60,5,2364],t:7,e:"ui-section",a:{label:"Charge Mode"},f:[{t:4,f:[{p:[62,9,2454],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.chargeMode"],s:'_0?"good":"bad"'},p:[62,22,2467]}]},f:[{t:2,x:{r:["data.chargeMode"],s:'_0?"Auto":"Off"'},p:[62,60,2505]}]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"},p:[61,7,2404]},{t:4,n:51,f:[{p:[64,9,2574],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.chargeMode"],s:'_0?"refresh":"close"'},p:[64,26,2591]}],style:[{t:2,x:{r:["data.chargeMode"],s:'_0?"selected":null'},p:[64,76,2641]}],action:"charge"},f:[{t:2,x:{r:["data.chargeMode"],s:'_0?"Auto":"Off"'},p:[65,27,2709]}]}],x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"}}," [",{p:[68,8,2795],t:7,e:"span",a:{"class":[{t:2,x:{r:["powerState","data.chargingStatus"],s:"_0(_1)"},p:[68,21,2808]}]},f:[{t:2,x:{r:["data.chargingStatus"],s:'_0==2?"Fully Charged":_0==1?"Charging":"Not Charging"'},p:[68,58,2845]}]},"]"]}],n:50,x:{r:["data.powerCellStatus"],s:"_0!=null"},p:[59,3,2322]}]}," ",{p:[72,1,3003],t:7,e:"ui-display",a:{title:"Power Channels"},f:[{t:4,f:[{p:[74,5,3077],t:7,e:"ui-section",a:{label:[{t:2,r:"title",p:[74,24,3096]}],nowrap:0},f:[{p:[75,7,3122],t:7,e:"div",a:{"class":"content"},f:[{t:2,x:{r:["powerLoad"],s:"Math.round(_0)"},p:[75,28,3143]}," W"]}," ",{p:[76,7,3184],t:7,e:"div",a:{"class":"content"},f:[{p:[76,28,3205],t:7,e:"span",a:{"class":[{t:2,x:{r:["status"],s:'_0>=2?"good":"bad"'},p:[76,41,3218]}]},f:[{t:2,x:{r:["status"],s:'_0>=2?"On":"Off"'},p:[76,75,3252]}]}]}," ",{p:[77,7,3303],t:7,e:"div",a:{"class":"content"},f:["[",{p:[77,29,3325],t:7,e:"span",f:[{t:2,x:{r:["status"],s:'_0==1||_0==3?"Auto":"Manual"'},p:[77,35,3331]}]},"]"]}," ",{p:[78,7,3403],t:7,e:"div",a:{"class":"content",style:"float:right"},f:[{t:4,f:[{p:[80,11,3506],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["status"],s:'_0==1||_0==3?"selected":null'},p:[80,44,3539]}],action:"channel",params:[{t:2,r:"topicParams.auto",p:[81,38,3629]}]},f:["Auto"]}," ",{p:[82,11,3679],t:7,e:"ui-button",a:{icon:"power-off",state:[{t:2,x:{r:["status"],s:'_0==2?"selected":null'},p:[82,46,3714]}],action:"channel",params:[{t:2,r:"topicParams.on",p:[83,21,3789]}]},f:["On"]}," ",{p:[84,11,3835],t:7,e:"ui-button",a:{icon:"close",state:[{t:2,x:{r:["status"],s:'_0==0?"selected":null'},p:[84,42,3866]}],action:"channel",params:[{t:2,r:"topicParams.off",p:[85,21,3941]}]},f:["Off"]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"!_0||_1"},p:[79,9,3454]}]}]}],n:52,r:"adata.powerChannels",p:[73,3,3042]}," ",{p:[90,3,4044],t:7,e:"ui-section",a:{label:"Total Load"},f:[{p:[91,5,4081],t:7,e:"span",a:{"class":"bold"},f:[{t:2,x:{r:["adata.totalLoad"],s:"Math.round(_0)"},p:[91,24,4100]}," W"]}]}]}," ",{t:4,f:[{p:[95,3,4202],t:7,e:"ui-display",a:{title:"System Overrides"},f:[{p:[96,5,4245],t:7,e:"ui-button",a:{icon:"lightbulb-o",action:"overload"},f:["Overload"]}," ",{t:4,f:[{p:[98,7,4350],t:7,e:"ui-button",a:{icon:[{t:2,r:"malfIcon",p:[98,24,4367]}],state:[{t:2,x:{r:["data.malfStatus"],s:'_0==4?"disabled":null'},p:[98,45,4388]}],action:[{t:2,r:"malfAction",p:[98,99,4442]}]},f:[{t:2,r:"malfButton",p:[98,115,4458]}]}],n:50,r:"data.malfStatus",p:[97,5,4319]}]}],n:50,r:"data.siliconUser",p:[94,1,4174]},{p:[102,1,4525],t:7,e:"ui-notice",f:[{p:[103,3,4540],t:7,e:"ui-section",a:{label:"Cover Lock"},f:[{t:4,f:[{p:[105,7,4625],t:7,e:"span",f:[{t:2,x:{r:["data.coverLocked"],s:'_0?"Engaged":"Disengaged"'},p:[105,13,4631]}]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"},p:[104,5,4577]},{t:4,n:51,f:[{p:[107,7,4707],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.coverLocked"],s:'_0?"lock":"unlock"'},p:[107,24,4724]}],action:"cover"},f:[{t:2,x:{r:["data.coverLocked"],s:'_0?"Engaged":"Disengaged"'},p:[107,81,4781]}]}],x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"}}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],30:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,3,16],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[3,5,48],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[3,22,65]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[3,66,109]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[4,22,164]}]}]}," ",{p:[6,3,223],t:7,e:"ui-section",a:{label:"Output Pressure"},f:[{p:[7,5,265],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "custom"}'},f:["Set"]}," ",{p:[8,5,361],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.set_pressure","data.max_pressure"],s:'_0==_1?"disabled":null'},p:[8,35,391]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}," ",{p:[9,5,523],t:7,e:"span",a:{"class":"buttoninfo"},f:[{t:2,x:{r:["adata.set_pressure"],s:"Math.round(_0)"},p:[9,30,548]}," kPa"]}]}," ",{p:[11,3,614],t:7,e:"ui-section",a:{label:"Filter"},f:[{p:[12,5,647],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.filter_type"],s:'_0==-1?"selected":null'},p:[12,23,665]}],action:"filter",params:'{"mode": -1}'},f:["Nothing"]}," ",{p:[14,5,783],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.filter_type"],s:'_0==0?"selected":null'},p:[14,23,801]}],action:"filter",params:'{"mode": 0}'},f:["Plasma"]}," ",{p:[16,5,916],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.filter_type"],s:'_0==1?"selected":null'},p:[16,23,934]}],action:"filter",params:'{"mode": 1}'},f:["O2"]}," ",{p:[18,5,1045],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.filter_type"],s:'_0==2?"selected":null'},p:[18,23,1063]}],action:"filter",params:'{"mode": 2}'},f:["N2"]}," ",{p:[20,5,1174],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.filter_type"],s:'_0==3?"selected":null'},p:[20,23,1192]}],action:"filter",params:'{"mode": 3}'},f:["CO2"]}," ",{p:[22,5,1304],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.filter_type"],s:'_0==4?"selected":null'},p:[22,23,1322]}],action:"filter",params:'{"mode": 4}'},f:["N2O"]}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],31:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,3,16],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[3,5,48],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[3,22,65]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[3,66,109]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[4,22,164]}]}]}," ",{p:[6,3,223],t:7,e:"ui-section",a:{label:"Output Pressure"},f:[{p:[7,5,265],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "custom"}'},f:["Set"]}," ",{p:[8,5,361],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.set_pressure","data.max_pressure"],s:'_0==_1?"disabled":null'},p:[8,35,391]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}," ",{p:[9,5,523],t:7,e:"span",a:{"class":"buttoninfo"},f:[{t:2,x:{r:["adata.set_pressure"],s:"Math.round(_0)"},p:[9,30,548]}," kPa"]}]}," ",{p:[11,3,614],t:7,e:"ui-section",a:{label:"Node 1"},f:[{p:[12,5,647],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.node1_concentration"],s:'_0==0?"disabled":null'},p:[12,44,686]}],action:"node1",params:'{"concentration": -0.1}'}}," ",{p:[14,5,803],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.node1_concentration"],s:'_0==0?"disabled":null'},p:[14,39,837]}],action:"node1",params:'{"concentration": -0.01}'}}," ",{p:[16,5,955],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.node1_concentration"],s:'_0==100?"disabled":null'},p:[16,38,988]}],action:"node1",params:'{"concentration": 0.01}'}}," ",{p:[18,5,1107],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.node1_concentration"],s:'_0==100?"disabled":null'},p:[18,43,1145]}],action:"node1",params:'{"concentration": 0.1}'}}," ",{p:[20,5,1263],t:7,e:"span",a:{"class":"buttoninfo"},f:[{t:2,x:{r:["adata.node1_concentration"],s:"Math.round(_0)"},p:[20,30,1288]},"%"]}]}," ",{p:[22,3,1358],t:7,e:"ui-section",a:{label:"Node 2"},f:[{p:[23,5,1391],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.node2_concentration"],s:'_0==0?"disabled":null'},p:[23,44,1430]}],action:"node2",params:'{"concentration": -0.1}'}}," ",{p:[25,5,1547],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.node2_concentration"],s:'_0==0?"disabled":null'},p:[25,39,1581]}],action:"node2",params:'{"concentration": -0.01}'}}," ",{p:[27,5,1699],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.node2_concentration"],s:'_0==100?"disabled":null'},p:[27,38,1732]}],action:"node2",params:'{"concentration": 0.01}'}}," ",{p:[29,5,1851],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.node2_concentration"],s:'_0==100?"disabled":null'},p:[29,43,1889]}],action:"node2",params:'{"concentration": 0.1}'}}," ",{p:[31,5,2007],t:7,e:"span",a:{"class":"buttoninfo"},f:[{t:2,x:{r:["adata.node2_concentration"],s:"Math.round(_0)"},p:[31,30,2032]},"%"]}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],32:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,3,16],t:7,e:"ui-section",a:{label:"Power"}, -f:[{p:[3,5,48],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[3,22,65]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[3,66,109]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[4,22,164]}]}]}," ",{t:4,f:[{p:[7,5,250],t:7,e:"ui-section",a:{label:"Transfer Rate"},f:[{p:[8,7,292],t:7,e:"ui-button",a:{icon:"pencil",action:"transfer",params:'{"rate": "custom"}'},f:["Set"]}," ",{p:[9,7,386],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.transfer_rate","data.max_rate"],s:'_0==_1?"disabled":null'},p:[9,37,416]}],action:"transfer",params:'{"rate": "max"}'},f:["Max"]}," ",{p:[10,7,543],t:7,e:"span",a:{"class":"buttoninfo"},f:[{t:2,x:{r:["adata.transfer_rate"],s:"Math.round(_0)"},p:[10,32,568]}," L/s"]}]}],n:50,r:"data.max_rate",p:[6,3,223]},{t:4,n:51,f:[{p:[13,5,651],t:7,e:"ui-section",a:{label:"Output Pressure"},f:[{p:[14,7,695],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "custom"}'},f:["Set"]}," ",{p:[15,7,793],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.set_pressure","data.max_pressure"],s:'_0==_1?"disabled":null'},p:[15,37,823]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}," ",{p:[16,7,957],t:7,e:"span",a:{"class":"buttoninfo"},f:[{t:2,x:{r:["adata.set_pressure"],s:"Math.round(_0)"},p:[16,32,982]}," kPa"]}]}],r:"data.max_rate"}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],33:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-notice",f:[{p:[2,3,15],t:7,e:"span",f:["The regulator ",{t:2,x:{r:["data.hasHoldingTank"],s:'_0?"is":"is not"'},p:[2,23,35]}," connected to a tank."]}]}," ",{p:{button:[{p:[6,5,185],t:7,e:"ui-button",a:{icon:"pencil",state:[{t:2,x:{r:["data.canLabel"],s:'_0?null:"disabled"'},p:[6,37,217]}],action:"relable"},f:["Relabel"]}]},t:7,e:"ui-display",a:{title:"Canister",button:0},f:[" ",{p:[8,3,312],t:7,e:"ui-section",a:{label:"Pressure"},f:[{p:[9,5,347],t:7,e:"span",f:[{t:2,x:{r:["adata.tankPressure"],s:"Math.round(_0)"},p:[9,11,353]}," kPa"]}]}," ",{p:[11,3,419],t:7,e:"ui-section",a:{label:"Port"},f:[{p:[12,5,450],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.portConnected"],s:'_0?"good":"average"'},p:[12,18,463]}]},f:[{t:2,x:{r:["data.portConnected"],s:'_0?"Connected":"Not Connected"'},p:[12,63,508]}]}]}]}," ",{p:[15,1,603],t:7,e:"ui-display",a:{title:"Valve"},f:[{p:[16,3,633],t:7,e:"ui-section",a:{label:"Release Pressure"},f:[{p:[17,5,676],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.minReleasePressure",p:[17,18,689]}],max:[{t:2,r:"data.maxReleasePressure",p:[17,52,723]}],value:[{t:2,r:"data.releasePressure",p:[18,14,766]}]},f:[{t:2,x:{r:["adata.releasePressure"],s:"Math.round(_0)"},p:[18,40,792]}," kPa"]}]}," ",{p:[20,3,863],t:7,e:"ui-section",a:{label:"Pressure Regulator"},f:[{p:[21,5,908],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.releasePressure","data.defaultReleasePressure"],s:'_0!=_1?null:"disabled"'},p:[21,38,941]}],action:"pressure",params:'{"pressure": "reset"}'},f:["Reset"]}," ",{p:[23,5,1097],t:7,e:"ui-button",a:{icon:"minus",state:[{t:2,x:{r:["data.releasePressure","data.minReleasePressure"],s:'_0>_1?null:"disabled"'},p:[23,36,1128]}],action:"pressure",params:'{"pressure": "min"}'},f:["Min"]}," ",{p:[25,5,1275],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "custom"}'},f:["Set"]}," ",{p:[26,5,1371],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.releasePressure","data.maxReleasePressure"],s:'_0<_1?null:"disabled"'},p:[26,35,1401]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}]}," ",{p:[29,3,1563],t:7,e:"ui-section",a:{label:"Valve"},f:[{p:[30,5,1595],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.valveOpen"],s:'_0?"unlock":"lock"'},p:[30,22,1612]}],style:[{t:2,x:{r:["data.valveOpen","data.hasHoldingTank"],s:'_0?_1?"caution":"danger":null'},p:[31,14,1666]}],action:"valve"},f:[{t:2,x:{r:["data.valveOpen"],s:'_0?"Open":"Closed"'},p:[32,22,1760]}]}]}]}," ",{p:{button:[{t:4,f:[{p:[38,7,1948],t:7,e:"ui-button",a:{icon:"eject",style:[{t:2,x:{r:["data.valveOpen"],s:'_0?"danger":null'},p:[38,38,1979]}],action:"eject"},f:["Eject"]}],n:50,r:"data.hasHoldingTank",p:[37,5,1913]}]},t:7,e:"ui-display",a:{title:"Holding Tank",button:0},f:[" ",{t:4,f:[{p:[42,3,2113],t:7,e:"ui-section",a:{label:"Label"},f:[{t:2,r:"data.holdingTank.name",p:[43,4,2144]}]}," ",{p:[45,3,2190],t:7,e:"ui-section",a:{label:"Pressure"},f:[{t:2,x:{r:["adata.holdingTank.tankPressure"],s:"Math.round(_0)"},p:[46,4,2224]}," kPa"]}],n:50,r:"data.hasHoldingTank",p:[41,3,2082]},{t:4,n:51,f:[{p:[49,3,2306],t:7,e:"ui-section",f:[{p:[50,4,2323],t:7,e:"span",a:{"class":"average"},f:["No Holding Tank"]}]}],r:"data.hasHoldingTank"}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],34:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Power"},f:[{p:[2,3,30],t:7,e:"ui-section",a:{label:"Energy"},f:[{p:[3,5,63],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.maxEnergy",p:[3,26,84]}],value:[{t:2,r:"data.energy",p:[3,53,111]}]},f:[{t:2,x:{r:["adata.energy"],s:"Math.fixed(_0)"},p:[3,70,128]}," Units"]}]}," ",{t:4,f:[{p:[6,5,232],t:7,e:"ui-section",a:{label:"Amount"},f:[{t:4,f:[{p:[8,9,313],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.amount","."],s:'_0==_1?"selected":null'},p:[8,39,343]}],action:"amount",params:['{"amount": ',{t:2,r:".",p:[8,116,420]},"}"]},f:[{t:2,r:".",p:[8,124,428]}]}],n:52,r:"data.beakerTransferAmounts",p:[7,7,267]}]}],n:50,r:"data.beakerTransferAmounts",p:[5,3,192]}]}," ",{p:[13,1,509],t:7,e:"ui-display",a:{title:"Dispense"},f:[{p:[14,3,542],t:7,e:"ui-section",f:[{t:4,f:[{p:[16,7,592],t:7,e:"ui-button",a:{grid:0,icon:"tint",action:"dispense",params:['{"reagent": "',{t:2,r:"id",p:[16,74,659]},'"}']},f:[{t:2,r:"title",p:[16,84,669]}]}],n:52,r:"data.chemicals",p:[15,5,560]}]}]}," ",{p:{button:[{p:[22,5,802],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[22,36,833]}],action:"eject"},f:["Eject"]}]},t:7,e:"ui-display",a:{title:"Beaker",button:0},f:[" ",{t:4,f:[{p:[25,5,970],t:7,e:"ui-section",a:{label:"Remove"},f:[{t:4,f:[{p:[27,9,1051],t:7,e:"ui-button",a:{icon:"minus",action:"remove",params:['{"amount": ',{t:2,r:".",p:[27,68,1110]},"}"]},f:[{t:2,r:".",p:[27,76,1118]}]}],n:52,r:"data.beakerTransferAmounts",p:[26,7,1005]}]}],n:50,r:"data.beakerTransferAmounts",p:[24,3,930]}," ",{p:[31,3,1186],t:7,e:"ui-section",a:{label:"Contents"},f:[{t:4,f:[{p:[33,7,1256],t:7,e:"span",f:[{t:2,x:{r:["adata.beakerCurrentVolume"],s:"Math.round(_0)"},p:[33,13,1262]},"/",{t:2,r:"data.beakerMaxVolume",p:[33,55,1304]}," Units"]}," ",{p:[34,7,1349],t:7,e:"br"}," ",{t:4,f:[{p:[36,9,1402],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[36,52,1445]}," units of ",{t:2,r:"name",p:[36,87,1480]}]},{p:[36,102,1495],t:7,e:"br"}],n:52,r:"adata.beakerContents",p:[35,7,1362]},{t:4,n:51,f:[{p:[38,9,1526],t:7,e:"span",a:{"class":"bad"},f:["Beaker Empty"]}],r:"adata.beakerContents"}],n:50,r:"data.isBeakerLoaded",p:[32,5,1221]},{t:4,n:51,f:[{p:[41,7,1602],t:7,e:"span",a:{"class":"average"},f:["No Beaker"]}],r:"data.isBeakerLoaded"}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],35:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Thermostat"},f:[{p:[2,3,35],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[3,5,67],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isActive"],s:'_0?"power-off":"close"'},p:[3,22,84]}],style:[{t:2,x:{r:["data.isActive"],s:'_0?"selected":null'},p:[4,10,137]}],state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[5,10,186]}],action:"power"},f:[{t:2,x:{r:["data.isActive"],s:'_0?"On":"Off"'},p:[6,18,249]}]}]}," ",{p:[8,3,314],t:7,e:"ui-section",a:{label:"Target"},f:[{p:[9,4,346],t:7,e:"ui-button",a:{icon:"pencil",action:"temperature"},f:[{t:2,x:{r:["adata.targetTemp"],s:"Math.round(_0)"},p:[9,50,392]}," K"]}]}]}," ",{p:{button:[{p:[14,5,535],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[14,36,566]}],action:"eject"},f:["Eject"]}]},t:7,e:"ui-display",a:{title:"Beaker",button:0},f:[" ",{p:[16,3,663],t:7,e:"ui-section",a:{label:"Contents"},f:[{t:4,f:[{p:[18,7,733],t:7,e:"span",f:["Temperature: ",{t:2,x:{r:["adata.currentTemp"],s:"Math.round(_0)"},p:[18,26,752]}," K"]}," ",{p:[19,7,802],t:7,e:"br"}," ",{t:4,f:[{p:[21,9,856],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[21,52,899]}," units of ",{t:2,r:"name",p:[21,87,934]}]},{p:[21,102,949],t:7,e:"br"}],n:52,r:"adata.beakerContents",p:[20,7,816]},{t:4,n:51,f:[{p:[23,9,980],t:7,e:"span",a:{"class":"bad"},f:["Beaker Empty"]}],r:"adata.beakerContents"}],n:50,r:"data.isBeakerLoaded",p:[17,5,698]},{t:4,n:51,f:[{p:[26,7,1056],t:7,e:"span",a:{"class":"average"},f:["No Beaker"]}],r:"data.isBeakerLoaded"}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],36:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(t){t.exports={computed:{cellTemperatureState:function(){var t;return t=this.get("data.cellTemperature"),225>t?"good":273.15>t?"average":"bad"},occupantStatState:function(){var t;return t=this.get("data.occupant.stat"),0===t?"good":1===t?"average":"bad"}}}}(i),i.exports.template={v:3,t:[" ",{p:[16,1,414],t:7,e:"ui-display",a:{title:"Occupant"},f:[{p:[17,3,447],t:7,e:"ui-section",a:{label:"Occupant"},f:[{p:[18,3,480],t:7,e:"span",f:[{t:2,x:{r:["data.occupant.name"],s:'_0?_0:"No Occupant"'},p:[18,9,486]}]}]}," ",{t:4,f:[{p:[21,5,603],t:7,e:"ui-section",a:{label:"State"},f:[{p:[22,7,637],t:7,e:"span",a:{"class":[{t:2,r:"occupantStatState",p:[22,20,650]}]},f:[{t:2,x:{r:["data.occupant.stat"],s:'_0==0?"Conscious":_0==1?"Unconcious":"Dead"'},p:[22,43,673]}]}]}," ",{p:[24,4,794],t:7,e:"ui-section",a:{label:"Temperature"},f:[{p:[25,6,833],t:7,e:"span",f:[{t:2,x:{r:["adata.occupant.bodyTemperature"],s:"Math.round(_0)"},p:[25,12,839]}," K"]}]}," ",{p:[27,5,918],t:7,e:"ui-section",a:{label:"Health"},f:[{p:[28,7,953],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.occupant.minHealth",p:[28,20,966]}],max:[{t:2,r:"data.occupant.maxHealth",p:[28,54,1e3]}],value:[{t:2,r:"data.occupant.health",p:[28,90,1036]}],state:[{t:2,x:{r:["data.occupant.health"],s:'_0>=0?"good":"average"'},p:[29,16,1078]}]},f:[{t:2,x:{r:["adata.occupant.health"],s:"Math.round(_0)"},p:[29,68,1130]}]}]}," ",{t:4,f:[{p:[32,7,1367],t:7,e:"ui-section",a:{label:[{t:2,r:"label",p:[32,26,1386]}]},f:[{p:[33,9,1407],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.occupant.maxHealth",p:[33,30,1428]}],value:[{t:2,rx:{r:"data.occupant",m:[{t:30,n:"type"}]},p:[33,66,1464]}],state:"bad"},f:[{t:2,x:{r:["type","adata.occupant"],s:"Math.round(_1[_0])"},p:[33,103,1501]}]}]}],n:52,x:{r:[],s:'[{label:"Brute",type:"bruteLoss"},{label:"Respiratory",type:"oxyLoss"},{label:"Toxin",type:"toxLoss"},{label:"Burn",type:"fireLoss"}]'},p:[31,5,1201]}],n:50,r:"data.hasOccupant",p:[20,3,573]}]}," ",{p:[38,1,1610],t:7,e:"ui-display",a:{title:"Cell"},f:[{p:[39,3,1639],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[40,5,1671],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isOperating"],s:'_0?"power-off":"close"'},p:[40,22,1688]}],style:[{t:2,x:{r:["data.isOperating"],s:'_0?"selected":null'},p:[41,14,1748]}],state:[{t:2,x:{r:["data.isOpen"],s:'_0?"disabled":null'},p:[42,14,1804]}],action:"power"},f:[{t:2,x:{r:["data.isOperating"],s:'_0?"On":"Off"'},p:[43,22,1863]}]}]}," ",{p:[45,3,1931],t:7,e:"ui-section",a:{label:"Temperature"},f:[{p:[46,3,1967],t:7,e:"span",a:{"class":[{t:2,r:"cellTemperatureState",p:[46,16,1980]}]},f:[{t:2,x:{r:["adata.cellTemperature"],s:"Math.round(_0)"},p:[46,42,2006]}," K"]}]}," ",{p:[48,2,2071],t:7,e:"ui-section",a:{label:"Door"},f:[{p:[49,5,2102],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isOpen"],s:'_0?"unlock":"lock"'},p:[49,22,2119]}],action:"door"},f:[{t:2,x:{r:["data.isOpen"],s:'_0?"Open":"Closed"'},p:[49,73,2170]}]}," ",{p:[50,5,2223],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.autoEject"],s:'_0?"sign-out":"sign-in"'},p:[50,22,2240]}],action:"autoeject"},f:[{t:2,x:{r:["data.autoEject"],s:'_0?"Auto":"Manual"'},p:[50,86,2304]}]}]}]}," ",{p:{button:[{p:[55,5,2450],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[55,36,2481]}],action:"ejectbeaker"},f:["Eject"]}]},t:7,e:"ui-display",a:{title:"Beaker",button:0},f:[" ",{p:[57,3,2584],t:7,e:"ui-section",a:{label:"Contents"},f:[{t:4,f:[{t:4,f:[{p:[60,9,2694],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[60,52,2737]}," units of ",{t:2,r:"name",p:[60,87,2772]}]},{p:[60,102,2787],t:7,e:"br"}],n:52,r:"adata.beakerContents",p:[59,7,2654]},{t:4,n:51,f:[{p:[62,9,2818],t:7,e:"span",a:{"class":"bad"},f:["Beaker Empty"]}],r:"adata.beakerContents"}],n:50,r:"data.isBeakerLoaded",p:[58,5,2619]},{t:4,n:51,f:[{p:[65,7,2894],t:7,e:"span",a:{"class":"average"},f:["No Beaker"]}],r:"data.isBeakerLoaded"}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],37:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-notice",f:[{p:[2,3,15],t:7,e:"span",f:["The requested interface (",{t:2,r:"config.interface",p:[2,34,46]},") was not found. Does it exist?"]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],38:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(t){t.exports={computed:{capacityPercentState:function(){var t;return t=this.get("data.capacityPercent"),t>50?"good":t>15?"average":"bad"},inputState:function(){var t,e;return t=this.get("data.capacityPercent"),e=this.get("data.inputting"),t>=100?"good":e?"average":"bad"},outputState:function(){var t,e;return t=this.get("data.charge"),e=this.get("data.outputting"),e?"good":t>0?"average":"bad"}}}}(i),i.exports.template={v:3,t:[" ",{p:[23,1,624],t:7,e:"ui-display",a:{title:"Storage"},f:[{p:[24,3,656],t:7,e:"ui-section",a:{label:"Stored Energy"},f:[{p:[25,5,696],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.capacityPercent",p:[25,38,729]}],state:[{t:2,r:"capacityPercentState",p:[25,71,762]}]},f:[{t:2,x:{r:["adata.capacityPercent"],s:"Math.fixed(_0)"},p:[25,97,788]},"%"]}]}]}," ",{p:[28,1,869],t:7,e:"ui-display",a:{title:"Input"},f:[{p:[29,3,899],t:7,e:"ui-section",a:{label:"Charge Mode"},f:[{p:[30,5,937],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.inputAttempt"],s:'_0?"refresh":"close"'},p:[30,22,954]}],style:[{t:2,x:{r:["data.inputAttempt"],s:'_0?"selected":null'},p:[30,74,1006]}],action:"tryinput"},f:[{t:2,x:{r:["data.inputAttempt"],s:'_0?"Auto":"Off"'},p:[31,25,1074]}]},"   [",{p:[33,6,1143],t:7,e:"span",a:{"class":[{t:2,r:"inputState",p:[33,19,1156]}]},f:[{t:2,x:{r:["data.capacityPercent","data.inputting"],s:'_0>=100?"Fully Charged":_1?"Charging":"Not Charging"'},p:[33,35,1172]}]},"]"]}," ",{p:[35,3,1296],t:7,e:"ui-section",a:{label:"Target Input"},f:[{p:[36,5,1335],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.inputLevelMax",p:[36,26,1356]}],value:[{t:2,r:"data.inputLevel",p:[36,57,1387]}]},f:[{t:2,x:{r:["adata.inputLevel"],s:"Math.round(_0)"},p:[36,78,1408]},"W"]}]}," ",{p:[38,3,1470],t:7,e:"ui-section",a:{label:"Adjust Input"},f:[{p:[39,5,1509],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.inputLevel"],s:'_0==0?"disabled":null'},p:[39,44,1548]}],action:"input",params:'{"input": "min"}'}}," ",{p:[40,5,1642],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.inputLevel"],s:'_0==0?"disabled":null'},p:[40,39,1676]}],action:"input",params:'{"input": "minus"}'}}," ",{p:[41,5,1772],t:7,e:"ui-button",a:{icon:"pencil",action:"input",params:'{"input": "custom"}'},f:["Set"]}," ",{p:[42,5,1862],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.inputLevel","data.inputLevelMax"],s:'_0==_1?"disabled":null'},p:[42,38,1895]}],action:"input",params:'{"input": "plus"}'}}," ",{p:[43,5,2007],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.inputLevel","data.inputLevelMax"],s:'_0==_1?"disabled":null'},p:[43,43,2045]}],action:"input",params:'{"input": "max"}'}}]}," ",{p:[45,3,2171],t:7,e:"ui-section",a:{label:"Available"},f:[{p:[46,3,2205],t:7,e:"span",f:[{t:2,x:{r:["adata.inputAvailable"],s:"Math.round(_0)"},p:[46,9,2211]},"W"]}]}]}," ",{p:[49,1,2288],t:7,e:"ui-display",a:{title:"Output"},f:[{p:[50,3,2319],t:7,e:"ui-section",a:{label:"Output Mode"},f:[{p:[51,5,2357],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.outputAttempt"],s:'_0?"power-off":"close"'},p:[51,22,2374]}],style:[{t:2,x:{r:["data.outputAttempt"],s:'_0?"selected":null'},p:[51,77,2429]}],action:"tryoutput"},f:[{t:2,x:{r:["data.outputAttempt"],s:'_0?"On":"Off"'},p:[52,26,2499]}]},"   [",{p:[54,6,2567],t:7,e:"span",a:{"class":[{t:2,r:"outputState",p:[54,19,2580]}]},f:[{t:2,x:{r:["data.outputting","data.charge"],s:'_0?"Sending":_1>0?"Not Sending":"No Charge"'},p:[54,36,2597]}]},"]"]}," ",{p:[56,3,2704],t:7,e:"ui-section",a:{label:"Target Output"},f:[{p:[57,5,2744],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.outputLevelMax",p:[57,26,2765]}],value:[{t:2,r:"data.outputLevel",p:[57,58,2797]}]},f:[{t:2,x:{r:["adata.outputLevel"],s:"Math.round(_0)"},p:[57,80,2819]},"W"]}]}," ",{p:[59,3,2882],t:7,e:"ui-section",a:{label:"Adjust Output"},f:[{p:[60,5,2922],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.outputLevel"],s:'_0==0?"disabled":null'},p:[60,44,2961]}],action:"output",params:'{"output": "min"}'}}," ",{p:[61,5,3058],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.outputLevel"],s:'_0==0?"disabled":null'},p:[61,39,3092]}],action:"output",params:'{"output": "minus"}'}}," ",{p:[62,5,3191],t:7,e:"ui-button",a:{icon:"pencil",action:"output",params:'{"output": "custom"}'},f:["Set"]}," ",{p:[63,5,3283],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.outputLevel","data.outputLevelMax"],s:'_0==_1?"disabled":null'},p:[63,38,3316]}],action:"output",params:'{"output": "plus"}'}}," ",{p:[64,5,3432],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.outputLevel","data.outputLevelMax"],s:'_0==_1?"disabled":null'},p:[64,43,3470]}],action:"output",params:'{"output": "max"}'}}]}," ",{p:[66,3,3600],t:7,e:"ui-section",a:{label:"Outputting"},f:[{p:[67,3,3635],t:7,e:"span",f:[{t:2,x:{r:["adata.outputUsed"],s:"Math.round(_0)"},p:[67,9,3641]},"W"]}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],39:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Status"},f:[{p:[2,3,31],t:7,e:"ui-section",a:{label:"Generated Power"},f:[{t:2,x:{r:["adata.generated"],s:"Math.round(_0)"},p:[3,5,73]},"W"]}," ",{p:[5,3,126],t:7,e:"ui-section",a:{label:"Orientation"},f:[{p:[6,5,164],t:7,e:"span",f:[{t:2,x:{r:["adata.angle"],s:"Math.round(_0)"},p:[6,11,170]},"° (",{t:2,r:"data.direction",p:[6,45,204]},")"]}]}," ",{p:[8,3,251],t:7,e:"ui-section",a:{label:"Adjust Angle"},f:[{p:[9,5,290],t:7,e:"ui-button",a:{icon:"step-backward",action:"control",params:'{"cdir": -15}'},f:["15°"]}," ",{p:[10,5,387],t:7,e:"ui-button",a:{icon:"backward",action:"control",params:'{"cdir": -5}'},f:["5°"]}," ",{p:[11,5,477],t:7,e:"ui-button",a:{icon:"forward",action:"control",params:'{"cdir": 5}'},f:["5°"]}," ",{p:[12,5,565],t:7,e:"ui-button",a:{icon:"step-forward",action:"control",params:'{"cdir": 15}'},f:["15°"]}]}]}," ",{p:[15,1,687],t:7,e:"ui-display",a:{title:"Tracking"},f:[{p:[16,3,720],t:7,e:"ui-section",a:{label:"Tracker Mode"},f:[{p:[17,5,759],t:7,e:"ui-button",a:{icon:"close",state:[{t:2,x:{r:["data.tracking_state"],s:'_0==0?"selected":null'},p:[17,36,790]}],action:"tracking",params:'{"mode": 0}'},f:["Off"]}," ",{p:[19,5,907],t:7,e:"ui-button",a:{icon:"clock-o",state:[{t:2,x:{r:["data.tracking_state"],s:'_0==1?"selected":null'},p:[19,38,940]}],action:"tracking",params:'{"mode": 1}'},f:["Timed"]}," ",{p:[21,5,1059],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.connected_tracker","data.tracking_state"],s:'_0?_1==2?"selected":null:"disabled"'},p:[21,38,1092]}],action:"tracking",params:'{"mode": 2}'},f:["Auto"]}]}," ",{p:[24,3,1262],t:7,e:"ui-section",a:{label:"Tracking Rate"},f:[{p:[25,3,1300],t:7,e:"span",f:[{t:2,x:{r:["adata.tracking_rate"],s:"Math.round(_0)"},p:[25,9,1306]},"°/h (",{t:2,r:"data.rotating_way",p:[25,53,1350]},")"]}]}," ",{p:[27,3,1399],t:7,e:"ui-section",a:{label:"Adjust Rate"},f:[{p:[28,5,1437],t:7,e:"ui-button",a:{icon:"fast-backward",action:"control",params:'{"tdir": -180}'},f:["180°"]}," ",{p:[29,5,1536],t:7,e:"ui-button",a:{icon:"step-backward",action:"control",params:'{"tdir": -30}'},f:["30°"]}," ",{p:[30,5,1633],t:7,e:"ui-button",a:{icon:"backward",action:"control",params:'{"tdir": -5}'},f:["5°"]}," ",{p:[31,5,1723],t:7,e:"ui-button",a:{icon:"forward",action:"control",params:'{"tdir": 5}'},f:["5°"]}," ",{p:[32,5,1811],t:7,e:"ui-button",a:{icon:"step-forward",action:"control",params:'{"tdir": 30}'},f:["30°"]}," ",{p:[33,5,1906],t:7,e:"ui-button",a:{icon:"fast-forward",action:"control",params:'{"tdir": 180}'},f:["180°"]}]}]}," ",{p:{button:[{p:[38,5,2094],t:7,e:"ui-button",a:{icon:"refresh",action:"refresh"},f:["Refresh"]}]},t:7,e:"ui-display",a:{title:"Devices",button:0},f:[" ",{p:[40,2,2175],t:7,e:"ui-section",a:{label:"Solar Tracker"},f:[{p:[41,5,2215],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.connected_tracker"],s:'_0?"good":"bad"'},p:[41,18,2228]}]},f:[{t:2,x:{r:["data.connected_tracker"],s:'_0?"":"Not "'},p:[41,63,2273]},"Found"]}]}," ",{p:[43,2,2344],t:7,e:"ui-section",a:{label:"Solar Panels"},f:[{p:[44,3,2381],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.connected_panels"],s:'_0?"good":"bad"'},p:[44,16,2394]}]},f:[{t:2,x:{r:["adata.connected_panels"],s:"Math.round(_0)"},p:[44,60,2438]}," Panels Connected"]}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],40:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(e){e.exports={data:{text:t("../text")}}}(i),i.exports.template={v:3,t:[" ",{p:{button:[{t:4,f:[{p:[10,7,194],t:7,e:"ui-button",a:{icon:"eject",action:"eject"},f:["Eject"]}],n:50,r:"data.open",p:[9,5,169]}]},t:7,e:"ui-display",a:{title:"Power",button:0},f:[" ",{p:[13,3,283],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[14,5,315],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[14,22,332]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[15,14,383]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[16,22,438]}]}]}," ",{p:[18,3,497],t:7,e:"ui-section",a:{label:"Cell"},f:[{t:4,f:[{p:[20,7,561],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.powerLevel",p:[20,40,594]}]},f:[{t:2,x:{r:["adata.powerLevel"],s:"Math.fixed(_0)"},p:[20,61,615]},"%"]}],n:50,r:"data.hasPowercell",p:[19,5,528]},{t:4,n:51,f:[{p:[22,4,674],t:7,e:"span",a:{"class":"bad"},f:["No Cell"]}],r:"data.hasPowercell"}]}]}," ",{p:[26,1,751],t:7,e:"ui-display",a:{title:"Thermostat"},f:[{p:[27,3,786],t:7,e:"ui-section",a:{label:"Current Temperature"},f:[{p:[28,3,830],t:7,e:"span",f:[{t:2,x:{r:["adata.currentTemp"],s:"Math.round(_0)"},p:[28,9,836]},"°C"]}]}," ",{p:[30,2,901],t:7,e:"ui-section",a:{label:"Target Temperature"},f:[{p:[31,3,944],t:7,e:"span",f:[{t:2,x:{r:["adata.targetTemp"],s:"Math.round(_0)"},p:[31,9,950]},"°C"]}]}," ",{t:4,f:[{p:[34,2,1035],t:7,e:"ui-section",a:{label:"Adjust Target"},f:[{p:[35,7,1077],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.targetTemp","data.minTemp"],s:'_0>_1?null:"disabled"'},p:[35,46,1116]}],action:"target",params:'{"target": -20}'}}," ",{p:[36,7,1222],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.targetTemp","data.minTemp"],s:'_0>_1?null:"disabled"'},p:[36,41,1256]}],action:"target",params:'{"target": -5}'}}," ",{p:[37,7,1361],t:7,e:"ui-button",a:{icon:"pencil",action:"target",params:'{"target": "custom"}'},f:["Set"]}," ",{p:[38,7,1455],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.targetTemp","data.maxTemp"],s:'_0<_1?null:"disabled"'},p:[38,40,1488]}],action:"target",params:'{"target": 5}'}}," ",{p:[39,7,1592],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.targetTemp","data.maxTemp"],s:'_0<_1?null:"disabled"'},p:[39,45,1630]}],action:"target",params:'{"target": 20}'}}]}],n:50,r:"data.open",p:[33,3,1015]}," ",{p:[42,3,1759],t:7,e:"ui-section",a:{label:"Mode"},f:[{t:4,f:[{p:[44,7,1813],t:7,e:"ui-button",a:{icon:"long-arrow-up",state:[{t:2,x:{r:["data.mode"],s:'_0=="heat"?"selected":null'},p:[44,46,1852]}],action:"mode",params:'{"mode": "heat"}'},f:["Heat"]}," ",{p:[45,7,1961],t:7,e:"ui-button",a:{icon:"long-arrow-down",state:[{t:2,x:{r:["data.mode"],s:'_0=="cool"?"selected":null'},p:[45,48,2002]}],action:"mode",params:'{"mode": "cool"}'},f:["Cool"]}," ",{p:[46,7,2111],t:7,e:"ui-button",a:{icon:"arrows-v",state:[{t:2,x:{r:["data.mode"],s:'_0=="auto"?"selected":null'},p:[46,41,2145]}],action:"mode",params:'{"mode": "auto"}'},f:["Auto"]}],n:50,r:"data.open",p:[43,3,1788]},{t:4,n:51,f:[{p:[48,4,2263],t:7,e:"span",f:[{t:2,x:{r:["text","data.mode"],s:"_0.titleCase(_1)"},p:[48,10,2269]}]}],r:"data.open"}]}]}]},e.exports=r.extend(i.exports)},{"../text":44,"ractive/ractive.runtime":7}],41:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(t){t.exports={data:{tankPressureState:function(){var t;return t=this.get("data.tankPressureState"),t>=200?"good":t>=100?"average":"bad"}}}}(i),i.exports.template={v:3,t:[" ",{p:[11,1,255],t:7,e:"ui-notice",f:[{p:[12,3,270],t:7,e:"span",f:["The regulator ",{t:2,x:{r:["data.hasHoldingTank"],s:'_0?"is":"is not"'},p:[12,23,290]}," connected to a mask."]}]}," ",{p:[14,1,375],t:7,e:"ui-display",f:[{p:[15,3,391],t:7,e:"ui-section",a:{label:"Tank Pressure"},f:[{p:[16,7,433],t:7,e:"ui-bar",a:{min:"0",max:"1013",value:[{t:2,r:"data.tankPressure",p:[16,41,467]}],state:[{t:2,r:"tankPressureState",p:[17,16,506]}]},f:[{t:2,x:{r:["adata.tankPressure"],s:"Math.round(_0)"},p:[17,39,529]}," kPa"]}]}," ",{p:[19,3,597],t:7,e:"ui-section",a:{label:"Release Pressure"},f:[{p:[20,5,640],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.minReleasePressure",p:[20,18,653]}],max:[{t:2,r:"data.maxReleasePressure",p:[20,52,687]}],value:[{t:2,r:"data.releasePressure",p:[21,14,730]}]},f:[{t:2,x:{r:["adata.releasePressure"],s:"Math.round(_0)"},p:[21,40,756]}," kPa"]}]}," ",{p:[23,3,827],t:7,e:"ui-section",a:{label:"Pressure Regulator"},f:[{p:[24,5,872],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.releasePressure","data.defaultReleasePressure"],s:'_0!=_1?null:"disabled"'},p:[24,38,905]}],action:"pressure",params:'{"pressure": "reset"}'},f:["Reset"]}," ",{p:[26,5,1061],t:7,e:"ui-button",a:{icon:"minus",state:[{t:2,x:{r:["data.releasePressure","data.minReleasePressure"],s:'_0>_1?null:"disabled"'},p:[26,36,1092]}],action:"pressure",params:'{"pressure": "min"}'},f:["Min"]}," ",{p:[28,5,1239],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "custom"}'},f:["Set"]}," ",{p:[29,5,1335],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.releasePressure","data.maxReleasePressure"],s:'_0<_1?null:"disabled"'},p:[29,35,1365]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}]}," ",{p:[32,3,1527],t:7,e:"ui-section",a:{label:"Valve"},f:[{p:[33,5,1559],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.valveOpen"],s:'_0?"unlock":"lock"'},p:[33,22,1576]}],state:[{t:2,x:{r:["data.maskConnected"],s:'_0?null:"disabled"'},p:[33,69,1623]}],action:"valve"},f:[{t:2,x:{r:["data.valveOpen"],s:'_0?"Open":"Closed"'},p:[34,22,1689]}]}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],42:[function(t,e,n){var r,i,a;t("ie8/build/ie8.max"),t("dom4/build/dom4.max"),t("es5-shim"),t("html5shiv"),t("./math"),r=t("ractive/ractive.runtime"),r.DEBUG=/minified/.test(function(t){}),i=t("webfontloader"),i.load({custom:{families:["FontAwesome"],urls:["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.5.0/css/font-awesome.min.css"],testStrings:{FontAwesome:""}}}),a=t("./tgui"),window.tgui=new a({el:"#container",data:function(){var t;return t=JSON.parse(document.getElementById("data").textContent),(null==t||null==t.data||null==t.config)&&alert("Initial data did not load correctly."),t.adata=t.data,t}})},{"./math":43,"./tgui":45,"dom4/build/dom4.max":1,"es5-shim":2,html5shiv:3,"ie8/build/ie8.max":4,"ractive/ractive.runtime":7,webfontloader:8}],43:[function(t,e,n){Math.clamp=function(t,e,n){return Math.max(e,Math.min(t,n))},Math.fixed=function(t,e){return null==e&&(e=1),+(Math.round(t+"e"+e)+"e-"+e)}},{}],44:[function(t,e,n){e.exports={upperCaseFirst:function(t){return t[0].toUpperCase()+t.slice(1).toLowerCase()},titleCase:function(t){return t.replace(/\w\S*/g,this.upperCaseFirst)}}},{}],45:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(e){var n;n=t("./dragresize"),e.exports={components:{"ui-bar":t("./components/bar"),"ui-button":t("./components/button"),"ui-display":t("./components/display"),"ui-notice":t("./components/notice"),"ui-section":t("./components/section"),"ui-subdisplay":t("./components/subdisplay")},events:{enter:t("ractive-events-keys").enter,space:t("ractive-events-keys").space},transitions:{fade:t("ractive-transitions-fade")},onconfig:function(){var e,n;return n=this.get("config.interface"),e={air_alarm:t("./interfaces/air_alarm.ract"),airlock_electronics:t("./interfaces/airlock_electronics.ract"),apc:t("./interfaces/apc.ract"),atmos_filter:t("./interfaces/atmos_filter.ract"),atmos_mixer:t("./interfaces/atmos_mixer.ract"),atmos_pump:t("./interfaces/atmos_pump.ract"),canister:t("./interfaces/canister.ract"),chem_dispenser:t("./interfaces/chem_dispenser.ract"),chem_heater:t("./interfaces/chem_heater.ract"),cryo:t("./interfaces/cryo.ract"),error:t("./interfaces/error.ract"),smes:t("./interfaces/smes.ract"),solar_control:t("./interfaces/solar_control.ract"),space_heater:t("./interfaces/space_heater.ract"),tanks:t("./interfaces/tanks.ract")},null!=e[n]?this.components["interface"]=e[n]:null==this.components["interface"]?this.components["interface"]=t("./interfaces/error"):void 0},oninit:function(){return this.on("titlebar.drag",function(){return this.toggle("drag"),!1}),this.on("resize.resize",function(){return this.toggle("resize"),!1}),window.addEventListener("mousemove",function(t){return function(e){return t.get("drag")?n.drag(t,e):t.get("resize")?n.resize(t,e):void 0}}(this)),window.addEventListener("mouseup",function(t){return function(e){var n,r;return(n=t.get("drag"))&&t.set("drag"),(r=t.get("resize"))&&t.set("resize"),n||r?(t.set("x"),t.set("y")):void 0}}(this))},onrender:function(){return this.observe("config.style",function(t,e,n){return null!=e&&(document.body.classList.remove(e),this.el.classList.remove(e)),null!=t?(this.el.classList.add(t),document.body.classList.add(t)):void 0})}}}(i),i.exports.template={v:3,t:[" "," "," ",{p:[47,1,1868],t:7,e:"titlebar",f:[{t:3,r:"config.title",p:[47,11,1878]}]}," ",{p:[48,1,1909],t:7,e:"main",f:[{p:[49,3,1919],t:7,e:"interface"}]}," ",{p:[51,1,1942],t:7,e:"resize"}]},i.exports.components=i.exports.components||{};var a={titlebar:t("./components/titlebar.ract"),resize:t("./components/resize.ract")};for(var o in a)a.hasOwnProperty(o)&&(i.exports.components[o]=a[o]);e.exports=r.extend(i.exports)},{"./components/bar":10,"./components/button":11,"./components/display":12,"./components/notice":13,"./components/resize.ract":14,"./components/section":15,"./components/subdisplay":16,"./components/titlebar.ract":17,"./dragresize":19,"./interfaces/air_alarm.ract":20,"./interfaces/airlock_electronics.ract":28,"./interfaces/apc.ract":29,"./interfaces/atmos_filter.ract":30,"./interfaces/atmos_mixer.ract":31,"./interfaces/atmos_pump.ract":32,"./interfaces/canister.ract":33,"./interfaces/chem_dispenser.ract":34,"./interfaces/chem_heater.ract":35,"./interfaces/cryo.ract":36,"./interfaces/error":37,"./interfaces/error.ract":37,"./interfaces/smes.ract":38, +f:[{p:[3,5,48],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[3,22,65]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[3,66,109]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[4,22,164]}]}]}," ",{t:4,f:[{p:[7,5,250],t:7,e:"ui-section",a:{label:"Transfer Rate"},f:[{p:[8,7,292],t:7,e:"ui-button",a:{icon:"pencil",action:"transfer",params:'{"rate": "custom"}'},f:["Set"]}," ",{p:[9,7,386],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.transfer_rate","data.max_rate"],s:'_0==_1?"disabled":null'},p:[9,37,416]}],action:"transfer",params:'{"rate": "max"}'},f:["Max"]}," ",{p:[10,7,543],t:7,e:"span",a:{"class":"buttoninfo"},f:[{t:2,x:{r:["adata.transfer_rate"],s:"Math.round(_0)"},p:[10,32,568]}," L/s"]}]}],n:50,r:"data.max_rate",p:[6,3,223]},{t:4,n:51,f:[{p:[13,5,651],t:7,e:"ui-section",a:{label:"Output Pressure"},f:[{p:[14,7,695],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "custom"}'},f:["Set"]}," ",{p:[15,7,793],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.set_pressure","data.max_pressure"],s:'_0==_1?"disabled":null'},p:[15,37,823]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}," ",{p:[16,7,957],t:7,e:"span",a:{"class":"buttoninfo"},f:[{t:2,x:{r:["adata.set_pressure"],s:"Math.round(_0)"},p:[16,32,982]}," kPa"]}]}],r:"data.max_rate"}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],33:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-notice",f:[{p:[2,3,15],t:7,e:"span",f:["The regulator ",{t:2,x:{r:["data.hasHoldingTank"],s:'_0?"is":"is not"'},p:[2,23,35]}," connected to a tank."]}]}," ",{p:{button:[{p:[6,5,185],t:7,e:"ui-button",a:{icon:"pencil",state:[{t:2,x:{r:["data.canLabel"],s:'_0?null:"disabled"'},p:[6,37,217]}],action:"relable"},f:["Relabel"]}]},t:7,e:"ui-display",a:{title:"Canister",button:0},f:[" ",{p:[8,3,312],t:7,e:"ui-section",a:{label:"Pressure"},f:[{p:[9,5,347],t:7,e:"span",f:[{t:2,x:{r:["adata.tankPressure"],s:"Math.round(_0)"},p:[9,11,353]}," kPa"]}]}," ",{p:[11,3,419],t:7,e:"ui-section",a:{label:"Port"},f:[{p:[12,5,450],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.portConnected"],s:'_0?"good":"average"'},p:[12,18,463]}]},f:[{t:2,x:{r:["data.portConnected"],s:'_0?"Connected":"Not Connected"'},p:[12,63,508]}]}]}]}," ",{p:[15,1,603],t:7,e:"ui-display",a:{title:"Valve"},f:[{p:[16,3,633],t:7,e:"ui-section",a:{label:"Release Pressure"},f:[{p:[17,5,676],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.minReleasePressure",p:[17,18,689]}],max:[{t:2,r:"data.maxReleasePressure",p:[17,52,723]}],value:[{t:2,r:"data.releasePressure",p:[18,14,766]}]},f:[{t:2,x:{r:["adata.releasePressure"],s:"Math.round(_0)"},p:[18,40,792]}," kPa"]}]}," ",{p:[20,3,863],t:7,e:"ui-section",a:{label:"Pressure Regulator"},f:[{p:[21,5,908],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.releasePressure","data.defaultReleasePressure"],s:'_0!=_1?null:"disabled"'},p:[21,38,941]}],action:"pressure",params:'{"pressure": "reset"}'},f:["Reset"]}," ",{p:[23,5,1097],t:7,e:"ui-button",a:{icon:"minus",state:[{t:2,x:{r:["data.releasePressure","data.minReleasePressure"],s:'_0>_1?null:"disabled"'},p:[23,36,1128]}],action:"pressure",params:'{"pressure": "min"}'},f:["Min"]}," ",{p:[25,5,1275],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "custom"}'},f:["Set"]}," ",{p:[26,5,1371],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.releasePressure","data.maxReleasePressure"],s:'_0<_1?null:"disabled"'},p:[26,35,1401]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}]}," ",{p:[29,3,1563],t:7,e:"ui-section",a:{label:"Valve"},f:[{p:[30,5,1595],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.valveOpen"],s:'_0?"unlock":"lock"'},p:[30,22,1612]}],style:[{t:2,x:{r:["data.valveOpen","data.hasHoldingTank"],s:'_0?_1?"caution":"danger":null'},p:[31,14,1666]}],action:"valve"},f:[{t:2,x:{r:["data.valveOpen"],s:'_0?"Open":"Closed"'},p:[32,22,1760]}]}]}]}," ",{p:{button:[{t:4,f:[{p:[38,7,1948],t:7,e:"ui-button",a:{icon:"eject",style:[{t:2,x:{r:["data.valveOpen"],s:'_0?"danger":null'},p:[38,38,1979]}],action:"eject"},f:["Eject"]}],n:50,r:"data.hasHoldingTank",p:[37,5,1913]}]},t:7,e:"ui-display",a:{title:"Holding Tank",button:0},f:[" ",{t:4,f:[{p:[42,3,2113],t:7,e:"ui-section",a:{label:"Label"},f:[{t:2,r:"data.holdingTank.name",p:[43,4,2144]}]}," ",{p:[45,3,2190],t:7,e:"ui-section",a:{label:"Pressure"},f:[{t:2,x:{r:["adata.holdingTank.tankPressure"],s:"Math.round(_0)"},p:[46,4,2224]}," kPa"]}],n:50,r:"data.hasHoldingTank",p:[41,3,2082]},{t:4,n:51,f:[{p:[49,3,2306],t:7,e:"ui-section",f:[{p:[50,4,2323],t:7,e:"span",a:{"class":"average"},f:["No Holding Tank"]}]}],r:"data.hasHoldingTank"}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],34:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Power"},f:[{p:[2,3,30],t:7,e:"ui-section",a:{label:"Energy"},f:[{p:[3,5,63],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.maxEnergy",p:[3,26,84]}],value:[{t:2,r:"data.energy",p:[3,53,111]}]},f:[{t:2,x:{r:["adata.energy"],s:"Math.fixed(_0)"},p:[3,70,128]}," Units"]}]}," ",{t:4,f:[{p:[6,5,232],t:7,e:"ui-section",a:{label:"Amount"},f:[{t:4,f:[{p:[8,9,313],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.amount","."],s:'_0==_1?"selected":null'},p:[8,39,343]}],action:"amount",params:['{"amount": ',{t:2,r:".",p:[8,116,420]},"}"]},f:[{t:2,r:".",p:[8,124,428]}]}],n:52,r:"data.beakerTransferAmounts",p:[7,7,267]}]}],n:50,r:"data.beakerTransferAmounts",p:[5,3,192]}]}," ",{p:[13,1,509],t:7,e:"ui-display",a:{title:"Dispense"},f:[{p:[14,3,542],t:7,e:"ui-section",f:[{t:4,f:[{p:[16,7,592],t:7,e:"ui-button",a:{grid:0,icon:"tint",action:"dispense",params:['{"reagent": "',{t:2,r:"id",p:[16,74,659]},'"}']},f:[{t:2,r:"title",p:[16,84,669]}]}],n:52,r:"data.chemicals",p:[15,5,560]}]}]}," ",{p:{button:[{p:[22,5,802],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[22,36,833]}],action:"eject"},f:["Eject"]}]},t:7,e:"ui-display",a:{title:"Beaker",button:0},f:[" ",{t:4,f:[{p:[25,5,970],t:7,e:"ui-section",a:{label:"Remove"},f:[{t:4,f:[{p:[27,9,1051],t:7,e:"ui-button",a:{icon:"minus",action:"remove",params:['{"amount": ',{t:2,r:".",p:[27,68,1110]},"}"]},f:[{t:2,r:".",p:[27,76,1118]}]}],n:52,r:"data.beakerTransferAmounts",p:[26,7,1005]}]}],n:50,r:"data.beakerTransferAmounts",p:[24,3,930]}," ",{p:[31,3,1186],t:7,e:"ui-section",a:{label:"Contents"},f:[{t:4,f:[{p:[33,7,1256],t:7,e:"span",f:[{t:2,x:{r:["adata.beakerCurrentVolume"],s:"Math.round(_0)"},p:[33,13,1262]},"/",{t:2,r:"data.beakerMaxVolume",p:[33,55,1304]}," Units"]}," ",{p:[34,7,1349],t:7,e:"br"}," ",{t:4,f:[{p:[36,9,1402],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[36,52,1445]}," units of ",{t:2,r:"name",p:[36,87,1480]}]},{p:[36,102,1495],t:7,e:"br"}],n:52,r:"adata.beakerContents",p:[35,7,1362]},{t:4,n:51,f:[{p:[38,9,1526],t:7,e:"span",a:{"class":"bad"},f:["Beaker Empty"]}],r:"adata.beakerContents"}],n:50,r:"data.isBeakerLoaded",p:[32,5,1221]},{t:4,n:51,f:[{p:[41,7,1602],t:7,e:"span",a:{"class":"average"},f:["No Beaker"]}],r:"data.isBeakerLoaded"}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],35:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Thermostat"},f:[{p:[2,3,35],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[3,5,67],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isActive"],s:'_0?"power-off":"close"'},p:[3,22,84]}],style:[{t:2,x:{r:["data.isActive"],s:'_0?"selected":null'},p:[4,10,137]}],state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[5,10,186]}],action:"power"},f:[{t:2,x:{r:["data.isActive"],s:'_0?"On":"Off"'},p:[6,18,249]}]}]}," ",{p:[8,3,314],t:7,e:"ui-section",a:{label:"Target"},f:[{p:[9,4,346],t:7,e:"ui-button",a:{icon:"pencil",action:"temperature"},f:[{t:2,x:{r:["adata.targetTemp"],s:"Math.round(_0)"},p:[9,50,392]}," K"]}]}]}," ",{p:{button:[{p:[14,5,535],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[14,36,566]}],action:"eject"},f:["Eject"]}]},t:7,e:"ui-display",a:{title:"Beaker",button:0},f:[" ",{p:[16,3,663],t:7,e:"ui-section",a:{label:"Contents"},f:[{t:4,f:[{p:[18,7,733],t:7,e:"span",f:["Temperature: ",{t:2,x:{r:["adata.currentTemp"],s:"Math.round(_0)"},p:[18,26,752]}," K"]}," ",{p:[19,7,802],t:7,e:"br"}," ",{t:4,f:[{p:[21,9,856],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[21,52,899]}," units of ",{t:2,r:"name",p:[21,87,934]}]},{p:[21,102,949],t:7,e:"br"}],n:52,r:"adata.beakerContents",p:[20,7,816]},{t:4,n:51,f:[{p:[23,9,980],t:7,e:"span",a:{"class":"bad"},f:["Beaker Empty"]}],r:"adata.beakerContents"}],n:50,r:"data.isBeakerLoaded",p:[17,5,698]},{t:4,n:51,f:[{p:[26,7,1056],t:7,e:"span",a:{"class":"average"},f:["No Beaker"]}],r:"data.isBeakerLoaded"}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],36:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(t){t.exports={computed:{cellTemperatureState:function(){var t;return t=this.get("data.cellTemperature"),225>t?"good":273.15>t?"average":"bad"},occupantStatState:function(){var t;return t=this.get("data.occupant.stat"),0===t?"good":1===t?"average":"bad"}}}}(i),i.exports.template={v:3,t:[" ",{p:[16,1,414],t:7,e:"ui-display",a:{title:"Occupant"},f:[{p:[17,3,447],t:7,e:"ui-section",a:{label:"Occupant"},f:[{p:[18,3,480],t:7,e:"span",f:[{t:2,x:{r:["data.occupant.name"],s:'_0?_0:"No Occupant"'},p:[18,9,486]}]}]}," ",{t:4,f:[{p:[21,5,603],t:7,e:"ui-section",a:{label:"State"},f:[{p:[22,7,637],t:7,e:"span",a:{"class":[{t:2,r:"occupantStatState",p:[22,20,650]}]},f:[{t:2,x:{r:["data.occupant.stat"],s:'_0==0?"Conscious":_0==1?"Unconcious":"Dead"'},p:[22,43,673]}]}]}," ",{p:[24,4,794],t:7,e:"ui-section",a:{label:"Temperature"},f:[{p:[25,6,833],t:7,e:"span",f:[{t:2,x:{r:["adata.occupant.bodyTemperature"],s:"Math.round(_0)"},p:[25,12,839]}," K"]}]}," ",{p:[27,5,918],t:7,e:"ui-section",a:{label:"Health"},f:[{p:[28,7,953],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.occupant.minHealth",p:[28,20,966]}],max:[{t:2,r:"data.occupant.maxHealth",p:[28,54,1e3]}],value:[{t:2,r:"data.occupant.health",p:[28,90,1036]}],state:[{t:2,x:{r:["data.occupant.health"],s:'_0>=0?"good":"average"'},p:[29,16,1078]}]},f:[{t:2,x:{r:["adata.occupant.health"],s:"Math.round(_0)"},p:[29,68,1130]}]}]}," ",{t:4,f:[{p:[32,7,1367],t:7,e:"ui-section",a:{label:[{t:2,r:"label",p:[32,26,1386]}]},f:[{p:[33,9,1407],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.occupant.maxHealth",p:[33,30,1428]}],value:[{t:2,rx:{r:"data.occupant",m:[{t:30,n:"type"}]},p:[33,66,1464]}],state:"bad"},f:[{t:2,x:{r:["type","adata.occupant"],s:"Math.round(_1[_0])"},p:[33,103,1501]}]}]}],n:52,x:{r:[],s:'[{label:"Brute",type:"bruteLoss"},{label:"Respiratory",type:"oxyLoss"},{label:"Toxin",type:"toxLoss"},{label:"Burn",type:"fireLoss"}]'},p:[31,5,1201]}],n:50,r:"data.hasOccupant",p:[20,3,573]}]}," ",{p:[38,1,1610],t:7,e:"ui-display",a:{title:"Cell"},f:[{p:[39,3,1639],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[40,5,1671],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isOperating"],s:'_0?"power-off":"close"'},p:[40,22,1688]}],style:[{t:2,x:{r:["data.isOperating"],s:'_0?"selected":null'},p:[41,14,1748]}],state:[{t:2,x:{r:["data.isOpen"],s:'_0?"disabled":null'},p:[42,14,1804]}],action:"power"},f:[{t:2,x:{r:["data.isOperating"],s:'_0?"On":"Off"'},p:[43,22,1863]}]}]}," ",{p:[45,3,1931],t:7,e:"ui-section",a:{label:"Temperature"},f:[{p:[46,3,1967],t:7,e:"span",a:{"class":[{t:2,r:"cellTemperatureState",p:[46,16,1980]}]},f:[{t:2,x:{r:["adata.cellTemperature"],s:"Math.round(_0)"},p:[46,42,2006]}," K"]}]}," ",{p:[48,2,2071],t:7,e:"ui-section",a:{label:"Door"},f:[{p:[49,5,2102],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isOpen"],s:'_0?"unlock":"lock"'},p:[49,22,2119]}],action:"door"},f:[{t:2,x:{r:["data.isOpen"],s:'_0?"Open":"Closed"'},p:[49,73,2170]}]}," ",{p:[50,5,2223],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.autoEject"],s:'_0?"sign-out":"sign-in"'},p:[50,22,2240]}],action:"autoeject"},f:[{t:2,x:{r:["data.autoEject"],s:'_0?"Auto":"Manual"'},p:[50,86,2304]}]}]}]}," ",{p:{button:[{p:[55,5,2450],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[55,36,2481]}],action:"ejectbeaker"},f:["Eject"]}]},t:7,e:"ui-display",a:{title:"Beaker",button:0},f:[" ",{p:[57,3,2584],t:7,e:"ui-section",a:{label:"Contents"},f:[{t:4,f:[{t:4,f:[{p:[60,9,2694],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[60,52,2737]}," units of ",{t:2,r:"name",p:[60,87,2772]}]},{p:[60,102,2787],t:7,e:"br"}],n:52,r:"adata.beakerContents",p:[59,7,2654]},{t:4,n:51,f:[{p:[62,9,2818],t:7,e:"span",a:{"class":"bad"},f:["Beaker Empty"]}],r:"adata.beakerContents"}],n:50,r:"data.isBeakerLoaded",p:[58,5,2619]},{t:4,n:51,f:[{p:[65,7,2894],t:7,e:"span",a:{"class":"average"},f:["No Beaker"]}],r:"data.isBeakerLoaded"}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],37:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-notice",f:[{p:[2,3,15],t:7,e:"span",f:["The requested interface (",{t:2,r:"config.interface",p:[2,34,46]},") was not found. Does it exist?"]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],38:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(t){t.exports={computed:{capacityPercentState:function(){var t;return t=this.get("data.capacityPercent"),t>50?"good":t>15?"average":"bad"},inputState:function(){var t,e;return t=this.get("data.capacityPercent"),e=this.get("data.inputting"),t>=100?"good":e?"average":"bad"},outputState:function(){var t,e;return t=this.get("data.charge"),e=this.get("data.outputting"),e?"good":t>0?"average":"bad"}}}}(i),i.exports.template={v:3,t:[" ",{p:[23,1,624],t:7,e:"ui-display",a:{title:"Storage"},f:[{p:[24,3,656],t:7,e:"ui-section",a:{label:"Stored Energy"},f:[{p:[25,5,696],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.capacityPercent",p:[25,38,729]}],state:[{t:2,r:"capacityPercentState",p:[25,71,762]}]},f:[{t:2,x:{r:["adata.capacityPercent"],s:"Math.fixed(_0)"},p:[25,97,788]},"%"]}]}]}," ",{p:[28,1,869],t:7,e:"ui-display",a:{title:"Input"},f:[{p:[29,3,899],t:7,e:"ui-section",a:{label:"Charge Mode"},f:[{p:[30,5,937],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.inputAttempt"],s:'_0?"refresh":"close"'},p:[30,22,954]}],style:[{t:2,x:{r:["data.inputAttempt"],s:'_0?"selected":null'},p:[30,74,1006]}],action:"tryinput"},f:[{t:2,x:{r:["data.inputAttempt"],s:'_0?"Auto":"Off"'},p:[31,25,1074]}]},"   [",{p:[33,6,1143],t:7,e:"span",a:{"class":[{t:2,r:"inputState",p:[33,19,1156]}]},f:[{t:2,x:{r:["data.capacityPercent","data.inputting"],s:'_0>=100?"Fully Charged":_1?"Charging":"Not Charging"'},p:[33,35,1172]}]},"]"]}," ",{p:[35,3,1296],t:7,e:"ui-section",a:{label:"Target Input"},f:[{p:[36,5,1335],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.inputLevelMax",p:[36,26,1356]}],value:[{t:2,r:"data.inputLevel",p:[36,57,1387]}]},f:[{t:2,x:{r:["adata.inputLevel"],s:"Math.round(_0)"},p:[36,78,1408]},"W"]}]}," ",{p:[38,3,1470],t:7,e:"ui-section",a:{label:"Adjust Input"},f:[{p:[39,5,1509],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.inputLevel"],s:'_0==0?"disabled":null'},p:[39,44,1548]}],action:"input",params:'{"input": "min"}'}}," ",{p:[40,5,1642],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.inputLevel"],s:'_0==0?"disabled":null'},p:[40,39,1676]}],action:"input",params:'{"input": "minus"}'}}," ",{p:[41,5,1772],t:7,e:"ui-button",a:{icon:"pencil",action:"input",params:'{"input": "custom"}'},f:["Set"]}," ",{p:[42,5,1862],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.inputLevel","data.inputLevelMax"],s:'_0==_1?"disabled":null'},p:[42,38,1895]}],action:"input",params:'{"input": "plus"}'}}," ",{p:[43,5,2007],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.inputLevel","data.inputLevelMax"],s:'_0==_1?"disabled":null'},p:[43,43,2045]}],action:"input",params:'{"input": "max"}'}}]}," ",{p:[45,3,2171],t:7,e:"ui-section",a:{label:"Available"},f:[{p:[46,3,2205],t:7,e:"span",f:[{t:2,x:{r:["adata.inputAvailable"],s:"Math.round(_0)"},p:[46,9,2211]},"W"]}]}]}," ",{p:[49,1,2288],t:7,e:"ui-display",a:{title:"Output"},f:[{p:[50,3,2319],t:7,e:"ui-section",a:{label:"Output Mode"},f:[{p:[51,5,2357],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.outputAttempt"],s:'_0?"power-off":"close"'},p:[51,22,2374]}],style:[{t:2,x:{r:["data.outputAttempt"],s:'_0?"selected":null'},p:[51,77,2429]}],action:"tryoutput"},f:[{t:2,x:{r:["data.outputAttempt"],s:'_0?"On":"Off"'},p:[52,26,2499]}]},"   [",{p:[54,6,2567],t:7,e:"span",a:{"class":[{t:2,r:"outputState",p:[54,19,2580]}]},f:[{t:2,x:{r:["data.outputting","data.charge"],s:'_0?"Sending":_1>0?"Not Sending":"No Charge"'},p:[54,36,2597]}]},"]"]}," ",{p:[56,3,2704],t:7,e:"ui-section",a:{label:"Target Output"},f:[{p:[57,5,2744],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.outputLevelMax",p:[57,26,2765]}],value:[{t:2,r:"data.outputLevel",p:[57,58,2797]}]},f:[{t:2,x:{r:["adata.outputLevel"],s:"Math.round(_0)"},p:[57,80,2819]},"W"]}]}," ",{p:[59,3,2882],t:7,e:"ui-section",a:{label:"Adjust Output"},f:[{p:[60,5,2922],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.outputLevel"],s:'_0==0?"disabled":null'},p:[60,44,2961]}],action:"output",params:'{"output": "min"}'}}," ",{p:[61,5,3058],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.outputLevel"],s:'_0==0?"disabled":null'},p:[61,39,3092]}],action:"output",params:'{"output": "minus"}'}}," ",{p:[62,5,3191],t:7,e:"ui-button",a:{icon:"pencil",action:"output",params:'{"output": "custom"}'},f:["Set"]}," ",{p:[63,5,3283],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.outputLevel","data.outputLevelMax"],s:'_0==_1?"disabled":null'},p:[63,38,3316]}],action:"output",params:'{"output": "plus"}'}}," ",{p:[64,5,3432],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.outputLevel","data.outputLevelMax"],s:'_0==_1?"disabled":null'},p:[64,43,3470]}],action:"output",params:'{"output": "max"}'}}]}," ",{p:[66,3,3600],t:7,e:"ui-section",a:{label:"Outputting"},f:[{p:[67,3,3635],t:7,e:"span",f:[{t:2,x:{r:["adata.outputUsed"],s:"Math.round(_0)"},p:[67,9,3641]},"W"]}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],39:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Status"},f:[{p:[2,3,31],t:7,e:"ui-section",a:{label:"Generated Power"},f:[{t:2,x:{r:["adata.generated"],s:"Math.round(_0)"},p:[3,5,73]},"W"]}," ",{p:[5,3,126],t:7,e:"ui-section",a:{label:"Orientation"},f:[{p:[6,5,164],t:7,e:"span",f:[{t:2,x:{r:["adata.angle"],s:"Math.round(_0)"},p:[6,11,170]},"° (",{t:2,r:"data.direction",p:[6,45,204]},")"]}]}," ",{p:[8,3,251],t:7,e:"ui-section",a:{label:"Adjust Angle"},f:[{p:[9,5,290],t:7,e:"ui-button",a:{icon:"step-backward",action:"control",params:'{"cdir": -15}'},f:["15°"]}," ",{p:[10,5,387],t:7,e:"ui-button",a:{icon:"backward",action:"control",params:'{"cdir": -5}'},f:["5°"]}," ",{p:[11,5,477],t:7,e:"ui-button",a:{icon:"forward",action:"control",params:'{"cdir": 5}'},f:["5°"]}," ",{p:[12,5,565],t:7,e:"ui-button",a:{icon:"step-forward",action:"control",params:'{"cdir": 15}'},f:["15°"]}]}]}," ",{p:[15,1,687],t:7,e:"ui-display",a:{title:"Tracking"},f:[{p:[16,3,720],t:7,e:"ui-section",a:{label:"Tracker Mode"},f:[{p:[17,5,759],t:7,e:"ui-button",a:{icon:"close",state:[{t:2,x:{r:["data.tracking_state"],s:'_0==0?"selected":null'},p:[17,36,790]}],action:"tracking",params:'{"mode": 0}'},f:["Off"]}," ",{p:[19,5,907],t:7,e:"ui-button",a:{icon:"clock-o",state:[{t:2,x:{r:["data.tracking_state"],s:'_0==1?"selected":null'},p:[19,38,940]}],action:"tracking",params:'{"mode": 1}'},f:["Timed"]}," ",{p:[21,5,1059],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.connected_tracker","data.tracking_state"],s:'_0?_1==2?"selected":null:"disabled"'},p:[21,38,1092]}],action:"tracking",params:'{"mode": 2}'},f:["Auto"]}]}," ",{p:[24,3,1262],t:7,e:"ui-section",a:{label:"Tracking Rate"},f:[{p:[25,3,1300],t:7,e:"span",f:[{t:2,x:{r:["adata.tracking_rate"],s:"Math.round(_0)"},p:[25,9,1306]},"°/h (",{t:2,r:"data.rotating_way",p:[25,53,1350]},")"]}]}," ",{p:[27,3,1399],t:7,e:"ui-section",a:{label:"Adjust Rate"},f:[{p:[28,5,1437],t:7,e:"ui-button",a:{icon:"fast-backward",action:"control",params:'{"tdir": -180}'},f:["180°"]}," ",{p:[29,5,1536],t:7,e:"ui-button",a:{icon:"step-backward",action:"control",params:'{"tdir": -30}'},f:["30°"]}," ",{p:[30,5,1633],t:7,e:"ui-button",a:{icon:"backward",action:"control",params:'{"tdir": -5}'},f:["5°"]}," ",{p:[31,5,1723],t:7,e:"ui-button",a:{icon:"forward",action:"control",params:'{"tdir": 5}'},f:["5°"]}," ",{p:[32,5,1811],t:7,e:"ui-button",a:{icon:"step-forward",action:"control",params:'{"tdir": 30}'},f:["30°"]}," ",{p:[33,5,1906],t:7,e:"ui-button",a:{icon:"fast-forward",action:"control",params:'{"tdir": 180}'},f:["180°"]}]}]}," ",{p:{button:[{p:[38,5,2094],t:7,e:"ui-button",a:{icon:"refresh",action:"refresh"},f:["Refresh"]}]},t:7,e:"ui-display",a:{title:"Devices",button:0},f:[" ",{p:[40,2,2175],t:7,e:"ui-section",a:{label:"Solar Tracker"},f:[{p:[41,5,2215],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.connected_tracker"],s:'_0?"good":"bad"'},p:[41,18,2228]}]},f:[{t:2,x:{r:["data.connected_tracker"],s:'_0?"":"Not "'},p:[41,63,2273]},"Found"]}]}," ",{p:[43,2,2344],t:7,e:"ui-section",a:{label:"Solar Panels"},f:[{p:[44,3,2381],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.connected_panels"],s:'_0?"good":"bad"'},p:[44,16,2394]}]},f:[{t:2,x:{r:["adata.connected_panels"],s:"Math.round(_0)"},p:[44,60,2438]}," Panels Connected"]}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],40:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(e){e.exports={data:{text:t("../text")}}}(i),i.exports.template={v:3,t:[" ",{p:{button:[{t:4,f:[{p:[10,7,194],t:7,e:"ui-button",a:{icon:"eject",action:"eject"},f:["Eject"]}],n:50,r:"data.open",p:[9,5,169]}]},t:7,e:"ui-display",a:{title:"Power",button:0},f:[" ",{p:[13,3,283],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[14,5,315],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[14,22,332]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[15,14,383]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[16,22,438]}]}]}," ",{p:[18,3,497],t:7,e:"ui-section",a:{label:"Cell"},f:[{t:4,f:[{p:[20,7,561],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.powerLevel",p:[20,40,594]}]},f:[{t:2,x:{r:["adata.powerLevel"],s:"Math.fixed(_0)"},p:[20,61,615]},"%"]}],n:50,r:"data.hasPowercell",p:[19,5,528]},{t:4,n:51,f:[{p:[22,4,674],t:7,e:"span",a:{"class":"bad"},f:["No Cell"]}],r:"data.hasPowercell"}]}]}," ",{p:[26,1,751],t:7,e:"ui-display",a:{title:"Thermostat"},f:[{p:[27,3,786],t:7,e:"ui-section",a:{label:"Current Temperature"},f:[{p:[28,3,830],t:7,e:"span",f:[{t:2,x:{r:["adata.currentTemp"],s:"Math.round(_0)"},p:[28,9,836]},"°C"]}]}," ",{p:[30,2,901],t:7,e:"ui-section",a:{label:"Target Temperature"},f:[{p:[31,3,944],t:7,e:"span",f:[{t:2,x:{r:["adata.targetTemp"],s:"Math.round(_0)"},p:[31,9,950]},"°C"]}]}," ",{t:4,f:[{p:[34,2,1035],t:7,e:"ui-section",a:{label:"Adjust Target"},f:[{p:[35,7,1077],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.targetTemp","data.minTemp"],s:'_0>_1?null:"disabled"'},p:[35,46,1116]}],action:"target",params:'{"target": -20}'}}," ",{p:[36,7,1222],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.targetTemp","data.minTemp"],s:'_0>_1?null:"disabled"'},p:[36,41,1256]}],action:"target",params:'{"target": -5}'}}," ",{p:[37,7,1361],t:7,e:"ui-button",a:{icon:"pencil",action:"target",params:'{"target": "custom"}'},f:["Set"]}," ",{p:[38,7,1455],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.targetTemp","data.maxTemp"],s:'_0<_1?null:"disabled"'},p:[38,40,1488]}],action:"target",params:'{"target": 5}'}}," ",{p:[39,7,1592],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.targetTemp","data.maxTemp"],s:'_0<_1?null:"disabled"'},p:[39,45,1630]}],action:"target",params:'{"target": 20}'}}]}],n:50,r:"data.open",p:[33,3,1015]}," ",{p:[42,3,1759],t:7,e:"ui-section",a:{label:"Mode"},f:[{t:4,f:[{p:[44,7,1813],t:7,e:"ui-button",a:{icon:"long-arrow-up",state:[{t:2,x:{r:["data.mode"],s:'_0=="heat"?"selected":null'},p:[44,46,1852]}],action:"mode",params:'{"mode": "heat"}'},f:["Heat"]}," ",{p:[45,7,1961],t:7,e:"ui-button",a:{icon:"long-arrow-down",state:[{t:2,x:{r:["data.mode"],s:'_0=="cool"?"selected":null'},p:[45,48,2002]}],action:"mode",params:'{"mode": "cool"}'},f:["Cool"]}," ",{p:[46,7,2111],t:7,e:"ui-button",a:{icon:"arrows-v",state:[{t:2,x:{r:["data.mode"],s:'_0=="auto"?"selected":null'},p:[46,41,2145]}],action:"mode",params:'{"mode": "auto"}'},f:["Auto"]}],n:50,r:"data.open",p:[43,3,1788]},{t:4,n:51,f:[{p:[48,4,2263],t:7,e:"span",f:[{t:2,x:{r:["text","data.mode"],s:"_0.titleCase(_1)"},p:[48,10,2269]}]}],r:"data.open"}]}]}]},e.exports=r.extend(i.exports)},{"../text":44,"ractive/ractive.runtime":7}],41:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(t){t.exports={data:{tankPressureState:function(){var t;return t=this.get("data.tankPressureState"),t>=200?"good":t>=100?"average":"bad"}}}}(i),i.exports.template={v:3,t:[" ",{p:[11,1,255],t:7,e:"ui-notice",f:[{p:[12,3,270],t:7,e:"span",f:["The regulator ",{t:2,x:{r:["data.hasHoldingTank"],s:'_0?"is":"is not"'},p:[12,23,290]}," connected to a mask."]}]}," ",{p:[14,1,375],t:7,e:"ui-display",f:[{p:[15,3,391],t:7,e:"ui-section",a:{label:"Tank Pressure"},f:[{p:[16,7,433],t:7,e:"ui-bar",a:{min:"0",max:"1013",value:[{t:2,r:"data.tankPressure",p:[16,41,467]}],state:[{t:2,r:"tankPressureState",p:[17,16,506]}]},f:[{t:2,x:{r:["adata.tankPressure"],s:"Math.round(_0)"},p:[17,39,529]}," kPa"]}]}," ",{p:[19,3,597],t:7,e:"ui-section",a:{label:"Release Pressure"},f:[{p:[20,5,640],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.minReleasePressure",p:[20,18,653]}],max:[{t:2,r:"data.maxReleasePressure",p:[20,52,687]}],value:[{t:2,r:"data.releasePressure",p:[21,14,730]}]},f:[{t:2,x:{r:["adata.releasePressure"],s:"Math.round(_0)"},p:[21,40,756]}," kPa"]}]}," ",{p:[23,3,827],t:7,e:"ui-section",a:{label:"Pressure Regulator"},f:[{p:[24,5,872],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.releasePressure","data.defaultReleasePressure"],s:'_0!=_1?null:"disabled"'},p:[24,38,905]}],action:"pressure",params:'{"pressure": "reset"}'},f:["Reset"]}," ",{p:[26,5,1061],t:7,e:"ui-button",a:{icon:"minus",state:[{t:2,x:{r:["data.releasePressure","data.minReleasePressure"],s:'_0>_1?null:"disabled"'},p:[26,36,1092]}],action:"pressure",params:'{"pressure": "min"}'},f:["Min"]}," ",{p:[28,5,1239],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "custom"}'},f:["Set"]}," ",{p:[29,5,1335],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.releasePressure","data.maxReleasePressure"],s:'_0<_1?null:"disabled"'},p:[29,35,1365]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}]}," ",{p:[32,3,1527],t:7,e:"ui-section",a:{label:"Valve"},f:[{p:[33,5,1559],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.valveOpen"],s:'_0?"unlock":"lock"'},p:[33,22,1576]}],state:[{t:2,x:{r:["data.maskConnected"],s:'_0?null:"disabled"'},p:[33,69,1623]}],action:"valve"},f:[{t:2,x:{r:["data.valveOpen"],s:'_0?"Open":"Closed"'},p:[34,22,1689]}]}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],42:[function(t,e,n){var r,i,a;t("ie8/build/ie8.max"),t("dom4/build/dom4.max"),t("es5-shim"),t("html5shiv"),t("./math"),r=t("ractive/ractive.runtime"),r.DEBUG=/minified/.test(function(t){}),i=t("webfontloader"),i.load({custom:{families:["FontAwesome"],urls:["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.5.0/css/font-awesome.min.css"],testStrings:{FontAwesome:""}}}),a=t("./tgui"),window.tgui=new a({el:"#container",data:function(){var t;return t=JSON.parse(document.getElementById("data").textContent),(null==t||null==t.data||null==t.config)&&alert("Initial data did not load correctly."),t.adata=t.data,t}})},{"./math":43,"./tgui":45,"dom4/build/dom4.max":1,"es5-shim":2,html5shiv:3,"ie8/build/ie8.max":4,"ractive/ractive.runtime":7,webfontloader:8}],43:[function(t,e,n){Math.clamp=function(t,e,n){return Math.max(e,Math.min(t,n))},Math.fixed=function(t,e){return null==e&&(e=1),+(Math.round(t+"e"+e)+"e-"+e)}},{}],44:[function(t,e,n){e.exports={upperCaseFirst:function(t){return t[0].toUpperCase()+t.slice(1).toLowerCase()},titleCase:function(t){return t.replace(/\w\S*/g,this.upperCaseFirst)}}},{}],45:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(e){var n;n=t("./dragresize"),e.exports={components:{"ui-bar":t("./components/bar"),"ui-button":t("./components/button"),"ui-display":t("./components/display"),"ui-notice":t("./components/notice"),"ui-section":t("./components/section"),"ui-subdisplay":t("./components/subdisplay")},events:{enter:t("ractive-events-keys").enter,space:t("ractive-events-keys").space},transitions:{fade:t("ractive-transitions-fade")},onconfig:function(){var e,n;return n=this.get("config.interface"),e={air_alarm:t("./interfaces/air_alarm.ract"),airlock_electronics:t("./interfaces/airlock_electronics.ract"),apc:t("./interfaces/apc.ract"),atmos_filter:t("./interfaces/atmos_filter.ract"),atmos_mixer:t("./interfaces/atmos_mixer.ract"),atmos_pump:t("./interfaces/atmos_pump.ract"),canister:t("./interfaces/canister.ract"),chem_dispenser:t("./interfaces/chem_dispenser.ract"),chem_heater:t("./interfaces/chem_heater.ract"),cryo:t("./interfaces/cryo.ract"),error:t("./interfaces/error.ract"),smes:t("./interfaces/smes.ract"),solar_control:t("./interfaces/solar_control.ract"),space_heater:t("./interfaces/space_heater.ract"),tanks:t("./interfaces/tanks.ract")},null!=e[n]?this.components["interface"]=e[n]:null==this.components["interface"]?this.components["interface"]=t("./interfaces/error"):void 0},oninit:function(){return this.on("titlebar.drag",function(){return this.toggle("drag"),!1}),this.on("resize.resize",function(){return this.toggle("resize"),!1}),document.addEventListener("mousemove",function(t){return function(e){return t.get("drag")?n.drag(t,e):t.get("resize")?n.resize(t,e):void 0}}(this)),document.addEventListener("mouseup",function(t){return function(e){var n,r;return(n=t.get("drag"))&&t.set("drag"),(r=t.get("resize"))&&t.set("resize"),n||r?(t.set("x"),t.set("y")):void 0}}(this))},onrender:function(){return this.observe("config.style",function(t,e,n){return null!=e&&(document.body.classList.remove(e),this.el.classList.remove(e)),null!=t?(this.el.classList.add(t),document.body.classList.add(t)):void 0})}}}(i),i.exports.template={v:3,t:[" "," "," ",{p:[47,1,1872],t:7,e:"titlebar",f:[{t:3,r:"config.title",p:[47,11,1882]}]}," ",{p:[48,1,1913],t:7,e:"main",f:[{p:[49,3,1923],t:7,e:"interface"}]}," ",{p:[51,1,1946],t:7,e:"resize"}]},i.exports.components=i.exports.components||{};var a={titlebar:t("./components/titlebar.ract"),resize:t("./components/resize.ract")};for(var o in a)a.hasOwnProperty(o)&&(i.exports.components[o]=a[o]);e.exports=r.extend(i.exports)},{"./components/bar":10,"./components/button":11,"./components/display":12,"./components/notice":13,"./components/resize.ract":14,"./components/section":15,"./components/subdisplay":16,"./components/titlebar.ract":17,"./dragresize":19,"./interfaces/air_alarm.ract":20,"./interfaces/airlock_electronics.ract":28,"./interfaces/apc.ract":29,"./interfaces/atmos_filter.ract":30,"./interfaces/atmos_mixer.ract":31,"./interfaces/atmos_pump.ract":32,"./interfaces/canister.ract":33,"./interfaces/chem_dispenser.ract":34,"./interfaces/chem_heater.ract":35,"./interfaces/cryo.ract":36,"./interfaces/error":37,"./interfaces/error.ract":37,"./interfaces/smes.ract":38, "./interfaces/solar_control.ract":39,"./interfaces/space_heater.ract":40,"./interfaces/tanks.ract":41,"ractive-events-keys":5,"ractive-transitions-fade":6,"ractive/ractive.runtime":7}]},{},[42]); \ No newline at end of file diff --git a/tgui/scripts/tgui.ract b/tgui/scripts/tgui.ract index 9cc60f70c6f..0670fe9f7b2 100644 --- a/tgui/scripts/tgui.ract +++ b/tgui/scripts/tgui.ract @@ -27,10 +27,10 @@ component.exports = oninit: -> @on "titlebar.drag", -> @toggle "drag"; false @on "resize.resize", -> @toggle "resize"; false - window.addEventListener "mousemove", (event) => + document.addEventListener "mousemove", (event) => if @get "drag" then dragresize.drag(@, event) else if @get "resize" then dragresize.resize(@, event) - window.addEventListener "mouseup", (event) => + document.addEventListener "mouseup", (event) => if drag = @get "drag" then @set "drag" if resize = @get "resize" then @set "resize" if drag or resize then @set "x"; @set "y" diff --git a/tgui/tgui.html b/tgui/tgui.html index c4be20105b8..cea862bde3d 100644 --- a/tgui/tgui.html +++ b/tgui/tgui.html @@ -3,7 +3,7 @@ - - + - +
From ff6d88f4e6417ce694df52ad5a3dc94db2f44de7 Mon Sep 17 00:00:00 2001 From: AnturK Date: Sun, 3 Jan 2016 18:49:10 +0100 Subject: [PATCH 105/310] Fixes injectors spawned before mutation table is ready --- .../objects/items/weapons/dna_injector.dm | 206 ++++++------------ 1 file changed, 62 insertions(+), 144 deletions(-) diff --git a/code/game/objects/items/weapons/dna_injector.dm b/code/game/objects/items/weapons/dna_injector.dm index 636145d7452..047aa449f2c 100644 --- a/code/game/objects/items/weapons/dna_injector.dm +++ b/code/game/objects/items/weapons/dna_injector.dm @@ -12,13 +12,24 @@ var/list/fields var/list/add_mutations = list() var/list/remove_mutations = list() + + var/list/add_mutations_static = list() + var/list/remove_mutations_static = list() + var/used = 0 /obj/item/weapon/dnainjector/attack_paw(mob/user) return attack_hand(user) +/obj/item/weapon/dnainjector/proc/prepare() + for(var/mut_key in add_mutations_static) + add_mutations.Add(mutations_list[mut_key]) + for(var/mut_key in remove_mutations_static) + remove_mutations.Add(mutations_list[mut_key]) /obj/item/weapon/dnainjector/proc/inject(mob/living/carbon/M, mob/user) + prepare() + if(M.has_dna() && !(M.disabilities & NOCLONE)) M.radiation += rand(20/(damage_coeff ** 2),50/(damage_coeff ** 2)) var/log_msg = "[key_name(user)] injected [key_name(M)] with the [name]" @@ -76,170 +87,123 @@ /obj/item/weapon/dnainjector/antihulk name = "\improper DNA injector (Anti-Hulk)" desc = "Cures green skin." - New() - ..() - remove_mutations.Add(mutations_list[HULK]) + remove_mutations_static = list(HULK) /obj/item/weapon/dnainjector/hulkmut name = "\improper DNA injector (Hulk)" desc = "This will make you big and strong, but give you a bad skin condition." - New() - ..() - add_mutations.Add(mutations_list[HULK]) + add_mutations_static = list(HULK) + /obj/item/weapon/dnainjector/xraymut name = "\improper DNA injector (Xray)" desc = "Finally you can see what the Captain does." - New() - ..() - add_mutations.Add(mutations_list[XRAY]) + add_mutations_static = list(XRAY) /obj/item/weapon/dnainjector/antixray name = "\improper DNA injector (Anti-Xray)" desc = "It will make you see harder." - New() - ..() - remove_mutations.Add(mutations_list[XRAY]) + remove_mutations_static = list(XRAY) ///////////////////////////////////// /obj/item/weapon/dnainjector/antiglasses name = "\improper DNA injector (Anti-Glasses)" desc = "Toss away those glasses!" - New() - ..() - remove_mutations.Add(mutations_list[BADSIGHT]) + remove_mutations_static = list(BADSIGHT) /obj/item/weapon/dnainjector/glassesmut name = "\improper DNA injector (Glasses)" desc = "Will make you need dorkish glasses." - New() - ..() - add_mutations.Add(mutations_list[BADSIGHT]) + add_mutations_static = list(BADSIGHT) /obj/item/weapon/dnainjector/epimut name = "\improper DNA injector (Epi.)" desc = "Shake shake shake the room!" - New() - ..() - add_mutations.Add(mutations_list[EPILEPSY]) + add_mutations_static = list(EPILEPSY) /obj/item/weapon/dnainjector/antiepi name = "\improper DNA injector (Anti-Epi.)" desc = "Will fix you up from shaking the room." - New() - ..() - remove_mutations.Add(mutations_list[EPILEPSY]) + remove_mutations_static = list(EPILEPSY) //////////////////////////////////// /obj/item/weapon/dnainjector/anticough name = "\improper DNA injector (Anti-Cough)" desc = "Will stop that aweful noise." - New() - ..() - remove_mutations.Add(mutations_list[COUGH]) + remove_mutations_static = list(COUGH) /obj/item/weapon/dnainjector/coughmut name = "\improper DNA injector (Cough)" desc = "Will bring forth a sound of horror from your throat." - New() - ..() - add_mutations.Add(mutations_list[COUGH]) + add_mutations_static = list(COUGH) /obj/item/weapon/dnainjector/antidwarf name = "\improper DNA injector (Anti-Dwarfism)" desc = "Helps you grow big and strong." - New() - ..() - remove_mutations.Add(mutations_list[DWARFISM]) + remove_mutations_static = list(DWARFISM) /obj/item/weapon/dnainjector/dwarf name = "\improper DNA injector (Dwarfism)" desc = "Its a small world after all." - New() - ..() - add_mutations.Add(mutations_list[DWARFISM]) + add_mutations_static = list(DWARFISM) /obj/item/weapon/dnainjector/clumsymut name = "\improper DNA injector (Clumsy)" desc = "Makes clown minions." - New() - ..() - add_mutations.Add(mutations_list[CLOWNMUT]) + add_mutations_static = list(CLOWNMUT) /obj/item/weapon/dnainjector/anticlumsy name = "\improper DNA injector (Anti-Clumy)" desc = "Apply this for Security Clown." - New() - ..() - remove_mutations.Add(mutations_list[CLOWNMUT]) + remove_mutations_static = list(CLOWNMUT) /obj/item/weapon/dnainjector/antitour name = "\improper DNA injector (Anti-Tour.)" desc = "Will cure tourrets." - New() - ..() - remove_mutations.Add(mutations_list[TOURETTES]) + remove_mutations_static = list(TOURETTES) /obj/item/weapon/dnainjector/tourmut name = "\improper DNA injector (Tour.)" desc = "Gives you a nasty case off tourrets." - New() - ..() - add_mutations.Add(mutations_list[TOURETTES]) + add_mutations_static = list(TOURETTES) /obj/item/weapon/dnainjector/stuttmut name = "\improper DNA injector (Stutt.)" desc = "Makes you s-s-stuttterrr" - New() - ..() - add_mutations.Add(mutations_list[NERVOUS]) + add_mutations_static = list(NERVOUS) /obj/item/weapon/dnainjector/antistutt name = "\improper DNA injector (Anti-Stutt.)" desc = "Fixes that speaking impairment." - New() - ..() - remove_mutations.Add(mutations_list[NERVOUS]) + remove_mutations_static = list(NERVOUS) /obj/item/weapon/dnainjector/antifire name = "\improper DNA injector (Anti-Fire)" desc = "Cures fire." - New() - ..() - remove_mutations.Add(mutations_list[COLDRES]) + remove_mutations_static = list(COLDRES) /obj/item/weapon/dnainjector/firemut name = "\improper DNA injector (Fire)" desc = "Gives you fire." - New() - ..() - add_mutations.Add(mutations_list[COLDRES]) + add_mutations_static = list(COLDRES) /obj/item/weapon/dnainjector/blindmut name = "\improper DNA injector (Blind)" desc = "Makes you not see anything." - New() - ..() - add_mutations.Add(mutations_list[BLINDMUT]) + add_mutations_static = list(BLINDMUT) /obj/item/weapon/dnainjector/antiblind name = "\improper DNA injector (Anti-Blind)" desc = "ITS A MIRACLE!!!" - New() - ..() - remove_mutations.Add(mutations_list[BLINDMUT]) + remove_mutations_static = list(BLINDMUT) /obj/item/weapon/dnainjector/antitele name = "\improper DNA injector (Anti-Tele.)" desc = "Will make you not able to control your mind." - New() - ..() - remove_mutations.Add(mutations_list[TK]) + remove_mutations_static = list(TK) /obj/item/weapon/dnainjector/telemut name = "\improper DNA injector (Tele.)" desc = "Super brain man!" - New() - ..() - add_mutations.Add(mutations_list[TK]) + add_mutations_static = list(TK) /obj/item/weapon/dnainjector/telemut/darkbundle name = "\improper DNA injector" @@ -248,143 +212,101 @@ /obj/item/weapon/dnainjector/deafmut name = "\improper DNA injector (Deaf)" desc = "Sorry, what did you say?" - New() - ..() - add_mutations.Add(mutations_list[DEAFMUT]) + add_mutations_static = list(DEAFMUT) /obj/item/weapon/dnainjector/antideaf name = "\improper DNA injector (Anti-Deaf)" desc = "Will make you hear once more." - New() - ..() - remove_mutations.Add(mutations_list[DEAFMUT]) + remove_mutations_static = list(DEAFMUT) /obj/item/weapon/dnainjector/h2m name = "\improper DNA injector (Human > Monkey)" desc = "Will make you a flea bag." - New() - ..() - add_mutations.Add(mutations_list[RACEMUT]) + add_mutations_static = list(RACEMUT) /obj/item/weapon/dnainjector/m2h name = "\improper DNA injector (Monkey > Human)" desc = "Will make you...less hairy." - New() - ..() - remove_mutations.Add(mutations_list[RACEMUT]) + remove_mutations_static = list(RACEMUT) /obj/item/weapon/dnainjector/antichameleon name = "\improper DNA injector (Anti-Chameleon)" - New() - ..() - remove_mutations.Add(mutations_list[CHAMELEON]) + remove_mutations_static = list(CHAMELEON) /obj/item/weapon/dnainjector/chameleonmut name = "\improper DNA injector (Chameleon)" - New() - ..() - add_mutations.Add(mutations_list[CHAMELEON]) + add_mutations_static = list(CHAMELEON) /obj/item/weapon/dnainjector/antiwacky name = "\improper DNA injector (Anti-Wacky)" - New() - ..() - remove_mutations.Add(mutations_list[WACKY]) + remove_mutations_static = list(WACKY) /obj/item/weapon/dnainjector/wackymut name = "\improper DNA injector (Wacky)" - New() - ..() - add_mutations.Add(mutations_list[WACKY]) + add_mutations_static = list(WACKY) /obj/item/weapon/dnainjector/antimute name = "\improper DNA injector (Anti-Mute)" - New() - ..() - remove_mutations.Add(mutations_list[MUT_MUTE]) + remove_mutations_static = list(MUT_MUTE) /obj/item/weapon/dnainjector/mutemut name = "\improper DNA injector (Mute)" - New() - ..() - add_mutations.Add(mutations_list[MUT_MUTE]) + add_mutations_static = list(MUT_MUTE) /obj/item/weapon/dnainjector/antismile name = "\improper DNA injector (Anti-Smile)" - New() - ..() - remove_mutations.Add(mutations_list[SMILE]) + remove_mutations_static = list(SMILE) /obj/item/weapon/dnainjector/smilemut name = "\improper DNA injector (Smile)" - New() - ..() - add_mutations.Add(mutations_list[SMILE]) + add_mutations_static = list(SMILE) /obj/item/weapon/dnainjector/unintelligablemut name = "\improper DNA injector (Unintelligable)" - New() - ..() - add_mutations.Add(mutations_list[UNINTELLIGABLE]) + add_mutations_static = list(UNINTELLIGABLE) /obj/item/weapon/dnainjector/antiunintelligable name = "\improper DNA injector (Anti-Unintelligable)" - New() - ..() - remove_mutations.Add(mutations_list[UNINTELLIGABLE]) + remove_mutations_static = list(UNINTELLIGABLE) /obj/item/weapon/dnainjector/swedishmut name = "\improper DNA injector (Swedish)" - New() - ..() - add_mutations.Add(mutations_list[SWEDISH]) + add_mutations_static = list(SWEDISH) /obj/item/weapon/dnainjector/antiswedish name = "\improper DNA injector (Anti-Swedish)" - New() - ..() - remove_mutations.Add(mutations_list[SWEDISH]) + remove_mutations_static = list(SWEDISH) /obj/item/weapon/dnainjector/chavmut name = "\improper DNA injector (Chav)" - New() - ..() - add_mutations.Add(mutations_list[CHAV]) + add_mutations_static = list(CHAV) /obj/item/weapon/dnainjector/antichav name = "\improper DNA injector (Anti-Chav)" - New() - ..() - remove_mutations.Add(mutations_list[CHAV]) + remove_mutations_static = list(CHAV) /obj/item/weapon/dnainjector/elvismut name = "\improper DNA injector (Elvis)" - New() - ..() - add_mutations.Add(mutations_list[ELVIS]) + add_mutations_static = list(ELVIS) /obj/item/weapon/dnainjector/antielvis name = "\improper DNA injector (Anti-Elvis)" - New() - ..() - remove_mutations.Add(mutations_list[ELVIS]) + remove_mutations_static = list(ELVIS) /obj/item/weapon/dnainjector/lasereyesmut name = "\improper DNA injector (Laser Eyes)" - New() - ..() - add_mutations.Add(mutations_list[LASEREYES]) + add_mutations_static = list(LASEREYES) /obj/item/weapon/dnainjector/antilasereyes name = "\improper DNA injector (Anti-Laser Eyes)" - New() - ..() - remove_mutations.Add(mutations_list[LASEREYES]) + remove_mutations_static = list(LASEREYES) /obj/item/weapon/dnainjector/timed var/duration = 600 /obj/item/weapon/dnainjector/timed/inject(mob/living/carbon/M, mob/user) + prepare() + if(M.has_dna() && !(M.disabilities & NOCLONE)) if(M.stat == DEAD) //prevents dead people from having their DNA changed user << "You can't modify [M]'s DNA while \he's dead." @@ -436,13 +358,9 @@ /obj/item/weapon/dnainjector/timed/hulk name = "\improper DNA injector (Hulk)" desc = "This will make you big and strong, but give you a bad skin condition." - New() - ..() - add_mutations.Add(mutations_list[HULK]) + add_mutations_static = list(HULK) /obj/item/weapon/dnainjector/timed/h2m name = "\improper DNA injector (Human > Monkey)" desc = "Will make you a flea bag." - New() - ..() - add_mutations.Add(mutations_list[RACEMUT]) + add_mutations_static = list(RACEMUT) From bbaca08f7486cce72853a2f66c9e228d032e9e93 Mon Sep 17 00:00:00 2001 From: AnturK Date: Sun, 3 Jan 2016 19:19:17 +0100 Subject: [PATCH 106/310] Restores default chameleon projector disguise --- code/game/objects/items/devices/chameleonproj.dm | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/code/game/objects/items/devices/chameleonproj.dm b/code/game/objects/items/devices/chameleonproj.dm index f0c0e0c01b4..a7b4d29e2e1 100644 --- a/code/game/objects/items/devices/chameleonproj.dm +++ b/code/game/objects/items/devices/chameleonproj.dm @@ -12,13 +12,11 @@ var/can_use = 1 var/obj/effect/dummy/chameleon/active_dummy = null var/saved_appearance = null - /* - var/saved_item = /obj/item/weapon/cigbutt - var/saved_icon = 'icons/obj/clothing/masks.dmi' - var/saved_icon_state = "cigbutt" - var/saved_overlays = null - var/saved_underlays = null - */ + +/obj/item/device/chameleon/New() + ..() + var/obj/item/weapon/cigbutt/butt = /obj/item/weapon/cigbutt + saved_appearance = initial(butt.appearance) /obj/item/device/chameleon/dropped() disrupt() From d6a3fb42e2fa91dbd70d97399455426a04ac0759 Mon Sep 17 00:00:00 2001 From: Iamgoofball Date: Sun, 3 Jan 2016 10:23:24 -0800 Subject: [PATCH 107/310] Tesla nerf It no longer bounces shocks nearly as far. --- code/modules/power/tesla/energy_ball.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/power/tesla/energy_ball.dm b/code/modules/power/tesla/energy_ball.dm index e1e2018779e..5d1dfa51755 100644 --- a/code/modules/power/tesla/energy_ball.dm +++ b/code/modules/power/tesla/energy_ball.dm @@ -44,7 +44,7 @@ var/list/blacklisted_tesla_types = list(/obj/machinery/atmospherics, move_the_basket_ball(amount_to_move) pixel_x = 0 pixel_y = 0 - playsound(src.loc, 'sound/magic/lightningbolt.ogg', 100, 1, extrarange = 5) + playsound(src.loc, 'sound/magic/lightningbolt.ogg', 100, 1, extrarange = 15) tesla_zap(src, 7, what_does_the_scouter_say_about_the_balls_power_level) pixel_x = -32 pixel_y = -32 @@ -69,7 +69,7 @@ var/list/blacklisted_tesla_types = list(/obj/machinery/atmospherics, /obj/singularity/energy_ball/proc/handle_energy() if(energy >= 300) energy -= 300 - playsound(src.loc, 'sound/magic/lightning_chargeup.ogg', 100, 1, extrarange = 5) + playsound(src.loc, 'sound/magic/lightning_chargeup.ogg', 100, 1, extrarange = 15) spawn(100) var/obj/singularity/energy_ball/EB = new(loc) orbiting_balls.Add(EB) @@ -114,7 +114,7 @@ var/list/blacklisted_tesla_types = list(/obj/machinery/atmospherics, return closest_atom /proc/tesla_zap(var/atom/source, zap_range = 3, power) - if(power < 500) + if(power < 100) return var/list/tesla_coils = list() var/list/grounding_rods = list() From 51de33e3c4406a4a89dcbeb361b11426dd0a1fda Mon Sep 17 00:00:00 2001 From: Iamgoofball Date: Sun, 3 Jan 2016 10:24:03 -0800 Subject: [PATCH 108/310] haha whoops --- code/modules/power/tesla/energy_ball.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/power/tesla/energy_ball.dm b/code/modules/power/tesla/energy_ball.dm index 5d1dfa51755..bcad58900c5 100644 --- a/code/modules/power/tesla/energy_ball.dm +++ b/code/modules/power/tesla/energy_ball.dm @@ -114,7 +114,7 @@ var/list/blacklisted_tesla_types = list(/obj/machinery/atmospherics, return closest_atom /proc/tesla_zap(var/atom/source, zap_range = 3, power) - if(power < 100) + if(power < 1000) return var/list/tesla_coils = list() var/list/grounding_rods = list() From e1828f363ecc7df376f9cd79ffeb3beb7dbd86df Mon Sep 17 00:00:00 2001 From: Iamgoofball Date: Sun, 3 Jan 2016 10:25:10 -0800 Subject: [PATCH 109/310] nerfs machine bounce range --- code/game/objects/objs.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index 3e716979df8..a2752abc747 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -194,7 +194,7 @@ /obj/proc/tesla_act(var/power) being_shocked = 1 - var/power_bounced = power / 1.3 - tesla_zap(src, 5, power_bounced) + var/power_bounced = power / 2 + tesla_zap(src, 3, power_bounced) spawn(10) being_shocked = 0 From 9b8abaee4e8d661dd0c02309fbf3288712a04de9 Mon Sep 17 00:00:00 2001 From: Kyle Spier-Swenson Date: Sun, 3 Jan 2016 11:08:30 -0800 Subject: [PATCH 110/310] Adds pr announcer/changelog generator github webhook script to tools folder. --- tools/github_webhook_processor.php | 345 +++++++++++++++++++++++++++++ 1 file changed, 345 insertions(+) create mode 100644 tools/github_webhook_processor.php diff --git a/tools/github_webhook_processor.php b/tools/github_webhook_processor.php new file mode 100644 index 00000000000..26a08418d69 --- /dev/null +++ b/tools/github_webhook_processor.php @@ -0,0 +1,345 @@ +getLine()}: " . htmlSpecialChars($e->getMessage()); + die(); +}); +$rawPost = NULL; +if ($hookSecret !== NULL) { + if (!isset($_SERVER['HTTP_X_HUB_SIGNATURE'])) { + throw new \Exception("HTTP header 'X-Hub-Signature' is missing."); + } elseif (!extension_loaded('hash')) { + throw new \Exception("Missing 'hash' extension to check the secret code validity."); + } + list($algo, $hash) = explode('=', $_SERVER['HTTP_X_HUB_SIGNATURE'], 2) + array('', ''); + if (!in_array($algo, hash_algos(), TRUE)) { + throw new \Exception("Hash algorithm '$algo' is not supported."); + } + $rawPost = file_get_contents('php://input'); + if ($hash !== hash_hmac($algo, $rawPost, $hookSecret)) { + throw new \Exception('Hook secret does not match.'); + } +} +if (!isset($_SERVER['HTTP_CONTENT_TYPE'])) { + throw new \Exception("Missing HTTP 'Content-Type' header."); +} elseif (!isset($_SERVER['HTTP_X_GITHUB_EVENT'])) { + throw new \Exception("Missing HTTP 'X-Github-Event' header."); +} +switch ($_SERVER['HTTP_CONTENT_TYPE']) { + case 'application/json': + $json = $rawPost ?: file_get_contents('php://input'); + break; + case 'application/x-www-form-urlencoded': + $json = $_POST['payload']; + break; + default: + throw new \Exception("Unsupported content type: $_SERVER[HTTP_CONTENT_TYPE]"); +} +# Payload structure depends on triggered event +# https://developer.github.com/v3/activity/events/types/ +$payload = json_decode($json, true); + +switch (strtolower($_SERVER['HTTP_X_GITHUB_EVENT'])) { + case 'ping': + echo 'pong'; + break; + case 'pull_request': + handle_pr($payload); + break; + default: + header('HTTP/1.0 404 Not Found'); + echo "Event:$_SERVER[HTTP_X_GITHUB_EVENT] Payload:\n"; + print_r($payload); # For debug only. Can be found in GitHub hook log. + die(); +} +function handle_pr($payload) { + $action = 'opened'; + switch ($payload["action"]) { + case 'opened': + case 'reopened': + $action = $payload['action']; + break; + case 'closed': + if (!$payload['pull_request']['merged']) { + $action = 'closed'; + } + else { + $action = 'merged'; + checkchangelog($payload, true); + } + break; + default: + return; + } + + if (strtolower(substr($payload['pull_request']['title'], 0, 3)) == '[s]') { + echo "PR Announcement Halted; Secret tag detected.\n"; + return; + } + + $msg = 'Pull Request '.$action.' by '.htmlSpecialChars($payload['sender']['login']).': '.htmlSpecialChars('#'.$payload['pull_request']['number'].' '.$payload['pull_request']['user']['login'].' - '.$payload['pull_request']['title']).''; + sendtoallservers('?announce='.urlencode($msg)); + +} + +function checkchangelog($payload, $merge = false) { + global $apiKey; + if (!$merge) + return; + if (!isset($payload['pull_request']) || !isset($payload['pull_request']['body'])) { + return; + } + if (!isset($payload['pull_request']['user']) || !isset($payload['pull_request']['user']['login'])) { + return; + } + $body = $payload['pull_request']['body']; + $body = str_replace("\r\n", "\n", $body); + $body = explode("\n", $body); + $username = $payload['pull_request']['user']['login']; + $incltag = false; + $changelogbody = array(); + $currentchangelogblock = array(); + $foundcltag = false; + foreach ($body as $line) { + $line = trim($line); + if (substr($line,0,4) == ':cl:') { + $incltag = true; + $foundcltag = true; + $pos = strpos($line, " "); + if ($pos) + $username = substr($line, $pos+1); + continue; + } else if (substr($line,0,5) == '/:cl:' || substr($line,0,6) == '/ :cl:' || substr($line,0,5) == ':/cl:') { + $incltag = false; + $changelogbody = array_merge($changelogbody, $currentchangelogblock); + continue; + } + if (!$incltag) + continue; + + $firstword = explode(' ', $line)[0]; + $pos = strpos($line, " "); + $item = ''; + if ($pos) { + $firstword = trim(substr($line, 0, $pos)); + $item = trim(substr($line, $pos+1)); + } else { + $firstword = $line; + } + + if (!strlen($firstword)) { + $currentchangelogblock[count($currentchangelogblock)-1]['body'] .= "\n"; + continue; + } + //not a prefix line. + //so we add it to the last changelog entry as a separate line + if (!strlen($firstword) || $firstword[strlen($firstword)-1] != ':') { + if (count($currentchangelogblock) <= 0) + continue; + $currentchangelogblock[count($currentchangelogblock)-1]['body'] .= "\n".$line; + continue; + } + $cltype = strtolower(substr($firstword, 0, -1)); + switch ($cltype) { + case 'fix': + case 'fixes': + case 'bugfix': + $currentchangelogblock[] = array('type' => 'bugfix', 'body' => $item); + break; + case 'wip': + $currentchangelogblock[] = array('type' => 'wip', 'body' => $item); + break; + case 'rsctweak': + case 'tweaks': + case 'tweak': + $currentchangelogblock[] = array('type' => 'tweak', 'body' => $item); + break; + case 'soundadd': + $currentchangelogblock[] = array('type' => 'soundadd', 'body' => $item); + break; + case 'sounddel': + $currentchangelogblock[] = array('type' => 'sounddel', 'body' => $item); + break; + case 'add': + case 'adds': + case 'rscadd': + $currentchangelogblock[] = array('type' => 'rscadd', 'body' => $item); + break; + case 'del': + case 'dels': + case 'rscdel': + $currentchangelogblock[] = array('type' => 'rscdel', 'body' => $item); + break; + case 'imageadd': + $currentchangelogblock[] = array('type' => 'imageadd', 'body' => $item); + break; + case 'imagedel': + $currentchangelogblock[] = array('type' => 'imagedel', 'body' => $item); + break; + case 'typo': + case 'spellcheck': + $currentchangelogblock[] = array('type' => 'spellcheck', 'body' => $item); + break; + case 'experimental': + case 'experiment': + $currentchangelogblock[] = array('type' => 'experiment', 'body' => $item); + break; + case 'tgs': + $currentchangelogblock[] = array('type' => 'tgs', 'body' => $item); + break; + default: + //we add it to the last changelog entry as a separate line + if (count($currentchangelogblock) > 0) + $currentchangelogblock[count($currentchangelogblock)-1]['body'] .= "\n".$line; + break; + } + } + + if (!count($changelogbody)) + return; + + $file = 'author: '.$username."\n"; + $file .= "delete-after: True\n"; + $file .= "changes: \n"; + foreach ($changelogbody as $changelogitem) { + $type = $changelogitem['type']; + $body = trim(str_replace(array("\\", '"'), array("\\\\", "\\\""), $changelogitem['body'])); + $file .= ' - '.$type.': "'.$body.'"'; + $file .= "\n"; + } + $content = array ( + 'message' => 'Automatic changelog generation for PR #'.$payload['pull_request']['number'], + 'content' => base64_encode($file) + ); + $scontext = array('http' => array( + 'method' => 'PUT', + 'header' => + "Content-type: application/json\r\n". + 'Authorization: token ' . $apiKey, + 'content' => json_encode($content), + 'ignore_errors' => true, + 'user_agent' => 'tgstation13.org-Github-Automation-Tools' + )); + $filename = '/html/changelogs/AutoChangeLog-pr-'.$payload['pull_request']['number'].'.yml'; + echo file_get_contents($payload['pull_request']['base']['repo']['url'].'/contents'.$filename, false, stream_context_create($scontext)); +} + +function sendtoallservers($str) { + global $servers; + foreach ($servers as $serverid => $server) { + if (isset($server['comskey'])) + $rtn = export($server['address'], $server['port'], $str.'&key='.$server['comskey']); + else + $rtn = export($server['address'], $server['port'], $str); + + echo "Server Number $serverid replied: $rtn\n"; + } +} + + + +function export($addr, $port, $str) { + global $error; + // All queries must begin with a question mark (ie "?players") + if($str{0} != '?') $str = ('?' . $str); + + /* --- Prepare a packet to send to the server (based on a reverse-engineered packet structure) --- */ + $query = "\x00\x83" . pack('n', strlen($str) + 6) . "\x00\x00\x00\x00\x00" . $str . "\x00"; + + /* --- Create a socket and connect it to the server --- */ + $server = socket_create(AF_INET,SOCK_STREAM,SOL_TCP) or exit("ERROR"); + socket_set_option($server, SOL_SOCKET, SO_SNDTIMEO, array('sec' => 2, 'usec' => 0)); //sets connect and send timeout to 2 seconds + if(!socket_connect($server,$addr,$port)) { + $error = true; + return "ERROR"; + } + + + /* --- Send bytes to the server. Loop until all bytes have been sent --- */ + $bytestosend = strlen($query); + $bytessent = 0; + while ($bytessent < $bytestosend) { + //echo $bytessent.'
'; + $result = socket_write($server,substr($query,$bytessent),$bytestosend-$bytessent); + //echo 'Sent '.$result.' bytes
'; + if ($result===FALSE) die(socket_strerror(socket_last_error())); + $bytessent += $result; + } + + /* --- Idle for a while until recieved bytes from game server --- */ + $result = socket_read($server, 10000, PHP_BINARY_READ); + socket_close($server); // we don't need this anymore + + if($result != "") { + if($result{0} == "\x00" || $result{1} == "\x83") { // make sure it's the right packet format + + // Actually begin reading the output: + $sizebytes = unpack('n', $result{2} . $result{3}); // array size of the type identifier and content + $size = $sizebytes[1] - 1; // size of the string/floating-point (minus the size of the identifier byte) + + if($result{4} == "\x2a") { // 4-byte big-endian floating-point + $unpackint = unpack('f', $result{5} . $result{6} . $result{7} . $result{8}); // 4 possible bytes: add them up together, unpack them as a floating-point + return $unpackint[1]; + } + else if($result{4} == "\x06") { // ASCII string + $unpackstr = ""; // result string + $index = 5; // string index + + while($size > 0) { // loop through the entire ASCII string + $size--; + $unpackstr .= $result{$index}; // add the string position to return string + $index++; + } + return $unpackstr; + } + } + } + //if we get to this point, something went wrong; + $error = true; + return "ERROR"; +} +?> From 4a3324b673c493b7af82b9db32a6668bba84f3cc Mon Sep 17 00:00:00 2001 From: AnturK Date: Sun, 3 Jan 2016 20:25:48 +0100 Subject: [PATCH 111/310] Adds away areas to ghost teleport/ admin jump list --- code/__HELPERS/unsorted.dm | 5 +++-- code/modules/awaymissions/zlevel.dm | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 76623d41e30..c084a54bf02 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -674,9 +674,10 @@ Turf and target are seperate in case you want to teleport some distance from a t if(A.vars.Find(lowertext(varname))) return 1 else return 0 -//Returns sortedAreas list if populated -//else populates the list first before returning it +//Repopulates sortedAreas list /proc/SortAreas() + sortedAreas = list() + for(var/area/A in world) sortedAreas.Add(A) diff --git a/code/modules/awaymissions/zlevel.dm b/code/modules/awaymissions/zlevel.dm index 4219bafe595..eb284af8c41 100644 --- a/code/modules/awaymissions/zlevel.dm +++ b/code/modules/awaymissions/zlevel.dm @@ -34,6 +34,7 @@ var/global/list/potentialSpaceRuins = generateMapList(filename = "config/spaceRu world << "Away mission loaded." + SortAreas() //To add recently loaded areas else world << "No away missions found." return From ff13690537402ff2077b603580674fa2e01e6aeb Mon Sep 17 00:00:00 2001 From: Dorsisdwarf Date: Sun, 3 Jan 2016 19:48:34 +0000 Subject: [PATCH 112/310] Prevents infestation of corpses already containing a body_egg --- code/modules/mob/living/simple_animal/hostile/headcrab.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/modules/mob/living/simple_animal/hostile/headcrab.dm b/code/modules/mob/living/simple_animal/hostile/headcrab.dm index 9f4c0d7d686..af7b2e6a834 100644 --- a/code/modules/mob/living/simple_animal/hostile/headcrab.dm +++ b/code/modules/mob/living/simple_animal/hostile/headcrab.dm @@ -43,6 +43,9 @@ // Changeling egg can survive in aliens! var/mob/living/carbon/C = target if(C.stat == DEAD) + if(is_type_in_list(/obj/item/organ/internal/body_egg, C.GetAllContents()) + src << "A foreign presence repels us from this body. Perhaps we should try to infest another?" + return Infect(target) src << "With our egg laid, our death approaches rapidly..." spawn(100) From 6c7fcdbf9ffbc5854315fda7fabd757204f1fb86 Mon Sep 17 00:00:00 2001 From: Dorsisdwarf Date: Sun, 3 Jan 2016 20:49:11 +0000 Subject: [PATCH 113/310] Parenthesis --- code/modules/mob/living/simple_animal/hostile/headcrab.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/simple_animal/hostile/headcrab.dm b/code/modules/mob/living/simple_animal/hostile/headcrab.dm index af7b2e6a834..c379c913063 100644 --- a/code/modules/mob/living/simple_animal/hostile/headcrab.dm +++ b/code/modules/mob/living/simple_animal/hostile/headcrab.dm @@ -43,7 +43,7 @@ // Changeling egg can survive in aliens! var/mob/living/carbon/C = target if(C.stat == DEAD) - if(is_type_in_list(/obj/item/organ/internal/body_egg, C.GetAllContents()) + if(is_type_in_list(/obj/item/organ/internal/body_egg, C.GetAllContents())) src << "A foreign presence repels us from this body. Perhaps we should try to infest another?" return Infect(target) From 8dfd29e84dda446853e8ad3061f3328a65f01958 Mon Sep 17 00:00:00 2001 From: Nerd Lord Date: Sun, 3 Jan 2016 15:49:16 -0500 Subject: [PATCH 114/310] Adds follow links to overmind and revenant chat --- code/game/gamemodes/blob/overmind.dm | 6 ++++-- code/game/gamemodes/miniantags/revenant/revenant.dm | 9 +++++---- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/code/game/gamemodes/blob/overmind.dm b/code/game/gamemodes/blob/overmind.dm index 2a0b8ea8575..439b1b01366 100644 --- a/code/game/gamemodes/blob/overmind.dm +++ b/code/game/gamemodes/blob/overmind.dm @@ -93,8 +93,10 @@ var/rendered = "Blob Telepathy, [name]([blob_reagent_datum.name]) [message_a]" for(var/mob/M in mob_list) - if(isovermind(M) || isobserver(M) || istype(M, /mob/living/simple_animal/hostile/blob)) - M.show_message(rendered, 2) + if(isovermind(M) || istype(M, /mob/living/simple_animal/hostile/blob)) + M << rendered + if(isobserver(M)) + M << "(F)[rendered]" /mob/camera/blob/emote(act,m_type=1,message = null) return diff --git a/code/game/gamemodes/miniantags/revenant/revenant.dm b/code/game/gamemodes/miniantags/revenant/revenant.dm index ed153281399..d9b1493584b 100644 --- a/code/game/gamemodes/miniantags/revenant/revenant.dm +++ b/code/game/gamemodes/miniantags/revenant/revenant.dm @@ -238,11 +238,12 @@ if(!message) return log_say("[key_name(src)] : [message]") + var/rendered = "[src] says, \"[message]\"" for(var/mob/M in mob_list) - if (istype(M, /mob/new_player)) - continue - if(istype(M, /mob/living/simple_animal/revenant) || M.stat == DEAD) - M << "[src] says, \"[message]\"" //Can commune with the dead + if(istype(M, /mob/living/simple_animal/revenant)) + M << rendered + if(isobserver(M)) + M << "(F)[rendered]" return From 34019aefd2024f2af2c1ac3869a0668f280f1e60 Mon Sep 17 00:00:00 2001 From: Bjorn Neergaard Date: Sun, 3 Jan 2016 15:19:05 -0600 Subject: [PATCH 115/310] Clean up chem dispenser UI --- .../chemistry/machinery/chem_dispenser.dm | 10 +++---- tgui/assets/tgui.css | 2 +- tgui/assets/tgui.js | 6 ++--- tgui/scripts/components/display.ract | 4 ++- tgui/scripts/interfaces/chem_dispenser.ract | 26 +++++++------------ tgui/styles/components/display.styl | 2 +- 6 files changed, 22 insertions(+), 28 deletions(-) diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm index c65d57658b2..a5ebf395dec 100644 --- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm +++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm @@ -88,7 +88,7 @@ /obj/machinery/chem_dispenser/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0) ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open = force_open) if (!ui) - ui = new(user, src, ui_key, "chem_dispenser", name, 550, 700) + ui = new(user, src, ui_key, "chem_dispenser", name, 550, 550) ui.open() /obj/machinery/chem_dispenser/get_ui_data() @@ -129,11 +129,9 @@ switch(action) if("amount") - amount = round(text2num(params["amount"]), 5) // round to nearest 5 - if (amount < 0) // Since the user can actually type the commands himself, some sanity checking - amount = 0 - if (amount > 100) - amount = 100 + var/amount = text2num(params["amount"]) + if(amount in beaker.possible_transfer_amounts) + src.amount = amount if("dispense") if(beaker && dispensable_reagents.Find(params["reagent"])) var/datum/reagents/R = beaker.reagents diff --git a/tgui/assets/tgui.css b/tgui/assets/tgui.css index f7911a750af..a1932ad1687 100644 --- a/tgui/assets/tgui.css +++ b/tgui/assets/tgui.css @@ -1 +1 @@ -.normal{color:#40628a}.good{color:#537d29}.average{color:#be6209}.bad{color:#b00e0e}.highlight,.label{color:#8ba5c4}.dark{color:#272727}html{box-sizing:border-box;min-height:100%;margin:0;cursor:default}*,:after,:before{box-sizing:inherit}body{min-height:100%;height:100%;margin:0 6px;background-color:#202020;font-family:Verdana,Geneva,sans-serif;font-size:12px;color:#fff}main{display:block;margin-top:32px;padding-top:3px}hr{height:2px;background-color:#40628a;border:none}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}.bar .barText,span.button{color:#fff;font-size:12px;font-weight:400;font-style:normal;text-decoration:none}.bold{font-weight:700}.italic{font-style:italic}[unselectable]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.bar{display:inline-block;position:relative;vertical-align:middle;width:100%;height:20px;line-height:17px;padding:1px;border:1px solid #40628a;background:#272727}.bar .barText{position:absolute;top:0;right:3px}.bar .barFill{display:block;height:100%;transition:background-color 1s;background-color:#40628a}.bar .barFill.good{background-color:#537d29}.bar .barFill.average{background-color:#be6209}.bar .barFill.bad{background-color:#b00e0e}.bar .barFill.highlight{background-color:#8ba5c4}span.button{display:inline-block;vertical-align:middle;height:20px;line-height:19px;padding:0 5px;white-space:nowrap;transition:background-color .25s,box-shadow .25s}span.button .fa{padding-right:2px}span.button.normal{background-color:#40628a}span.button.normal:focus,span.button.normal:hover{outline:0;box-shadow:inset 0 0 100px 100px hsla(0,0%,100%,.15)}span.button.disabled{background-color:#999}span.button.selected{background-color:#2f943c}span.button.caution{background-color:#9a9d00}span.button.danger{background-color:#9d0808}span.button.gridable{width:125px;margin:2px 0}div.display,div.notice{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)}div.display header,div.notice header,div.subdisplay header{display:block;position:relative;width:100%;padding:0 4px;margin-bottom:6px;border-bottom:2px solid #40628a}div.display header .button,div.notice header .button,div.subdisplay header .button{position:absolute;bottom:6px;right:4px}div.display article,div.notice article,div.subdisplay article{display:table;width:100%;border-spacing:4px 6px}div.notice{background-color:#bb9b68;background-image:repeating-linear-gradient(-45deg,#bb9b68,#bb9b68 10px,#b1905d 0,#b1905d 20px);margin:8px 0;box-shadow:none;color:#000;font-weight:700;font-style:italic}div.notice .button{outline:1px solid #272727}div.notice .label{color:#000}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)}section .content,section .label,section .line{display:table-cell;margin:0;text-align:left;vertical-align:middle}section{display:table-row;width:100%;padding:3px 0}section:not(first-child){padding-top:4px}section .label{width:1%;padding-right:32px;white-space:nowrap;color:#8ba5c4}section .content:not(:last-child){padding-right:16px}section .line{width:100%}section .buttoninfo{margin-left:5px}div.subdisplay{width:100%;margin:0}header.titlebar .close,header.titlebar .minimize{display:inline-block;position:relative;padding:7px;margin:-7px;color:#98b0c3}header.titlebar .close:hover,header.titlebar .minimize:hover{color:#a7bccc}header.titlebar{position:fixed;top:0;left:0;width:100%;height:32px;background-color:#363636;box-shadow:0 3px 3px rgba(0,0,0,.1)}header.titlebar .statusicon{position:absolute;top:4px;left:12px;transition:color .5s}header.titlebar .title{position:absolute;top:6px;left:46px;color:#98b0c3;font-size:16px;white-space:nowrap}header.titlebar .minimize{position:absolute;top:6px;right:46px}header.titlebar .close{position:absolute;top:4px;right:12px}.wf-inactive .minimize:after{content:"-"}.wf-inactive .close:after{content:"X"}body.generic{background:linear-gradient(180deg,#2a2a2a 0,#202020)}body.generic,body.nanotrasen{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2a2a2a',endColorstr='#ff202020',GradientType=0)}body.nanotrasen{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjAiIHZpZXdCb3g9IjAgMCA0MjUgMjAwIiBvcGFjaXR5PSIuMjUiPgogIDxwYXRoIGQ9Im0gMTc4LjAwMzk5LDAuMDM4NjkgLTcxLjIwMzkzLDAgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIC02Ljc2MTM0LDYuMDI1NTUgbCAwLDE4Ny44NzE0NyBhIDYuNzYxMzQyMiw2LjAyNTU0OTUgMCAwIDAgNi43NjEzNCw2LjAyNTU0IGwgNTMuMTA3MiwwIGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCA2Ljc2MTM1LC02LjAyNTU0IGwgMCwtMTAxLjU0NDAxOCA3Mi4yMTYyOCwxMDQuNjk5Mzk4IGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCA1Ljc2MDE1LDIuODcwMTYgbCA3My41NTQ4NywwIGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCA2Ljc2MTM1LC02LjAyNTU0IGwgMCwtMTg3Ljg3MTQ3IGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCAtNi43NjEzNSwtNi4wMjU1NSBsIC01NC43MTY0NCwwIGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCAtNi43NjEzMyw2LjAyNTU1IGwgMCwxMDIuNjE5MzUgTCAxODMuNzY0MTMsMi45MDg4NiBhIDYuNzYxMzQyMiw2LjAyNTU0OTUgMCAwIDAgLTUuNzYwMTQsLTIuODcwMTcgeiIgLz4KICA8cGF0aCBkPSJNIDQuODQ0NjMzMywyMi4xMDg3NSBBIDEzLjQxMjAzOSwxMi41MDE4NDIgMCAwIDEgMTMuNDc3NTg4LDAuMDM5MjQgbCA2Ni4xMTgzMTUsMCBhIDUuMzY0ODE1OCw1LjAwMDczNyAwIDAgMSA1LjM2NDgyMyw1LjAwMDczIGwgMCw3OS44NzkzMSB6IiAvPgogIDxwYXRoIGQ9Im0gNDIwLjE1NTM1LDE3Ny44OTExOSBhIDEzLjQxMjAzOCwxMi41MDE4NDIgMCAwIDEgLTguNjMyOTUsMjIuMDY5NTEgbCAtNjYuMTE4MzIsMCBhIDUuMzY0ODE1Miw1LjAwMDczNyAwIDAgMSAtNS4zNjQ4MiwtNS4wMDA3NCBsIDAsLTc5Ljg3OTMxIHoiIC8+Cjwvc3ZnPgo=") no-repeat fixed center/70% 70%,linear-gradient(180deg,#2a2a2a 0,#202020)} \ No newline at end of file +.normal{color:#40628a}.good{color:#537d29}.average{color:#be6209}.bad{color:#b00e0e}.highlight,.label{color:#8ba5c4}.dark{color:#272727}html{box-sizing:border-box;min-height:100%;margin:0;cursor:default}*,:after,:before{box-sizing:inherit}body{min-height:100%;height:100%;margin:0 6px;background-color:#202020;font-family:Verdana,Geneva,sans-serif;font-size:12px;color:#fff}main{display:block;margin-top:32px;padding-top:3px}hr{height:2px;background-color:#40628a;border:none}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}.bar .barText,span.button{color:#fff;font-size:12px;font-weight:400;font-style:normal;text-decoration:none}.bold{font-weight:700}.italic{font-style:italic}[unselectable]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.bar{display:inline-block;position:relative;vertical-align:middle;width:100%;height:20px;line-height:17px;padding:1px;border:1px solid #40628a;background:#272727}.bar .barText{position:absolute;top:0;right:3px}.bar .barFill{display:block;height:100%;transition:background-color 1s;background-color:#40628a}.bar .barFill.good{background-color:#537d29}.bar .barFill.average{background-color:#be6209}.bar .barFill.bad{background-color:#b00e0e}.bar .barFill.highlight{background-color:#8ba5c4}span.button{display:inline-block;vertical-align:middle;height:20px;line-height:19px;padding:0 5px;white-space:nowrap;transition:background-color .25s,box-shadow .25s}span.button .fa{padding-right:2px}span.button.normal{background-color:#40628a}span.button.normal:focus,span.button.normal:hover{outline:0;box-shadow:inset 0 0 100px 100px hsla(0,0%,100%,.15)}span.button.disabled{background-color:#999}span.button.selected{background-color:#2f943c}span.button.caution{background-color:#9a9d00}span.button.danger{background-color:#9d0808}span.button.gridable{width:125px;margin:2px 0}div.display,div.notice{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)}div.display header,div.notice header,div.subdisplay header{display:block;position:relative;width:100%;padding:0 4px;margin-bottom:6px;border-bottom:2px solid #40628a}div.display header .buttonRight,div.notice header .buttonRight,div.subdisplay header .buttonRight{position:absolute;bottom:6px;right:4px}div.display article,div.notice article,div.subdisplay article{display:table;width:100%;border-spacing:4px 6px}div.notice{background-color:#bb9b68;background-image:repeating-linear-gradient(-45deg,#bb9b68,#bb9b68 10px,#b1905d 0,#b1905d 20px);margin:8px 0;box-shadow:none;color:#000;font-weight:700;font-style:italic}div.notice .button{outline:1px solid #272727}div.notice .label{color:#000}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)}section .content,section .label,section .line{display:table-cell;margin:0;text-align:left;vertical-align:middle}section{display:table-row;width:100%;padding:3px 0}section:not(first-child){padding-top:4px}section .label{width:1%;padding-right:32px;white-space:nowrap;color:#8ba5c4}section .content:not(:last-child){padding-right:16px}section .line{width:100%}section .buttoninfo{margin-left:5px}div.subdisplay{width:100%;margin:0}header.titlebar .close,header.titlebar .minimize{display:inline-block;position:relative;padding:7px;margin:-7px;color:#98b0c3}header.titlebar .close:hover,header.titlebar .minimize:hover{color:#a7bccc}header.titlebar{position:fixed;top:0;left:0;width:100%;height:32px;background-color:#363636;box-shadow:0 3px 3px rgba(0,0,0,.1)}header.titlebar .statusicon{position:absolute;top:4px;left:12px;transition:color .5s}header.titlebar .title{position:absolute;top:6px;left:46px;color:#98b0c3;font-size:16px;white-space:nowrap}header.titlebar .minimize{position:absolute;top:6px;right:46px}header.titlebar .close{position:absolute;top:4px;right:12px}.wf-inactive .minimize:after{content:"-"}.wf-inactive .close:after{content:"X"}body.generic{background:linear-gradient(180deg,#2a2a2a 0,#202020)}body.generic,body.nanotrasen{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2a2a2a',endColorstr='#ff202020',GradientType=0)}body.nanotrasen{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjAiIHZpZXdCb3g9IjAgMCA0MjUgMjAwIiBvcGFjaXR5PSIuMjUiPgogIDxwYXRoIGQ9Im0gMTc4LjAwMzk5LDAuMDM4NjkgLTcxLjIwMzkzLDAgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIC02Ljc2MTM0LDYuMDI1NTUgbCAwLDE4Ny44NzE0NyBhIDYuNzYxMzQyMiw2LjAyNTU0OTUgMCAwIDAgNi43NjEzNCw2LjAyNTU0IGwgNTMuMTA3MiwwIGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCA2Ljc2MTM1LC02LjAyNTU0IGwgMCwtMTAxLjU0NDAxOCA3Mi4yMTYyOCwxMDQuNjk5Mzk4IGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCA1Ljc2MDE1LDIuODcwMTYgbCA3My41NTQ4NywwIGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCA2Ljc2MTM1LC02LjAyNTU0IGwgMCwtMTg3Ljg3MTQ3IGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCAtNi43NjEzNSwtNi4wMjU1NSBsIC01NC43MTY0NCwwIGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCAtNi43NjEzMyw2LjAyNTU1IGwgMCwxMDIuNjE5MzUgTCAxODMuNzY0MTMsMi45MDg4NiBhIDYuNzYxMzQyMiw2LjAyNTU0OTUgMCAwIDAgLTUuNzYwMTQsLTIuODcwMTcgeiIgLz4KICA8cGF0aCBkPSJNIDQuODQ0NjMzMywyMi4xMDg3NSBBIDEzLjQxMjAzOSwxMi41MDE4NDIgMCAwIDEgMTMuNDc3NTg4LDAuMDM5MjQgbCA2Ni4xMTgzMTUsMCBhIDUuMzY0ODE1OCw1LjAwMDczNyAwIDAgMSA1LjM2NDgyMyw1LjAwMDczIGwgMCw3OS44NzkzMSB6IiAvPgogIDxwYXRoIGQ9Im0gNDIwLjE1NTM1LDE3Ny44OTExOSBhIDEzLjQxMjAzOCwxMi41MDE4NDIgMCAwIDEgLTguNjMyOTUsMjIuMDY5NTEgbCAtNjYuMTE4MzIsMCBhIDUuMzY0ODE1Miw1LjAwMDczNyAwIDAgMSAtNS4zNjQ4MiwtNS4wMDA3NCBsIDAsLTc5Ljg3OTMxIHoiIC8+Cjwvc3ZnPgo=") no-repeat fixed center/70% 70%,linear-gradient(180deg,#2a2a2a 0,#202020)} \ No newline at end of file diff --git a/tgui/assets/tgui.js b/tgui/assets/tgui.js index 8e558814ac0..968f31104f4 100644 --- a/tgui/assets/tgui.js +++ b/tgui/assets/tgui.js @@ -4,6 +4,6 @@ return this.parentWindow}},textContent:{get:function(){return 11===this.nodeType }function ha(t){return 1===t.length&&t[0].t===xc}function fa(t,e){var n;for(n in e)e.hasOwnProperty(n)&&da(t.instance,t.root,n,e[n])}function da(t,e,n,r){"string"!=typeof r&&p("Components currently only support simple events - you cannot include arguments. Sorry!"),t.on(n,function(){var t,n;return arguments.length&&arguments[0]&&arguments[0].node&&(t=Array.prototype.shift.call(arguments)),n=Array.prototype.slice.call(arguments),Bs(e,r,{event:t,args:n}),!1})}function ma(t,e){var n,r;if(!e)throw Error('Component "'+this.name+'" not found');n=this.parentFragment=t.parentFragment,r=n.root,this.root=r,this.type=Oc,this.name=t.template.e,this.index=t.index,this.indexRefBindings={},this.yielders={},this.resolvers=[],Om(this,e,t.template.a,t.template.f,t.template.p),Am(this,t.template.v),(t.template.t0||t.template.t1||t.template.t2||t.template.o)&&m('The "intro", "outro" and "decorator" directives have no effect on components',{ractive:this.instance}),Pm(this)}function va(t,e){function n(n){n.rebind(t,e)}var r;this.resolvers.forEach(n);for(var i in this.yielders)this.yielders[i][0]&&n(this.yielders[i][0]);(r=this.root._liveComponentQueries["_"+this.name])&&r._makeDirty()}function ga(){var t=this.instance;return t.render(this.parentFragment.getNode()),this.rendered=!0,t.fragment.detach()}function ba(){return""+this.instance.fragment}function ya(){var t=this.instance;this.resolvers.forEach(G),wa(this),t._observers.forEach(Q),t.fragment.unbind(),t.viewmodel.teardown(),t.fragment.rendered&&t.el.__ractive_instances__&&L(t.el.__ractive_instances__,t),Lm.fire(t)}function wa(t){var e,n;e=t.root;do(n=e._liveComponentQueries["_"+t.name])&&n._remove(t);while(e=e.parent)}function xa(t){this.shouldDestroy=t,this.instance.unrender()}function _a(t){var e=this;this.owner=t.owner,this.parent=this.owner.parentFragment,this.root=t.root,this.pElement=t.pElement,this.context=t.context,this.index=t.index,this.key=t.key,this.registeredIndexRefs=[],this.cssIds="cssIds"in t?t.cssIds:this.parent?this.parent.cssIds:null,this.items=t.template.map(function(n,r){return ka({parentFragment:e,pElement:t.pElement,template:n,index:r})}),this.value=this.argsList=null,this.dirtyArgs=this.dirtyValue=!0,this.bound=!0}function ka(t){if("string"==typeof t.template)return new vl(t);switch(t.template.t){case Ac:return new Hm(t);case xc:return new ql(t);case kc:return new up(t);case _c:return new Cp(t);case Ec:var e=void 0;return(e=dd(t.parentFragment.root,t.template.e))?new Um(t,e):new nd(t);case Tc:return new fd(t);case Cc:return new Bm(t);case Pc:return new Wm(t);default:throw Error("Something very strange happened. Please file an issue at https://github.com/ractivejs/ractive/issues. Thanks!")}}function Ea(t,e){(!this.owner||this.owner.hasContext)&&_(this,"context",t,e),this.items.forEach(function(n){n.rebind&&n.rebind(t,e)})}function Ta(){var t;return 1===this.items.length?t=this.items[0].render():(t=document.createDocumentFragment(),this.items.forEach(function(e){t.appendChild(e.render())})),this.rendered=!0,t}function Ca(t){return this.items?this.items.map(t?Oa:Sa).join(""):""}function Sa(t){return""+t}function Oa(t){return t.toString(!0)}function Aa(){this.bound&&(this.items.forEach(Pa),this.bound=!1)}function Pa(t){t.unbind&&t.unbind()}function ja(t){if(!this.rendered)throw Error("Attempted to unrender a fragment that was not rendered");this.items.forEach(function(e){return e.unrender(t)}),this.rendered=!1}function Na(t){var e,n,r,i,a;if(t=t||{},"object"!=typeof t)throw Error("The reset method takes either no arguments, or an object containing new data");for((n=this.viewmodel.wrapped[""])&&n.reset?n.reset(t)===!1&&this.viewmodel.reset(t):this.viewmodel.reset(t),r=oc.reset(this),i=r.length;i--;)if(rv.indexOf(r[i])>-1){a=!0;break}if(a){var o=void 0;this.viewmodel.mark(Go),(o=this.component)&&(o.shouldDestroy=!0),this.unrender(),o&&(o.shouldDestroy=!1),this.fragment.template!==this.template&&(this.fragment.unbind(),this.fragment=new ev({template:this.template,root:this,owner:this})),e=this.render(this.el,this.anchor)}else e=ms.start(this,!0),this.viewmodel.mark(Go),ms.end();return iv.fire(this,t),e}function Fa(t){var e,n;Ku.init(null,this,{template:t}),e=this.transitionsEnabled,this.transitionsEnabled=!1,(n=this.component)&&(n.shouldDestroy=!0),this.unrender(),n&&(n.shouldDestroy=!1),this.fragment.unbind(),this.fragment=new ev({template:this.template,root:this,owner:this}),this.render(this.el,this.anchor),this.transitionsEnabled=e}function Ma(t,e){var n,r;if(r=ms.start(this,!0),c(t)){n=t;for(t in n)n.hasOwnProperty(t)&&(e=n[t],Ra(this,t,e))}else Ra(this,t,e);return ms.end(),r}function Ra(t,e,n){e=E(S(e)),e.isPattern?T(t,e).forEach(function(e){t.viewmodel.set(e,n)}):t.viewmodel.set(e,n)}function La(t,e){return Ko(this,t,void 0===e?-1:-e)}function Ia(){var t;return this.fragment.unbind(),this.viewmodel.teardown(),this._observers.forEach(Q),this.fragment.rendered&&this.el.__ractive_instances__&&L(this.el.__ractive_instances__,this),this.shouldDestroy=!0,t=this.fragment.rendered?this.unrender():os.resolve(),dv.fire(this),this._boundFunctions.forEach(Da),t}function Da(t){delete t.fn[t.prop]}function Ua(t){var e=this;if("string"!=typeof t)throw new TypeError(Fo);var n=void 0;return/\*/.test(t)?(n={},T(this,E(S(t))).forEach(function(t){n[t.str]=!e.viewmodel.get(t)}),this.set(n)):this.set(t,!this.get(t))}function Va(){return this.fragment.toString(!0)}function Ba(){var t,e;if(!this.fragment.rendered)return m("ractive.unrender() was called on a Ractive instance that was not rendered"),os.resolve();for(t=ms.start(this,!0),e=!this.component||this.component.shouldDestroy||this.shouldDestroy;this._animations[0];)this._animations[0].stop();return this.fragment.unrender(e),L(this.el.__ractive_instances__,this),bv.fire(this),ms.end(),t}function qa(t){var e;return t=E(t)||Go,e=ms.start(this,!0),this.viewmodel.mark(t),ms.end(),xv.fire(this,t),e}function Ha(t,e){var n,r,i;if("string"!=typeof t||e){i=[];for(r in this._twowayBindings)(!t||E(r).equalsOrStartsWith(t))&&i.push.apply(i,this._twowayBindings[r])}else i=this._twowayBindings[t];return n=za(this,i),this.set(n)}function za(t,e){var n={},r=[];return e.forEach(function(t){var e,i;if(!t.radioName||t.element.node.checked){if(t.checkboxName)return void(r[t.keypath.str]||t.changed()||(r.push(t.keypath),r[t.keypath.str]=t));e=t.attribute.value,i=t.getValue(),F(e,i)||s(e,i)||(n[t.keypath.str]=i)}}),r.length&&r.forEach(function(t){var e,i,a;e=r[t.str],i=e.attribute.value,a=e.getValue(),F(i,a)||(n[t.str]=a)}),n}function Wa(t,e){return"function"==typeof e&&/_super/.test(t)}function $a(t){for(var e={};t;)Ga(t,e),Qa(t,e),t=t._Parent!==Av?t._Parent:!1;return e}function Ga(t,e){ec.forEach(function(n){Ka(n.useDefaults?t.prototype:t,e,n.name)})}function Ka(t,e,n){var r,i=Object.keys(t[n]);i.length&&((r=e[n])||(r=e[n]={}),i.filter(function(t){return!(t in r)}).forEach(function(e){return r[e]=t[n][e]}))}function Qa(t,e){Object.keys(t.prototype).forEach(function(n){if("computed"!==n){var r=t.prototype[n];if(n in e){if("function"==typeof e[n]&&"function"==typeof r&&e[n]._method){var i=void 0,a=r._method;a&&(r=r._method),i=Ev(e[n]._method,r),a&&(i._method=i),e[n]=i}}else e[n]=r._method?r._method:r}})}function Ya(){for(var t=arguments.length,e=Array(t),n=0;t>n;n++)e[n]=arguments[n];return e.length?e.reduce(Ja,this):Ja(this)}function Ja(t){var e,n,i=void 0===arguments[1]?{}:arguments[1];return i.prototype instanceof Av&&(i=Tv(i)),e=function(t){return this instanceof e?void Cm(this,t):new e(t)},n=wo(t.prototype),n.constructor=e,_o(e,{defaults:{value:n},extend:{value:Ya,writable:!0,configurable:!0},_Parent:{value:t}}),oc.extend(t,n,i),qu.extend(t,n,i),i.computed&&(n.computed=r(wo(t.prototype.computed),i.computed)),e.prototype=n,e}var Za,Xa,to,eo,no,ro,io,ao=3,oo={el:void 0,append:!1,template:{v:ao,t:[]},preserveWhitespace:!1,sanitize:!1,stripComments:!0,delimiters:["{{","}}"],tripleDelimiters:["{{{","}}}"],interpolate:!1,data:{},computed:{},magic:!1,modifyArrays:!0,adapt:[],isolated:!1,twoway:!0,lazy:!1,noIntro:!1,transitionsEnabled:!0,complete:void 0,css:null,noCssTransform:!1},so=oo,uo={linear:function(t){return t},easeIn:function(t){return Math.pow(t,3)},easeOut:function(t){return Math.pow(t-1,3)+1},easeInOut:function(t){return(t/=.5)<1?.5*Math.pow(t,3):.5*(Math.pow(t-2,3)+2)}};Za="object"==typeof document,Xa="undefined"!=typeof navigator&&/jsDom/.test(navigator.appName),to="undefined"!=typeof console&&"function"==typeof console.warn&&"function"==typeof console.warn.apply;try{Object.defineProperty({},"test",{value:0}),eo=!0}catch(co){eo=!1}no={html:"http://www.w3.org/1999/xhtml",mathml:"http://www.w3.org/1998/Math/MathML",svg:"http://www.w3.org/2000/svg",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"},ro="undefined"==typeof document?!1:document&&document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1"),io=["o","ms","moz","webkit"];var lo,po,ho,fo,mo,vo,go,bo,yo;if(lo=ro?function(t,e){return e&&e!==no.html?document.createElementNS(e,t):document.createElement(t)}:function(t,e){if(e&&e!==no.html)throw"This browser does not support namespaces other than http://www.w3.org/1999/xhtml. The most likely cause of this error is that you're trying to render SVG in an older browser. See http://docs.ractivejs.org/latest/svg-and-older-browsers for more information";return document.createElement(t)},Za){for(ho=lo("div"),fo=["matches","matchesSelector"],yo=function(t){return function(e,n){return e[t](n)}},go=fo.length;go--&&!po;)if(mo=fo[go],ho[mo])po=yo(mo);else for(bo=io.length;bo--;)if(vo=io[go]+mo.substr(0,1).toUpperCase()+mo.substring(1),ho[vo]){po=yo(vo);break}po||(po=function(t,e){var n,r,i;for(r=t.parentNode,r||(ho.innerHTML="",r=ho,t=t.cloneNode(),ho.appendChild(t)),n=r.querySelectorAll(e),i=n.length;i--;)if(n[i]===t)return!0;return!1})}else po=null;var wo,xo,_o,ko=null;try{Object.defineProperty({},"test",{value:0}),Za&&Object.defineProperty(document.createElement("div"),"test",{value:0}),xo=Object.defineProperty}catch(Eo){xo=function(t,e,n){t[e]=n.value}}try{try{Object.defineProperties({},{test:{value:0}})}catch(Eo){throw Eo}Za&&Object.defineProperties(lo("div"),{test:{value:0}}),_o=Object.defineProperties}catch(Eo){_o=function(t,e){var n;for(n in e)e.hasOwnProperty(n)&&xo(t,n,e[n])}}try{Object.create(null),wo=Object.create}catch(Eo){wo=function(){var t=function(){};return function(e,n){var r;return null===e?{}:(t.prototype=e,r=new t,n&&Object.defineProperties(r,n),r)}}()}var To,Co,So,Oo=Object.prototype.hasOwnProperty,Ao=Object.prototype.toString,Po=/^\[object (?:Array|FileList)\]$/,jo=function(){},No={};to?!function(){var t=["%cRactive.js %c0.7.3 %cin debug mode, %cmore...","color: rgb(114, 157, 52); font-weight: normal;","color: rgb(85, 85, 85); font-weight: normal;","color: rgb(85, 85, 85); font-weight: normal;","color: rgb(82, 140, 224); font-weight: normal; text-decoration: underline;"],e="You're running Ractive 0.7.3 in debug mode - messages will be printed to the console to help you fix problems and optimise your application.\n\nTo disable debug mode, add this line at the start of your app:\n Ractive.DEBUG = false;\n\nTo disable debug mode when your app is minified, add this snippet:\n Ractive.DEBUG = /unminified/.test(function(){/*unminified*/});\n\nGet help and support:\n http://docs.ractivejs.org\n http://stackoverflow.com/questions/tagged/ractivejs\n http://groups.google.com/forum/#!forum/ractive-js\n http://twitter.com/ractivejs\n\nFound a bug? Raise an issue:\n https://github.com/ractivejs/ractive/issues\n\n";So=function(){var n=!!console.groupCollapsed;console[n?"groupCollapsed":"log"].apply(console,t),console.log(e),n&&console.groupEnd(t),So=jo},Co=function(t,e){if(So(),"object"==typeof e[e.length-1]){var n=e.pop(),r=n?n.ractive:null;if(r){var i=void 0;r.component&&(i=r.component.name)&&(t="<"+i+"> "+t);var a=void 0;(a=n.node||r.fragment&&r.fragment.rendered&&r.find("*"))&&e.push(a)}}console.warn.apply(console,["%cRactive.js: %c"+t,"color: rgb(114, 157, 52);","color: rgb(85, 85, 85);"].concat(e))},To=function(){console.log.apply(console,arguments)}}():Co=To=So=jo;var Fo="Bad arguments",Mo='A function was specified for "%s" %s, but no %s was returned',Ro=function(t,e){return'Missing "'+t+'" '+e+" plugin. You may need to download a plugin via http://docs.ractivejs.org/latest/plugins#"+e+"s"},Lo=function(t,e,n,r){if(t===e)return y(e);if(r){var i=g("interpolators",n,r);if(i)return i(t,e)||y(e);p(Ro(r,"interpolator"))}return Uo.number(t,e)||Uo.array(t,e)||Uo.object(t,e)||y(e)},Io=Lo,Do={number:function(t,e){var n;return u(t)&&u(e)?(t=+t,e=+e,n=e-t,n?function(e){return t+e*n}:function(){return t}):null},array:function(t,e){var n,r,i,o;if(!a(t)||!a(e))return null;for(n=[],r=[],o=i=Math.min(t.length,e.length);o--;)r[o]=Io(t[o],e[o]);for(o=i;o=this.duration?(null!==a&&(ms.start(this.root),this.root.viewmodel.set(a,this.to),ms.end()),this.step&&this.step(1,this.to),this.complete(this.to),i=this.root._animations.indexOf(this),-1===i&&m("Animation was not found"),this.root._animations.splice(i,1),this.running=!1,!1):(e=this.easing?this.easing(t/this.duration):t/this.duration,null!==a&&(n=this.interpolator(e),ms.start(this.root),this.root.viewmodel.set(a,n),ms.end()),this.step&&this.step(e,n),!0)):!1},stop:function(){var t;this.running=!1,t=this.root._animations.indexOf(this),-1===t&&m("Animation was not found"),this.root._animations.splice(t,1)}};var ws=ys,xs=nt,_s={stop:jo},ks=it,Es=new ns("detach"),Ts=at,Cs=ot,Ss=function(){var t,e,n;t=this._root[this._isComponentQuery?"liveComponentQueries":"liveQueries"],e=this.selector,n=t.indexOf(e),-1!==n&&(t.splice(n,1),t[e]=null)},Os=function(t,e){var n,r,i,a,o,s,u,c,l,p;for(n=ut(t.component||t._ractive.proxy),r=ut(e.component||e._ractive.proxy),i=R(n),a=R(r);i&&i===a;)n.pop(),r.pop(),o=i,i=R(n),a=R(r);if(i=i.component||i,a=a.component||a,l=i.parentFragment,p=a.parentFragment,l===p)return s=l.items.indexOf(i),u=p.items.indexOf(a),s-u||n.length-r.length;if(c=o.fragments)return s=c.indexOf(l),u=c.indexOf(p),s-u||n.length-r.length;throw Error("An unexpected condition was met while comparing the position of two components. Please file an issue at https://github.com/RactiveJS/Ractive/issues - thanks!")},As=function(t,e){var n;return t.compareDocumentPosition?(n=t.compareDocumentPosition(e),2&n?1:-1):Os(t,e)},Ps=function(){this.sort(this._isComponentQuery?Os:As),this._dirty=!1},js=function(){var t=this;this._dirty||(this._dirty=!0,ms.scheduleTask(function(){t._sort()}))},Ns=function(t){var e=this.indexOf(this._isComponentQuery?t.instance:t);-1!==e&&this.splice(e,1)},Fs=ct,Ms=lt,Rs=pt,Ls=ht,Is=ft,Ds=dt,Us={enqueue:function(t,e){t.event&&(t._eventQueue=t._eventQueue||[],t._eventQueue.push(t.event)),t.event=e},dequeue:function(t){t._eventQueue&&t._eventQueue.length?t.event=t._eventQueue.pop():delete t.event}},Vs=Us,Bs=mt,qs=bt,Hs=yt,zs={capture:!0,noUnwrap:!0,fullRootGet:!0},Ws=wt,$s=new ns("insert"),Gs=_t,Ks=function(t,e,n,r){this.root=t,this.keypath=e,this.callback=n,this.defer=r.defer,this.context=r&&r.context?r.context:t};Ks.prototype={init:function(t){this.value=this.root.get(this.keypath.str),t!==!1?this.update():this.oldValue=this.value},setValue:function(t){var e=this;s(t,this.value)||(this.value=t,this.defer&&this.ready?ms.scheduleTask(function(){return e.update()}):this.update())},update:function(){this.updating||(this.updating=!0,this.callback.call(this.context,this.value,this.oldValue,this.keypath.str),this.oldValue=this.value,this.updating=!1)}};var Qs,Ys=Ks,Js=kt,Zs=Array.prototype.slice;Qs=function(t,e,n,r){this.root=t,this.callback=n,this.defer=r.defer,this.keypath=e,this.regex=RegExp("^"+e.str.replace(/\./g,"\\.").replace(/\*/g,"([^\\.]+)")+"$"),this.values={},this.defer&&(this.proxies=[]),this.context=r&&r.context?r.context:t},Qs.prototype={init:function(t){var e,n;if(e=Js(this.root,this.keypath),t!==!1)for(n in e)e.hasOwnProperty(n)&&this.update(E(n));else this.values=e},update:function(t){var e,n=this;if(t.isPattern){e=Js(this.root,t);for(t in e)e.hasOwnProperty(t)&&this.update(E(t))}else if(!this.root.viewmodel.implicitChanges[t.str])return this.defer&&this.ready?void ms.scheduleTask(function(){return n.getProxy(t).update()}):void this.reallyUpdate(t)},reallyUpdate:function(t){var e,n,r,i;return e=t.str,n=this.root.viewmodel.get(t),this.updating?void(this.values[e]=n):(this.updating=!0,s(n,this.values[e])&&this.ready||(r=Zs.call(this.regex.exec(e),1),i=[n,this.values[e],e].concat(r),this.values[e]=n,this.callback.apply(this.context,i)),void(this.updating=!1))},getProxy:function(t){var e=this;return this.proxies[t.str]||(this.proxies[t.str]={update:function(){return e.reallyUpdate(t)}}),this.proxies[t.str]}};var Xs,tu,eu,nu,ru,iu,au=Qs,ou=Et,su={},uu=Tt,cu=Ct,lu=function(t){return t.trim()},pu=function(t){return""!==t},hu=St,fu=Ot,du=At,mu=Pt,vu=Array.prototype,gu=function(t){return function(e){for(var n=arguments.length,r=Array(n>1?n-1:0),i=1;n>i;i++)r[i-1]=arguments[i];var o,s,u,c,l=[];if(e=E(S(e)),o=this.viewmodel.get(e),s=o.length,!a(o))throw Error("Called ractive."+t+"('"+e.str+"'), but '"+e.str+"' does not refer to an array");return l=mu(o,t,r),c=vu[t].apply(o,r),u=ms.start(this,!0).then(function(){return c}),l?this.viewmodel.smartUpdate(e,o,l):this.viewmodel.mark(e),ms.end(),u}},bu=gu("pop"),yu=gu("push"),wu="/* Ractive.js component styles */\n",xu=[],_u=!1;Za?(eu=document.createElement("style"),eu.type="text/css",nu=document.getElementsByTagName("head")[0],iu=!1,ru=eu.styleSheet,tu=function(){var t=wu+xu.map(function(t){return"\n/* {"+t.id+"} */\n"+t.styles}).join("\n");ru?ru.cssText=t:eu.innerHTML=t,iu||(nu.appendChild(eu),iu=!0)},Xs={add:function(t){xu.push(t),_u=!0},apply:function(){_u&&(tu(),_u=!1)}}):Xs={add:jo,apply:jo};var ku,Eu,Tu,Cu=Xs,Su=Nt,Ou=new ns("render"),Au=new ns("complete"),Pu={extend:function(t,e,n){e.adapt=Mt(e.adapt,M(n.adapt))},init:function(){}},ju=Pu,Nu=Rt,Fu=/(?:^|\})?\s*([^\{\}]+)\s*\{/g,Mu=/\/\*.*?\*\//g,Ru=/((?:(?:\[[^\]+]\])|(?:[^\s\+\>\~:]))+)((?::[^\s\+\>\~\(]+(?:\([^\)]+\))?)?\s*[\s\+\>\~]?)\s*/g,Lu=/^@media/,Iu=/\[data-ractive-css~="\{[a-z0-9-]+\}"]/g,Du=1,Uu={name:"css",extend:function(t,e,n){if(n.css){var r=Du++,i=n.noCssTransform?n.css:Nu(n.css,r);e.cssId=r,Cu.add({id:r,styles:i})}},init:function(){}},Vu=Uu,Bu={name:"data",extend:function(t,e,n){var r=void 0,i=void 0;if(n.data&&c(n.data))for(r in n.data)i=n.data[r],i&&"object"==typeof i&&(c(i)||a(i))&&m("Passing a `data` option with object and array properties to Ractive.extend() is discouraged, as mutating them is likely to cause bugs. Consider using a data function instead:\n\n // this...\n data: function () {\n return {\n myObject: {}\n };\n })\n\n // instead of this:\n data: {\n myObject: {}\n }");e.data=Ut(e.data,n.data)},init:function(t,e,n){var r=Ut(t.prototype.data,n.data);return"function"==typeof r&&(r=r.call(e)),r||{}},reset:function(t){var e=this.init(t.constructor,t,t.viewmodel);return t.viewmodel.reset(e),!0}},qu=Bu,Hu=null,zu=["preserveWhitespace","sanitize","stripComments","delimiters","tripleDelimiters","interpolate"],Wu={fromId:zt,isHashedId:Wt,isParsed:$t,getParseOptions:Gt,createHelper:qt,parse:Ht},$u=Wu,Gu={name:"template",extend:function(t,e,n){var r;"template"in n&&(r=n.template,"function"==typeof r?e.template=r:e.template=Jt(r,e))},init:function(t,e,n){var r,i;r="template"in n?n.template:t.prototype.template,"function"==typeof r&&(i=r,r=Qt(e,i),e._config.template={fn:i,result:r}),r=Jt(r,e),e.template=r.t,r.p&&Zt(e.partials,r.p)},reset:function(t){var e,n=Kt(t);return n?(e=Jt(n,t),t.template=e.t,Zt(t.partials,e.p,!0),!0):void 0}},Ku=Gu;ku=["adaptors","components","computed","decorators","easing","events","interpolators","partials","transitions"],Eu=function(t,e){this.name=t,this.useDefaults=e},Eu.prototype={constructor:Eu,extend:function(t,e,n){this.configure(this.useDefaults?t.defaults:t,this.useDefaults?e:e.constructor,n)},init:function(){},configure:function(t,e,n){var r,i=this.name,a=n[i];r=wo(t[i]);for(var o in a)r[o]=a[o];e[i]=r},reset:function(t){var e=t[this.name],n=!1;return Object.keys(e).forEach(function(t){var r=e[t];r._fn&&(r._fn.isOwner?e[t]=r._fn:delete e[t],n=!0)}),n}},Tu=ku.map(function(t){return new Eu(t,"computed"===t)});var Qu,Yu,Ju,Zu,Xu,tc,ec=Tu,nc=Xt,rc=re;Zu={adapt:ju,css:Vu,data:qu,template:Ku},Ju=Object.keys(so),tc=oe(Ju.filter(function(t){return!Zu[t]})),Xu=oe(Ju.concat(ec.map(function(t){return t.name}))),Yu=[].concat(Ju.filter(function(t){return!ec[t]&&!Zu[t]}),ec,Zu.data,Zu.template,Zu.css),Qu={extend:function(t,e,n){return ie("extend",t,e,n)},init:function(t,e,n){return ie("init",t,e,n)},reset:function(t){return Yu.filter(function(e){return e.reset&&e.reset(t)}).map(function(t){return t.name})},order:Yu};var ic,ac,oc=Qu,sc=se,uc=ue,cc=ce,lc=le,pc=pe,hc=he,fc=fe,dc=de,mc=/^\s+/;ac=function(t){this.name="ParseError",this.message=t;try{throw Error(t)}catch(e){this.stack=e.stack}},ac.prototype=Error.prototype,ic=function(t,e){var n,r,i=0;for(this.str=t,this.options=e||{},this.pos=0,this.lines=this.str.split("\n"),this.lineEnds=this.lines.map(function(t){var e=i+t.length+1;return i=e,e},0),this.init&&this.init(t,e),n=[];this.posn;n+=1)if(this.pos=e,i=t[n](this))return i;return null},getLinePos:function(t){for(var e,n=0,r=0;t>=this.lineEnds[n];)r=this.lineEnds[n],n+=1;return e=t-r,[n+1,e+1,t]},error:function(t){var e=this.getLinePos(this.pos),n=e[0],r=e[1],i=this.lines[e[0]-1],a=0,o=i.replace(/\t/g,function(t,n){return n/g,ul=/&/g;var dl=function(){return e(this.node)},ml=function(t){this.type=wc,this.text=t.template};ml.prototype={detach:dl,firstNode:function(){return this.node},render:function(){return this.node||(this.node=document.createTextNode(this.text)),this.node},toString:function(t){return t?Ee(this.text):this.text},unrender:function(t){return t?this.detach():void 0}};var vl=ml,gl=Te,bl=Ce,yl=function(t,e,n){var r;this.ref=e,this.resolved=!1,this.root=t.root,this.parentFragment=t.parentFragment,this.callback=n,r=us(t.root,e,t.parentFragment),void 0!=r?this.resolve(r):ms.addUnresolved(this)};yl.prototype={resolve:function(t){this.keypath&&!t&&ms.addUnresolved(this),this.resolved=!0,this.keypath=t,this.callback(t)},forceResolution:function(){this.resolve(E(this.ref))},rebind:function(t,e){var n;void 0!=this.keypath&&(n=this.keypath.replace(t,e),void 0!==n&&this.resolve(n))},unbind:function(){this.resolved||ms.removeUnresolved(this)}};var wl=yl,xl=function(t,e,n){this.parentFragment=t.parentFragment,this.ref=e,this.callback=n,this.rebind()},_l={"@keypath":{prefix:"c",prop:["context"]},"@index":{prefix:"i",prop:["index"]},"@key":{prefix:"k",prop:["key","index"]}};xl.prototype={rebind:function(){var t,e=this.ref,n=this.parentFragment,r=_l[e];if(!r)throw Error('Unknown special reference "'+e+'" - valid references are @index, @key and @keypath');if(this.cached)return this.callback(E("@"+r.prefix+Se(this.cached,r)));if(-1!==r.prop.indexOf("index")||-1!==r.prop.indexOf("key"))for(;n;){if(n.owner.currentSubtype===Lc&&void 0!==(t=Se(n,r)))return this.cached=n,n.registerIndexRef(this),this.callback(E("@"+r.prefix+t));n=!n.parent&&n.owner&&n.owner.component&&n.owner.component.parentFragment&&!n.owner.component.instance.isolated?n.owner.component.parentFragment:n.parent}else for(;n;){if(void 0!==(t=Se(n,r)))return this.callback(E("@"+r.prefix+t.str));n=n.parent}},unbind:function(){this.cached&&this.cached.unregisterIndexRef(this)}};var kl=xl,El=function(t,e,n){this.parentFragment=t.parentFragment,this.ref=e,this.callback=n,e.ref.fragment.registerIndexRef(this),this.rebind()};El.prototype={rebind:function(){var t,e=this.ref.ref;t="k"===e.ref.t?"k"+e.fragment.key:"i"+e.fragment.index,void 0!==t&&this.callback(E("@"+t))},unbind:function(){this.ref.ref.fragment.unregisterIndexRef(this)}};var Tl=El,Cl=Oe;Oe.resolve=function(t){var e,n,r={};for(e in t.refs)n=t.refs[e],r[n.ref.n]="k"===n.ref.t?n.fragment.key:n.fragment.index;return r};var Sl,Ol=Ae,Al=Pe,Pl={},jl=Function.prototype.bind;Sl=function(t,e,n,r){var i,a=this;i=t.root,this.root=i,this.parentFragment=e,this.callback=r,this.owner=t,this.str=n.s,this.keypaths=[],this.pending=n.r.length,this.refResolvers=n.r.map(function(t,e){return Ol(a,t,function(t){a.resolve(e,t)})}),this.ready=!0,this.bubble()},Sl.prototype={bubble:function(){this.ready&&(this.uniqueString=Ne(this.str,this.keypaths),this.keypath=Fe(this.uniqueString),this.createEvaluator(),this.callback(this.keypath))},unbind:function(){for(var t;t=this.refResolvers.pop();)t.unbind()},resolve:function(t,e){this.keypaths[t]=e,this.bubble()},createEvaluator:function(){var t,e,n,r,i,a=this;r=this.keypath,t=this.root.viewmodel.computations[r.str],t?this.root.viewmodel.mark(r):(i=Al(this.str,this.refResolvers.length),e=this.keypaths.map(function(t){var e;return"undefined"===t?function(){}:t.isSpecial?(e=t.value,function(){return e}):function(){var e=a.root.viewmodel.get(t,{noUnwrap:!0,fullRootGet:!0});return"function"==typeof e&&(e=Re(e,a.root)),e}}),n={deps:this.keypaths.filter(Me),getter:function(){var t=e.map(je);return i.apply(null,t)}},t=this.root.viewmodel.compute(r,n))},rebind:function(t,e){this.refResolvers.forEach(function(n){return n.rebind(t,e)})}};var Nl=Sl,Fl=function(t,e,n){var r=this;this.resolver=e,this.root=e.root,this.parentFragment=n,this.viewmodel=e.root.viewmodel,"string"==typeof t?this.value=t:t.t===Fc?this.refResolver=Ol(this,t.n,function(t){r.resolve(t)}):new Nl(e,n,t,function(t){r.resolve(t)})};Fl.prototype={resolve:function(t){this.keypath&&this.viewmodel.unregister(this.keypath,this),this.keypath=t,this.value=this.viewmodel.get(t),this.bind(),this.resolver.bubble()},bind:function(){this.viewmodel.register(this.keypath,this)},rebind:function(t,e){this.refResolver&&this.refResolver.rebind(t,e)},setValue:function(t){this.value=t,this.resolver.bubble()},unbind:function(){this.keypath&&this.viewmodel.unregister(this.keypath,this),this.refResolver&&this.refResolver.unbind()},forceResolution:function(){this.refResolver&&this.refResolver.forceResolution()}};var Ml=Fl,Rl=function(t,e,n){var r,i,a,o,s=this;this.parentFragment=o=t.parentFragment,this.root=r=t.root,this.mustache=t,this.ref=i=e.r,this.callback=n,this.unresolved=[],(a=us(r,i,o))?this.base=a:this.baseResolver=new wl(this,i,function(t){s.base=t,s.baseResolver=null,s.bubble()}),this.members=e.m.map(function(t){return new Ml(t,s,o)}),this.ready=!0,this.bubble()};Rl.prototype={getKeypath:function(){var t=this.members.map(Le);return!t.every(Ie)||this.baseResolver?null:this.base.join(t.join("."))},bubble:function(){this.ready&&!this.baseResolver&&this.callback(this.getKeypath())},unbind:function(){this.members.forEach(G)},rebind:function(t,e){var n;if(this.base){var r=this.base.replace(t,e);r&&r!==this.base&&(this.base=r,n=!0)}this.members.forEach(function(r){r.rebind(t,e)&&(n=!0)}),n&&this.bubble()},forceResolution:function(){this.baseResolver&&(this.base=E(this.ref),this.baseResolver.unbind(),this.baseResolver=null),this.members.forEach(De),this.bubble()}};var Ll=Rl,Il=Ue,Dl=Ve,Ul=Be,Vl={getValue:bl,init:Il,resolve:Dl,rebind:Ul},Bl=function(t){this.type=xc,Vl.init(this,t)};Bl.prototype={update:function(){this.node.data=void 0==this.value?"":this.value},resolve:Vl.resolve,rebind:Vl.rebind,detach:dl,unbind:gl,render:function(){return this.node||(this.node=document.createTextNode(n(this.value))),this.node},unrender:function(t){t&&e(this.node)},getValue:Vl.getValue,setValue:function(t){var e;this.keypath&&(e=this.root.viewmodel.wrapped[this.keypath.str])&&(t=e.get()),s(t,this.value)||(this.value=t,this.parentFragment.bubble(),this.node&&ms.addView(this))},firstNode:function(){return this.node},toString:function(t){var e=""+n(this.value);return t?Ee(e):e}};var ql=Bl,Hl=qe,zl=He,Wl=ze,$l=We,Gl=$e,Kl=Ge,Ql=Ke,Yl=Qe,Jl=Ye,Zl=function(t,e){Vl.rebind.call(this,t,e)},Xl=Ze,tp=Xe,ep=pn,np=hn,rp=fn,ip=vn,ap=function(t){this.type=kc,this.subtype=this.currentSubtype=t.template.n,this.inverted=this.subtype===Rc,this.pElement=t.pElement,this.fragments=[],this.fragmentsToCreate=[],this.fragmentsToRender=[],this.fragmentsToUnrender=[],t.template.i&&(this.indexRefs=t.template.i.split(",").map(function(t,e){return{n:t,t:0===e?"k":"i"}})),this.renderedFragments=[],this.length=0,Vl.init(this,t)};ap.prototype={bubble:Hl,detach:zl,find:Wl,findAll:$l,findAllComponents:Gl,findComponent:Kl,findNextNode:Ql,firstNode:Yl,getIndexRef:function(t){if(this.indexRefs)for(var e=this.indexRefs.length;e--;){var n=this.indexRefs[e];if(n.n===t)return n}},getValue:Vl.getValue,shuffle:Jl,rebind:Zl,render:Xl,resolve:Vl.resolve,setValue:tp,toString:ep,unbind:np,unrender:rp,update:ip};var op,sp,up=ap,cp=gn,lp=bn,pp=yn,hp=wn,fp={};try{lo("table").innerHTML="foo"}catch(Eo){op=!0,sp={TABLE:['',"
"],THEAD:['',"
"],TBODY:['',"
"],TR:['',"
"],SELECT:['"]}}var dp=function(t,e,n){var r,i,a,o,s,u=[];if(null!=t&&""!==t){for(op&&(i=sp[e.tagName])?(r=xn("DIV"),r.innerHTML=i[0]+t+i[1],r=r.querySelector(".x"),"SELECT"===r.tagName&&(a=r.options[r.selectedIndex])):e.namespaceURI===no.svg?(r=xn("DIV"),r.innerHTML=''+t+"",r=r.querySelector(".x")):(r=xn(e.tagName),r.innerHTML=t,"SELECT"===r.tagName&&(a=r.options[r.selectedIndex]));o=r.firstChild;)u.push(o),n.appendChild(o);if("SELECT"===e.tagName)for(s=u.length;s--;)u[s]!==a&&(u[s].selected=!1)}return u},mp=_n,vp=En,gp=Tn,bp=Cn,yp=Sn,wp=On,xp=function(t){this.type=_c,Vl.init(this,t)};xp.prototype={detach:cp,find:lp,findAll:pp,firstNode:hp,getValue:Vl.getValue,rebind:Vl.rebind,render:vp,resolve:Vl.resolve,setValue:gp,toString:bp,unbind:gl,unrender:yp,update:wp};var _p,kp,Ep,Tp,Cp=xp,Sp=function(){this.parentFragment.bubble()},Op=An,Ap=function(t){return this.node?po(this.node,t)?this.node:this.fragment&&this.fragment.find?this.fragment.find(t):void 0:null},Pp=function(t,e){e._test(this,!0)&&e.live&&(this.liveQueries||(this.liveQueries=[])).push(e),this.fragment&&this.fragment.findAll(t,e)},jp=function(t,e){this.fragment&&this.fragment.findAllComponents(t,e)},Np=function(t){return this.fragment?this.fragment.findComponent(t):void 0},Fp=Pn,Mp=jn,Rp=Nn,Lp=/^true|on|yes|1$/i,Ip=/^[0-9]+$/,Dp=function(t,e){var n,r,i;return i=e.a||{},r={},n=i.twoway,void 0!==n&&(r.twoway=0===n||Lp.test(n)),n=i.lazy,void 0!==n&&(0!==n&&Ip.test(n)?r.lazy=parseInt(n):r.lazy=0===n||Lp.test(n)),r},Up=Fn;_p="altGlyph altGlyphDef altGlyphItem animateColor animateMotion animateTransform clipPath feBlend feColorMatrix feComponentTransfer feComposite feConvolveMatrix feDiffuseLighting feDisplacementMap feDistantLight feFlood feFuncA feFuncB feFuncG feFuncR feGaussianBlur feImage feMerge feMergeNode feMorphology feOffset fePointLight feSpecularLighting feSpotLight feTile feTurbulence foreignObject glyphRef linearGradient radialGradient textPath vkern".split(" "),kp="attributeName attributeType baseFrequency baseProfile calcMode clipPathUnits contentScriptType contentStyleType diffuseConstant edgeMode externalResourcesRequired filterRes filterUnits glyphRef gradientTransform gradientUnits kernelMatrix kernelUnitLength keyPoints keySplines keyTimes lengthAdjust limitingConeAngle markerHeight markerUnits markerWidth maskContentUnits maskUnits numOctaves pathLength patternContentUnits patternTransform patternUnits pointsAtX pointsAtY pointsAtZ preserveAlpha preserveAspectRatio primitiveUnits refX refY repeatCount repeatDur requiredExtensions requiredFeatures specularConstant specularExponent spreadMethod startOffset stdDeviation stitchTiles surfaceScale systemLanguage tableValues targetX targetY textLength viewBox viewTarget xChannelSelector yChannelSelector zoomAndPan".split(" "),Ep=function(t){for(var e={},n=t.length;n--;)e[t[n].toLowerCase()]=t[n];return e},Tp=Ep(_p.concat(kp));var Vp=function(t){var e=t.toLowerCase();return Tp[e]||e},Bp=function(t,e){var n,r;if(n=e.indexOf(":"),-1===n||(r=e.substr(0,n),"xmlns"===r))t.name=t.element.namespace!==no.html?Vp(e):e;else if(e=e.substring(n+1),t.name=Vp(e),t.namespace=no[r.toLowerCase()],t.namespacePrefix=r,!t.namespace)throw'Unknown namespace ("'+r+'")'},qp=Mn,Hp=Rn,zp=Ln,Wp=In,$p={"accept-charset":"acceptCharset",accesskey:"accessKey",bgcolor:"bgColor","class":"className",codebase:"codeBase",colspan:"colSpan",contenteditable:"contentEditable",datetime:"dateTime",dirname:"dirName","for":"htmlFor","http-equiv":"httpEquiv",ismap:"isMap",maxlength:"maxLength",novalidate:"noValidate",pubdate:"pubDate",readonly:"readOnly",rowspan:"rowSpan",tabindex:"tabIndex",usemap:"useMap"},Gp=Dn,Kp=Vn,Qp=Bn,Yp=qn,Jp=Hn,Zp=zn,Xp=Wn,th=$n,eh=Gn,nh=Kn,rh=Qn,ih=Yn,ah=Jn,oh=Zn,sh=Xn,uh=function(t){this.init(t)};uh.prototype={bubble:Up,init:Hp,rebind:zp,render:Wp,toString:Gp,unbind:Kp,update:sh};var ch,lh=uh,ph=function(t,e){var n,r,i=[];for(n in e)"twoway"!==n&&"lazy"!==n&&e.hasOwnProperty(n)&&(r=new lh({element:t,name:n,value:e[n],root:t.root}),i[n]=r,"value"!==n&&i.push(r));return(r=i.value)&&i.push(r),i};"undefined"!=typeof document&&(ch=lo("div"));var hh=function(t,e){this.element=t,this.root=t.root,this.parentFragment=t.parentFragment,this.attributes=[],this.fragment=new ev({root:t.root,owner:this,template:[e]})};hh.prototype={bubble:function(){this.node&&this.update(),this.element.bubble()},rebind:function(t,e){this.fragment.rebind(t,e)},render:function(t){this.node=t,this.isSvg=t.namespaceURI===no.svg,this.update()},unbind:function(){this.fragment.unbind()},update:function(){var t,e,n=this;t=""+this.fragment,e=tr(t,this.isSvg),this.attributes.filter(function(t){return er(e,t)}).forEach(function(t){n.node.removeAttribute(t.name)}),e.forEach(function(t){n.node.setAttribute(t.name,t.value)}),this.attributes=e},toString:function(){return""+this.fragment}};var fh=hh,dh=function(t,e){return e?e.map(function(e){return new fh(t,e)}):[]},mh=function(t){var e,n,r,i;if(this.element=t,this.root=t.root,this.attribute=t.attributes[this.name||"value"],e=this.attribute.interpolator,e.twowayBinding=this,n=e.keypath){if("}"===n.str.slice(-1))return v("Two-way binding does not work with expressions (`%s` on <%s>)",e.resolver.uniqueString,t.name,{ractive:this.root}),!1;if(n.isSpecial)return v("Two-way binding does not work with %s",e.resolver.ref,{ractive:this.root}),!1}else{var a=e.template.r?"'"+e.template.r+"' reference":"expression";m("The %s being used for two-way binding is ambiguous, and may cause unexpected results. Consider initialising your data to eliminate the ambiguity",a,{ractive:this.root}),e.resolver.forceResolution(),n=e.keypath}this.attribute.isTwoway=!0,this.keypath=n,r=this.root.viewmodel.get(n),void 0===r&&this.getInitialValue&&(r=this.getInitialValue(),void 0!==r&&this.root.viewmodel.set(n,r)),(i=nr(t))&&(this.resetValue=r,i.formBindings.push(this))};mh.prototype={handleChange:function(){var t=this;ms.start(this.root),this.attribute.locked=!0,this.root.viewmodel.set(this.keypath,this.getValue()),ms.scheduleTask(function(){return t.attribute.locked=!1}),ms.end()},rebound:function(){var t,e,n;e=this.keypath,n=this.attribute.interpolator.keypath,e!==n&&(L(this.root._twowayBindings[e.str],this),this.keypath=n,t=this.root._twowayBindings[n.str]||(this.root._twowayBindings[n.str]=[]),t.push(this))},unbind:function(){}},mh.extend=function(t){var e,n=this;return e=function(t){mh.call(this,t),this.init&&this.init()},e.prototype=wo(n.prototype),r(e.prototype,t),e.extend=mh.extend,e};var vh,gh=mh,bh=rr;vh=gh.extend({getInitialValue:function(){return""},getValue:function(){return this.element.node.value},render:function(){var t,e=this.element.node,n=!1;this.rendered=!0,t=this.root.lazy,this.element.lazy===!0?t=!0:this.element.lazy===!1?t=!1:u(this.element.lazy)?(t=!1,n=+this.element.lazy):u(t||"")&&(n=+t,t=!1,this.element.lazy=n),this.handler=n?ar:bh,e.addEventListener("change",bh,!1),t||(e.addEventListener("input",this.handler,!1),e.attachEvent&&e.addEventListener("keyup",this.handler,!1)),e.addEventListener("blur",ir,!1)},unrender:function(){var t=this.element.node;this.rendered=!1,t.removeEventListener("change",bh,!1),t.removeEventListener("input",this.handler,!1),t.removeEventListener("keyup",this.handler,!1),t.removeEventListener("blur",ir,!1)}});var yh=vh,wh=yh.extend({getInitialValue:function(){return this.element.fragment?""+this.element.fragment:""},getValue:function(){return this.element.node.innerHTML}}),xh=wh,_h=or,kh={},Eh=gh.extend({name:"checked",init:function(){this.siblings=_h(this.root._guid,"radio",this.element.getAttribute("name")),this.siblings.push(this)},render:function(){var t=this.element.node;t.addEventListener("change",bh,!1),t.attachEvent&&t.addEventListener("click",bh,!1)},unrender:function(){var t=this.element.node;t.removeEventListener("change",bh,!1),t.removeEventListener("click",bh,!1)},handleChange:function(){ms.start(this.root),this.siblings.forEach(function(t){t.root.viewmodel.set(t.keypath,t.getValue())}),ms.end()},getValue:function(){return this.element.node.checked},unbind:function(){L(this.siblings,this)}}),Th=Eh,Ch=gh.extend({name:"name",init:function(){this.siblings=_h(this.root._guid,"radioname",this.keypath.str),this.siblings.push(this),this.radioName=!0},getInitialValue:function(){return this.element.getAttribute("checked")?this.element.getAttribute("value"):void 0},render:function(){var t=this.element.node;t.name="{{"+this.keypath.str+"}}",t.checked=this.root.viewmodel.get(this.keypath)==this.element.getAttribute("value"),t.addEventListener("change",bh,!1),t.attachEvent&&t.addEventListener("click",bh,!1)},unrender:function(){var t=this.element.node;t.removeEventListener("change",bh,!1),t.removeEventListener("click",bh,!1)},getValue:function(){var t=this.element.node;return t._ractive?t._ractive.value:t.value},handleChange:function(){this.element.node.checked&&gh.prototype.handleChange.call(this)},rebound:function(t,e){var n;gh.prototype.rebound.call(this,t,e),(n=this.element.node)&&(n.name="{{"+this.keypath.str+"}}")},unbind:function(){L(this.siblings,this)}}),Sh=Ch,Oh=gh.extend({name:"name",getInitialValue:function(){return this.noInitialValue=!0,[]},init:function(){var t,e;this.checkboxName=!0,this.siblings=_h(this.root._guid,"checkboxes",this.keypath.str),this.siblings.push(this),this.noInitialValue&&(this.siblings.noInitialValue=!0),this.siblings.noInitialValue&&this.element.getAttribute("checked")&&(t=this.root.viewmodel.get(this.keypath),e=this.element.getAttribute("value"),t.push(e))},unbind:function(){L(this.siblings,this)},render:function(){var t,e,n=this.element.node;t=this.root.viewmodel.get(this.keypath),e=this.element.getAttribute("value"),a(t)?this.isChecked=N(t,e):this.isChecked=t==e,n.name="{{"+this.keypath.str+"}}",n.checked=this.isChecked,n.addEventListener("change",bh,!1),n.attachEvent&&n.addEventListener("click",bh,!1)},unrender:function(){var t=this.element.node;t.removeEventListener("change",bh,!1),t.removeEventListener("click",bh,!1)},changed:function(){var t=!!this.isChecked;return this.isChecked=this.element.node.checked,this.isChecked===t},handleChange:function(){this.isChecked=this.element.node.checked,gh.prototype.handleChange.call(this)},getValue:function(){return this.siblings.filter(sr).map(ur)}}),Ah=Oh,Ph=gh.extend({name:"checked",render:function(){var t=this.element.node;t.addEventListener("change",bh,!1),t.attachEvent&&t.addEventListener("click",bh,!1)},unrender:function(){var t=this.element.node;t.removeEventListener("change",bh,!1),t.removeEventListener("click",bh,!1)},getValue:function(){return this.element.node.checked}}),jh=Ph,Nh=gh.extend({getInitialValue:function(){var t,e,n,r,i=this.element.options;if(void 0===this.element.getAttribute("value")&&(e=t=i.length,t)){for(;e--;)if(i[e].getAttribute("selected")){n=i[e].getAttribute("value"),r=!0;break}if(!r)for(;++ee;e+=1)if(r=t[e],t[e].selected)return i=r._ractive?r._ractive.value:r.value},forceUpdate:function(){var t=this,e=this.getValue();void 0!==e&&(this.attribute.locked=!0,ms.scheduleTask(function(){return t.attribute.locked=!1}),this.root.viewmodel.set(this.keypath,e))}}),Fh=Nh,Mh=Fh.extend({getInitialValue:function(){return this.element.options.filter(function(t){return t.getAttribute("selected")}).map(function(t){return t.getAttribute("value")})},render:function(){var t;this.element.node.addEventListener("change",bh,!1),t=this.root.viewmodel.get(this.keypath),void 0===t&&this.handleChange()},unrender:function(){this.element.node.removeEventListener("change",bh,!1)},setValue:function(){throw Error("TODO not implemented yet")},getValue:function(){var t,e,n,r,i,a;for(t=[],e=this.element.node.options,r=e.length,n=0;r>n;n+=1)i=e[n],i.selected&&(a=i._ractive?i._ractive.value:i.value,t.push(a));return t},handleChange:function(){var t,e,n;return t=this.attribute,e=t.value,n=this.getValue(),void 0!==e&&F(n,e)||Fh.prototype.handleChange.call(this),this},forceUpdate:function(){var t=this,e=this.getValue();void 0!==e&&(this.attribute.locked=!0,ms.scheduleTask(function(){return t.attribute.locked=!1}),this.root.viewmodel.set(this.keypath,e))},updateModel:function(){void 0!==this.attribute.value&&this.attribute.value.length||this.root.viewmodel.set(this.keypath,this.initialValue)}}),Rh=Mh,Lh=gh.extend({render:function(){this.element.node.addEventListener("change",bh,!1)},unrender:function(){this.element.node.removeEventListener("change",bh,!1)},getValue:function(){return this.element.node.files}}),Ih=Lh,Dh=yh.extend({getInitialValue:function(){},getValue:function(){var t=parseFloat(this.element.node.value);return isNaN(t)?void 0:t}}),Uh=cr,Vh=pr,Bh=hr,qh=fr,Hh=dr,zh=/^event(?:\.(.+))?/,Wh=br,$h=yr,Gh={},Kh={touchstart:!0,touchmove:!0,touchend:!0,touchcancel:!0,touchleave:!0},Qh=xr,Yh=_r,Jh=kr,Zh=Er,Xh=Tr,tf=function(t,e,n){this.init(t,e,n)};tf.prototype={bubble:Vh,fire:Bh,getAction:qh,init:Hh,listen:$h,rebind:Qh,render:Yh,resolve:Jh,unbind:Zh,unrender:Xh};var ef=tf,nf=function(t,e){var n,r,i,a,o=[];for(r in e)if(e.hasOwnProperty(r))for(i=r.split("-"),n=i.length;n--;)a=new ef(t,i[n],e[r]),o.push(a);return o},rf=function(t,e){var n,r,i,a=this;this.element=t,this.root=n=t.root,r=e.n||e,("string"==typeof r||(i=new ev({template:r,root:n,owner:t}),r=""+i,i.unbind(),""!==r))&&(e.a?this.params=e.a:e.d&&(this.fragment=new ev({template:e.d,root:n,owner:t}),this.params=this.fragment.getArgsList(),this.fragment.bubble=function(){this.dirtyArgs=this.dirtyValue=!0,a.params=this.getArgsList(),a.ready&&a.update()}),this.fn=g("decorators",n,r),this.fn||p(Ro(r,"decorator")))};rf.prototype={init:function(){var t,e,n;if(t=this.element.node,this.params?(n=[t].concat(this.params),e=this.fn.apply(this.root,n)):e=this.fn.call(this.root,t),!e||!e.teardown)throw Error("Decorator definition must return an object with a teardown method");this.actual=e,this.ready=!0},update:function(){this.actual.update?this.actual.update.apply(this.root,this.params):(this.actual.teardown(!0),this.init())},rebind:function(t,e){this.fragment&&this.fragment.rebind(t,e)},teardown:function(t){this.torndown=!0,this.ready&&this.actual.teardown(),!t&&this.fragment&&this.fragment.unbind()}};var af,of,sf,uf=rf,cf=Nr,lf=Fr,pf=Ur,hf=function(t){return t.replace(/-([a-zA-Z])/g,function(t,e){return e.toUpperCase()})};Za?(of={},sf=lo("div").style,af=function(t){var e,n,r;if(t=hf(t),!of[t])if(void 0!==sf[t])of[t]=t;else for(r=t.charAt(0).toUpperCase()+t.substring(1),e=io.length;e--;)if(n=io[e],void 0!==sf[n+r]){of[t]=n+r;break}return of[t]}):af=null;var ff,df,mf=af;Za?(df=window.getComputedStyle||ko.getComputedStyle,ff=function(t){var e,n,r,i,o;if(e=df(this.node),"string"==typeof t)return o=e[mf(t)],"0px"===o&&(o=0),o;if(!a(t))throw Error("Transition$getStyle must be passed a string, or an array of strings representing CSS properties");for(n={},r=t.length;r--;)i=t[r],o=e[mf(i)],"0px"===o&&(o=0),n[i]=o;return n}):ff=null;var vf=ff,gf=function(t,e){var n;if("string"==typeof t)this.node.style[mf(t)]=e;else for(n in t)t.hasOwnProperty(n)&&(this.node.style[mf(n)]=t[n]);return this},bf=function(t){var e;this.duration=t.duration,this.step=t.step,this.complete=t.complete,"string"==typeof t.easing?(e=t.root.easing[t.easing],e||(v(Ro(t.easing,"easing")),e=Vr)):e="function"==typeof t.easing?t.easing:Vr,this.easing=e,this.start=Xo(),this.end=this.start+this.duration,this.running=!0,bs.add(this)};bf.prototype={tick:function(t){var e,n;return this.running?t>this.end?(this.step&&this.step(1),this.complete&&this.complete(1),!1):(e=t-this.start,n=this.easing(e/this.duration),this.step&&this.step(n),!0):!1},stop:function(){this.abort&&this.abort(),this.running=!1}};var yf,wf,xf,_f,kf,Ef,Tf,Cf,Sf=bf,Of=RegExp("^-(?:"+io.join("|")+")-"),Af=function(t){return t.replace(Of,"")},Pf=RegExp("^(?:"+io.join("|")+")([A-Z])"),jf=function(t){var e;return t?(Pf.test(t)&&(t="-"+t),e=t.replace(/[A-Z]/g,function(t){return"-"+t.toLowerCase()})):""},Nf={},Ff={};Za?(wf=lo("div").style,function(){void 0!==wf.transition?(xf="transition",_f="transitionend",kf=!0):void 0!==wf.webkitTransition?(xf="webkitTransition",_f="webkitTransitionEnd",kf=!0):kf=!1}(),xf&&(Ef=xf+"Duration",Tf=xf+"Property",Cf=xf+"TimingFunction"),yf=function(t,e,n,r,i){setTimeout(function(){var a,o,s,u,c;u=function(){o&&s&&(t.root.fire(t.name+":end",t.node,t.isIntro),i())},a=(t.node.namespaceURI||"")+t.node.tagName,t.node.style[Tf]=r.map(mf).map(jf).join(","),t.node.style[Cf]=jf(n.easing||"linear"),t.node.style[Ef]=n.duration/1e3+"s",c=function(e){var n;n=r.indexOf(hf(Af(e.propertyName))),-1!==n&&r.splice(n,1),r.length||(t.node.removeEventListener(_f,c,!1),s=!0,u())},t.node.addEventListener(_f,c,!1),setTimeout(function(){for(var i,l,p,h,f,d=r.length,v=[];d--;)h=r[d],i=a+h,kf&&!Ff[i]&&(t.node.style[mf(h)]=e[h],Nf[i]||(l=t.getStyle(h),Nf[i]=t.getStyle(h)!=e[h],Ff[i]=!Nf[i],Ff[i]&&(t.node.style[mf(h)]=l))),(!kf||Ff[i])&&(void 0===l&&(l=t.getStyle(h)),p=r.indexOf(h),-1===p?m("Something very strange happened with transitions. Please raise an issue at https://github.com/ractivejs/ractive/issues - thanks!",{node:t.node}):r.splice(p,1),f=/[^\d]*$/.exec(e[h])[0],v.push({name:mf(h),interpolator:Io(parseFloat(l),parseFloat(e[h])),suffix:f}));v.length?new Sf({root:t.root,duration:n.duration,easing:hf(n.easing||""),step:function(e){var n,r;for(r=v.length;r--;)n=v[r],t.node.style[n.name]=n.interpolator(e)+n.suffix},complete:function(){o=!0,u()}}):o=!0,r.length||(t.node.removeEventListener(_f,c,!1),s=!0,u())},0)},n.delay||0)}):yf=null;var Mf,Rf,Lf,If,Df,Uf=yf;if("undefined"!=typeof document){if(Mf="hidden",Df={},Mf in document)Lf="";else for(If=io.length;If--;)Rf=io[If],Mf=Rf+"Hidden",Mf in document&&(Lf=Rf);void 0!==Lf?(document.addEventListener(Lf+"visibilitychange",Br),Br()):("onfocusout"in document?(document.addEventListener("focusout",qr),document.addEventListener("focusin",Hr)):(window.addEventListener("pagehide",qr),window.addEventListener("blur",qr),window.addEventListener("pageshow",Hr),window.addEventListener("focus",Hr)),Df.hidden=!1)}var Vf,Bf,qf,Hf=Df;Za?(Bf=window.getComputedStyle||ko.getComputedStyle,Vf=function(t,e,n){var r,i=this;if(4===arguments.length)throw Error("t.animateStyle() returns a promise - use .then() instead of passing a callback");if(Hf.hidden)return this.setStyle(t,e),qf||(qf=os.resolve());"string"==typeof t?(r={},r[t]=e):(r=t,n=e),n||(v('The "%s" transition does not supply an options object to `t.animateStyle()`. This will break in a future version of Ractive. For more info see https://github.com/RactiveJS/Ractive/issues/340',this.name),n=this);var a=new os(function(t){var e,a,o,s,u,c,l;if(!n.duration)return i.setStyle(r),void t();for(e=Object.keys(r),a=[],o=Bf(i.node),u={},c=e.length;c--;)l=e[c],s=o[mf(l)],"0px"===s&&(s=0),s!=r[l]&&(a.push(l),i.node.style[mf(l)]=s);return a.length?void Uf(i,r,n,a,t):void t()});return a}):Vf=null;var zf=Vf,Wf=function(t,e){return"number"==typeof t?t={duration:t}:"string"==typeof t?t="slow"===t?{duration:600}:"fast"===t?{duration:200}:{duration:400}:t||(t={}),i({},t,e)},$f=zr,Gf=function(t,e,n){this.init(t,e,n)};Gf.prototype={init:pf,start:$f,getStyle:vf,setStyle:gf,animateStyle:zf,processParams:Wf};var Kf,Qf,Yf=Gf,Jf=$r;Kf=function(){var t=this.node,e=this.fragment.toString(!1);if(window&&window.appearsToBeIELessEqual8&&(t.type="text/css"),t.styleSheet)t.styleSheet.cssText=e;else{for(;t.hasChildNodes();)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}},Qf=function(){this.node.type&&"text/javascript"!==this.node.type||m("Script tag was updated. This does not cause the code to be re-evaluated!",{ractive:this.root}),this.node.text=this.fragment.toString(!1)};var Zf=function(){var t,e;return this.template.y?"":(t="<"+this.template.e,t+=this.attributes.map(Zr).join("")+this.conditionalAttributes.map(Zr).join(""),"option"===this.name&&Yr(this)&&(t+=" selected"),"input"===this.name&&Jr(this)&&(t+=" checked"),t+=">","textarea"===this.name&&void 0!==this.getAttribute("value")?t+=Ee(this.getAttribute("value")):void 0!==this.getAttribute("contenteditable")&&(t+=this.getAttribute("value")||""),this.fragment&&(e="script"!==this.name&&"style"!==this.name,t+=this.fragment.toString(e)),nl.test(this.template.e)||(t+=""),t)},Xf=Xr,td=ti,ed=function(t){this.init(t)};ed.prototype={bubble:Sp,detach:Op,find:Ap,findAll:Pp,findAllComponents:jp,findComponent:Np,findNextNode:Fp,firstNode:Mp,getAttribute:Rp,init:cf,rebind:lf,render:Jf,toString:Zf,unbind:Xf,unrender:td};var nd=ed,rd=/^\s*$/,id=/^\s*/,ad=function(t){var e,n,r,i;return e=t.split("\n"),n=e[0],void 0!==n&&rd.test(n)&&e.shift(),r=R(e),void 0!==r&&rd.test(r)&&e.pop(),i=e.reduce(ni,null),i&&(t=e.map(function(t){return t.replace(i,"")}).join("\n")),t},od=ri,sd=function(t,e){var n;return e?n=t.split("\n").map(function(t,n){return n?e+t:t}).join("\n"):t},ud='Could not find template for partial "%s"',cd=function(t){var e,n;e=this.parentFragment=t.parentFragment,this.root=e.root,this.type=Tc,this.index=t.index,this.name=t.template.r,this.rendered=!1,this.fragment=this.fragmentToRender=this.fragmentToUnrender=null,Vl.init(this,t),this.keypath||((n=od(this.root,this.name,e))?(gl.call(this),this.isNamed=!0,this.setTemplate(n)):v(ud,this.name))};cd.prototype={bubble:function(){this.parentFragment.bubble()},detach:function(){return this.fragment.detach()},find:function(t){return this.fragment.find(t)},findAll:function(t,e){return this.fragment.findAll(t,e)},findComponent:function(t){return this.fragment.findComponent(t)},findAllComponents:function(t,e){return this.fragment.findAllComponents(t,e)},firstNode:function(){return this.fragment.firstNode()},findNextNode:function(){return this.parentFragment.findNextNode(this)},getPartialName:function(){return this.isNamed&&this.name?this.name:void 0===this.value?this.name:this.value},getValue:function(){ return this.fragment.getValue()},rebind:function(t,e){this.isNamed||Ul.call(this,t,e),this.fragment&&this.fragment.rebind(t,e)},render:function(){return this.docFrag=document.createDocumentFragment(),this.update(),this.rendered=!0,this.docFrag},resolve:Vl.resolve,setValue:function(t){var e;(void 0===t||t!==this.value)&&(void 0!==t&&(e=od(this.root,""+t,this.parentFragment)),!e&&this.name&&(e=od(this.root,this.name,this.parentFragment))&&(gl.call(this),this.isNamed=!0),e||v(ud,this.name,{ractive:this.root}),this.value=t,this.setTemplate(e||[]),this.bubble(),this.rendered&&ms.addView(this))},setTemplate:function(t){this.fragment&&(this.fragment.unbind(),this.rendered&&(this.fragmentToUnrender=this.fragment)),this.fragment=new ev({template:t,root:this.root,owner:this,pElement:this.parentFragment.pElement}),this.fragmentToRender=this.fragment},toString:function(t){var e,n,r,i;return e=this.fragment.toString(t),n=this.parentFragment.items[this.index-1],n&&n.type===wc?(r=n.text.split("\n").pop(),(i=/^\s+$/.exec(r))?sd(e,i[0]):e):e},unbind:function(){this.isNamed||gl.call(this),this.fragment&&this.fragment.unbind()},unrender:function(t){this.rendered&&(this.fragment&&this.fragment.unrender(t),this.rendered=!1)},update:function(){var t,e;this.fragmentToUnrender&&(this.fragmentToUnrender.unrender(!0),this.fragmentToUnrender=null),this.fragmentToRender&&(this.docFrag.appendChild(this.fragmentToRender.render()),this.fragmentToRender=null),this.rendered&&(t=this.parentFragment.getNode(),e=this.parentFragment.findNextNode(this),t.insertBefore(this.docFrag,e))}};var ld,pd,hd,fd=cd,dd=ui,md=ci,vd=new ns("detach"),gd=li,bd=pi,yd=hi,wd=fi,xd=di,_d=mi,kd=function(t,e,n,r){var i=t.root,a=t.keypath;r?i.viewmodel.smartUpdate(a,e,r):i.viewmodel.mark(a)},Ed=[],Td=["pop","push","reverse","shift","sort","splice","unshift"];Td.forEach(function(t){var e=function(){for(var e=arguments.length,n=Array(e),r=0;e>r;r++)n[r]=arguments[r];var i,a,o,s;for(i=mu(this,t,n),a=Array.prototype[t].apply(this,arguments),ms.start(),this._ractive.setting=!0,s=this._ractive.wrappers.length;s--;)o=this._ractive.wrappers[s],ms.addRactive(o.root),kd(o,this,t,i);return ms.end(),this._ractive.setting=!1,a};xo(Ed,t,{value:e})}),ld={},ld.__proto__?(pd=function(t){t.__proto__=Ed},hd=function(t){t.__proto__=Array.prototype}):(pd=function(t){var e,n;for(e=Td.length;e--;)n=Td[e],xo(t,n,{value:Ed[n],configurable:!0})},hd=function(t){var e;for(e=Td.length;e--;)delete t[Td[e]]}),pd.unpatch=hd;var Cd,Sd,Od,Ad=pd;Cd={filter:function(t){return a(t)&&(!t._ractive||!t._ractive.setting)},wrap:function(t,e,n){return new Sd(t,e,n)}},Sd=function(t,e,n){this.root=t,this.value=e,this.keypath=E(n),e._ractive||(xo(e,"_ractive",{value:{wrappers:[],instances:[],setting:!1},configurable:!0}),Ad(e)),e._ractive.instances[t._guid]||(e._ractive.instances[t._guid]=0,e._ractive.instances.push(t)),e._ractive.instances[t._guid]+=1,e._ractive.wrappers.push(this)},Sd.prototype={get:function(){return this.value},teardown:function(){var t,e,n,r,i;if(t=this.value,e=t._ractive,n=e.wrappers,r=e.instances,e.setting)return!1;if(i=n.indexOf(this),-1===i)throw Error(Od);if(n.splice(i,1),n.length){if(r[this.root._guid]-=1,!r[this.root._guid]){if(i=r.indexOf(this.root),-1===i)throw Error(Od);r.splice(i,1)}}else delete t._ractive,Ad.unpatch(this.value)}},Od="Something went wrong in a rather interesting way";var Pd,jd,Nd=Cd,Fd=/^\s*[0-9]+\s*$/,Md=function(t){return Fd.test(t)?[]:{}};try{Object.defineProperty({},"test",{value:0}),Pd={filter:function(t,e,n){var r,i;return e?(e=E(e),(r=n.viewmodel.wrapped[e.parent.str])&&!r.magic?!1:(i=n.viewmodel.get(e.parent),a(i)&&/^[0-9]+$/.test(e.lastKey)?!1:i&&("object"==typeof i||"function"==typeof i))):!1},wrap:function(t,e,n){return new jd(t,e,n)}},jd=function(t,e,n){var r,i,a;return n=E(n),this.magic=!0,this.ractive=t,this.keypath=n,this.value=e,this.prop=n.lastKey,r=n.parent,this.obj=r.isRoot?t.viewmodel.data:t.viewmodel.get(r),i=this.originalDescriptor=Object.getOwnPropertyDescriptor(this.obj,this.prop),i&&i.set&&(a=i.set._ractiveWrappers)?void(-1===a.indexOf(this)&&a.push(this)):void vi(this,e,i)},jd.prototype={get:function(){return this.value},reset:function(t){return this.updating?void 0:(this.updating=!0,this.obj[this.prop]=t,ms.addRactive(this.ractive),this.ractive.viewmodel.mark(this.keypath,{keepExistingWrapper:!0}),this.updating=!1,!0)},set:function(t,e){this.updating||(this.obj[this.prop]||(this.updating=!0,this.obj[this.prop]=Md(t),this.updating=!1),this.obj[this.prop][t]=e)},teardown:function(){var t,e,n,r,i;return this.updating?!1:(t=Object.getOwnPropertyDescriptor(this.obj,this.prop),e=t&&t.set,void(e&&(r=e._ractiveWrappers,i=r.indexOf(this),-1!==i&&r.splice(i,1),r.length||(n=this.obj[this.prop],Object.defineProperty(this.obj,this.prop,this.originalDescriptor||{writable:!0,enumerable:!0,configurable:!0}),this.obj[this.prop]=n))))}}}catch(Eo){Pd=!1}var Rd,Ld,Id=Pd;Id&&(Rd={filter:function(t,e,n){return Id.filter(t,e,n)&&Nd.filter(t)},wrap:function(t,e,n){return new Ld(t,e,n)}},Ld=function(t,e,n){this.value=e,this.magic=!0,this.magicWrapper=Id.wrap(t,e,n),this.arrayWrapper=Nd.wrap(t,e,n)},Ld.prototype={get:function(){return this.value},teardown:function(){this.arrayWrapper.teardown(),this.magicWrapper.teardown()},reset:function(t){return this.magicWrapper.reset(t)}});var Dd=Rd,Ud=gi,Vd={},Bd=wi,qd=xi,Hd=Ei,zd=Ai,Wd=Pi,$d=function(t,e){this.computation=t,this.viewmodel=t.viewmodel,this.ref=e,this.root=this.viewmodel.ractive,this.parentFragment=this.root.component&&this.root.component.parentFragment};$d.prototype={resolve:function(t){this.computation.softDeps.push(t),this.computation.unresolvedDeps[t.str]=null,this.viewmodel.register(t,this.computation,"computed")}};var Gd=$d,Kd=function(t,e){this.key=t,this.getter=e.getter,this.setter=e.setter,this.hardDeps=e.deps||[],this.softDeps=[],this.unresolvedDeps={},this.depValues={},this._dirty=this._firstRun=!0};Kd.prototype={constructor:Kd,init:function(t){var e,n=this;this.viewmodel=t,this.bypass=!0,e=t.get(this.key),t.clearCache(this.key.str),this.bypass=!1,this.setter&&void 0!==e&&this.set(e),this.hardDeps&&this.hardDeps.forEach(function(e){return t.register(e,n,"computed")})},invalidate:function(){this._dirty=!0},get:function(){var t,e,n=this,r=!1;if(this.getting){var i="The "+this.key.str+" computation indirectly called itself. This probably indicates a bug in the computation. It is commonly caused by `array.sort(...)` - if that's the case, clone the array first with `array.slice().sort(...)`";return d(i),this.value}if(this.getting=!0,this._dirty){if(this._firstRun||!this.hardDeps.length&&!this.softDeps.length?r=!0:[this.hardDeps,this.softDeps].forEach(function(t){var e,i,a;if(!r)for(a=t.length;a--;)if(e=t[a],i=n.viewmodel.get(e),!s(i,n.depValues[e.str]))return n.depValues[e.str]=i,void(r=!0)}),r){this.viewmodel.capture();try{this.value=this.getter()}catch(a){m('Failed to compute "%s"',this.key.str),h(a.stack||a),this.value=void 0}t=this.viewmodel.release(),e=this.updateDependencies(t),e&&[this.hardDeps,this.softDeps].forEach(function(t){t.forEach(function(t){n.depValues[t.str]=n.viewmodel.get(t)})})}this._dirty=!1}return this.getting=this._firstRun=!1,this.value},set:function(t){if(this.setting)return void(this.value=t);if(!this.setter)throw Error("Computed properties without setters are read-only. (This may change in a future version of Ractive!)");this.setter(t)},updateDependencies:function(t){var e,n,r,i,a;for(n=this.softDeps,e=n.length;e--;)r=n[e],-1===t.indexOf(r)&&(i=!0,this.viewmodel.unregister(r,this,"computed"));for(e=t.length;e--;)r=t[e],-1!==n.indexOf(r)||this.hardDeps&&-1!==this.hardDeps.indexOf(r)||(i=!0,ji(this.viewmodel,r)&&!this.unresolvedDeps[r.str]?(a=new Gd(this,r.str),t.splice(e,1),this.unresolvedDeps[r.str]=a,ms.addUnresolved(a)):this.viewmodel.register(r,this,"computed"));return i&&(this.softDeps=t.slice()),i}};var Qd=Kd,Yd=Ni,Jd={FAILED_LOOKUP:!0},Zd=Fi,Xd={},tm=Ri,em=Li,nm=function(t,e){this.localKey=t,this.keypath=e.keypath,this.origin=e.origin,this.deps=[],this.unresolved=[],this.resolved=!1};nm.prototype={forceResolution:function(){this.keypath=this.localKey,this.setup()},get:function(t,e){return this.resolved?this.origin.get(this.map(t),e):void 0},getValue:function(){return this.keypath?this.origin.get(this.keypath):void 0},initViewmodel:function(t){this.local=t,this.setup()},map:function(t){return void 0===typeof this.keypath?this.localKey:t.replace(this.localKey,this.keypath)},register:function(t,e,n){this.deps.push({keypath:t,dep:e,group:n}),this.resolved&&this.origin.register(this.map(t),e,n)},resolve:function(t){void 0!==this.keypath&&this.unbind(!0),this.keypath=t,this.setup()},set:function(t,e){this.resolved||this.forceResolution(),this.origin.set(this.map(t),e)},setup:function(){var t=this;void 0!==this.keypath&&(this.resolved=!0,this.deps.length&&(this.deps.forEach(function(e){var n=t.map(e.keypath);if(t.origin.register(n,e.dep,e.group),e.dep.setValue)e.dep.setValue(t.origin.get(n));else{if(!e.dep.invalidate)throw Error("An unexpected error occurred. Please raise an issue at https://github.com/ractivejs/ractive/issues - thanks!");e.dep.invalidate()}}),this.origin.mark(this.keypath)))},setValue:function(t){if(!this.keypath)throw Error("Mapping does not have keypath, cannot set value. Please raise an issue at https://github.com/ractivejs/ractive/issues - thanks!");this.origin.set(this.keypath,t)},unbind:function(t){var e=this;t||delete this.local.mappings[this.localKey],this.resolved&&(this.deps.forEach(function(t){e.origin.unregister(e.map(t.keypath),t.dep,t.group)}),this.tracker&&this.origin.unregister(this.keypath,this.tracker))},unregister:function(t,e,n){var r,i;if(this.resolved){for(r=this.deps,i=r.length;i--;)if(r[i].dep===e){r.splice(i,1);break}this.origin.unregister(this.map(t),e,n)}}};var rm=Ii,im=function(t,e){var n,r,i,a;return n={},r=0,i=t.map(function(t,i){var o,s,u;s=r,u=e.length;do{if(o=e.indexOf(t,s),-1===o)return a=!0,-1;s=o+1}while(n[o]&&u>s);return o===r&&(r+=1),o!==i&&(a=!0),n[o]=!0,o})},am=Di,om={},sm=Bi,um=Hi,cm=zi,lm=Wi,pm=Gi,hm={implicit:!0},fm={noCascade:!0},dm=Qi,mm=Yi,vm=function(t){var e,n,r=t.adapt,i=t.data,a=t.ractive,o=t.computed,s=t.mappings;this.ractive=a,this.adaptors=r,this.onchange=t.onchange,this.cache={},this.cacheMap=wo(null),this.deps={computed:wo(null),"default":wo(null)},this.depsMap={computed:wo(null),"default":wo(null)},this.patternObservers=[],this.specials=wo(null),this.wrapped=wo(null),this.computations=wo(null),this.captureGroups=[],this.unresolvedImplicitDependencies=[],this.changes=[],this.implicitChanges={},this.noCascade={},this.data=i,this.mappings=wo(null);for(e in s)this.map(E(e),s[e]);if(i)for(e in i)(n=this.mappings[e])&&void 0===n.getValue()&&n.setValue(i[e]);for(e in o)s&&e in s&&p("Cannot map to a computed property ('%s')",e),this.compute(E(e),o[e]);this.ready=!0};vm.prototype={adapt:Ud,applyChanges:Hd,capture:zd,clearCache:Wd,compute:Yd,get:Zd,init:tm,map:em,mark:rm,merge:am,register:sm,release:um,reset:cm,set:lm,smartUpdate:pm,teardown:dm,unregister:mm};var gm=vm;Zi.prototype={constructor:Zi,begin:function(t){this.inProcess[t._guid]=!0},end:function(t){var e=t.parent;e&&this.inProcess[e._guid]?Xi(this.queue,e).push(t):ta(this,t),delete this.inProcess[t._guid]}};var bm=Zi,ym=ea,wm=/\$\{([^\}]+)\}/g,xm=new ns("construct"),_m=new ns("config"),km=new bm("init"),Em=0,Tm=["adaptors","components","decorators","easing","events","interpolators","partials","transitions"],Cm=aa,Sm=la;la.prototype={bubble:function(){this.dirty||(this.dirty=!0,ms.addView(this))},update:function(){this.callback(this.fragment.getValue()),this.dirty=!1},rebind:function(t,e){this.fragment.rebind(t,e)},unbind:function(){this.fragment.unbind()}};var Om=function(t,e,n,i,o){var s,u,c,l,p,h,f={},d={},v={},g=[];for(u=t.parentFragment,c=t.root,o=o||{},r(f,o),o.content=i||[],f[""]=o.content,e.defaults.el&&m("The <%s/> component has a default `el` property; it has been disregarded",t.name),l=u;l;){if(l.owner.type===Ac){p=l.owner.container;break}l=l.parent}return n&&Object.keys(n).forEach(function(e){var r,i,o=n[e];if("string"==typeof o)r=cl(o),d[e]=r?r.value:o;else if(0===o)d[e]=!0;else{if(!a(o))throw Error("erm wut");ha(o)?(v[e]={origin:t.root.viewmodel,keypath:void 0},i=pa(t,o[0],function(t){t.isSpecial?h?s.set(e,t.value):(d[e]=t.value,delete v[e]):h?s.viewmodel.mappings[e].resolve(t):v[e].keypath=t})):i=new Sm(t,o,function(t){h?s.set(e,t):d[e]=t}),g.push(i)}}),s=wo(e.prototype),Cm(s,{el:null,append:!0,data:d,partials:o,magic:c.magic||e.defaults.magic,modifyArrays:c.modifyArrays,adapt:c.adapt},{parent:c,component:t,container:p,mappings:v,inlinePartials:f,cssIds:u.cssIds}),h=!0,t.resolvers=g,s},Am=fa,Pm=function(t){var e,n;for(e=t.root;e;)(n=e._liveComponentQueries["_"+t.name])&&n.push(t.instance),e=e.parent},jm=ma,Nm=va,Fm=ga,Mm=ba,Rm=ya,Lm=new ns("teardown"),Im=xa,Dm=function(t,e){this.init(t,e)};Dm.prototype={detach:md,find:gd,findAll:bd,findAllComponents:yd,findComponent:wd,findNextNode:xd,firstNode:_d,init:jm,rebind:Nm,render:Fm,toString:Mm,unbind:Rm,unrender:Im};var Um=Dm,Vm=function(t){this.type=Cc,this.value=t.template.c};Vm.prototype={detach:dl,firstNode:function(){return this.node},render:function(){return this.node||(this.node=document.createComment(this.value)),this.node},toString:function(){return""},unrender:function(t){t&&this.node.parentNode.removeChild(this.node)}};var Bm=Vm,qm=function(t){var e,n;this.type=Ac,this.container=e=t.parentFragment.root,this.component=n=e.component,this.container=e,this.containerFragment=t.parentFragment,this.parentFragment=n.parentFragment;var r=this.name=t.template.n||"",i=e._inlinePartials[r];i||(m('Could not find template for partial "'+r+'"',{ractive:t.root}),i=[]),this.fragment=new ev({owner:this,root:e.parent,template:i,pElement:this.containerFragment.pElement}),a(n.yielders[r])?n.yielders[r].push(this):n.yielders[r]=[this],ms.scheduleTask(function(){if(n.yielders[r].length>1)throw Error("A component template can only have one {{yield"+(r?" "+r:"")+"}} declaration at a time")})};qm.prototype={detach:function(){return this.fragment.detach()},find:function(t){return this.fragment.find(t)},findAll:function(t,e){return this.fragment.findAll(t,e)},findComponent:function(t){return this.fragment.findComponent(t)},findAllComponents:function(t,e){return this.fragment.findAllComponents(t,e)},findNextNode:function(){return this.containerFragment.findNextNode(this)},firstNode:function(){return this.fragment.firstNode()},getValue:function(t){return this.fragment.getValue(t)},render:function(){return this.fragment.render()},unbind:function(){this.fragment.unbind()},unrender:function(t){this.fragment.unrender(t),L(this.component.yielders[this.name],this)},rebind:function(t,e){this.fragment.rebind(t,e)},toString:function(){return""+this.fragment}};var Hm=qm,zm=function(t){this.declaration=t.template.a};zm.prototype={init:jo,render:jo,unrender:jo,teardown:jo,toString:function(){return""}};var Wm=zm,$m=_a,Gm=Ea,Km=Ta,Qm=Ca,Ym=Aa,Jm=ja,Zm=function(t){this.init(t)};Zm.prototype={bubble:sc,detach:uc,find:cc,findAll:lc,findAllComponents:pc,findComponent:hc,findNextNode:fc,firstNode:dc,getArgsList:pl,getNode:hl,getValue:fl,init:$m,rebind:Gm,registerIndexRef:function(t){var e=this.registeredIndexRefs;-1===e.indexOf(t)&&e.push(t)},render:Km,toString:Qm,unbind:Ym,unregisterIndexRef:function(t){var e=this.registeredIndexRefs;e.splice(e.indexOf(t),1)},unrender:Jm};var Xm,tv,ev=Zm,nv=Na,rv=["template","partials","components","decorators","events"],iv=new ns("reset"),av=function(t,e){function n(e,r,i){i&&i.partials[t]||e.forEach(function(e){e.type===Tc&&e.getPartialName()===t&&r.push(e),e.fragment&&n(e.fragment.items,r,i),a(e.fragments)?n(e.fragments,r,i):a(e.items)?n(e.items,r,i):e.type===Oc&&e.instance&&n(e.instance.fragment.items,r,e.instance),e.type===Ec&&(a(e.attributes)&&n(e.attributes,r,i),a(e.conditionalAttributes)&&n(e.conditionalAttributes,r,i))})}var r,i=[];return n(this.fragment.items,i),this.partials[t]=e,r=ms.start(this,!0),i.forEach(function(e){e.value=void 0,e.setValue(t)}),ms.end(),r},ov=Fa,sv=gu("reverse"),uv=Ma,cv=gu("shift"),lv=gu("sort"),pv=gu("splice"),hv=La,fv=Ia,dv=new ns("teardown"),mv=Ua,vv=Va,gv=Ba,bv=new ns("unrender"),yv=gu("unshift"),wv=qa,xv=new ns("update"),_v=Ha,kv={add:Yo,animate:xs,detach:ks,find:Ts,findAll:Ms,findAllComponents:Rs,findComponent:Ls,findContainer:Is,findParent:Ds,fire:qs,get:Hs,insert:Ws,merge:Gs,observe:uu,observeOnce:cu,off:hu,on:fu,once:du,pop:bu,push:yu,render:Su,reset:nv,resetPartial:av,resetTemplate:ov,reverse:sv,set:uv,shift:cv,sort:lv,splice:pv,subtract:hv,teardown:fv,toggle:mv,toHTML:vv,toHtml:vv,unrender:gv,unshift:yv,update:wv,updateModel:_v},Ev=function(t,e,n){return n||Wa(t,e)?function(){var n,r="_super"in this,i=this._super;return this._super=e,n=t.apply(this,arguments),r&&(this._super=i),n}:t},Tv=$a,Cv=Ya,Sv=function(t){var e,n,r={};return t&&(e=t._ractive)?(r.ractive=e.root,r.keypath=e.keypath.str,r.index={},(n=Cl(e.proxy.parentFragment))&&(r.index=Cl.resolve(n)),r):r};Xm=function(t){return this instanceof Xm?void Cm(this,t):new Xm(t)},tv={DEBUG:{writable:!0,value:!0},DEBUG_PROMISES:{writable:!0,value:!0},extend:{value:Cv},getNodeInfo:{value:Sv},parse:{value:Hu},Promise:{value:os},svg:{value:ro},magic:{value:eo},VERSION:{value:"0.7.3"},adaptors:{writable:!0,value:{}},components:{writable:!0,value:{}},decorators:{writable:!0,value:{}},easing:{writable:!0,value:uo},events:{writable:!0,value:{}},interpolators:{writable:!0,value:Uo},partials:{writable:!0,value:{}},transitions:{writable:!0,value:{}}},_o(Xm,tv),Xm.prototype=r(kv,so),Xm.prototype.constructor=Xm,Xm.defaults=Xm.prototype;var Ov="function";if(typeof Date.now!==Ov||typeof String.prototype.trim!==Ov||typeof Object.keys!==Ov||typeof Array.prototype.indexOf!==Ov||typeof Array.prototype.forEach!==Ov||typeof Array.prototype.map!==Ov||typeof Array.prototype.filter!==Ov||"undefined"!=typeof window&&typeof window.addEventListener!==Ov)throw Error("It looks like you're attempting to use Ractive.js in an older browser. You'll need to use one of the 'legacy builds' in order to continue - see http://docs.ractivejs.org/latest/legacy-builds for more information.");var Av=Xm;return Av})},{}],8:[function(t,e,n){!function(){function t(t,e,n){return t.call.apply(t.bind,arguments)}function n(t,e,n){if(!t)throw Error();if(2r;r++)if(n[r]==e)return!0;return!1}function u(t){if("string"==typeof t.fa)return t.fa;var e=t.k.location.protocol;return"about:"==e&&(e=t.F.location.protocol),"https:"==e?"https:":"http:"}function c(t,e,n){function r(){u&&i&&o&&(u(s),u=null)}e=t.createElement("link",{rel:"stylesheet",href:e,media:"all"});var i=!1,o=!0,s=null,u=n||null;Z?(e.onload=function(){i=!0,r()},e.onerror=function(){i=!0,s=Error("Stylesheet failed to load"),r()}):setTimeout(function(){i=!0,r()},0),a(t,"head",e)}function l(t,e,n,r){var i=t.H.getElementsByTagName("head")[0];if(i){var a=t.createElement("script",{src:e}),o=!1;return a.onload=a.onreadystatechange=function(){o||this.readyState&&"loaded"!=this.readyState&&"complete"!=this.readyState||(o=!0,n&&n(null),a.onload=a.onreadystatechange=null,"HEAD"==a.parentNode.tagName&&i.removeChild(a))},i.appendChild(a),setTimeout(function(){o||(o=!0,n&&n(Error("Script load timeout")))},r||5e3),a}return null}function p(){this.S=0,this.K=null}function h(t){return t.S++,function(){t.S--,d(t)}}function f(t,e){t.K=e,d(t)}function d(t){0==t.S&&t.K&&(t.K(),t.K=null)}function m(t){this.ea=t||"-"}function v(t,e){this.Q=t,this.M=4,this.L="n";var n=(e||"n4").match(/^([nio])([1-9])$/i);n&&(this.L=n[1],this.M=parseInt(n[2],10))}function g(t){return w(t)+" "+(t.M+"00")+" 300px "+b(t.Q)}function b(t){var e=[];t=t.split(/,\s*/);for(var n=0;nparseInt(t[1],10)||536===parseInt(t[1],10)&&11>=parseInt(t[2],10))}return tt}function M(t,e,n){for(var r in X)if(X.hasOwnProperty(r)&&e===t.s[X[r]]&&n===t.s[X[r]])return!0;return!1}function R(t){var e,n=t.w.m.offsetWidth,r=t.A.m.offsetWidth;(e=n===t.s.serif&&r===t.s["sans-serif"])||(e=F()&&M(t,n,r)),e?J()-t.ga>=t.v?F()&&M(t,n,r)&&(null===t.Z||t.Z.hasOwnProperty(t.g.getName()))?I(t,t.G):I(t,t.J):L(t):I(t,t.G)}function L(t){setTimeout(r(function(){R(this)},t),50)}function I(t,e){setTimeout(r(function(){this.w.remove(),this.A.remove(),this.C.remove(),this.D.remove(),e(this.g)},t),0)}function D(t,e,n){this.a=t,this.p=e,this.P=0,this.ba=this.Y=!1,this.v=n}function U(t){0==--t.P&&t.Y&&(t.ba?(t=t.p,t.u&&o(t.j,[t.e.d(t.f,"active")],[t.e.d(t.f,"loading"),t.e.d(t.f,"inactive")]),T(t,"active")):E(t.p))}function V(t){this.F=t,this.q=new C,this.$=0,this.T=this.U=!0}function B(t,e,n,i,a){var s=0==--t.$;(t.T||t.U)&&setTimeout(function(){var t=a||null,u=i||null||{};if(0===n.length&&s)E(e.p);else{e.P+=n.length,s&&(e.Y=s);var c,l=[];for(c=0;ce;e++)r[e].load(function(e,n,r){B(t,a,e,n,r)})}function H(t,e,n){this.N=t?t:e+nt,this.o=[],this.R=[],this.ca=n||""}function z(t,e){for(var n=e.length,r=0;n>r;r++){var i=e[r].split(":");3==i.length&&t.R.push(i.pop());var a="";2==i.length&&""!=i[1]&&(a=":"),t.o.push(i.join(a))}}function W(t){this.o=t,this.aa=[],this.I={}}function $(t,e){this.a=t,this.c=e}function G(t,e){this.a=t,this.c=e,this.X=[]}function K(t,e){this.a=t,this.c=e}function Q(t,e){this.a=t,this.c=e}function Y(t,e){this.a=t,this.c=e}var J=Date.now||function(){return+new Date},Z=!!window.FontFace;i.prototype.createElement=function(t,e,n){if(t=this.H.createElement(t),e)for(var r in e)e.hasOwnProperty(r)&&("style"==r?t.style.cssText=e[r]:t.setAttribute(r,e[r]));return n&&t.appendChild(this.H.createTextNode(n)),t},m.prototype.d=function(t){for(var e=[],n=0;n=n.v?n.J(n.g):e.fonts.load(g(n.g),n.h).then(function(e){1<=e.length?n.G(n.g):setTimeout(t,25)},function(){n.J(n.g)})}var e=this.a.k.document,n=this,r=J();t()};var X={ia:"serif",ha:"sans-serif"},tt=null;N.prototype.start=function(){this.s.serif=this.C.m.offsetWidth,this.s["sans-serif"]=this.D.m.offsetWidth,this.ga=J(),R(this)};var et=null;D.prototype.V=function(t){var e=this.p;e.u&&o(e.j,[e.e.d(e.f,t.getName(),""+y(t),"active")],[e.e.d(e.f,t.getName(),""+y(t),"loading"),e.e.d(e.f,t.getName(),""+y(t),"inactive")]),T(e,"fontactive",t),this.ba=!0,U(this)},D.prototype.W=function(t){var e=this.p;if(e.u){var n=s(e.j,e.e.d(e.f,t.getName(),""+y(t),"active")),r=[],i=[e.e.d(e.f,t.getName(),""+y(t),"loading")];n||r.push(e.e.d(e.f,t.getName(),""+y(t),"inactive")),o(e.j,r,i)}T(e,"fontinactive",t),U(this)},V.prototype.load=function(t){this.a=new i(this.F,t.context||this.F),this.U=!1!==t.events,this.T=!1!==t.classes,q(this,new _(this.a,t),t)};var nt="//fonts.googleapis.com/css";H.prototype.d=function(){if(0==this.o.length)throw Error("No fonts to load!");if(-1!=this.N.indexOf("kit="))return this.N;for(var t=this.o.length,e=[],n=0;t>n;n++)e.push(this.o[n].replace(/ /g,"+"));return t=this.N+"?family="+e.join("%7C"),0e;e++){var n=this.o[e].split(":"),r=n[0].replace(/\+/g," "),i=["n4"];if(2<=n.length){var a,o=n[1];if(a=[],o)for(var o=o.split(","),s=o.length,u=0;s>u;u++){var c;if(c=o[u],c.match(/^[\w-]+$/))if(c=ot.exec(c.toLowerCase()),null==c)c="";else{var l;if(l=c[1],null==l||""==l)l="4";else{var p=it[l];l=p?p:isNaN(l)?"4":l.substr(0,1)}c=c[2],c=""+(null==c||""==c?"n":at[c])+l}else c="";c&&a.push(c)}0i;++i){var o=n.fonts[i];r.X.push(new v(o.name,x("font-weight:"+o.weight+";font-style:"+o.style)))}t(r.X)},l(this.a,this.B(e),function(e){e&&t([])})):t([])},K.prototype.B=function(t){return(this.c.api||"https://use.typekit.net")+"/"+t+".js"},K.prototype.load=function(t){var e=this.c.id,n=this.a.k;e?l(this.a,this.B(e),function(e){if(e)t([]);else if(n.Typekit&&n.Typekit.config&&n.Typekit.config.fn){e=n.Typekit.config.fn;for(var r=[],i=0;ie;e++)c(this.a,r[e],h(o));var s=[];for(e=0,n=i.length;n>e;e++)if(r=i[e].split(":"),r[1])for(var u=r[1].split(","),l=0;lt&&(t=0),0>e&&(e=0),t+window.innerWidth>screen.availWidth&&(t=screen.availWidth-window.innerWidth),e+window.innerHeight>screen.availHeight&&(e=screen.availHeight-window.innerHeight),{x:t,y:e}},t.get("x")&&(a=e.screenX-t.get("x")+window.screenLeft,o=e.screenY-t.get("y")+window.screenTop,t.get("config.locked")&&(i=n(a,o),a=i.x,o=i.y),r.winset(t.get("config.window"),"pos",a+","+o)),t.set({x:e.screenX,y:e.screenY})},resize:function(t,e){var n,i,a,o;return i=function(t,e){return t=Math.clamp(t,100,screen.width),e=Math.clamp(e,100,screen.height),{x:t,y:e}},t.get("x")&&(a=e.screenX-t.get("x")+window.innerWidth,o=e.screenY-t.get("y")+window.innerHeight,n=i(a,o),a=n.x,o=n.y,r.winset(t.get("config.window"),"size",a+","+o)),t.set({x:e.screenX,y:e.screenY})}}},{"./byond":9}],20:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[" "," "," "," "," "," ",{p:[8,1,327],t:7,e:"ui-notice",f:[{t:4,f:[{p:[10,5,372],t:7,e:"ui-section",a:{label:"Interface Lock"},f:[{p:[11,7,415],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.locked"],s:'_0?"lock":"unlock"'},p:[11,24,432]}],action:"lock"},f:[{t:2,x:{r:["data.locked"],s:'_0?"Engaged":"Disengaged"'},p:[11,75,483]}]}]}],n:50,r:"data.siliconUser",p:[9,3,342]},{t:4,n:51,f:[{p:[14,5,574],t:7,e:"span",f:["Swipe an ID card to ",{t:2,x:{r:["data.locked"],s:'_0?"unlock":"lock"'},p:[14,31,600]}," this interface."]}],r:"data.siliconUser"}]}," ",{p:[17,1,685],t:7,e:"status"}," ",{t:4,f:[{t:4,f:[{p:[20,5,770],t:7,e:"controls"}],n:50,x:{r:["data.screen"],s:"_0==1"},p:[19,3,740]},{t:4,n:51,f:[{t:4,n:50,x:{r:["data.screen"],s:"_0==2"},f:[{p:[22,5,817],t:7,e:"vents"}]},{t:4,n:50,x:{r:["data.screen"],s:"(!(_0==2))&&(_0==3)"},f:[" ",{p:[24,5,862],t:7,e:"scrubbers"}]},{t:4,n:50,x:{r:["data.screen"],s:"(!(_0==2))&&((!(_0==3))&&(_0==4))"},f:[" ",{p:[26,5,911],t:7,e:"modes"}]},{t:4,n:50,x:{r:["data.screen"],s:"(!(_0==2))&&((!(_0==3))&&((!(_0==4))&&(_0==5)))"},f:[" ",{p:[28,5,956],t:7,e:"thresholds"}]}],x:{r:["data.screen"],s:"_0==1"}}],n:50,x:{r:["data.locked","data.siliconUser"],s:"!_0||_1"},p:[18,1,696]}]},i.exports.components=i.exports.components||{};var a={vents:t("./air_alarm/vents.ract"),modes:t("./air_alarm/modes.ract"),thresholds:t("./air_alarm/thresholds.ract"),status:t("./air_alarm/status.ract"),scrubbers:t("./air_alarm/scrubbers.ract"),controls:t("./air_alarm/controls.ract")};for(var o in a)a.hasOwnProperty(o)&&(i.exports.components[o]=a[o]);e.exports=r.extend(i.exports)},{"./air_alarm/controls.ract":22,"./air_alarm/modes.ract":23,"./air_alarm/scrubbers.ract":24,"./air_alarm/status.ract":25,"./air_alarm/thresholds.ract":26,"./air_alarm/vents.ract":27,"ractive/ractive.runtime":7}],21:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-button",a:{icon:"arrow-left",action:"screen",params:'{"screen": 1}'},f:["Back"]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],22:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Air Controls"},f:[{p:[2,3,37],t:7,e:"ui-section",f:[{p:[3,5,55],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.atmos_alarm"],s:'_0?"exclamation-triangle":"exclamation"'},p:[3,22,72]}],style:[{t:2,x:{r:["data.atmos_alarm"],s:'_0?"caution":null'},p:[3,92,142]}],action:[{t:2,x:{r:["data.atmos_alarm"],s:'_0?"reset":"alarm"'},p:[4,17,200]}]},f:["Area Atmosphere Alarm"]}]}," ",{p:[6,3,296],t:7,e:"ui-section",f:[{p:[7,5,314],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.mode"],s:'_0==3?"exclamation-triangle":"exclamation"'},p:[7,22,331]}],style:[{t:2,x:{r:["data.mode"],s:'_0==3?"danger":null'},p:[7,90,399]}],action:"mode",params:['{"mode": ',{t:2,x:{r:["data.mode"],s:"_0==3?1:3"},p:[8,38,475]},"}"]},f:["Panic Siphon"]}]}," ",{p:[10,3,549],t:7,e:"br"}," ",{p:[11,3,558],t:7,e:"ui-section",f:[{p:[12,5,576],t:7,e:"ui-button",a:{icon:"sign-out",action:"screen",params:'{"screen": 2}'},f:["Vent Controls"]}]}," ",{p:[14,3,688],t:7,e:"ui-section",f:[{p:[15,5,706],t:7,e:"ui-button",a:{icon:"filter",action:"screen",params:'{"screen": 3}'},f:["Scrubber Controls"]}]}," ",{p:[17,3,820],t:7,e:"ui-section",f:[{p:[18,5,838],t:7,e:"ui-button",a:{icon:"cog",action:"screen",params:'{"screen": 4}'},f:["Operating Mode"]}]}," ",{p:[20,3,946],t:7,e:"ui-section",f:[{p:[21,5,964],t:7,e:"ui-button",a:{icon:"bar-chart",action:"screen",params:'{"screen": 5}'},f:["Alarm Thresholds"]}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],23:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[" ",{p:{button:[{p:[5,5,115],t:7,e:"back"}]},t:7,e:"ui-display",a:{title:"Operating Modes",button:0},f:[" ",{t:4,f:[{p:[8,5,168],t:7,e:"ui-section",f:[{p:[9,7,188],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["selected"],s:'_0?"check-square-o":"square-o"'},p:[9,24,205]}],state:[{t:2,x:{r:["selected","danger"],s:'_0?_1?"danger":"selected":null'},p:[10,16,267]}],action:"mode",params:['{"mode": ',{t:2,r:"mode",p:[11,40,361]},"}"]},f:[{t:2,r:"name",p:[11,51,372]}]}]}],n:52,r:"data.modes",p:[7,3,142]}]}]},i.exports.components=i.exports.components||{};var a={back:t("./back.ract")};for(var o in a)a.hasOwnProperty(o)&&(i.exports.components[o]=a[o]);e.exports=r.extend(i.exports)},{"./back.ract":21,"ractive/ractive.runtime":7}],24:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[" ",{p:{button:[{p:[5,5,117],t:7,e:"back"}]},t:7,e:"ui-display",a:{title:"Scrubber Controls",button:0},f:[" ",{t:4,f:[{p:[8,5,174],t:7,e:"ui-subdisplay",a:{title:[{t:2,r:"long_name",p:[8,27,196]}]},f:[{p:[9,7,219],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[10,9,255],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["power"],s:'_0?"power-off":"close"'},p:[10,26,272]}],style:[{t:2,x:{r:["power"],s:'_0?"selected":null'},p:[10,68,314]}],action:"power",params:['{"id_tag": "',{t:2,r:"id_tag",p:[11,46,391]},'", "val": ',{t:2,x:{r:["power"],s:"+!_0"},p:[11,66,411]},"}"]},f:[{t:2,x:{r:["power"],s:'_0?"On":"Off"'},p:[11,80,425]}]}]}," ",{p:[13,7,490],t:7,e:"ui-section",a:{label:"Mode"},f:[{p:[14,9,525],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["scrubbing"],s:'_0?"filter":"sign-in"'},p:[14,26,542]}],style:[{t:2,x:{r:["scrubbing"],s:'_0?null:"danger"'},p:[14,71,587]}],action:"scrubbing",params:['{"id_tag": "',{t:2,r:"id_tag",p:[15,50,670]},'", "val": ',{t:2,x:{r:["scrubbing"],s:"+!_0"},p:[15,70,690]},"}"]},f:[{t:2,x:{r:["scrubbing"],s:'_0?"Scrubbing":"Siphoning"'},p:[15,88,708]}]}]}," ",{p:[17,7,790],t:7,e:"ui-section",a:{label:"Range"},f:[{p:[18,9,826],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["widenet"],s:'_0?"expand":"compress"'},p:[18,26,843]}],style:[{t:2,x:{r:["widenet"],s:'_0?"selected":null'},p:[18,70,887]}],action:"widenet",params:['{"id_tag": "',{t:2,r:"id_tag",p:[19,48,968]},'", "val": ',{t:2,x:{r:["widenet"],s:"+!_0"},p:[19,68,988]},"}"]},f:[{t:2,x:{r:["widenet"],s:'_0?"Expanded":"Normal"'},p:[19,84,1004]}]}]}," ",{p:[21,7,1080],t:7,e:"ui-section",a:{label:"Filters"},f:[{p:[22,9,1118],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["filter_co2"],s:'_0?"check-square-o":"square-o"'},p:[22,26,1135]}],style:[{t:2,x:{r:["filter_co2"],s:'_0?"selected":null'},p:[22,81,1190]}],action:"co2_scrub",params:['{"id_tag": "',{t:2,r:"id_tag",p:[23,50,1276]},'", "val": ',{t:2,x:{r:["filter_co2"],s:"+!_0"},p:[23,70,1296]},"}"]},f:["Oxygen"]}," ",{p:[24,9,1343],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["filter_n2o"],s:'_0?"check-square-o":"square-o"'},p:[24,26,1360]}],style:[{t:2,x:{r:["filter_n2o"],s:'_0?"selected":null'},p:[24,81,1415]}],action:"n2o_scrub",params:['{"id_tag": "',{t:2,r:"id_tag",p:[25,50,1501]},'", "val": ',{t:2,x:{r:["filter_n2o"],s:"+!_0"},p:[25,70,1521]},"}"]},f:["Nitrogen"]}," ",{p:[26,9,1570],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["filter_toxins"],s:'_0?"check-square-o":"square-o"'},p:[26,26,1587]}],style:[{t:2,x:{r:["filter_toxins"],s:'_0?"selected":null'},p:[26,84,1645]}],action:"tox_scrub",params:['{"id_tag": "',{t:2,r:"id_tag",p:[27,50,1734]},'", "val": ',{t:2,x:{r:["filter_toxins"],s:"+!_0"},p:[27,70,1754]},"}"]},f:["Plasma"]}]}]}],n:52,r:"data.scrubbers",p:[7,3,144]},{t:4,n:51,f:[{p:[31,5,1855],t:7,e:"span",a:{"class":"bad"},f:["Error: No scrubbers connected."]}],r:"data.scrubbers"}]}]},i.exports.components=i.exports.components||{};var a={back:t("./back.ract")};for(var o in a)a.hasOwnProperty(o)&&(i.exports.components[o]=a[o]);e.exports=r.extend(i.exports)},{"./back.ract":21,"ractive/ractive.runtime":7}],25:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Air Status"},f:[{t:4,f:[{t:4,f:[{p:[4,7,109],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[4,26,128]}]},f:[{p:[5,6,145],t:7,e:"span",a:{"class":[{t:2,x:{r:["danger_level"],s:'_0==2?"bad":_0==1?"average":"good"'},p:[5,19,158]}]},f:[{t:2,x:{r:["value"],s:"Math.fixed(_0,2)"},p:[6,5,236]},{t:2,r:"unit",p:[6,29,260]}]}]}],n:52,r:"data.environment_data",p:[3,5,70]}," ",{p:[10,5,321],t:7,e:"ui-section",a:{label:"Local Status"},f:[{p:[11,7,362],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.danger_level"],s:'_0==2?"bad bold":_0==1?"average bold":"good"'},p:[11,20,375]}]},f:[{t:2,x:{r:["data.danger_level"],s:'_0==2?"Danger (Internals Required)":_0==1?"Caution":"Optimal"'},p:[12,6,474]}]}]}," ",{p:[15,5,618],t:7,e:"ui-section",a:{label:"Area Status"},f:[{p:[16,4,655],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.atmos_alarm","data.fire_alarm"],s:'_0||_1?"bad bold":"good"'},p:[16,17,668]}]},f:[{t:2,x:{r:["data.atmos_alarm","fire_alarm"],s:'_0?"Atmosphere Alarm":_1?"Fire Alarm":"Nominal"'},p:[17,8,740]}]}]}],n:50,r:"data.environment_data",p:[2,3,35]},{t:4,n:51,f:[{p:[21,5,872],t:7,e:"ui-section",f:[{p:[22,7,892],t:7,e:"span",a:{"class":"bad bold"},f:["Warning: Cannot obtain air sample for analysis."]}]}],r:"data.environment_data"}," ",{t:4,f:[{p:[26,5,1029],t:7,e:"hr"}," ",{p:[27,5,1040],t:7,e:"ui-section",f:[{p:[28,7,1060],t:7,e:"span",a:{"class":"bad bold"},f:["Warning: Safety measures offline. Device may exhibit abnormal behavior."]}]}],n:50,r:"data.emagged",p:[25,3,1003]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],26:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.css="th,\ntd {\n padding-right: 16px;\n text-align: left;\n}\n",i.exports.template={v:3,t:[" ",{p:{button:[{p:[5,5,116],t:7,e:"back"}]},t:7,e:"ui-display",a:{title:"Alarm Thresholds",button:0},f:[" ",{p:[7,3,143],t:7,e:"table",f:[{p:[8,5,156],t:7,e:"thead",f:[{p:[8,12,163],t:7,e:"tr",f:[{p:[9,7,175],t:7,e:"th"}," ",{p:[10,7,192],t:7,e:"th",f:[{p:[10,11,196],t:7,e:"span",a:{"class":"bad"},f:["min2"]}]}," ",{p:[11,7,238],t:7,e:"th",f:[{p:[11,11,242],t:7,e:"span",a:{"class":"average"},f:["min1"]}]}," ",{p:[12,7,288],t:7,e:"th",f:[{p:[12,11,292],t:7,e:"span",a:{"class":"average"},f:["max1"]}]}," ",{p:[13,7,338],t:7,e:"th",f:[{p:[13,11,342],t:7,e:"span",a:{"class":"bad"},f:["max2"]}]}]}]}," ",{p:[15,5,401],t:7,e:"tbody",f:[{t:4,f:[{p:[16,32,441],t:7,e:"tr",f:[{p:[17,9,455],t:7,e:"th",f:[{t:3,r:"name",p:[17,13,459]}]}," ",{t:4,f:[{p:[18,27,502],t:7,e:"td",f:[{p:[19,11,518],t:7,e:"ui-button",a:{action:"threshold",params:['{"env": "',{t:2,r:"env",p:[19,58,565]},'", "var": "',{t:2,r:"val",p:[19,76,583]},'"}']},f:[{t:2,x:{r:["selected"],s:"Math.fixed(_0,2)"},p:[19,87,594]}]}]}],n:52,r:"settings",p:[18,9,484]}]}],n:52,r:"data.thresholds",p:[16,7,416]}]}," ",{p:[23,3,697],t:7,e:"table",f:[]}]}]}," "]},i.exports.components=i.exports.components||{};var a={back:t("./back.ract")};for(var o in a)a.hasOwnProperty(o)&&(i.exports.components[o]=a[o]);e.exports=r.extend(i.exports)},{"./back.ract":21,"ractive/ractive.runtime":7}],27:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[" ",{p:{button:[{p:[5,5,113],t:7,e:"back"}]},t:7,e:"ui-display",a:{title:"Vent Controls",button:0},f:[" ",{t:4,f:[{p:[8,5,166],t:7,e:"ui-subdisplay",a:{title:[{t:2,r:"long_name",p:[8,27,188]}]},f:[{p:[9,7,211],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[10,9,247],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["power"],s:'_0?"power-off":"close"'},p:[10,26,264]}],style:[{t:2,x:{r:["power"],s:'_0?"selected":null'},p:[10,68,306]}],action:"power",params:['{"id_tag": "',{t:2,r:"id_tag",p:[11,46,383]},'", "val": ',{t:2,x:{r:["power"],s:"+!_0"},p:[11,66,403]},"}"]},f:[{t:2,x:{r:["power"],s:'_0?"On":"Off"'},p:[11,80,417]}]}]}," ",{p:[13,7,482],t:7,e:"ui-section",a:{label:"Mode"},f:[{p:[14,9,517],t:7,e:"span",f:[{t:2,x:{r:["direction"],s:'_0=="release"?"Pressurizing":"Siphoning"'},p:[14,15,523]}]}]}," ",{p:[16,7,616],t:7,e:"ui-section",a:{label:"Pressure Regulator"},f:[{p:[17,9,665],t:7,e:"ui-button",a:{icon:"sign-in",style:[{t:2,x:{r:["incheck"],s:'_0?"selected":null'},p:[17,42,698]}],action:"incheck",params:['{"id_tag": "',{t:2,r:"id_tag",p:[18,48,779]},'", "val": ',{t:2,r:"checks",p:[18,68,799]},"}"]},f:["Internal"]}," ",{p:[19,9,842],t:7,e:"ui-button",a:{icon:"sign-out",style:[{t:2,x:{r:["excheck"],s:'_0?"selected":null'},p:[19,43,876]}],action:"excheck",params:['{"id_tag": "',{t:2,r:"id_tag",p:[20,48,957]},'", "val": ',{t:2,r:"checks",p:[20,68,977]},"}"]},f:["External"]}]}," ",{p:[22,7,1039],t:7,e:"ui-section",a:{label:"Target Pressure"},f:[{p:[23,9,1085],t:7,e:"ui-button",a:{icon:"pencil",action:"external_pressure",params:['{"id_tag": "',{t:2,r:"id_tag",p:[24,31,1168]},'", "pressure": "custom"}']},f:[{t:2,x:{r:["external"],s:"Math.fixed(_0)"},p:[24,67,1204]}]}," ",{p:[25,9,1250],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["extdefault"],s:'_0?"disabled":null'},p:[25,42,1283]}],action:"external_pressure",params:['{"id_tag": "',{t:2,r:"id_tag",p:[26,31,1377]},'", "pressure": "reset"}']},f:["Reset"]}]}]}],n:52,r:"data.vents",p:[7,3,140]},{t:4,n:51,f:[{p:[30,5,1490],t:7,e:"span",a:{"class":"bad"},f:["Error: No vents connected."]}],r:"data.vents"}]}]},i.exports.components=i.exports.components||{};var a={back:t("./back.ract")};for(var o in a)a.hasOwnProperty(o)&&(i.exports.components[o]=a[o]);e.exports=r.extend(i.exports)},{"./back.ract":21,"ractive/ractive.runtime":7}],28:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.css="table {\n width: 100%;\n border-spacing: 2px;\n}\nth {\n text-align: left;\n}\ntd {\n vertical-align: top;\n}\ntd .button {\n margin-top: 4px;\n}\n",i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,3,16],t:7,e:"ui-section",f:[{p:[3,5,34],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.oneAccess"],s:'_0?"unlock":"lock"'},p:[3,22,51]}],action:"one_access"},f:[{t:2,x:{r:["data.oneAccess"],s:'_0?"One":"All"'},p:[3,82,111]}," Required"]}," ",{p:[4,5,172],t:7,e:"ui-button",a:{icon:"refresh",action:"clear"},f:["Clear"]}]}," ",{p:[6,3,251],t:7,e:"hr"}," ",{p:[7,3,260],t:7,e:"table",f:[{p:[8,3,271],t:7,e:"thead",f:[{p:[9,4,283],t:7,e:"tr",f:[{t:4,f:[{p:[10,5,315],t:7,e:"th",f:[{p:[10,9,319],t:7,e:"span",a:{"class":"highlight bold"},f:[{t:2,r:"name",p:[10,38,348]}]}]}],n:52,r:"data.regions",p:[9,8,287]}]}]}," ",{p:[13,3,403],t:7,e:"tbody",f:[{p:[14,4,415],t:7,e:"tr",f:[{t:4,f:[{p:[15,5,447],t:7,e:"td",f:[{t:4,f:[{p:[16,11,481],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["req"],s:'_0?"check-square-o":"square-o"'},p:[16,28,498]}],style:[{t:2,x:{r:["req"],s:'_0?"selected":null'},p:[16,76,546]}],action:"set",params:['{"access": "',{t:2,r:"id",p:[17,46,621]},'"}']},f:[{t:2,r:"name",p:[17,56,631]}]}," ",{p:[18,9,661],t:7,e:"br"}],n:52,r:"accesses",p:[15,9,451]}]}],n:52,r:"data.regions",p:[14,8,419]}]}]}]}]}," "]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],29:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(t){t.exports={data:{powerState:function(t){return 2===t?"good":1===t?"average":"bad"}},computed:{malfAction:function(){var t;return t=this.get("data.malfStatus"),1===t?"hack":2===t?"occupy":3===t?"deoccupy":void 0},malfButton:function(){var t;return t=this.get("data.malfStatus"),1===t?"Override Programming":"Shunt Core Process"},malfIcon:function(){var t;return t=this.get("data.malfStatus"),1===t?"terminal":"caret-square-o-down"},powerCellStatusState:function(){var t;return t=this.get("data.powerCellStatus"),t>50?"good":t>25?"average":"bad"}}}}(i),i.exports.template={v:3,t:[" ",{p:[31,1,988],t:7,e:"ui-notice",f:[{t:4,f:[{p:[33,5,1033],t:7,e:"ui-section",a:{label:"Interface Lock"},f:[{p:[34,7,1076],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.locked"],s:'_0?"lock":"unlock"'},p:[34,24,1093]}],action:"lock"},f:[{t:2,x:{r:["data.locked"],s:'_0?"Engaged":"Disengaged"'},p:[34,75,1144]}]}]}],n:50,r:"data.siliconUser",p:[32,3,1003]},{t:4,n:51,f:[{p:[37,5,1235],t:7,e:"span",f:["Swipe an ID card to ",{t:2,x:{r:["data.locked"],s:'_0?"unlock":"lock"'},p:[37,31,1261]}," this interface."]}],r:"data.siliconUser"}]}," ",{p:[40,1,1346],t:7,e:"ui-display",a:{title:"Power Status"},f:[{p:[41,3,1383],t:7,e:"ui-section",a:{label:"Main Breaker"},f:[{t:4,f:[{p:[43,7,1470],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.isOperating"],s:'_0?"good":"bad"'},p:[43,20,1483]}]},f:[{t:2,x:{r:["data.isOperating"],s:'_0?"On":"Off"'},p:[43,59,1522]}]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"},p:[42,5,1422]},{t:4,n:51,f:[{p:[45,7,1586],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isOperating"],s:'_0?"power-off":"close"'},p:[45,24,1603]}],style:[{t:2,x:{r:["data.isOperating"],s:'_0?"selected":null'},p:[45,77,1656]}],action:"breaker"},f:[{t:2,x:{r:["data.isOperating"],s:'_0?"On":"Off"'},p:[46,26,1724]}]}],x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"}}]}," ",{p:[49,3,1805],t:7,e:"ui-section",a:{label:"External Power"},f:[{p:[50,5,1846],t:7,e:"span",a:{"class":[{t:2,x:{r:["powerState","data.externalPower"],s:"_0(_1)"},p:[50,18,1859]}]},f:[{t:2,x:{r:["data.externalPower"],s:'_0==2?"Good":_0==1?"Low":"None"'},p:[50,54,1895]}]}]}," ",{p:[52,3,2002],t:7,e:"ui-section",a:{label:"Power Cell"},f:[{t:4,f:[{p:[54,7,2083],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.powerCellStatus",p:[54,40,2116]}],state:[{t:2,r:"powerCellStatusState",p:[54,73,2149]}]},f:[{t:2,x:{r:["adata.powerCellStatus"],s:"Math.fixed(_0)"},p:[54,99,2175]},"%"]}],n:50,x:{r:["data.powerCellStatus"],s:"_0!=null"},p:[53,5,2039]},{t:4,n:51,f:[{p:[56,7,2244],t:7,e:"span",a:{"class":"bad"},f:["Power cell removed."]}],x:{r:["data.powerCellStatus"],s:"_0!=null"}}]}," ",{t:4,f:[{p:[60,5,2364],t:7,e:"ui-section",a:{label:"Charge Mode"},f:[{t:4,f:[{p:[62,9,2454],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.chargeMode"],s:'_0?"good":"bad"'},p:[62,22,2467]}]},f:[{t:2,x:{r:["data.chargeMode"],s:'_0?"Auto":"Off"'},p:[62,60,2505]}]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"},p:[61,7,2404]},{t:4,n:51,f:[{p:[64,9,2574],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.chargeMode"],s:'_0?"refresh":"close"'},p:[64,26,2591]}],style:[{t:2,x:{r:["data.chargeMode"],s:'_0?"selected":null'},p:[64,76,2641]}],action:"charge"},f:[{t:2,x:{r:["data.chargeMode"],s:'_0?"Auto":"Off"'},p:[65,27,2709]}]}],x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"}}," [",{p:[68,8,2795],t:7,e:"span",a:{"class":[{t:2,x:{r:["powerState","data.chargingStatus"],s:"_0(_1)"},p:[68,21,2808]}]},f:[{t:2,x:{r:["data.chargingStatus"],s:'_0==2?"Fully Charged":_0==1?"Charging":"Not Charging"'},p:[68,58,2845]}]},"]"]}],n:50,x:{r:["data.powerCellStatus"],s:"_0!=null"},p:[59,3,2322]}]}," ",{p:[72,1,3003],t:7,e:"ui-display",a:{title:"Power Channels"},f:[{t:4,f:[{p:[74,5,3077],t:7,e:"ui-section",a:{label:[{t:2,r:"title",p:[74,24,3096]}],nowrap:0},f:[{p:[75,7,3122],t:7,e:"div",a:{"class":"content"},f:[{t:2,x:{r:["powerLoad"],s:"Math.round(_0)"},p:[75,28,3143]}," W"]}," ",{p:[76,7,3184],t:7,e:"div",a:{"class":"content"},f:[{p:[76,28,3205],t:7,e:"span",a:{"class":[{t:2,x:{r:["status"],s:'_0>=2?"good":"bad"'},p:[76,41,3218]}]},f:[{t:2,x:{r:["status"],s:'_0>=2?"On":"Off"'},p:[76,75,3252]}]}]}," ",{p:[77,7,3303],t:7,e:"div",a:{"class":"content"},f:["[",{p:[77,29,3325],t:7,e:"span",f:[{t:2,x:{r:["status"],s:'_0==1||_0==3?"Auto":"Manual"'},p:[77,35,3331]}]},"]"]}," ",{p:[78,7,3403],t:7,e:"div",a:{"class":"content",style:"float:right"},f:[{t:4,f:[{p:[80,11,3506],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["status"],s:'_0==1||_0==3?"selected":null'},p:[80,44,3539]}],action:"channel",params:[{t:2,r:"topicParams.auto",p:[81,38,3629]}]},f:["Auto"]}," ",{p:[82,11,3679],t:7,e:"ui-button",a:{icon:"power-off",state:[{t:2,x:{r:["status"],s:'_0==2?"selected":null'},p:[82,46,3714]}],action:"channel",params:[{t:2,r:"topicParams.on",p:[83,21,3789]}]},f:["On"]}," ",{p:[84,11,3835],t:7,e:"ui-button",a:{icon:"close",state:[{t:2,x:{r:["status"],s:'_0==0?"selected":null'},p:[84,42,3866]}],action:"channel",params:[{t:2,r:"topicParams.off",p:[85,21,3941]}]},f:["Off"]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"!_0||_1"},p:[79,9,3454]}]}]}],n:52,r:"adata.powerChannels",p:[73,3,3042]}," ",{p:[90,3,4044],t:7,e:"ui-section",a:{label:"Total Load"},f:[{p:[91,5,4081],t:7,e:"span",a:{"class":"bold"},f:[{t:2,x:{r:["adata.totalLoad"],s:"Math.round(_0)"},p:[91,24,4100]}," W"]}]}]}," ",{t:4,f:[{p:[95,3,4202],t:7,e:"ui-display",a:{title:"System Overrides"},f:[{p:[96,5,4245],t:7,e:"ui-button",a:{icon:"lightbulb-o",action:"overload"},f:["Overload"]}," ",{t:4,f:[{p:[98,7,4350],t:7,e:"ui-button",a:{icon:[{t:2,r:"malfIcon",p:[98,24,4367]}],state:[{t:2,x:{r:["data.malfStatus"],s:'_0==4?"disabled":null'},p:[98,45,4388]}],action:[{t:2,r:"malfAction",p:[98,99,4442]}]},f:[{t:2,r:"malfButton",p:[98,115,4458]}]}],n:50,r:"data.malfStatus",p:[97,5,4319]}]}],n:50,r:"data.siliconUser",p:[94,1,4174]},{p:[102,1,4525],t:7,e:"ui-notice",f:[{p:[103,3,4540],t:7,e:"ui-section",a:{label:"Cover Lock"},f:[{t:4,f:[{p:[105,7,4625],t:7,e:"span",f:[{t:2,x:{r:["data.coverLocked"],s:'_0?"Engaged":"Disengaged"'},p:[105,13,4631]}]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"},p:[104,5,4577]},{t:4,n:51,f:[{p:[107,7,4707],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.coverLocked"],s:'_0?"lock":"unlock"'},p:[107,24,4724]}],action:"cover"},f:[{t:2,x:{r:["data.coverLocked"],s:'_0?"Engaged":"Disengaged"'},p:[107,81,4781]}]}],x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"}}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],30:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,3,16],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[3,5,48],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[3,22,65]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[3,66,109]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[4,22,164]}]}]}," ",{p:[6,3,223],t:7,e:"ui-section",a:{label:"Output Pressure"},f:[{p:[7,5,265],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "custom"}'},f:["Set"]}," ",{p:[8,5,361],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.set_pressure","data.max_pressure"],s:'_0==_1?"disabled":null'},p:[8,35,391]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}," ",{p:[9,5,523],t:7,e:"span",a:{"class":"buttoninfo"},f:[{t:2,x:{r:["adata.set_pressure"],s:"Math.round(_0)"},p:[9,30,548]}," kPa"]}]}," ",{p:[11,3,614],t:7,e:"ui-section",a:{label:"Filter"},f:[{p:[12,5,647],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.filter_type"],s:'_0==-1?"selected":null'},p:[12,23,665]}],action:"filter",params:'{"mode": -1}'},f:["Nothing"]}," ",{p:[14,5,783],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.filter_type"],s:'_0==0?"selected":null'},p:[14,23,801]}],action:"filter",params:'{"mode": 0}'},f:["Plasma"]}," ",{p:[16,5,916],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.filter_type"],s:'_0==1?"selected":null'},p:[16,23,934]}],action:"filter",params:'{"mode": 1}'},f:["O2"]}," ",{p:[18,5,1045],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.filter_type"],s:'_0==2?"selected":null'},p:[18,23,1063]}],action:"filter",params:'{"mode": 2}'},f:["N2"]}," ",{p:[20,5,1174],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.filter_type"],s:'_0==3?"selected":null'},p:[20,23,1192]}],action:"filter",params:'{"mode": 3}'},f:["CO2"]}," ",{p:[22,5,1304],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.filter_type"],s:'_0==4?"selected":null'},p:[22,23,1322]}],action:"filter",params:'{"mode": 4}'},f:["N2O"]}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],31:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,3,16],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[3,5,48],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[3,22,65]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[3,66,109]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[4,22,164]}]}]}," ",{p:[6,3,223],t:7,e:"ui-section",a:{label:"Output Pressure"},f:[{p:[7,5,265],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "custom"}'},f:["Set"]}," ",{p:[8,5,361],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.set_pressure","data.max_pressure"],s:'_0==_1?"disabled":null'},p:[8,35,391]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}," ",{p:[9,5,523],t:7,e:"span",a:{"class":"buttoninfo"},f:[{t:2,x:{r:["adata.set_pressure"],s:"Math.round(_0)"},p:[9,30,548]}," kPa"]}]}," ",{p:[11,3,614],t:7,e:"ui-section",a:{label:"Node 1"},f:[{p:[12,5,647],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.node1_concentration"],s:'_0==0?"disabled":null'},p:[12,44,686]}],action:"node1",params:'{"concentration": -0.1}'}}," ",{p:[14,5,803],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.node1_concentration"],s:'_0==0?"disabled":null'},p:[14,39,837]}],action:"node1",params:'{"concentration": -0.01}'}}," ",{p:[16,5,955],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.node1_concentration"],s:'_0==100?"disabled":null'},p:[16,38,988]}],action:"node1",params:'{"concentration": 0.01}'}}," ",{p:[18,5,1107],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.node1_concentration"],s:'_0==100?"disabled":null'},p:[18,43,1145]}],action:"node1",params:'{"concentration": 0.1}'}}," ",{p:[20,5,1263],t:7,e:"span",a:{"class":"buttoninfo"},f:[{t:2,x:{r:["adata.node1_concentration"],s:"Math.round(_0)"},p:[20,30,1288]},"%"]}]}," ",{p:[22,3,1358],t:7,e:"ui-section",a:{label:"Node 2"},f:[{p:[23,5,1391],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.node2_concentration"],s:'_0==0?"disabled":null'},p:[23,44,1430]}],action:"node2",params:'{"concentration": -0.1}'}}," ",{p:[25,5,1547],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.node2_concentration"],s:'_0==0?"disabled":null'},p:[25,39,1581]}],action:"node2",params:'{"concentration": -0.01}'}}," ",{p:[27,5,1699],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.node2_concentration"],s:'_0==100?"disabled":null'},p:[27,38,1732]}],action:"node2",params:'{"concentration": 0.01}'}}," ",{p:[29,5,1851],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.node2_concentration"],s:'_0==100?"disabled":null'},p:[29,43,1889]}],action:"node2",params:'{"concentration": 0.1}'}}," ",{p:[31,5,2007],t:7,e:"span",a:{"class":"buttoninfo"},f:[{t:2,x:{r:["adata.node2_concentration"],s:"Math.round(_0)"},p:[31,30,2032]},"%"]}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],32:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,3,16],t:7,e:"ui-section",a:{label:"Power"}, -f:[{p:[3,5,48],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[3,22,65]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[3,66,109]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[4,22,164]}]}]}," ",{t:4,f:[{p:[7,5,250],t:7,e:"ui-section",a:{label:"Transfer Rate"},f:[{p:[8,7,292],t:7,e:"ui-button",a:{icon:"pencil",action:"transfer",params:'{"rate": "custom"}'},f:["Set"]}," ",{p:[9,7,386],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.transfer_rate","data.max_rate"],s:'_0==_1?"disabled":null'},p:[9,37,416]}],action:"transfer",params:'{"rate": "max"}'},f:["Max"]}," ",{p:[10,7,543],t:7,e:"span",a:{"class":"buttoninfo"},f:[{t:2,x:{r:["adata.transfer_rate"],s:"Math.round(_0)"},p:[10,32,568]}," L/s"]}]}],n:50,r:"data.max_rate",p:[6,3,223]},{t:4,n:51,f:[{p:[13,5,651],t:7,e:"ui-section",a:{label:"Output Pressure"},f:[{p:[14,7,695],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "custom"}'},f:["Set"]}," ",{p:[15,7,793],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.set_pressure","data.max_pressure"],s:'_0==_1?"disabled":null'},p:[15,37,823]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}," ",{p:[16,7,957],t:7,e:"span",a:{"class":"buttoninfo"},f:[{t:2,x:{r:["adata.set_pressure"],s:"Math.round(_0)"},p:[16,32,982]}," kPa"]}]}],r:"data.max_rate"}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],33:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-notice",f:[{p:[2,3,15],t:7,e:"span",f:["The regulator ",{t:2,x:{r:["data.hasHoldingTank"],s:'_0?"is":"is not"'},p:[2,23,35]}," connected to a tank."]}]}," ",{p:{button:[{p:[6,5,185],t:7,e:"ui-button",a:{icon:"pencil",state:[{t:2,x:{r:["data.canLabel"],s:'_0?null:"disabled"'},p:[6,37,217]}],action:"relable"},f:["Relabel"]}]},t:7,e:"ui-display",a:{title:"Canister",button:0},f:[" ",{p:[8,3,312],t:7,e:"ui-section",a:{label:"Pressure"},f:[{p:[9,5,347],t:7,e:"span",f:[{t:2,x:{r:["adata.tankPressure"],s:"Math.round(_0)"},p:[9,11,353]}," kPa"]}]}," ",{p:[11,3,419],t:7,e:"ui-section",a:{label:"Port"},f:[{p:[12,5,450],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.portConnected"],s:'_0?"good":"average"'},p:[12,18,463]}]},f:[{t:2,x:{r:["data.portConnected"],s:'_0?"Connected":"Not Connected"'},p:[12,63,508]}]}]}]}," ",{p:[15,1,603],t:7,e:"ui-display",a:{title:"Valve"},f:[{p:[16,3,633],t:7,e:"ui-section",a:{label:"Release Pressure"},f:[{p:[17,5,676],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.minReleasePressure",p:[17,18,689]}],max:[{t:2,r:"data.maxReleasePressure",p:[17,52,723]}],value:[{t:2,r:"data.releasePressure",p:[18,14,766]}]},f:[{t:2,x:{r:["adata.releasePressure"],s:"Math.round(_0)"},p:[18,40,792]}," kPa"]}]}," ",{p:[20,3,863],t:7,e:"ui-section",a:{label:"Pressure Regulator"},f:[{p:[21,5,908],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.releasePressure","data.defaultReleasePressure"],s:'_0!=_1?null:"disabled"'},p:[21,38,941]}],action:"pressure",params:'{"pressure": "reset"}'},f:["Reset"]}," ",{p:[23,5,1097],t:7,e:"ui-button",a:{icon:"minus",state:[{t:2,x:{r:["data.releasePressure","data.minReleasePressure"],s:'_0>_1?null:"disabled"'},p:[23,36,1128]}],action:"pressure",params:'{"pressure": "min"}'},f:["Min"]}," ",{p:[25,5,1275],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "custom"}'},f:["Set"]}," ",{p:[26,5,1371],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.releasePressure","data.maxReleasePressure"],s:'_0<_1?null:"disabled"'},p:[26,35,1401]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}]}," ",{p:[29,3,1563],t:7,e:"ui-section",a:{label:"Valve"},f:[{p:[30,5,1595],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.valveOpen"],s:'_0?"unlock":"lock"'},p:[30,22,1612]}],style:[{t:2,x:{r:["data.valveOpen","data.hasHoldingTank"],s:'_0?_1?"caution":"danger":null'},p:[31,14,1666]}],action:"valve"},f:[{t:2,x:{r:["data.valveOpen"],s:'_0?"Open":"Closed"'},p:[32,22,1760]}]}]}]}," ",{p:{button:[{t:4,f:[{p:[38,7,1948],t:7,e:"ui-button",a:{icon:"eject",style:[{t:2,x:{r:["data.valveOpen"],s:'_0?"danger":null'},p:[38,38,1979]}],action:"eject"},f:["Eject"]}],n:50,r:"data.hasHoldingTank",p:[37,5,1913]}]},t:7,e:"ui-display",a:{title:"Holding Tank",button:0},f:[" ",{t:4,f:[{p:[42,3,2113],t:7,e:"ui-section",a:{label:"Label"},f:[{t:2,r:"data.holdingTank.name",p:[43,4,2144]}]}," ",{p:[45,3,2190],t:7,e:"ui-section",a:{label:"Pressure"},f:[{t:2,x:{r:["adata.holdingTank.tankPressure"],s:"Math.round(_0)"},p:[46,4,2224]}," kPa"]}],n:50,r:"data.hasHoldingTank",p:[41,3,2082]},{t:4,n:51,f:[{p:[49,3,2306],t:7,e:"ui-section",f:[{p:[50,4,2323],t:7,e:"span",a:{"class":"average"},f:["No Holding Tank"]}]}],r:"data.hasHoldingTank"}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],34:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Power"},f:[{p:[2,3,30],t:7,e:"ui-section",a:{label:"Energy"},f:[{p:[3,5,63],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.maxEnergy",p:[3,26,84]}],value:[{t:2,r:"data.energy",p:[3,53,111]}]},f:[{t:2,x:{r:["adata.energy"],s:"Math.fixed(_0)"},p:[3,70,128]}," Units"]}]}," ",{t:4,f:[{p:[6,5,232],t:7,e:"ui-section",a:{label:"Amount"},f:[{t:4,f:[{p:[8,9,313],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.amount","."],s:'_0==_1?"selected":null'},p:[8,39,343]}],action:"amount",params:['{"amount": ',{t:2,r:".",p:[8,116,420]},"}"]},f:[{t:2,r:".",p:[8,124,428]}]}],n:52,r:"data.beakerTransferAmounts",p:[7,7,267]}]}],n:50,r:"data.beakerTransferAmounts",p:[5,3,192]}]}," ",{p:[13,1,509],t:7,e:"ui-display",a:{title:"Dispense"},f:[{p:[14,3,542],t:7,e:"ui-section",f:[{t:4,f:[{p:[16,7,592],t:7,e:"ui-button",a:{grid:0,icon:"tint",action:"dispense",params:['{"reagent": "',{t:2,r:"id",p:[16,74,659]},'"}']},f:[{t:2,r:"title",p:[16,84,669]}]}],n:52,r:"data.chemicals",p:[15,5,560]}]}]}," ",{p:{button:[{p:[22,5,802],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[22,36,833]}],action:"eject"},f:["Eject"]}]},t:7,e:"ui-display",a:{title:"Beaker",button:0},f:[" ",{t:4,f:[{p:[25,5,970],t:7,e:"ui-section",a:{label:"Remove"},f:[{t:4,f:[{p:[27,9,1051],t:7,e:"ui-button",a:{icon:"minus",action:"remove",params:['{"amount": ',{t:2,r:".",p:[27,68,1110]},"}"]},f:[{t:2,r:".",p:[27,76,1118]}]}],n:52,r:"data.beakerTransferAmounts",p:[26,7,1005]}]}],n:50,r:"data.beakerTransferAmounts",p:[24,3,930]}," ",{p:[31,3,1186],t:7,e:"ui-section",a:{label:"Contents"},f:[{t:4,f:[{p:[33,7,1256],t:7,e:"span",f:[{t:2,x:{r:["adata.beakerCurrentVolume"],s:"Math.round(_0)"},p:[33,13,1262]},"/",{t:2,r:"data.beakerMaxVolume",p:[33,55,1304]}," Units"]}," ",{p:[34,7,1349],t:7,e:"br"}," ",{t:4,f:[{p:[36,9,1402],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[36,52,1445]}," units of ",{t:2,r:"name",p:[36,87,1480]}]},{p:[36,102,1495],t:7,e:"br"}],n:52,r:"adata.beakerContents",p:[35,7,1362]},{t:4,n:51,f:[{p:[38,9,1526],t:7,e:"span",a:{"class":"bad"},f:["Beaker Empty"]}],r:"adata.beakerContents"}],n:50,r:"data.isBeakerLoaded",p:[32,5,1221]},{t:4,n:51,f:[{p:[41,7,1602],t:7,e:"span",a:{"class":"average"},f:["No Beaker"]}],r:"data.isBeakerLoaded"}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],35:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Thermostat"},f:[{p:[2,3,35],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[3,5,67],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isActive"],s:'_0?"power-off":"close"'},p:[3,22,84]}],style:[{t:2,x:{r:["data.isActive"],s:'_0?"selected":null'},p:[4,10,137]}],state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[5,10,186]}],action:"power"},f:[{t:2,x:{r:["data.isActive"],s:'_0?"On":"Off"'},p:[6,18,249]}]}]}," ",{p:[8,3,314],t:7,e:"ui-section",a:{label:"Target"},f:[{p:[9,4,346],t:7,e:"ui-button",a:{icon:"pencil",action:"temperature"},f:[{t:2,x:{r:["adata.targetTemp"],s:"Math.round(_0)"},p:[9,50,392]}," K"]}]}]}," ",{p:{button:[{p:[14,5,535],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[14,36,566]}],action:"eject"},f:["Eject"]}]},t:7,e:"ui-display",a:{title:"Beaker",button:0},f:[" ",{p:[16,3,663],t:7,e:"ui-section",a:{label:"Contents"},f:[{t:4,f:[{p:[18,7,733],t:7,e:"span",f:["Temperature: ",{t:2,x:{r:["adata.currentTemp"],s:"Math.round(_0)"},p:[18,26,752]}," K"]}," ",{p:[19,7,802],t:7,e:"br"}," ",{t:4,f:[{p:[21,9,856],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[21,52,899]}," units of ",{t:2,r:"name",p:[21,87,934]}]},{p:[21,102,949],t:7,e:"br"}],n:52,r:"adata.beakerContents",p:[20,7,816]},{t:4,n:51,f:[{p:[23,9,980],t:7,e:"span",a:{"class":"bad"},f:["Beaker Empty"]}],r:"adata.beakerContents"}],n:50,r:"data.isBeakerLoaded",p:[17,5,698]},{t:4,n:51,f:[{p:[26,7,1056],t:7,e:"span",a:{"class":"average"},f:["No Beaker"]}],r:"data.isBeakerLoaded"}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],36:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(t){t.exports={computed:{cellTemperatureState:function(){var t;return t=this.get("data.cellTemperature"),225>t?"good":273.15>t?"average":"bad"},occupantStatState:function(){var t;return t=this.get("data.occupant.stat"),0===t?"good":1===t?"average":"bad"}}}}(i),i.exports.template={v:3,t:[" ",{p:[16,1,414],t:7,e:"ui-display",a:{title:"Occupant"},f:[{p:[17,3,447],t:7,e:"ui-section",a:{label:"Occupant"},f:[{p:[18,3,480],t:7,e:"span",f:[{t:2,x:{r:["data.occupant.name"],s:'_0?_0:"No Occupant"'},p:[18,9,486]}]}]}," ",{t:4,f:[{p:[21,5,603],t:7,e:"ui-section",a:{label:"State"},f:[{p:[22,7,637],t:7,e:"span",a:{"class":[{t:2,r:"occupantStatState",p:[22,20,650]}]},f:[{t:2,x:{r:["data.occupant.stat"],s:'_0==0?"Conscious":_0==1?"Unconcious":"Dead"'},p:[22,43,673]}]}]}," ",{p:[24,4,794],t:7,e:"ui-section",a:{label:"Temperature"},f:[{p:[25,6,833],t:7,e:"span",f:[{t:2,x:{r:["adata.occupant.bodyTemperature"],s:"Math.round(_0)"},p:[25,12,839]}," K"]}]}," ",{p:[27,5,918],t:7,e:"ui-section",a:{label:"Health"},f:[{p:[28,7,953],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.occupant.minHealth",p:[28,20,966]}],max:[{t:2,r:"data.occupant.maxHealth",p:[28,54,1e3]}],value:[{t:2,r:"data.occupant.health",p:[28,90,1036]}],state:[{t:2,x:{r:["data.occupant.health"],s:'_0>=0?"good":"average"'},p:[29,16,1078]}]},f:[{t:2,x:{r:["adata.occupant.health"],s:"Math.round(_0)"},p:[29,68,1130]}]}]}," ",{t:4,f:[{p:[32,7,1367],t:7,e:"ui-section",a:{label:[{t:2,r:"label",p:[32,26,1386]}]},f:[{p:[33,9,1407],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.occupant.maxHealth",p:[33,30,1428]}],value:[{t:2,rx:{r:"data.occupant",m:[{t:30,n:"type"}]},p:[33,66,1464]}],state:"bad"},f:[{t:2,x:{r:["type","adata.occupant"],s:"Math.round(_1[_0])"},p:[33,103,1501]}]}]}],n:52,x:{r:[],s:'[{label:"Brute",type:"bruteLoss"},{label:"Respiratory",type:"oxyLoss"},{label:"Toxin",type:"toxLoss"},{label:"Burn",type:"fireLoss"}]'},p:[31,5,1201]}],n:50,r:"data.hasOccupant",p:[20,3,573]}]}," ",{p:[38,1,1610],t:7,e:"ui-display",a:{title:"Cell"},f:[{p:[39,3,1639],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[40,5,1671],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isOperating"],s:'_0?"power-off":"close"'},p:[40,22,1688]}],style:[{t:2,x:{r:["data.isOperating"],s:'_0?"selected":null'},p:[41,14,1748]}],state:[{t:2,x:{r:["data.isOpen"],s:'_0?"disabled":null'},p:[42,14,1804]}],action:"power"},f:[{t:2,x:{r:["data.isOperating"],s:'_0?"On":"Off"'},p:[43,22,1863]}]}]}," ",{p:[45,3,1931],t:7,e:"ui-section",a:{label:"Temperature"},f:[{p:[46,3,1967],t:7,e:"span",a:{"class":[{t:2,r:"cellTemperatureState",p:[46,16,1980]}]},f:[{t:2,x:{r:["adata.cellTemperature"],s:"Math.round(_0)"},p:[46,42,2006]}," K"]}]}," ",{p:[48,2,2071],t:7,e:"ui-section",a:{label:"Door"},f:[{p:[49,5,2102],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isOpen"],s:'_0?"unlock":"lock"'},p:[49,22,2119]}],action:"door"},f:[{t:2,x:{r:["data.isOpen"],s:'_0?"Open":"Closed"'},p:[49,73,2170]}]}," ",{p:[50,5,2223],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.autoEject"],s:'_0?"sign-out":"sign-in"'},p:[50,22,2240]}],action:"autoeject"},f:[{t:2,x:{r:["data.autoEject"],s:'_0?"Auto":"Manual"'},p:[50,86,2304]}]}]}]}," ",{p:{button:[{p:[55,5,2450],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[55,36,2481]}],action:"ejectbeaker"},f:["Eject"]}]},t:7,e:"ui-display",a:{title:"Beaker",button:0},f:[" ",{p:[57,3,2584],t:7,e:"ui-section",a:{label:"Contents"},f:[{t:4,f:[{t:4,f:[{p:[60,9,2694],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[60,52,2737]}," units of ",{t:2,r:"name",p:[60,87,2772]}]},{p:[60,102,2787],t:7,e:"br"}],n:52,r:"adata.beakerContents",p:[59,7,2654]},{t:4,n:51,f:[{p:[62,9,2818],t:7,e:"span",a:{"class":"bad"},f:["Beaker Empty"]}],r:"adata.beakerContents"}],n:50,r:"data.isBeakerLoaded",p:[58,5,2619]},{t:4,n:51,f:[{p:[65,7,2894],t:7,e:"span",a:{"class":"average"},f:["No Beaker"]}],r:"data.isBeakerLoaded"}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],37:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-notice",f:[{p:[2,3,15],t:7,e:"span",f:["The requested interface (",{t:2,r:"config.interface",p:[2,34,46]},") was not found. Does it exist?"]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],38:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(t){t.exports={computed:{capacityPercentState:function(){var t;return t=this.get("data.capacityPercent"),t>50?"good":t>15?"average":"bad"},inputState:function(){var t,e;return t=this.get("data.capacityPercent"),e=this.get("data.inputting"),t>=100?"good":e?"average":"bad"},outputState:function(){var t,e;return t=this.get("data.charge"),e=this.get("data.outputting"),e?"good":t>0?"average":"bad"}}}}(i),i.exports.template={v:3,t:[" ",{p:[23,1,624],t:7,e:"ui-display",a:{title:"Storage"},f:[{p:[24,3,656],t:7,e:"ui-section",a:{label:"Stored Energy"},f:[{p:[25,5,696],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.capacityPercent",p:[25,38,729]}],state:[{t:2,r:"capacityPercentState",p:[25,71,762]}]},f:[{t:2,x:{r:["adata.capacityPercent"],s:"Math.fixed(_0)"},p:[25,97,788]},"%"]}]}]}," ",{p:[28,1,869],t:7,e:"ui-display",a:{title:"Input"},f:[{p:[29,3,899],t:7,e:"ui-section",a:{label:"Charge Mode"},f:[{p:[30,5,937],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.inputAttempt"],s:'_0?"refresh":"close"'},p:[30,22,954]}],style:[{t:2,x:{r:["data.inputAttempt"],s:'_0?"selected":null'},p:[30,74,1006]}],action:"tryinput"},f:[{t:2,x:{r:["data.inputAttempt"],s:'_0?"Auto":"Off"'},p:[31,25,1074]}]},"   [",{p:[33,6,1143],t:7,e:"span",a:{"class":[{t:2,r:"inputState",p:[33,19,1156]}]},f:[{t:2,x:{r:["data.capacityPercent","data.inputting"],s:'_0>=100?"Fully Charged":_1?"Charging":"Not Charging"'},p:[33,35,1172]}]},"]"]}," ",{p:[35,3,1296],t:7,e:"ui-section",a:{label:"Target Input"},f:[{p:[36,5,1335],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.inputLevelMax",p:[36,26,1356]}],value:[{t:2,r:"data.inputLevel",p:[36,57,1387]}]},f:[{t:2,x:{r:["adata.inputLevel"],s:"Math.round(_0)"},p:[36,78,1408]},"W"]}]}," ",{p:[38,3,1470],t:7,e:"ui-section",a:{label:"Adjust Input"},f:[{p:[39,5,1509],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.inputLevel"],s:'_0==0?"disabled":null'},p:[39,44,1548]}],action:"input",params:'{"input": "min"}'}}," ",{p:[40,5,1642],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.inputLevel"],s:'_0==0?"disabled":null'},p:[40,39,1676]}],action:"input",params:'{"input": "minus"}'}}," ",{p:[41,5,1772],t:7,e:"ui-button",a:{icon:"pencil",action:"input",params:'{"input": "custom"}'},f:["Set"]}," ",{p:[42,5,1862],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.inputLevel","data.inputLevelMax"],s:'_0==_1?"disabled":null'},p:[42,38,1895]}],action:"input",params:'{"input": "plus"}'}}," ",{p:[43,5,2007],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.inputLevel","data.inputLevelMax"],s:'_0==_1?"disabled":null'},p:[43,43,2045]}],action:"input",params:'{"input": "max"}'}}]}," ",{p:[45,3,2171],t:7,e:"ui-section",a:{label:"Available"},f:[{p:[46,3,2205],t:7,e:"span",f:[{t:2,x:{r:["adata.inputAvailable"],s:"Math.round(_0)"},p:[46,9,2211]},"W"]}]}]}," ",{p:[49,1,2288],t:7,e:"ui-display",a:{title:"Output"},f:[{p:[50,3,2319],t:7,e:"ui-section",a:{label:"Output Mode"},f:[{p:[51,5,2357],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.outputAttempt"],s:'_0?"power-off":"close"'},p:[51,22,2374]}],style:[{t:2,x:{r:["data.outputAttempt"],s:'_0?"selected":null'},p:[51,77,2429]}],action:"tryoutput"},f:[{t:2,x:{r:["data.outputAttempt"],s:'_0?"On":"Off"'},p:[52,26,2499]}]},"   [",{p:[54,6,2567],t:7,e:"span",a:{"class":[{t:2,r:"outputState",p:[54,19,2580]}]},f:[{t:2,x:{r:["data.outputting","data.charge"],s:'_0?"Sending":_1>0?"Not Sending":"No Charge"'},p:[54,36,2597]}]},"]"]}," ",{p:[56,3,2704],t:7,e:"ui-section",a:{label:"Target Output"},f:[{p:[57,5,2744],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.outputLevelMax",p:[57,26,2765]}],value:[{t:2,r:"data.outputLevel",p:[57,58,2797]}]},f:[{t:2,x:{r:["adata.outputLevel"],s:"Math.round(_0)"},p:[57,80,2819]},"W"]}]}," ",{p:[59,3,2882],t:7,e:"ui-section",a:{label:"Adjust Output"},f:[{p:[60,5,2922],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.outputLevel"],s:'_0==0?"disabled":null'},p:[60,44,2961]}],action:"output",params:'{"output": "min"}'}}," ",{p:[61,5,3058],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.outputLevel"],s:'_0==0?"disabled":null'},p:[61,39,3092]}],action:"output",params:'{"output": "minus"}'}}," ",{p:[62,5,3191],t:7,e:"ui-button",a:{icon:"pencil",action:"output",params:'{"output": "custom"}'},f:["Set"]}," ",{p:[63,5,3283],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.outputLevel","data.outputLevelMax"],s:'_0==_1?"disabled":null'},p:[63,38,3316]}],action:"output",params:'{"output": "plus"}'}}," ",{p:[64,5,3432],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.outputLevel","data.outputLevelMax"],s:'_0==_1?"disabled":null'},p:[64,43,3470]}],action:"output",params:'{"output": "max"}'}}]}," ",{p:[66,3,3600],t:7,e:"ui-section",a:{label:"Outputting"},f:[{p:[67,3,3635],t:7,e:"span",f:[{t:2,x:{r:["adata.outputUsed"],s:"Math.round(_0)"},p:[67,9,3641]},"W"]}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],39:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Status"},f:[{p:[2,3,31],t:7,e:"ui-section",a:{label:"Generated Power"},f:[{t:2,x:{r:["adata.generated"],s:"Math.round(_0)"},p:[3,5,73]},"W"]}," ",{p:[5,3,126],t:7,e:"ui-section",a:{label:"Orientation"},f:[{p:[6,5,164],t:7,e:"span",f:[{t:2,x:{r:["adata.angle"],s:"Math.round(_0)"},p:[6,11,170]},"° (",{t:2,r:"data.direction",p:[6,45,204]},")"]}]}," ",{p:[8,3,251],t:7,e:"ui-section",a:{label:"Adjust Angle"},f:[{p:[9,5,290],t:7,e:"ui-button",a:{icon:"step-backward",action:"control",params:'{"cdir": -15}'},f:["15°"]}," ",{p:[10,5,387],t:7,e:"ui-button",a:{icon:"backward",action:"control",params:'{"cdir": -5}'},f:["5°"]}," ",{p:[11,5,477],t:7,e:"ui-button",a:{icon:"forward",action:"control",params:'{"cdir": 5}'},f:["5°"]}," ",{p:[12,5,565],t:7,e:"ui-button",a:{icon:"step-forward",action:"control",params:'{"cdir": 15}'},f:["15°"]}]}]}," ",{p:[15,1,687],t:7,e:"ui-display",a:{title:"Tracking"},f:[{p:[16,3,720],t:7,e:"ui-section",a:{label:"Tracker Mode"},f:[{p:[17,5,759],t:7,e:"ui-button",a:{icon:"close",state:[{t:2,x:{r:["data.tracking_state"],s:'_0==0?"selected":null'},p:[17,36,790]}],action:"tracking",params:'{"mode": 0}'},f:["Off"]}," ",{p:[19,5,907],t:7,e:"ui-button",a:{icon:"clock-o",state:[{t:2,x:{r:["data.tracking_state"],s:'_0==1?"selected":null'},p:[19,38,940]}],action:"tracking",params:'{"mode": 1}'},f:["Timed"]}," ",{p:[21,5,1059],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.connected_tracker","data.tracking_state"],s:'_0?_1==2?"selected":null:"disabled"'},p:[21,38,1092]}],action:"tracking",params:'{"mode": 2}'},f:["Auto"]}]}," ",{p:[24,3,1262],t:7,e:"ui-section",a:{label:"Tracking Rate"},f:[{p:[25,3,1300],t:7,e:"span",f:[{t:2,x:{r:["adata.tracking_rate"],s:"Math.round(_0)"},p:[25,9,1306]},"°/h (",{t:2,r:"data.rotating_way",p:[25,53,1350]},")"]}]}," ",{p:[27,3,1399],t:7,e:"ui-section",a:{label:"Adjust Rate"},f:[{p:[28,5,1437],t:7,e:"ui-button",a:{icon:"fast-backward",action:"control",params:'{"tdir": -180}'},f:["180°"]}," ",{p:[29,5,1536],t:7,e:"ui-button",a:{icon:"step-backward",action:"control",params:'{"tdir": -30}'},f:["30°"]}," ",{p:[30,5,1633],t:7,e:"ui-button",a:{icon:"backward",action:"control",params:'{"tdir": -5}'},f:["5°"]}," ",{p:[31,5,1723],t:7,e:"ui-button",a:{icon:"forward",action:"control",params:'{"tdir": 5}'},f:["5°"]}," ",{p:[32,5,1811],t:7,e:"ui-button",a:{icon:"step-forward",action:"control",params:'{"tdir": 30}'},f:["30°"]}," ",{p:[33,5,1906],t:7,e:"ui-button",a:{icon:"fast-forward",action:"control",params:'{"tdir": 180}'},f:["180°"]}]}]}," ",{p:{button:[{p:[38,5,2094],t:7,e:"ui-button",a:{icon:"refresh",action:"refresh"},f:["Refresh"]}]},t:7,e:"ui-display",a:{title:"Devices",button:0},f:[" ",{p:[40,2,2175],t:7,e:"ui-section",a:{label:"Solar Tracker"},f:[{p:[41,5,2215],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.connected_tracker"],s:'_0?"good":"bad"'},p:[41,18,2228]}]},f:[{t:2,x:{r:["data.connected_tracker"],s:'_0?"":"Not "'},p:[41,63,2273]},"Found"]}]}," ",{p:[43,2,2344],t:7,e:"ui-section",a:{label:"Solar Panels"},f:[{p:[44,3,2381],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.connected_panels"],s:'_0?"good":"bad"'},p:[44,16,2394]}]},f:[{t:2,x:{r:["adata.connected_panels"],s:"Math.round(_0)"},p:[44,60,2438]}," Panels Connected"]}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],40:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(e){e.exports={data:{text:t("../text")}}}(i),i.exports.template={v:3,t:[" ",{p:{button:[{t:4,f:[{p:[10,7,194],t:7,e:"ui-button",a:{icon:"eject",action:"eject"},f:["Eject"]}],n:50,r:"data.open",p:[9,5,169]}]},t:7,e:"ui-display",a:{title:"Power",button:0},f:[" ",{p:[13,3,283],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[14,5,315],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[14,22,332]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[15,14,383]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[16,22,438]}]}]}," ",{p:[18,3,497],t:7,e:"ui-section",a:{label:"Cell"},f:[{t:4,f:[{p:[20,7,561],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.powerLevel",p:[20,40,594]}]},f:[{t:2,x:{r:["adata.powerLevel"],s:"Math.fixed(_0)"},p:[20,61,615]},"%"]}],n:50,r:"data.hasPowercell",p:[19,5,528]},{t:4,n:51,f:[{p:[22,4,674],t:7,e:"span",a:{"class":"bad"},f:["No Cell"]}],r:"data.hasPowercell"}]}]}," ",{p:[26,1,751],t:7,e:"ui-display",a:{title:"Thermostat"},f:[{p:[27,3,786],t:7,e:"ui-section",a:{label:"Current Temperature"},f:[{p:[28,3,830],t:7,e:"span",f:[{t:2,x:{r:["adata.currentTemp"],s:"Math.round(_0)"},p:[28,9,836]},"°C"]}]}," ",{p:[30,2,901],t:7,e:"ui-section",a:{label:"Target Temperature"},f:[{p:[31,3,944],t:7,e:"span",f:[{t:2,x:{r:["adata.targetTemp"],s:"Math.round(_0)"},p:[31,9,950]},"°C"]}]}," ",{t:4,f:[{p:[34,2,1035],t:7,e:"ui-section",a:{label:"Adjust Target"},f:[{p:[35,7,1077],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.targetTemp","data.minTemp"],s:'_0>_1?null:"disabled"'},p:[35,46,1116]}],action:"target",params:'{"target": -20}'}}," ",{p:[36,7,1222],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.targetTemp","data.minTemp"],s:'_0>_1?null:"disabled"'},p:[36,41,1256]}],action:"target",params:'{"target": -5}'}}," ",{p:[37,7,1361],t:7,e:"ui-button",a:{icon:"pencil",action:"target",params:'{"target": "custom"}'},f:["Set"]}," ",{p:[38,7,1455],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.targetTemp","data.maxTemp"],s:'_0<_1?null:"disabled"'},p:[38,40,1488]}],action:"target",params:'{"target": 5}'}}," ",{p:[39,7,1592],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.targetTemp","data.maxTemp"],s:'_0<_1?null:"disabled"'},p:[39,45,1630]}],action:"target",params:'{"target": 20}'}}]}],n:50,r:"data.open",p:[33,3,1015]}," ",{p:[42,3,1759],t:7,e:"ui-section",a:{label:"Mode"},f:[{t:4,f:[{p:[44,7,1813],t:7,e:"ui-button",a:{icon:"long-arrow-up",state:[{t:2,x:{r:["data.mode"],s:'_0=="heat"?"selected":null'},p:[44,46,1852]}],action:"mode",params:'{"mode": "heat"}'},f:["Heat"]}," ",{p:[45,7,1961],t:7,e:"ui-button",a:{icon:"long-arrow-down",state:[{t:2,x:{r:["data.mode"],s:'_0=="cool"?"selected":null'},p:[45,48,2002]}],action:"mode",params:'{"mode": "cool"}'},f:["Cool"]}," ",{p:[46,7,2111],t:7,e:"ui-button",a:{icon:"arrows-v",state:[{t:2,x:{r:["data.mode"],s:'_0=="auto"?"selected":null'},p:[46,41,2145]}],action:"mode",params:'{"mode": "auto"}'},f:["Auto"]}],n:50,r:"data.open",p:[43,3,1788]},{t:4,n:51,f:[{p:[48,4,2263],t:7,e:"span",f:[{t:2,x:{r:["text","data.mode"],s:"_0.titleCase(_1)"},p:[48,10,2269]}]}],r:"data.open"}]}]}]},e.exports=r.extend(i.exports)},{"../text":44,"ractive/ractive.runtime":7}],41:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(t){t.exports={data:{tankPressureState:function(){var t;return t=this.get("data.tankPressureState"),t>=200?"good":t>=100?"average":"bad"}}}}(i),i.exports.template={v:3,t:[" ",{p:[11,1,255],t:7,e:"ui-notice",f:[{p:[12,3,270],t:7,e:"span",f:["The regulator ",{t:2,x:{r:["data.hasHoldingTank"],s:'_0?"is":"is not"'},p:[12,23,290]}," connected to a mask."]}]}," ",{p:[14,1,375],t:7,e:"ui-display",f:[{p:[15,3,391],t:7,e:"ui-section",a:{label:"Tank Pressure"},f:[{p:[16,7,433],t:7,e:"ui-bar",a:{min:"0",max:"1013",value:[{t:2,r:"data.tankPressure",p:[16,41,467]}],state:[{t:2,r:"tankPressureState",p:[17,16,506]}]},f:[{t:2,x:{r:["adata.tankPressure"],s:"Math.round(_0)"},p:[17,39,529]}," kPa"]}]}," ",{p:[19,3,597],t:7,e:"ui-section",a:{label:"Release Pressure"},f:[{p:[20,5,640],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.minReleasePressure",p:[20,18,653]}],max:[{t:2,r:"data.maxReleasePressure",p:[20,52,687]}],value:[{t:2,r:"data.releasePressure",p:[21,14,730]}]},f:[{t:2,x:{r:["adata.releasePressure"],s:"Math.round(_0)"},p:[21,40,756]}," kPa"]}]}," ",{p:[23,3,827],t:7,e:"ui-section",a:{label:"Pressure Regulator"},f:[{p:[24,5,872],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.releasePressure","data.defaultReleasePressure"],s:'_0!=_1?null:"disabled"'},p:[24,38,905]}],action:"pressure",params:'{"pressure": "reset"}'},f:["Reset"]}," ",{p:[26,5,1061],t:7,e:"ui-button",a:{icon:"minus",state:[{t:2,x:{r:["data.releasePressure","data.minReleasePressure"],s:'_0>_1?null:"disabled"'},p:[26,36,1092]}],action:"pressure",params:'{"pressure": "min"}'},f:["Min"]}," ",{p:[28,5,1239],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "custom"}'},f:["Set"]}," ",{p:[29,5,1335],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.releasePressure","data.maxReleasePressure"],s:'_0<_1?null:"disabled"'},p:[29,35,1365]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}]}," ",{p:[32,3,1527],t:7,e:"ui-section",a:{label:"Valve"},f:[{p:[33,5,1559],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.valveOpen"],s:'_0?"unlock":"lock"'},p:[33,22,1576]}],state:[{t:2,x:{r:["data.maskConnected"],s:'_0?null:"disabled"'},p:[33,69,1623]}],action:"valve"},f:[{t:2,x:{r:["data.valveOpen"],s:'_0?"Open":"Closed"'},p:[34,22,1689]}]}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],42:[function(t,e,n){var r,i,a;t("ie8/build/ie8.max"),t("dom4/build/dom4.max"),t("es5-shim"),t("html5shiv"),t("./math"),r=t("ractive/ractive.runtime"),r.DEBUG=/minified/.test(function(t){}),i=t("webfontloader"),i.load({custom:{families:["FontAwesome"],urls:["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.5.0/css/font-awesome.min.css"],testStrings:{FontAwesome:""}}}),a=t("./tgui"),window.tgui=new a({el:"#container",data:function(){var t;return t=JSON.parse(document.getElementById("data").textContent),(null==t||null==t.data||null==t.config)&&alert("Initial data did not load correctly."),t.adata=t.data,t}})},{"./math":43,"./tgui":45,"dom4/build/dom4.max":1,"es5-shim":2,html5shiv:3,"ie8/build/ie8.max":4,"ractive/ractive.runtime":7,webfontloader:8}],43:[function(t,e,n){Math.clamp=function(t,e,n){return Math.max(e,Math.min(t,n))},Math.fixed=function(t,e){return null==e&&(e=1),+(Math.round(t+"e"+e)+"e-"+e)}},{}],44:[function(t,e,n){e.exports={upperCaseFirst:function(t){return t[0].toUpperCase()+t.slice(1).toLowerCase()},titleCase:function(t){return t.replace(/\w\S*/g,this.upperCaseFirst)}}},{}],45:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(e){var n;n=t("./dragresize"),e.exports={components:{"ui-bar":t("./components/bar"),"ui-button":t("./components/button"),"ui-display":t("./components/display"),"ui-notice":t("./components/notice"),"ui-section":t("./components/section"),"ui-subdisplay":t("./components/subdisplay")},events:{enter:t("ractive-events-keys").enter,space:t("ractive-events-keys").space},transitions:{fade:t("ractive-transitions-fade")},onconfig:function(){var e,n;return n=this.get("config.interface"),e={air_alarm:t("./interfaces/air_alarm.ract"),airlock_electronics:t("./interfaces/airlock_electronics.ract"),apc:t("./interfaces/apc.ract"),atmos_filter:t("./interfaces/atmos_filter.ract"),atmos_mixer:t("./interfaces/atmos_mixer.ract"),atmos_pump:t("./interfaces/atmos_pump.ract"),canister:t("./interfaces/canister.ract"),chem_dispenser:t("./interfaces/chem_dispenser.ract"),chem_heater:t("./interfaces/chem_heater.ract"),cryo:t("./interfaces/cryo.ract"),error:t("./interfaces/error.ract"),smes:t("./interfaces/smes.ract"),solar_control:t("./interfaces/solar_control.ract"),space_heater:t("./interfaces/space_heater.ract"),tanks:t("./interfaces/tanks.ract")},null!=e[n]?this.components["interface"]=e[n]:null==this.components["interface"]?this.components["interface"]=t("./interfaces/error"):void 0},oninit:function(){return this.on("titlebar.drag",function(){return this.toggle("drag"),!1}),this.on("resize.resize",function(){return this.toggle("resize"),!1}),document.addEventListener("mousemove",function(t){return function(e){return t.get("drag")?n.drag(t,e):t.get("resize")?n.resize(t,e):void 0}}(this)),document.addEventListener("mouseup",function(t){return function(e){var n,r;return(n=t.get("drag"))&&t.set("drag"),(r=t.get("resize"))&&t.set("resize"),n||r?(t.set("x"),t.set("y")):void 0}}(this))},onrender:function(){return this.observe("config.style",function(t,e,n){return null!=e&&(document.body.classList.remove(e),this.el.classList.remove(e)),null!=t?(this.el.classList.add(t),document.body.classList.add(t)):void 0})}}}(i),i.exports.template={v:3,t:[" "," "," ",{p:[47,1,1872],t:7,e:"titlebar",f:[{t:3,r:"config.title",p:[47,11,1882]}]}," ",{p:[48,1,1913],t:7,e:"main",f:[{p:[49,3,1923],t:7,e:"interface"}]}," ",{p:[51,1,1946],t:7,e:"resize"}]},i.exports.components=i.exports.components||{};var a={titlebar:t("./components/titlebar.ract"),resize:t("./components/resize.ract")};for(var o in a)a.hasOwnProperty(o)&&(i.exports.components[o]=a[o]);e.exports=r.extend(i.exports)},{"./components/bar":10,"./components/button":11,"./components/display":12,"./components/notice":13,"./components/resize.ract":14,"./components/section":15,"./components/subdisplay":16,"./components/titlebar.ract":17,"./dragresize":19,"./interfaces/air_alarm.ract":20,"./interfaces/airlock_electronics.ract":28,"./interfaces/apc.ract":29,"./interfaces/atmos_filter.ract":30,"./interfaces/atmos_mixer.ract":31,"./interfaces/atmos_pump.ract":32,"./interfaces/canister.ract":33,"./interfaces/chem_dispenser.ract":34,"./interfaces/chem_heater.ract":35,"./interfaces/cryo.ract":36,"./interfaces/error":37,"./interfaces/error.ract":37,"./interfaces/smes.ract":38, -"./interfaces/solar_control.ract":39,"./interfaces/space_heater.ract":40,"./interfaces/tanks.ract":41,"ractive-events-keys":5,"ractive-transitions-fade":6,"ractive/ractive.runtime":7}]},{},[42]); \ No newline at end of file +},enabled:function(){return this.get("config.status")===r.UI_INTERACTIVE?!0:!1},styles:function(){var t,e,n;return t=this.get("enabled"),e=this.get("state"),n=this.get("style"),t?e?""+e:"normal "+[n]:"disabled"}},oninit:function(){return this.on("act",function(t){var e,r,i;return t.node.blur(),i=this.get(),e=i.action,r=i.params,null!=e?n.act(this.get("config.ref"),e,r):void 0})}}}(i),i.exports.template={v:3,t:[" ",{p:[28,1,733],t:7,e:"span",a:{"class":["button ",{t:2,r:"styles",p:[28,21,753]}," ",{t:4,f:["gridable"],r:"grid",p:[28,32,764]}],unselectable:"true"},m:[{t:4,f:["tabindex='0'"],r:"clickable",p:[30,3,814]}],v:{"click-enter":{n:[{t:4,f:["act"],r:"clickable",p:[31,19,865]}],d:[]}},f:[{t:4,f:[{p:[33,5,911],t:7,e:"i",a:{"class":["fa fa-",{t:2,r:"icon",p:[33,21,927]}]}}],n:50,r:"icon",p:[32,3,893]}," ",{t:16,p:[35,3,956]}]}]},e.exports=r.extend(i.exports)},{"../byond":9,"../constants":18,"ractive/ractive.runtime":7}],12:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"div",a:{"class":"display"},f:[{t:4,f:[{p:[3,5,44],t:7,e:"header",f:[{p:[4,7,60],t:7,e:"h3",f:[{t:2,r:"title",p:[4,11,64]}]}," ",{t:4,f:[{p:[6,9,110],t:7,e:"div",a:{"class":"buttonRight"},f:[{t:16,n:"button",p:[6,34,135]}]}],n:50,r:"button",p:[5,7,86]}]}],n:50,r:"title",p:[2,3,25]}," ",{p:[10,3,202],t:7,e:"article",f:[{t:16,p:[11,5,217]}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],13:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"div",a:{"class":"notice"},f:[{t:16,p:[2,3,24]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],14:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(e){var n;n=t("../byond"),e.exports={oninit:function(){return this.observe("config.fancy",function(t,e,r){return n.winset(this.get("config.window"),"can-resize",!t)})}}}(i),i.exports.template={v:3,t:[" ",{t:4,f:[{p:[11,3,263],t:7,e:"div",a:{"class":"resize"},v:{mousedown:"resize"}}],n:50,r:"config.fancy",p:[10,1,239]}]},e.exports=r.extend(i.exports)},{"../byond":9,"ractive/ractive.runtime":7}],15:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"section",f:[{t:4,f:[{p:[3,5,32],t:7,e:"span",a:{"class":"label"},f:[{t:2,r:"label",p:[3,25,52]},":"]}," ",{t:4,f:[{t:16,p:[5,7,97]}],n:50,r:"nowrap",p:[4,5,75]},{t:4,n:51,f:[{p:[7,7,128],t:7,e:"div",a:{"class":"content"},f:[{t:16,p:[8,9,159]}]}],r:"nowrap"}],n:50,r:"label",p:[2,3,13]},{t:4,n:51,f:[{t:16,p:[12,5,213]}],r:"label"}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],16:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"div",a:{"class":"subdisplay"},f:[{t:4,f:[{p:[3,5,47],t:7,e:"header",f:[{p:[4,7,63],t:7,e:"h4",f:[{t:2,r:"title",p:[4,11,67]}]}," ",{t:4,f:[{t:16,n:"button",p:[5,21,103]}],n:50,r:"button",p:[5,7,89]}]}],n:50,r:"title",p:[2,3,28]}," ",{p:[8,3,156],t:7,e:"article",f:[{t:16,p:[9,5,171]}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],17:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(e){var n;n=t("../byond"),e.exports={computed:{visualStatus:function(){var e,n;return n=this.get("config.status"),e=t("../constants"),n===e.UI_INTERACTIVE?"good":n===e.UI_UPDATE?"average":n===e.UI_DISABLED?"bad":void 0}},oninit:function(){return this.observe("config.fancy",function(t,e,r){return n.winset(this.get("config.window"),"titlebar",!t)}),this.on({close:function(){return n.winset(this.get("config.window"),"is-visible","false"),location.href=n.href({command:"uiclose "+this.get("config.ref")},"winset")},minimize:function(){return n.winset(this.get("config.window"),"is-minimized","true")}})}}}(i),i.exports.template={v:3,t:[" ",{p:[24,1,800],t:7,e:"header",a:{"class":"titlebar"},v:{mousedown:"drag"},f:[{p:[25,3,849],t:7,e:"i",a:{"class":["statusicon fa fa-eye fa-2x ",{t:2,r:"visualStatus",p:[25,40,886]}]}}," ",{p:[26,3,912],t:7,e:"span",a:{"class":"title"},f:[{t:16,p:[26,23,932]}]}," ",{t:4,f:[{p:[28,5,978],t:7,e:"i",a:{"class":"minimize fa fa-minus fa-2x"},v:{click:"minimize"}}," ",{p:[29,5,1046],t:7,e:"i",a:{"class":"close fa fa-close fa-2x"},v:{click:"close"}}],n:50,r:"config.fancy",p:[27,3,952]}]}]},e.exports=r.extend(i.exports)},{"../byond":9,"../constants":18,"ractive/ractive.runtime":7}],18:[function(t,e,n){e.exports={UI_INTERACTIVE:2,UI_UPDATE:1,UI_DISABLED:0,UI_CLOSE:-1}},{}],19:[function(t,e,n){var r;r=t("./byond"),e.exports={drag:function(t,e){var n,i,a,o;return n=function(t,e){return 0>t&&(t=0),0>e&&(e=0),t+window.innerWidth>screen.availWidth&&(t=screen.availWidth-window.innerWidth),e+window.innerHeight>screen.availHeight&&(e=screen.availHeight-window.innerHeight),{x:t,y:e}},t.get("x")&&(a=e.screenX-t.get("x")+window.screenLeft,o=e.screenY-t.get("y")+window.screenTop,t.get("config.locked")&&(i=n(a,o),a=i.x,o=i.y),r.winset(t.get("config.window"),"pos",a+","+o)),t.set({x:e.screenX,y:e.screenY})},resize:function(t,e){var n,i,a,o;return i=function(t,e){return t=Math.clamp(t,100,screen.width),e=Math.clamp(e,100,screen.height),{x:t,y:e}},t.get("x")&&(a=e.screenX-t.get("x")+window.innerWidth,o=e.screenY-t.get("y")+window.innerHeight,n=i(a,o),a=n.x,o=n.y,r.winset(t.get("config.window"),"size",a+","+o)),t.set({x:e.screenX,y:e.screenY})}}},{"./byond":9}],20:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[" "," "," "," "," "," ",{p:[8,1,327],t:7,e:"ui-notice",f:[{t:4,f:[{p:[10,5,372],t:7,e:"ui-section",a:{label:"Interface Lock"},f:[{p:[11,7,415],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.locked"],s:'_0?"lock":"unlock"'},p:[11,24,432]}],action:"lock"},f:[{t:2,x:{r:["data.locked"],s:'_0?"Engaged":"Disengaged"'},p:[11,75,483]}]}]}],n:50,r:"data.siliconUser",p:[9,3,342]},{t:4,n:51,f:[{p:[14,5,574],t:7,e:"span",f:["Swipe an ID card to ",{t:2,x:{r:["data.locked"],s:'_0?"unlock":"lock"'},p:[14,31,600]}," this interface."]}],r:"data.siliconUser"}]}," ",{p:[17,1,685],t:7,e:"status"}," ",{t:4,f:[{t:4,f:[{p:[20,5,770],t:7,e:"controls"}],n:50,x:{r:["data.screen"],s:"_0==1"},p:[19,3,740]},{t:4,n:51,f:[{t:4,n:50,x:{r:["data.screen"],s:"_0==2"},f:[{p:[22,5,817],t:7,e:"vents"}]},{t:4,n:50,x:{r:["data.screen"],s:"(!(_0==2))&&(_0==3)"},f:[" ",{p:[24,5,862],t:7,e:"scrubbers"}]},{t:4,n:50,x:{r:["data.screen"],s:"(!(_0==2))&&((!(_0==3))&&(_0==4))"},f:[" ",{p:[26,5,911],t:7,e:"modes"}]},{t:4,n:50,x:{r:["data.screen"],s:"(!(_0==2))&&((!(_0==3))&&((!(_0==4))&&(_0==5)))"},f:[" ",{p:[28,5,956],t:7,e:"thresholds"}]}],x:{r:["data.screen"],s:"_0==1"}}],n:50,x:{r:["data.locked","data.siliconUser"],s:"!_0||_1"},p:[18,1,696]}]},i.exports.components=i.exports.components||{};var a={vents:t("./air_alarm/vents.ract"),modes:t("./air_alarm/modes.ract"),thresholds:t("./air_alarm/thresholds.ract"),status:t("./air_alarm/status.ract"),scrubbers:t("./air_alarm/scrubbers.ract"),controls:t("./air_alarm/controls.ract")};for(var o in a)a.hasOwnProperty(o)&&(i.exports.components[o]=a[o]);e.exports=r.extend(i.exports)},{"./air_alarm/controls.ract":22,"./air_alarm/modes.ract":23,"./air_alarm/scrubbers.ract":24,"./air_alarm/status.ract":25,"./air_alarm/thresholds.ract":26,"./air_alarm/vents.ract":27,"ractive/ractive.runtime":7}],21:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-button",a:{icon:"arrow-left",action:"screen",params:'{"screen": 1}'},f:["Back"]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],22:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Air Controls"},f:[{p:[2,3,37],t:7,e:"ui-section",f:[{p:[3,5,55],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.atmos_alarm"],s:'_0?"exclamation-triangle":"exclamation"'},p:[3,22,72]}],style:[{t:2,x:{r:["data.atmos_alarm"],s:'_0?"caution":null'},p:[3,92,142]}],action:[{t:2,x:{r:["data.atmos_alarm"],s:'_0?"reset":"alarm"'},p:[4,17,200]}]},f:["Area Atmosphere Alarm"]}]}," ",{p:[6,3,296],t:7,e:"ui-section",f:[{p:[7,5,314],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.mode"],s:'_0==3?"exclamation-triangle":"exclamation"'},p:[7,22,331]}],style:[{t:2,x:{r:["data.mode"],s:'_0==3?"danger":null'},p:[7,90,399]}],action:"mode",params:['{"mode": ',{t:2,x:{r:["data.mode"],s:"_0==3?1:3"},p:[8,38,475]},"}"]},f:["Panic Siphon"]}]}," ",{p:[10,3,549],t:7,e:"br"}," ",{p:[11,3,558],t:7,e:"ui-section",f:[{p:[12,5,576],t:7,e:"ui-button",a:{icon:"sign-out",action:"screen",params:'{"screen": 2}'},f:["Vent Controls"]}]}," ",{p:[14,3,688],t:7,e:"ui-section",f:[{p:[15,5,706],t:7,e:"ui-button",a:{icon:"filter",action:"screen",params:'{"screen": 3}'},f:["Scrubber Controls"]}]}," ",{p:[17,3,820],t:7,e:"ui-section",f:[{p:[18,5,838],t:7,e:"ui-button",a:{icon:"cog",action:"screen",params:'{"screen": 4}'},f:["Operating Mode"]}]}," ",{p:[20,3,946],t:7,e:"ui-section",f:[{p:[21,5,964],t:7,e:"ui-button",a:{icon:"bar-chart",action:"screen",params:'{"screen": 5}'},f:["Alarm Thresholds"]}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],23:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[" ",{p:{button:[{p:[5,5,115],t:7,e:"back"}]},t:7,e:"ui-display",a:{title:"Operating Modes",button:0},f:[" ",{t:4,f:[{p:[8,5,168],t:7,e:"ui-section",f:[{p:[9,7,188],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["selected"],s:'_0?"check-square-o":"square-o"'},p:[9,24,205]}],state:[{t:2,x:{r:["selected","danger"],s:'_0?_1?"danger":"selected":null'},p:[10,16,267]}],action:"mode",params:['{"mode": ',{t:2,r:"mode",p:[11,40,361]},"}"]},f:[{t:2,r:"name",p:[11,51,372]}]}]}],n:52,r:"data.modes",p:[7,3,142]}]}]},i.exports.components=i.exports.components||{};var a={back:t("./back.ract")};for(var o in a)a.hasOwnProperty(o)&&(i.exports.components[o]=a[o]);e.exports=r.extend(i.exports)},{"./back.ract":21,"ractive/ractive.runtime":7}],24:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[" ",{p:{button:[{p:[5,5,117],t:7,e:"back"}]},t:7,e:"ui-display",a:{title:"Scrubber Controls",button:0},f:[" ",{t:4,f:[{p:[8,5,174],t:7,e:"ui-subdisplay",a:{title:[{t:2,r:"long_name",p:[8,27,196]}]},f:[{p:[9,7,219],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[10,9,255],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["power"],s:'_0?"power-off":"close"'},p:[10,26,272]}],style:[{t:2,x:{r:["power"],s:'_0?"selected":null'},p:[10,68,314]}],action:"power",params:['{"id_tag": "',{t:2,r:"id_tag",p:[11,46,391]},'", "val": ',{t:2,x:{r:["power"],s:"+!_0"},p:[11,66,411]},"}"]},f:[{t:2,x:{r:["power"],s:'_0?"On":"Off"'},p:[11,80,425]}]}]}," ",{p:[13,7,490],t:7,e:"ui-section",a:{label:"Mode"},f:[{p:[14,9,525],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["scrubbing"],s:'_0?"filter":"sign-in"'},p:[14,26,542]}],style:[{t:2,x:{r:["scrubbing"],s:'_0?null:"danger"'},p:[14,71,587]}],action:"scrubbing",params:['{"id_tag": "',{t:2,r:"id_tag",p:[15,50,670]},'", "val": ',{t:2,x:{r:["scrubbing"],s:"+!_0"},p:[15,70,690]},"}"]},f:[{t:2,x:{r:["scrubbing"],s:'_0?"Scrubbing":"Siphoning"'},p:[15,88,708]}]}]}," ",{p:[17,7,790],t:7,e:"ui-section",a:{label:"Range"},f:[{p:[18,9,826],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["widenet"],s:'_0?"expand":"compress"'},p:[18,26,843]}],style:[{t:2,x:{r:["widenet"],s:'_0?"selected":null'},p:[18,70,887]}],action:"widenet",params:['{"id_tag": "',{t:2,r:"id_tag",p:[19,48,968]},'", "val": ',{t:2,x:{r:["widenet"],s:"+!_0"},p:[19,68,988]},"}"]},f:[{t:2,x:{r:["widenet"],s:'_0?"Expanded":"Normal"'},p:[19,84,1004]}]}]}," ",{p:[21,7,1080],t:7,e:"ui-section",a:{label:"Filters"},f:[{p:[22,9,1118],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["filter_co2"],s:'_0?"check-square-o":"square-o"'},p:[22,26,1135]}],style:[{t:2,x:{r:["filter_co2"],s:'_0?"selected":null'},p:[22,81,1190]}],action:"co2_scrub",params:['{"id_tag": "',{t:2,r:"id_tag",p:[23,50,1276]},'", "val": ',{t:2,x:{r:["filter_co2"],s:"+!_0"},p:[23,70,1296]},"}"]},f:["Oxygen"]}," ",{p:[24,9,1343],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["filter_n2o"],s:'_0?"check-square-o":"square-o"'},p:[24,26,1360]}],style:[{t:2,x:{r:["filter_n2o"],s:'_0?"selected":null'},p:[24,81,1415]}],action:"n2o_scrub",params:['{"id_tag": "',{t:2,r:"id_tag",p:[25,50,1501]},'", "val": ',{t:2,x:{r:["filter_n2o"],s:"+!_0"},p:[25,70,1521]},"}"]},f:["Nitrogen"]}," ",{p:[26,9,1570],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["filter_toxins"],s:'_0?"check-square-o":"square-o"'},p:[26,26,1587]}],style:[{t:2,x:{r:["filter_toxins"],s:'_0?"selected":null'},p:[26,84,1645]}],action:"tox_scrub",params:['{"id_tag": "',{t:2,r:"id_tag",p:[27,50,1734]},'", "val": ',{t:2,x:{r:["filter_toxins"],s:"+!_0"},p:[27,70,1754]},"}"]},f:["Plasma"]}]}]}],n:52,r:"data.scrubbers",p:[7,3,144]},{t:4,n:51,f:[{p:[31,5,1855],t:7,e:"span",a:{"class":"bad"},f:["Error: No scrubbers connected."]}],r:"data.scrubbers"}]}]},i.exports.components=i.exports.components||{};var a={back:t("./back.ract")};for(var o in a)a.hasOwnProperty(o)&&(i.exports.components[o]=a[o]);e.exports=r.extend(i.exports)},{"./back.ract":21,"ractive/ractive.runtime":7}],25:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Air Status"},f:[{t:4,f:[{t:4,f:[{p:[4,7,109],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[4,26,128]}]},f:[{p:[5,6,145],t:7,e:"span",a:{"class":[{t:2,x:{r:["danger_level"],s:'_0==2?"bad":_0==1?"average":"good"'},p:[5,19,158]}]},f:[{t:2,x:{r:["value"],s:"Math.fixed(_0,2)"},p:[6,5,236]},{t:2,r:"unit",p:[6,29,260]}]}]}],n:52,r:"data.environment_data",p:[3,5,70]}," ",{p:[10,5,321],t:7,e:"ui-section",a:{label:"Local Status"},f:[{p:[11,7,362],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.danger_level"],s:'_0==2?"bad bold":_0==1?"average bold":"good"'},p:[11,20,375]}]},f:[{t:2,x:{r:["data.danger_level"],s:'_0==2?"Danger (Internals Required)":_0==1?"Caution":"Optimal"'},p:[12,6,474]}]}]}," ",{p:[15,5,618],t:7,e:"ui-section",a:{label:"Area Status"},f:[{p:[16,4,655],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.atmos_alarm","data.fire_alarm"],s:'_0||_1?"bad bold":"good"'},p:[16,17,668]}]},f:[{t:2,x:{r:["data.atmos_alarm","fire_alarm"],s:'_0?"Atmosphere Alarm":_1?"Fire Alarm":"Nominal"'},p:[17,8,740]}]}]}],n:50,r:"data.environment_data",p:[2,3,35]},{t:4,n:51,f:[{p:[21,5,872],t:7,e:"ui-section",f:[{p:[22,7,892],t:7,e:"span",a:{"class":"bad bold"},f:["Warning: Cannot obtain air sample for analysis."]}]}],r:"data.environment_data"}," ",{t:4,f:[{p:[26,5,1029],t:7,e:"hr"}," ",{p:[27,5,1040],t:7,e:"ui-section",f:[{p:[28,7,1060],t:7,e:"span",a:{"class":"bad bold"},f:["Warning: Safety measures offline. Device may exhibit abnormal behavior."]}]}],n:50,r:"data.emagged",p:[25,3,1003]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],26:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.css="th,\ntd {\n padding-right: 16px;\n text-align: left;\n}\n",i.exports.template={v:3,t:[" ",{p:{button:[{p:[5,5,116],t:7,e:"back"}]},t:7,e:"ui-display",a:{title:"Alarm Thresholds",button:0},f:[" ",{p:[7,3,143],t:7,e:"table",f:[{p:[8,5,156],t:7,e:"thead",f:[{p:[8,12,163],t:7,e:"tr",f:[{p:[9,7,175],t:7,e:"th"}," ",{p:[10,7,192],t:7,e:"th",f:[{p:[10,11,196],t:7,e:"span",a:{"class":"bad"},f:["min2"]}]}," ",{p:[11,7,238],t:7,e:"th",f:[{p:[11,11,242],t:7,e:"span",a:{"class":"average"},f:["min1"]}]}," ",{p:[12,7,288],t:7,e:"th",f:[{p:[12,11,292],t:7,e:"span",a:{"class":"average"},f:["max1"]}]}," ",{p:[13,7,338],t:7,e:"th",f:[{p:[13,11,342],t:7,e:"span",a:{"class":"bad"},f:["max2"]}]}]}]}," ",{p:[15,5,401],t:7,e:"tbody",f:[{t:4,f:[{p:[16,32,441],t:7,e:"tr",f:[{p:[17,9,455],t:7,e:"th",f:[{t:3,r:"name",p:[17,13,459]}]}," ",{t:4,f:[{p:[18,27,502],t:7,e:"td",f:[{p:[19,11,518],t:7,e:"ui-button",a:{action:"threshold",params:['{"env": "',{t:2,r:"env",p:[19,58,565]},'", "var": "',{t:2,r:"val",p:[19,76,583]},'"}']},f:[{t:2,x:{r:["selected"],s:"Math.fixed(_0,2)"},p:[19,87,594]}]}]}],n:52,r:"settings",p:[18,9,484]}]}],n:52,r:"data.thresholds",p:[16,7,416]}]}," ",{p:[23,3,697],t:7,e:"table",f:[]}]}]}," "]},i.exports.components=i.exports.components||{};var a={back:t("./back.ract")};for(var o in a)a.hasOwnProperty(o)&&(i.exports.components[o]=a[o]);e.exports=r.extend(i.exports)},{"./back.ract":21,"ractive/ractive.runtime":7}],27:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[" ",{p:{button:[{p:[5,5,113],t:7,e:"back"}]},t:7,e:"ui-display",a:{title:"Vent Controls",button:0},f:[" ",{t:4,f:[{p:[8,5,166],t:7,e:"ui-subdisplay",a:{title:[{t:2,r:"long_name",p:[8,27,188]}]},f:[{p:[9,7,211],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[10,9,247],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["power"],s:'_0?"power-off":"close"'},p:[10,26,264]}],style:[{t:2,x:{r:["power"],s:'_0?"selected":null'},p:[10,68,306]}],action:"power",params:['{"id_tag": "',{t:2,r:"id_tag",p:[11,46,383]},'", "val": ',{t:2,x:{r:["power"],s:"+!_0"},p:[11,66,403]},"}"]},f:[{t:2,x:{r:["power"],s:'_0?"On":"Off"'},p:[11,80,417]}]}]}," ",{p:[13,7,482],t:7,e:"ui-section",a:{label:"Mode"},f:[{p:[14,9,517],t:7,e:"span",f:[{t:2,x:{r:["direction"],s:'_0=="release"?"Pressurizing":"Siphoning"'},p:[14,15,523]}]}]}," ",{p:[16,7,616],t:7,e:"ui-section",a:{label:"Pressure Regulator"},f:[{p:[17,9,665],t:7,e:"ui-button",a:{icon:"sign-in",style:[{t:2,x:{r:["incheck"],s:'_0?"selected":null'},p:[17,42,698]}],action:"incheck",params:['{"id_tag": "',{t:2,r:"id_tag",p:[18,48,779]},'", "val": ',{t:2,r:"checks",p:[18,68,799]},"}"]},f:["Internal"]}," ",{p:[19,9,842],t:7,e:"ui-button",a:{icon:"sign-out",style:[{t:2,x:{r:["excheck"],s:'_0?"selected":null'},p:[19,43,876]}],action:"excheck",params:['{"id_tag": "',{t:2,r:"id_tag",p:[20,48,957]},'", "val": ',{t:2,r:"checks",p:[20,68,977]},"}"]},f:["External"]}]}," ",{p:[22,7,1039],t:7,e:"ui-section",a:{label:"Target Pressure"},f:[{p:[23,9,1085],t:7,e:"ui-button",a:{icon:"pencil",action:"external_pressure",params:['{"id_tag": "',{t:2,r:"id_tag",p:[24,31,1168]},'", "pressure": "custom"}']},f:[{t:2,x:{r:["external"],s:"Math.fixed(_0)"},p:[24,67,1204]}]}," ",{p:[25,9,1250],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["extdefault"],s:'_0?"disabled":null'},p:[25,42,1283]}],action:"external_pressure",params:['{"id_tag": "',{t:2,r:"id_tag",p:[26,31,1377]},'", "pressure": "reset"}']},f:["Reset"]}]}]}],n:52,r:"data.vents",p:[7,3,140]},{t:4,n:51,f:[{p:[30,5,1490],t:7,e:"span",a:{"class":"bad"},f:["Error: No vents connected."]}],r:"data.vents"}]}]},i.exports.components=i.exports.components||{};var a={back:t("./back.ract")};for(var o in a)a.hasOwnProperty(o)&&(i.exports.components[o]=a[o]);e.exports=r.extend(i.exports)},{"./back.ract":21,"ractive/ractive.runtime":7}],28:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.css="table {\n width: 100%;\n border-spacing: 2px;\n}\nth {\n text-align: left;\n}\ntd {\n vertical-align: top;\n}\ntd .button {\n margin-top: 4px;\n}\n",i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,3,16],t:7,e:"ui-section",f:[{p:[3,5,34],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.oneAccess"],s:'_0?"unlock":"lock"'},p:[3,22,51]}],action:"one_access"},f:[{t:2,x:{r:["data.oneAccess"],s:'_0?"One":"All"'},p:[3,82,111]}," Required"]}," ",{p:[4,5,172],t:7,e:"ui-button",a:{icon:"refresh",action:"clear"},f:["Clear"]}]}," ",{p:[6,3,251],t:7,e:"hr"}," ",{p:[7,3,260],t:7,e:"table",f:[{p:[8,3,271],t:7,e:"thead",f:[{p:[9,4,283],t:7,e:"tr",f:[{t:4,f:[{p:[10,5,315],t:7,e:"th",f:[{p:[10,9,319],t:7,e:"span",a:{"class":"highlight bold"},f:[{t:2,r:"name",p:[10,38,348]}]}]}],n:52,r:"data.regions",p:[9,8,287]}]}]}," ",{p:[13,3,403],t:7,e:"tbody",f:[{p:[14,4,415],t:7,e:"tr",f:[{t:4,f:[{p:[15,5,447],t:7,e:"td",f:[{t:4,f:[{p:[16,11,481],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["req"],s:'_0?"check-square-o":"square-o"'},p:[16,28,498]}],style:[{t:2,x:{r:["req"],s:'_0?"selected":null'},p:[16,76,546]}],action:"set",params:['{"access": "',{t:2,r:"id",p:[17,46,621]},'"}']},f:[{t:2,r:"name",p:[17,56,631]}]}," ",{p:[18,9,661],t:7,e:"br"}],n:52,r:"accesses",p:[15,9,451]}]}],n:52,r:"data.regions",p:[14,8,419]}]}]}]}]}," "]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],29:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(t){t.exports={data:{powerState:function(t){return 2===t?"good":1===t?"average":"bad"}},computed:{malfAction:function(){var t;return t=this.get("data.malfStatus"),1===t?"hack":2===t?"occupy":3===t?"deoccupy":void 0},malfButton:function(){var t;return t=this.get("data.malfStatus"),1===t?"Override Programming":"Shunt Core Process"},malfIcon:function(){var t;return t=this.get("data.malfStatus"),1===t?"terminal":"caret-square-o-down"},powerCellStatusState:function(){var t;return t=this.get("data.powerCellStatus"),t>50?"good":t>25?"average":"bad"}}}}(i),i.exports.template={v:3,t:[" ",{p:[31,1,988],t:7,e:"ui-notice",f:[{t:4,f:[{p:[33,5,1033],t:7,e:"ui-section",a:{label:"Interface Lock"},f:[{p:[34,7,1076],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.locked"],s:'_0?"lock":"unlock"'},p:[34,24,1093]}],action:"lock"},f:[{t:2,x:{r:["data.locked"],s:'_0?"Engaged":"Disengaged"'},p:[34,75,1144]}]}]}],n:50,r:"data.siliconUser",p:[32,3,1003]},{t:4,n:51,f:[{p:[37,5,1235],t:7,e:"span",f:["Swipe an ID card to ",{t:2,x:{r:["data.locked"],s:'_0?"unlock":"lock"'},p:[37,31,1261]}," this interface."]}],r:"data.siliconUser"}]}," ",{p:[40,1,1346],t:7,e:"ui-display",a:{title:"Power Status"},f:[{p:[41,3,1383],t:7,e:"ui-section",a:{label:"Main Breaker"},f:[{t:4,f:[{p:[43,7,1470],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.isOperating"],s:'_0?"good":"bad"'},p:[43,20,1483]}]},f:[{t:2,x:{r:["data.isOperating"],s:'_0?"On":"Off"'},p:[43,59,1522]}]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"},p:[42,5,1422]},{t:4,n:51,f:[{p:[45,7,1586],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isOperating"],s:'_0?"power-off":"close"'},p:[45,24,1603]}],style:[{t:2,x:{r:["data.isOperating"],s:'_0?"selected":null'},p:[45,77,1656]}],action:"breaker"},f:[{t:2,x:{r:["data.isOperating"],s:'_0?"On":"Off"'},p:[46,26,1724]}]}],x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"}}]}," ",{p:[49,3,1805],t:7,e:"ui-section",a:{label:"External Power"},f:[{p:[50,5,1846],t:7,e:"span",a:{"class":[{t:2,x:{r:["powerState","data.externalPower"],s:"_0(_1)"},p:[50,18,1859]}]},f:[{t:2,x:{r:["data.externalPower"],s:'_0==2?"Good":_0==1?"Low":"None"'},p:[50,54,1895]}]}]}," ",{p:[52,3,2002],t:7,e:"ui-section",a:{label:"Power Cell"},f:[{t:4,f:[{p:[54,7,2083],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.powerCellStatus",p:[54,40,2116]}],state:[{t:2,r:"powerCellStatusState",p:[54,73,2149]}]},f:[{t:2,x:{r:["adata.powerCellStatus"],s:"Math.fixed(_0)"},p:[54,99,2175]},"%"]}],n:50,x:{r:["data.powerCellStatus"],s:"_0!=null"},p:[53,5,2039]},{t:4,n:51,f:[{p:[56,7,2244],t:7,e:"span",a:{"class":"bad"},f:["Power cell removed."]}],x:{r:["data.powerCellStatus"],s:"_0!=null"}}]}," ",{t:4,f:[{p:[60,5,2364],t:7,e:"ui-section",a:{label:"Charge Mode"},f:[{t:4,f:[{p:[62,9,2454],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.chargeMode"],s:'_0?"good":"bad"'},p:[62,22,2467]}]},f:[{t:2,x:{r:["data.chargeMode"],s:'_0?"Auto":"Off"'},p:[62,60,2505]}]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"},p:[61,7,2404]},{t:4,n:51,f:[{p:[64,9,2574],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.chargeMode"],s:'_0?"refresh":"close"'},p:[64,26,2591]}],style:[{t:2,x:{r:["data.chargeMode"],s:'_0?"selected":null'},p:[64,76,2641]}],action:"charge"},f:[{t:2,x:{r:["data.chargeMode"],s:'_0?"Auto":"Off"'},p:[65,27,2709]}]}],x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"}}," [",{p:[68,8,2795],t:7,e:"span",a:{"class":[{t:2,x:{r:["powerState","data.chargingStatus"],s:"_0(_1)"},p:[68,21,2808]}]},f:[{t:2,x:{r:["data.chargingStatus"],s:'_0==2?"Fully Charged":_0==1?"Charging":"Not Charging"'},p:[68,58,2845]}]},"]"]}],n:50,x:{r:["data.powerCellStatus"],s:"_0!=null"},p:[59,3,2322]}]}," ",{p:[72,1,3003],t:7,e:"ui-display",a:{title:"Power Channels"},f:[{t:4,f:[{p:[74,5,3077],t:7,e:"ui-section",a:{label:[{t:2,r:"title",p:[74,24,3096]}],nowrap:0},f:[{p:[75,7,3122],t:7,e:"div",a:{"class":"content"},f:[{t:2,x:{r:["powerLoad"],s:"Math.round(_0)"},p:[75,28,3143]}," W"]}," ",{p:[76,7,3184],t:7,e:"div",a:{"class":"content"},f:[{p:[76,28,3205],t:7,e:"span",a:{"class":[{t:2,x:{r:["status"],s:'_0>=2?"good":"bad"'},p:[76,41,3218]}]},f:[{t:2,x:{r:["status"],s:'_0>=2?"On":"Off"'},p:[76,75,3252]}]}]}," ",{p:[77,7,3303],t:7,e:"div",a:{"class":"content"},f:["[",{p:[77,29,3325],t:7,e:"span",f:[{t:2,x:{r:["status"],s:'_0==1||_0==3?"Auto":"Manual"'},p:[77,35,3331]}]},"]"]}," ",{p:[78,7,3403],t:7,e:"div",a:{"class":"content",style:"float:right"},f:[{t:4,f:[{p:[80,11,3506],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["status"],s:'_0==1||_0==3?"selected":null'},p:[80,44,3539]}],action:"channel",params:[{t:2,r:"topicParams.auto",p:[81,38,3629]}]},f:["Auto"]}," ",{p:[82,11,3679],t:7,e:"ui-button",a:{icon:"power-off",state:[{t:2,x:{r:["status"],s:'_0==2?"selected":null'},p:[82,46,3714]}],action:"channel",params:[{t:2,r:"topicParams.on",p:[83,21,3789]}]},f:["On"]}," ",{p:[84,11,3835],t:7,e:"ui-button",a:{icon:"close",state:[{t:2,x:{r:["status"],s:'_0==0?"selected":null'},p:[84,42,3866]}],action:"channel",params:[{t:2,r:"topicParams.off",p:[85,21,3941]}]},f:["Off"]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"!_0||_1"},p:[79,9,3454]}]}]}],n:52,r:"adata.powerChannels",p:[73,3,3042]}," ",{p:[90,3,4044],t:7,e:"ui-section",a:{label:"Total Load"},f:[{p:[91,5,4081],t:7,e:"span",a:{"class":"bold"},f:[{t:2,x:{r:["adata.totalLoad"],s:"Math.round(_0)"},p:[91,24,4100]}," W"]}]}]}," ",{t:4,f:[{p:[95,3,4202],t:7,e:"ui-display",a:{title:"System Overrides"},f:[{p:[96,5,4245],t:7,e:"ui-button",a:{icon:"lightbulb-o",action:"overload"},f:["Overload"]}," ",{t:4,f:[{p:[98,7,4350],t:7,e:"ui-button",a:{icon:[{t:2,r:"malfIcon",p:[98,24,4367]}],state:[{t:2,x:{r:["data.malfStatus"],s:'_0==4?"disabled":null'},p:[98,45,4388]}],action:[{t:2,r:"malfAction",p:[98,99,4442]}]},f:[{t:2,r:"malfButton",p:[98,115,4458]}]}],n:50,r:"data.malfStatus",p:[97,5,4319]}]}],n:50,r:"data.siliconUser",p:[94,1,4174]},{p:[102,1,4525],t:7,e:"ui-notice",f:[{p:[103,3,4540],t:7,e:"ui-section",a:{label:"Cover Lock"},f:[{t:4,f:[{p:[105,7,4625],t:7,e:"span",f:[{t:2,x:{r:["data.coverLocked"],s:'_0?"Engaged":"Disengaged"'},p:[105,13,4631]}]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"},p:[104,5,4577]},{t:4,n:51,f:[{p:[107,7,4707],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.coverLocked"],s:'_0?"lock":"unlock"'},p:[107,24,4724]}],action:"cover"},f:[{t:2,x:{r:["data.coverLocked"],s:'_0?"Engaged":"Disengaged"'},p:[107,81,4781]}]}],x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"}}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],30:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,3,16],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[3,5,48],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[3,22,65]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[3,66,109]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[4,22,164]}]}]}," ",{p:[6,3,223],t:7,e:"ui-section",a:{label:"Output Pressure"},f:[{p:[7,5,265],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "custom"}'},f:["Set"]}," ",{p:[8,5,361],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.set_pressure","data.max_pressure"],s:'_0==_1?"disabled":null'},p:[8,35,391]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}," ",{p:[9,5,523],t:7,e:"span",a:{"class":"buttoninfo"},f:[{t:2,x:{r:["adata.set_pressure"],s:"Math.round(_0)"},p:[9,30,548]}," kPa"]}]}," ",{p:[11,3,614],t:7,e:"ui-section",a:{label:"Filter"},f:[{p:[12,5,647],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.filter_type"],s:'_0==-1?"selected":null'},p:[12,23,665]}],action:"filter",params:'{"mode": -1}'},f:["Nothing"]}," ",{p:[14,5,783],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.filter_type"],s:'_0==0?"selected":null'},p:[14,23,801]}],action:"filter",params:'{"mode": 0}'},f:["Plasma"]}," ",{p:[16,5,916],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.filter_type"],s:'_0==1?"selected":null'},p:[16,23,934]}],action:"filter",params:'{"mode": 1}'},f:["O2"]}," ",{p:[18,5,1045],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.filter_type"],s:'_0==2?"selected":null'},p:[18,23,1063]}],action:"filter",params:'{"mode": 2}'},f:["N2"]}," ",{p:[20,5,1174],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.filter_type"],s:'_0==3?"selected":null'},p:[20,23,1192]}],action:"filter",params:'{"mode": 3}'},f:["CO2"]}," ",{p:[22,5,1304],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.filter_type"],s:'_0==4?"selected":null'},p:[22,23,1322]}],action:"filter",params:'{"mode": 4}'},f:["N2O"]}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],31:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,3,16],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[3,5,48],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[3,22,65]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[3,66,109]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[4,22,164]}]}]}," ",{p:[6,3,223],t:7,e:"ui-section",a:{label:"Output Pressure"},f:[{p:[7,5,265],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "custom"}'},f:["Set"]}," ",{p:[8,5,361],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.set_pressure","data.max_pressure"],s:'_0==_1?"disabled":null'},p:[8,35,391]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}," ",{p:[9,5,523],t:7,e:"span",a:{"class":"buttoninfo"},f:[{t:2,x:{r:["adata.set_pressure"],s:"Math.round(_0)"},p:[9,30,548]}," kPa"]}]}," ",{p:[11,3,614],t:7,e:"ui-section",a:{label:"Node 1"},f:[{p:[12,5,647],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.node1_concentration"],s:'_0==0?"disabled":null'},p:[12,44,686]}],action:"node1",params:'{"concentration": -0.1}'}}," ",{p:[14,5,803],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.node1_concentration"],s:'_0==0?"disabled":null'},p:[14,39,837]}],action:"node1",params:'{"concentration": -0.01}'}}," ",{p:[16,5,955],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.node1_concentration"],s:'_0==100?"disabled":null'},p:[16,38,988]}],action:"node1",params:'{"concentration": 0.01}'}}," ",{p:[18,5,1107],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.node1_concentration"],s:'_0==100?"disabled":null'},p:[18,43,1145]}],action:"node1",params:'{"concentration": 0.1}'}}," ",{p:[20,5,1263],t:7,e:"span",a:{"class":"buttoninfo"},f:[{t:2,x:{r:["adata.node1_concentration"],s:"Math.round(_0)"},p:[20,30,1288]},"%"]}]}," ",{p:[22,3,1358],t:7,e:"ui-section",a:{label:"Node 2"},f:[{p:[23,5,1391],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.node2_concentration"],s:'_0==0?"disabled":null'},p:[23,44,1430]}],action:"node2",params:'{"concentration": -0.1}'}}," ",{p:[25,5,1547],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.node2_concentration"],s:'_0==0?"disabled":null'},p:[25,39,1581]}],action:"node2",params:'{"concentration": -0.01}'}}," ",{p:[27,5,1699],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.node2_concentration"],s:'_0==100?"disabled":null'},p:[27,38,1732]}],action:"node2",params:'{"concentration": 0.01}'}}," ",{p:[29,5,1851],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.node2_concentration"],s:'_0==100?"disabled":null'},p:[29,43,1889]}],action:"node2",params:'{"concentration": 0.1}'}}," ",{p:[31,5,2007],t:7,e:"span",a:{"class":"buttoninfo"},f:[{t:2,x:{r:["adata.node2_concentration"],s:"Math.round(_0)"},p:[31,30,2032]},"%"]}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],32:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display", +f:[{p:[2,3,16],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[3,5,48],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[3,22,65]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[3,66,109]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[4,22,164]}]}]}," ",{t:4,f:[{p:[7,5,250],t:7,e:"ui-section",a:{label:"Transfer Rate"},f:[{p:[8,7,292],t:7,e:"ui-button",a:{icon:"pencil",action:"transfer",params:'{"rate": "custom"}'},f:["Set"]}," ",{p:[9,7,386],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.transfer_rate","data.max_rate"],s:'_0==_1?"disabled":null'},p:[9,37,416]}],action:"transfer",params:'{"rate": "max"}'},f:["Max"]}," ",{p:[10,7,543],t:7,e:"span",a:{"class":"buttoninfo"},f:[{t:2,x:{r:["adata.transfer_rate"],s:"Math.round(_0)"},p:[10,32,568]}," L/s"]}]}],n:50,r:"data.max_rate",p:[6,3,223]},{t:4,n:51,f:[{p:[13,5,651],t:7,e:"ui-section",a:{label:"Output Pressure"},f:[{p:[14,7,695],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "custom"}'},f:["Set"]}," ",{p:[15,7,793],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.set_pressure","data.max_pressure"],s:'_0==_1?"disabled":null'},p:[15,37,823]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}," ",{p:[16,7,957],t:7,e:"span",a:{"class":"buttoninfo"},f:[{t:2,x:{r:["adata.set_pressure"],s:"Math.round(_0)"},p:[16,32,982]}," kPa"]}]}],r:"data.max_rate"}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],33:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-notice",f:[{p:[2,3,15],t:7,e:"span",f:["The regulator ",{t:2,x:{r:["data.hasHoldingTank"],s:'_0?"is":"is not"'},p:[2,23,35]}," connected to a tank."]}]}," ",{p:{button:[{p:[6,5,185],t:7,e:"ui-button",a:{icon:"pencil",state:[{t:2,x:{r:["data.canLabel"],s:'_0?null:"disabled"'},p:[6,37,217]}],action:"relable"},f:["Relabel"]}]},t:7,e:"ui-display",a:{title:"Canister",button:0},f:[" ",{p:[8,3,312],t:7,e:"ui-section",a:{label:"Pressure"},f:[{p:[9,5,347],t:7,e:"span",f:[{t:2,x:{r:["adata.tankPressure"],s:"Math.round(_0)"},p:[9,11,353]}," kPa"]}]}," ",{p:[11,3,419],t:7,e:"ui-section",a:{label:"Port"},f:[{p:[12,5,450],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.portConnected"],s:'_0?"good":"average"'},p:[12,18,463]}]},f:[{t:2,x:{r:["data.portConnected"],s:'_0?"Connected":"Not Connected"'},p:[12,63,508]}]}]}]}," ",{p:[15,1,603],t:7,e:"ui-display",a:{title:"Valve"},f:[{p:[16,3,633],t:7,e:"ui-section",a:{label:"Release Pressure"},f:[{p:[17,5,676],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.minReleasePressure",p:[17,18,689]}],max:[{t:2,r:"data.maxReleasePressure",p:[17,52,723]}],value:[{t:2,r:"data.releasePressure",p:[18,14,766]}]},f:[{t:2,x:{r:["adata.releasePressure"],s:"Math.round(_0)"},p:[18,40,792]}," kPa"]}]}," ",{p:[20,3,863],t:7,e:"ui-section",a:{label:"Pressure Regulator"},f:[{p:[21,5,908],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.releasePressure","data.defaultReleasePressure"],s:'_0!=_1?null:"disabled"'},p:[21,38,941]}],action:"pressure",params:'{"pressure": "reset"}'},f:["Reset"]}," ",{p:[23,5,1097],t:7,e:"ui-button",a:{icon:"minus",state:[{t:2,x:{r:["data.releasePressure","data.minReleasePressure"],s:'_0>_1?null:"disabled"'},p:[23,36,1128]}],action:"pressure",params:'{"pressure": "min"}'},f:["Min"]}," ",{p:[25,5,1275],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "custom"}'},f:["Set"]}," ",{p:[26,5,1371],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.releasePressure","data.maxReleasePressure"],s:'_0<_1?null:"disabled"'},p:[26,35,1401]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}]}," ",{p:[29,3,1563],t:7,e:"ui-section",a:{label:"Valve"},f:[{p:[30,5,1595],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.valveOpen"],s:'_0?"unlock":"lock"'},p:[30,22,1612]}],style:[{t:2,x:{r:["data.valveOpen","data.hasHoldingTank"],s:'_0?_1?"caution":"danger":null'},p:[31,14,1666]}],action:"valve"},f:[{t:2,x:{r:["data.valveOpen"],s:'_0?"Open":"Closed"'},p:[32,22,1760]}]}]}]}," ",{p:{button:[{t:4,f:[{p:[38,7,1948],t:7,e:"ui-button",a:{icon:"eject",style:[{t:2,x:{r:["data.valveOpen"],s:'_0?"danger":null'},p:[38,38,1979]}],action:"eject"},f:["Eject"]}],n:50,r:"data.hasHoldingTank",p:[37,5,1913]}]},t:7,e:"ui-display",a:{title:"Holding Tank",button:0},f:[" ",{t:4,f:[{p:[42,3,2113],t:7,e:"ui-section",a:{label:"Label"},f:[{t:2,r:"data.holdingTank.name",p:[43,4,2144]}]}," ",{p:[45,3,2190],t:7,e:"ui-section",a:{label:"Pressure"},f:[{t:2,x:{r:["adata.holdingTank.tankPressure"],s:"Math.round(_0)"},p:[46,4,2224]}," kPa"]}],n:50,r:"data.hasHoldingTank",p:[41,3,2082]},{t:4,n:51,f:[{p:[49,3,2306],t:7,e:"ui-section",f:[{p:[50,4,2323],t:7,e:"span",a:{"class":"average"},f:["No Holding Tank"]}]}],r:"data.hasHoldingTank"}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],34:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Status"},f:[{p:[2,3,31],t:7,e:"ui-section",a:{label:"Energy"},f:[{p:[3,5,64],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.maxEnergy",p:[3,26,85]}],value:[{t:2,r:"data.energy",p:[3,53,112]}]},f:[{t:2,x:{r:["adata.energy"],s:"Math.fixed(_0)"},p:[3,70,129]}," Units"]}]}]}," ",{p:{button:[{t:4,f:[{p:[9,7,315],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.amount","."],s:'_0==_1?"selected":null'},p:[9,37,345]}],action:"amount",params:['{"amount": ',{t:2,r:".",p:[9,114,422]},"}"]},f:[{t:2,r:".",p:[9,122,430]}]}],n:52,r:"data.beakerTransferAmounts",p:[8,5,271]}]},t:7,e:"ui-display",a:{title:"Dispense",button:0},f:[" ",{p:[12,3,482],t:7,e:"ui-section",f:[{t:4,f:[{p:[14,7,532],t:7,e:"ui-button",a:{grid:0,icon:"tint",action:"dispense",params:['{"reagent": "',{t:2,r:"id",p:[14,74,599]},'"}']},f:[{t:2,r:"title",p:[14,84,609]}]}],n:52,r:"data.chemicals",p:[13,5,500]}]}]}," ",{p:{button:[{t:4,f:[{p:[21,7,786],t:7,e:"ui-button",a:{icon:"minus",action:"remove",params:['{"amount": ',{t:2,r:".",p:[21,66,845]},"}"]},f:[{t:2,r:".",p:[21,74,853]}]}],n:52,r:"data.beakerTransferAmounts",p:[20,5,742]}," ",{p:[23,5,891],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[23,36,922]}],action:"eject"},f:["Eject"]}]},t:7,e:"ui-display",a:{title:"Beaker",button:0},f:[" ",{p:[25,3,1019],t:7,e:"ui-section",a:{label:"Contents"},f:[{t:4,f:[{p:[27,7,1089],t:7,e:"span",f:[{t:2,x:{r:["adata.beakerCurrentVolume"],s:"Math.round(_0)"},p:[27,13,1095]},"/",{t:2,r:"data.beakerMaxVolume",p:[27,55,1137]}," Units"]}," ",{p:[28,7,1182],t:7,e:"br"}," ",{t:4,f:[{p:[30,9,1235],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[30,52,1278]}," units of ",{t:2,r:"name",p:[30,87,1313]}]},{p:[30,102,1328],t:7,e:"br"}],n:52,r:"adata.beakerContents",p:[29,7,1195]},{t:4,n:51,f:[{p:[32,9,1359],t:7,e:"span",a:{"class":"bad"},f:["Beaker Empty"]}],r:"adata.beakerContents"}],n:50,r:"data.isBeakerLoaded",p:[26,5,1054]},{t:4,n:51,f:[{p:[35,7,1435],t:7,e:"span",a:{"class":"average"},f:["No Beaker"]}],r:"data.isBeakerLoaded"}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],35:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Thermostat"},f:[{p:[2,3,35],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[3,5,67],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isActive"],s:'_0?"power-off":"close"'},p:[3,22,84]}],style:[{t:2,x:{r:["data.isActive"],s:'_0?"selected":null'},p:[4,10,137]}],state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[5,10,186]}],action:"power"},f:[{t:2,x:{r:["data.isActive"],s:'_0?"On":"Off"'},p:[6,18,249]}]}]}," ",{p:[8,3,314],t:7,e:"ui-section",a:{label:"Target"},f:[{p:[9,4,346],t:7,e:"ui-button",a:{icon:"pencil",action:"temperature"},f:[{t:2,x:{r:["adata.targetTemp"],s:"Math.round(_0)"},p:[9,50,392]}," K"]}]}]}," ",{p:{button:[{p:[14,5,535],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[14,36,566]}],action:"eject"},f:["Eject"]}]},t:7,e:"ui-display",a:{title:"Beaker",button:0},f:[" ",{p:[16,3,663],t:7,e:"ui-section",a:{label:"Contents"},f:[{t:4,f:[{p:[18,7,733],t:7,e:"span",f:["Temperature: ",{t:2,x:{r:["adata.currentTemp"],s:"Math.round(_0)"},p:[18,26,752]}," K"]}," ",{p:[19,7,802],t:7,e:"br"}," ",{t:4,f:[{p:[21,9,856],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[21,52,899]}," units of ",{t:2,r:"name",p:[21,87,934]}]},{p:[21,102,949],t:7,e:"br"}],n:52,r:"adata.beakerContents",p:[20,7,816]},{t:4,n:51,f:[{p:[23,9,980],t:7,e:"span",a:{"class":"bad"},f:["Beaker Empty"]}],r:"adata.beakerContents"}],n:50,r:"data.isBeakerLoaded",p:[17,5,698]},{t:4,n:51,f:[{p:[26,7,1056],t:7,e:"span",a:{"class":"average"},f:["No Beaker"]}],r:"data.isBeakerLoaded"}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],36:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(t){t.exports={computed:{cellTemperatureState:function(){var t;return t=this.get("data.cellTemperature"),225>t?"good":273.15>t?"average":"bad"},occupantStatState:function(){var t;return t=this.get("data.occupant.stat"),0===t?"good":1===t?"average":"bad"}}}}(i),i.exports.template={v:3,t:[" ",{p:[16,1,414],t:7,e:"ui-display",a:{title:"Occupant"},f:[{p:[17,3,447],t:7,e:"ui-section",a:{label:"Occupant"},f:[{p:[18,3,480],t:7,e:"span",f:[{t:2,x:{r:["data.occupant.name"],s:'_0?_0:"No Occupant"'},p:[18,9,486]}]}]}," ",{t:4,f:[{p:[21,5,603],t:7,e:"ui-section",a:{label:"State"},f:[{p:[22,7,637],t:7,e:"span",a:{"class":[{t:2,r:"occupantStatState",p:[22,20,650]}]},f:[{t:2,x:{r:["data.occupant.stat"],s:'_0==0?"Conscious":_0==1?"Unconcious":"Dead"'},p:[22,43,673]}]}]}," ",{p:[24,4,794],t:7,e:"ui-section",a:{label:"Temperature"},f:[{p:[25,6,833],t:7,e:"span",f:[{t:2,x:{r:["adata.occupant.bodyTemperature"],s:"Math.round(_0)"},p:[25,12,839]}," K"]}]}," ",{p:[27,5,918],t:7,e:"ui-section",a:{label:"Health"},f:[{p:[28,7,953],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.occupant.minHealth",p:[28,20,966]}],max:[{t:2,r:"data.occupant.maxHealth",p:[28,54,1e3]}],value:[{t:2,r:"data.occupant.health",p:[28,90,1036]}],state:[{t:2,x:{r:["data.occupant.health"],s:'_0>=0?"good":"average"'},p:[29,16,1078]}]},f:[{t:2,x:{r:["adata.occupant.health"],s:"Math.round(_0)"},p:[29,68,1130]}]}]}," ",{t:4,f:[{p:[32,7,1367],t:7,e:"ui-section",a:{label:[{t:2,r:"label",p:[32,26,1386]}]},f:[{p:[33,9,1407],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.occupant.maxHealth",p:[33,30,1428]}],value:[{t:2,rx:{r:"data.occupant",m:[{t:30,n:"type"}]},p:[33,66,1464]}],state:"bad"},f:[{t:2,x:{r:["type","adata.occupant"],s:"Math.round(_1[_0])"},p:[33,103,1501]}]}]}],n:52,x:{r:[],s:'[{label:"Brute",type:"bruteLoss"},{label:"Respiratory",type:"oxyLoss"},{label:"Toxin",type:"toxLoss"},{label:"Burn",type:"fireLoss"}]'},p:[31,5,1201]}],n:50,r:"data.hasOccupant",p:[20,3,573]}]}," ",{p:[38,1,1610],t:7,e:"ui-display",a:{title:"Cell"},f:[{p:[39,3,1639],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[40,5,1671],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isOperating"],s:'_0?"power-off":"close"'},p:[40,22,1688]}],style:[{t:2,x:{r:["data.isOperating"],s:'_0?"selected":null'},p:[41,14,1748]}],state:[{t:2,x:{r:["data.isOpen"],s:'_0?"disabled":null'},p:[42,14,1804]}],action:"power"},f:[{t:2,x:{r:["data.isOperating"],s:'_0?"On":"Off"'},p:[43,22,1863]}]}]}," ",{p:[45,3,1931],t:7,e:"ui-section",a:{label:"Temperature"},f:[{p:[46,3,1967],t:7,e:"span",a:{"class":[{t:2,r:"cellTemperatureState",p:[46,16,1980]}]},f:[{t:2,x:{r:["adata.cellTemperature"],s:"Math.round(_0)"},p:[46,42,2006]}," K"]}]}," ",{p:[48,2,2071],t:7,e:"ui-section",a:{label:"Door"},f:[{p:[49,5,2102],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isOpen"],s:'_0?"unlock":"lock"'},p:[49,22,2119]}],action:"door"},f:[{t:2,x:{r:["data.isOpen"],s:'_0?"Open":"Closed"'},p:[49,73,2170]}]}," ",{p:[50,5,2223],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.autoEject"],s:'_0?"sign-out":"sign-in"'},p:[50,22,2240]}],action:"autoeject"},f:[{t:2,x:{r:["data.autoEject"],s:'_0?"Auto":"Manual"'},p:[50,86,2304]}]}]}]}," ",{p:{button:[{p:[55,5,2450],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[55,36,2481]}],action:"ejectbeaker"},f:["Eject"]}]},t:7,e:"ui-display",a:{title:"Beaker",button:0},f:[" ",{p:[57,3,2584],t:7,e:"ui-section",a:{label:"Contents"},f:[{t:4,f:[{t:4,f:[{p:[60,9,2694],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[60,52,2737]}," units of ",{t:2,r:"name",p:[60,87,2772]}]},{p:[60,102,2787],t:7,e:"br"}],n:52,r:"adata.beakerContents",p:[59,7,2654]},{t:4,n:51,f:[{p:[62,9,2818],t:7,e:"span",a:{"class":"bad"},f:["Beaker Empty"]}],r:"adata.beakerContents"}],n:50,r:"data.isBeakerLoaded",p:[58,5,2619]},{t:4,n:51,f:[{p:[65,7,2894],t:7,e:"span",a:{"class":"average"},f:["No Beaker"]}],r:"data.isBeakerLoaded"}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],37:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-notice",f:[{p:[2,3,15],t:7,e:"span",f:["The requested interface (",{t:2,r:"config.interface",p:[2,34,46]},") was not found. Does it exist?"]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],38:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(t){t.exports={computed:{capacityPercentState:function(){var t;return t=this.get("data.capacityPercent"),t>50?"good":t>15?"average":"bad"},inputState:function(){var t,e;return t=this.get("data.capacityPercent"),e=this.get("data.inputting"),t>=100?"good":e?"average":"bad"},outputState:function(){var t,e;return t=this.get("data.charge"),e=this.get("data.outputting"),e?"good":t>0?"average":"bad"}}}}(i),i.exports.template={v:3,t:[" ",{p:[23,1,624],t:7,e:"ui-display",a:{title:"Storage"},f:[{p:[24,3,656],t:7,e:"ui-section",a:{label:"Stored Energy"},f:[{p:[25,5,696],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.capacityPercent",p:[25,38,729]}],state:[{t:2,r:"capacityPercentState",p:[25,71,762]}]},f:[{t:2,x:{r:["adata.capacityPercent"],s:"Math.fixed(_0)"},p:[25,97,788]},"%"]}]}]}," ",{p:[28,1,869],t:7,e:"ui-display",a:{title:"Input"},f:[{p:[29,3,899],t:7,e:"ui-section",a:{label:"Charge Mode"},f:[{p:[30,5,937],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.inputAttempt"],s:'_0?"refresh":"close"'},p:[30,22,954]}],style:[{t:2,x:{r:["data.inputAttempt"],s:'_0?"selected":null'},p:[30,74,1006]}],action:"tryinput"},f:[{t:2,x:{r:["data.inputAttempt"],s:'_0?"Auto":"Off"'},p:[31,25,1074]}]},"   [",{p:[33,6,1143],t:7,e:"span",a:{"class":[{t:2,r:"inputState",p:[33,19,1156]}]},f:[{t:2,x:{r:["data.capacityPercent","data.inputting"],s:'_0>=100?"Fully Charged":_1?"Charging":"Not Charging"'},p:[33,35,1172]}]},"]"]}," ",{p:[35,3,1296],t:7,e:"ui-section",a:{label:"Target Input"},f:[{p:[36,5,1335],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.inputLevelMax",p:[36,26,1356]}],value:[{t:2,r:"data.inputLevel",p:[36,57,1387]}]},f:[{t:2,x:{r:["adata.inputLevel"],s:"Math.round(_0)"},p:[36,78,1408]},"W"]}]}," ",{p:[38,3,1470],t:7,e:"ui-section",a:{label:"Adjust Input"},f:[{p:[39,5,1509],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.inputLevel"],s:'_0==0?"disabled":null'},p:[39,44,1548]}],action:"input",params:'{"input": "min"}'}}," ",{p:[40,5,1642],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.inputLevel"],s:'_0==0?"disabled":null'},p:[40,39,1676]}],action:"input",params:'{"input": "minus"}'}}," ",{p:[41,5,1772],t:7,e:"ui-button",a:{icon:"pencil",action:"input",params:'{"input": "custom"}'},f:["Set"]}," ",{p:[42,5,1862],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.inputLevel","data.inputLevelMax"],s:'_0==_1?"disabled":null'},p:[42,38,1895]}],action:"input",params:'{"input": "plus"}'}}," ",{p:[43,5,2007],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.inputLevel","data.inputLevelMax"],s:'_0==_1?"disabled":null'},p:[43,43,2045]}],action:"input",params:'{"input": "max"}'}}]}," ",{p:[45,3,2171],t:7,e:"ui-section",a:{label:"Available"},f:[{p:[46,3,2205],t:7,e:"span",f:[{t:2,x:{r:["adata.inputAvailable"],s:"Math.round(_0)"},p:[46,9,2211]},"W"]}]}]}," ",{p:[49,1,2288],t:7,e:"ui-display",a:{title:"Output"},f:[{p:[50,3,2319],t:7,e:"ui-section",a:{label:"Output Mode"},f:[{p:[51,5,2357],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.outputAttempt"],s:'_0?"power-off":"close"'},p:[51,22,2374]}],style:[{t:2,x:{r:["data.outputAttempt"],s:'_0?"selected":null'},p:[51,77,2429]}],action:"tryoutput"},f:[{t:2,x:{r:["data.outputAttempt"],s:'_0?"On":"Off"'},p:[52,26,2499]}]},"   [",{p:[54,6,2567],t:7,e:"span",a:{"class":[{t:2,r:"outputState",p:[54,19,2580]}]},f:[{t:2,x:{r:["data.outputting","data.charge"],s:'_0?"Sending":_1>0?"Not Sending":"No Charge"'},p:[54,36,2597]}]},"]"]}," ",{p:[56,3,2704],t:7,e:"ui-section",a:{label:"Target Output"},f:[{p:[57,5,2744],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.outputLevelMax",p:[57,26,2765]}],value:[{t:2,r:"data.outputLevel",p:[57,58,2797]}]},f:[{t:2,x:{r:["adata.outputLevel"],s:"Math.round(_0)"},p:[57,80,2819]},"W"]}]}," ",{p:[59,3,2882],t:7,e:"ui-section",a:{label:"Adjust Output"},f:[{p:[60,5,2922],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.outputLevel"],s:'_0==0?"disabled":null'},p:[60,44,2961]}],action:"output",params:'{"output": "min"}'}}," ",{p:[61,5,3058],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.outputLevel"],s:'_0==0?"disabled":null'},p:[61,39,3092]}],action:"output",params:'{"output": "minus"}'}}," ",{p:[62,5,3191],t:7,e:"ui-button",a:{icon:"pencil",action:"output",params:'{"output": "custom"}'},f:["Set"]}," ",{p:[63,5,3283],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.outputLevel","data.outputLevelMax"],s:'_0==_1?"disabled":null'},p:[63,38,3316]}],action:"output",params:'{"output": "plus"}'}}," ",{p:[64,5,3432],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.outputLevel","data.outputLevelMax"],s:'_0==_1?"disabled":null'},p:[64,43,3470]}],action:"output",params:'{"output": "max"}'}}]}," ",{p:[66,3,3600],t:7,e:"ui-section",a:{label:"Outputting"},f:[{p:[67,3,3635],t:7,e:"span",f:[{t:2,x:{r:["adata.outputUsed"],s:"Math.round(_0)"},p:[67,9,3641]},"W"]}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],39:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Status"},f:[{p:[2,3,31],t:7,e:"ui-section",a:{label:"Generated Power"},f:[{t:2,x:{r:["adata.generated"],s:"Math.round(_0)"},p:[3,5,73]},"W"]}," ",{p:[5,3,126],t:7,e:"ui-section",a:{label:"Orientation"},f:[{p:[6,5,164],t:7,e:"span",f:[{t:2,x:{r:["adata.angle"],s:"Math.round(_0)"},p:[6,11,170]},"° (",{t:2,r:"data.direction",p:[6,45,204]},")"]}]}," ",{p:[8,3,251],t:7,e:"ui-section",a:{label:"Adjust Angle"},f:[{p:[9,5,290],t:7,e:"ui-button",a:{icon:"step-backward",action:"control",params:'{"cdir": -15}'},f:["15°"]}," ",{p:[10,5,387],t:7,e:"ui-button",a:{icon:"backward",action:"control",params:'{"cdir": -5}'},f:["5°"]}," ",{p:[11,5,477],t:7,e:"ui-button",a:{icon:"forward",action:"control",params:'{"cdir": 5}'},f:["5°"]}," ",{p:[12,5,565],t:7,e:"ui-button",a:{icon:"step-forward",action:"control",params:'{"cdir": 15}'},f:["15°"]}]}]}," ",{p:[15,1,687],t:7,e:"ui-display",a:{title:"Tracking"},f:[{p:[16,3,720],t:7,e:"ui-section",a:{label:"Tracker Mode"},f:[{p:[17,5,759],t:7,e:"ui-button",a:{icon:"close",state:[{t:2,x:{r:["data.tracking_state"],s:'_0==0?"selected":null'},p:[17,36,790]}],action:"tracking",params:'{"mode": 0}'},f:["Off"]}," ",{p:[19,5,907],t:7,e:"ui-button",a:{icon:"clock-o",state:[{t:2,x:{r:["data.tracking_state"],s:'_0==1?"selected":null'},p:[19,38,940]}],action:"tracking",params:'{"mode": 1}'},f:["Timed"]}," ",{p:[21,5,1059],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.connected_tracker","data.tracking_state"],s:'_0?_1==2?"selected":null:"disabled"'},p:[21,38,1092]}],action:"tracking",params:'{"mode": 2}'},f:["Auto"]}]}," ",{p:[24,3,1262],t:7,e:"ui-section",a:{label:"Tracking Rate"},f:[{p:[25,3,1300],t:7,e:"span",f:[{t:2,x:{r:["adata.tracking_rate"],s:"Math.round(_0)"},p:[25,9,1306]},"°/h (",{t:2,r:"data.rotating_way",p:[25,53,1350]},")"]}]}," ",{p:[27,3,1399],t:7,e:"ui-section",a:{label:"Adjust Rate"},f:[{p:[28,5,1437],t:7,e:"ui-button",a:{icon:"fast-backward",action:"control",params:'{"tdir": -180}'},f:["180°"]}," ",{p:[29,5,1536],t:7,e:"ui-button",a:{icon:"step-backward",action:"control",params:'{"tdir": -30}'},f:["30°"]}," ",{p:[30,5,1633],t:7,e:"ui-button",a:{icon:"backward",action:"control",params:'{"tdir": -5}'},f:["5°"]}," ",{p:[31,5,1723],t:7,e:"ui-button",a:{icon:"forward",action:"control",params:'{"tdir": 5}'},f:["5°"]}," ",{p:[32,5,1811],t:7,e:"ui-button",a:{icon:"step-forward",action:"control",params:'{"tdir": 30}'},f:["30°"]}," ",{p:[33,5,1906],t:7,e:"ui-button",a:{icon:"fast-forward",action:"control",params:'{"tdir": 180}'},f:["180°"]}]}]}," ",{p:{button:[{p:[38,5,2094],t:7,e:"ui-button",a:{icon:"refresh",action:"refresh"},f:["Refresh"]}]},t:7,e:"ui-display",a:{title:"Devices",button:0},f:[" ",{p:[40,2,2175],t:7,e:"ui-section",a:{label:"Solar Tracker"},f:[{p:[41,5,2215],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.connected_tracker"],s:'_0?"good":"bad"'},p:[41,18,2228]}]},f:[{t:2,x:{r:["data.connected_tracker"],s:'_0?"":"Not "'},p:[41,63,2273]},"Found"]}]}," ",{p:[43,2,2344],t:7,e:"ui-section",a:{label:"Solar Panels"},f:[{p:[44,3,2381],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.connected_panels"],s:'_0?"good":"bad"'},p:[44,16,2394]}]},f:[{t:2,x:{r:["adata.connected_panels"],s:"Math.round(_0)"},p:[44,60,2438]}," Panels Connected"]}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],40:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(e){e.exports={data:{text:t("../text")}}}(i),i.exports.template={v:3,t:[" ",{p:{button:[{t:4,f:[{p:[10,7,194],t:7,e:"ui-button",a:{icon:"eject",action:"eject"},f:["Eject"]}],n:50,r:"data.open",p:[9,5,169]}]},t:7,e:"ui-display",a:{title:"Power",button:0},f:[" ",{p:[13,3,283],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[14,5,315],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[14,22,332]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[15,14,383]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[16,22,438]}]}]}," ",{p:[18,3,497],t:7,e:"ui-section",a:{label:"Cell"},f:[{t:4,f:[{p:[20,7,561],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.powerLevel",p:[20,40,594]}]},f:[{t:2,x:{r:["adata.powerLevel"],s:"Math.fixed(_0)"},p:[20,61,615]},"%"]}],n:50,r:"data.hasPowercell",p:[19,5,528]},{t:4,n:51,f:[{p:[22,4,674],t:7,e:"span",a:{"class":"bad"},f:["No Cell"]}],r:"data.hasPowercell"}]}]}," ",{p:[26,1,751],t:7,e:"ui-display",a:{title:"Thermostat"},f:[{p:[27,3,786],t:7,e:"ui-section",a:{label:"Current Temperature"},f:[{p:[28,3,830],t:7,e:"span",f:[{t:2,x:{r:["adata.currentTemp"],s:"Math.round(_0)"},p:[28,9,836]},"°C"]}]}," ",{p:[30,2,901],t:7,e:"ui-section",a:{label:"Target Temperature"},f:[{p:[31,3,944],t:7,e:"span",f:[{t:2,x:{r:["adata.targetTemp"],s:"Math.round(_0)"},p:[31,9,950]},"°C"]}]}," ",{t:4,f:[{p:[34,2,1035],t:7,e:"ui-section",a:{label:"Adjust Target"},f:[{p:[35,7,1077],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.targetTemp","data.minTemp"],s:'_0>_1?null:"disabled"'},p:[35,46,1116]}],action:"target",params:'{"target": -20}'}}," ",{p:[36,7,1222],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.targetTemp","data.minTemp"],s:'_0>_1?null:"disabled"'},p:[36,41,1256]}],action:"target",params:'{"target": -5}'}}," ",{p:[37,7,1361],t:7,e:"ui-button",a:{icon:"pencil",action:"target",params:'{"target": "custom"}'},f:["Set"]}," ",{p:[38,7,1455],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.targetTemp","data.maxTemp"],s:'_0<_1?null:"disabled"'},p:[38,40,1488]}],action:"target",params:'{"target": 5}'}}," ",{p:[39,7,1592],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.targetTemp","data.maxTemp"],s:'_0<_1?null:"disabled"'},p:[39,45,1630]}],action:"target",params:'{"target": 20}'}}]}],n:50,r:"data.open",p:[33,3,1015]}," ",{p:[42,3,1759],t:7,e:"ui-section",a:{label:"Mode"},f:[{t:4,f:[{p:[44,7,1813],t:7,e:"ui-button",a:{icon:"long-arrow-up",state:[{t:2,x:{r:["data.mode"],s:'_0=="heat"?"selected":null'},p:[44,46,1852]}],action:"mode",params:'{"mode": "heat"}'},f:["Heat"]}," ",{p:[45,7,1961],t:7,e:"ui-button",a:{icon:"long-arrow-down",state:[{t:2,x:{r:["data.mode"],s:'_0=="cool"?"selected":null'},p:[45,48,2002]}],action:"mode",params:'{"mode": "cool"}'},f:["Cool"]}," ",{p:[46,7,2111],t:7,e:"ui-button",a:{icon:"arrows-v",state:[{t:2,x:{r:["data.mode"],s:'_0=="auto"?"selected":null'},p:[46,41,2145]}],action:"mode",params:'{"mode": "auto"}'},f:["Auto"]}],n:50,r:"data.open",p:[43,3,1788]},{t:4,n:51,f:[{p:[48,4,2263],t:7,e:"span",f:[{t:2,x:{r:["text","data.mode"],s:"_0.titleCase(_1)"},p:[48,10,2269]}]}],r:"data.open"}]}]}]},e.exports=r.extend(i.exports)},{"../text":44,"ractive/ractive.runtime":7}],41:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(t){t.exports={data:{tankPressureState:function(){var t;return t=this.get("data.tankPressureState"),t>=200?"good":t>=100?"average":"bad"}}}}(i),i.exports.template={v:3,t:[" ",{p:[11,1,255],t:7,e:"ui-notice",f:[{p:[12,3,270],t:7,e:"span",f:["The regulator ",{t:2,x:{r:["data.hasHoldingTank"],s:'_0?"is":"is not"'},p:[12,23,290]}," connected to a mask."]}]}," ",{p:[14,1,375],t:7,e:"ui-display",f:[{p:[15,3,391],t:7,e:"ui-section",a:{label:"Tank Pressure"},f:[{p:[16,7,433],t:7,e:"ui-bar",a:{min:"0",max:"1013",value:[{t:2,r:"data.tankPressure",p:[16,41,467]}],state:[{t:2,r:"tankPressureState",p:[17,16,506]}]},f:[{t:2,x:{r:["adata.tankPressure"],s:"Math.round(_0)"},p:[17,39,529]}," kPa"]}]}," ",{p:[19,3,597],t:7,e:"ui-section",a:{label:"Release Pressure"},f:[{p:[20,5,640],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.minReleasePressure",p:[20,18,653]}],max:[{t:2,r:"data.maxReleasePressure",p:[20,52,687]}],value:[{t:2,r:"data.releasePressure",p:[21,14,730]}]},f:[{t:2,x:{r:["adata.releasePressure"],s:"Math.round(_0)"},p:[21,40,756]}," kPa"]}]}," ",{p:[23,3,827],t:7,e:"ui-section",a:{label:"Pressure Regulator"},f:[{p:[24,5,872],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.releasePressure","data.defaultReleasePressure"],s:'_0!=_1?null:"disabled"'},p:[24,38,905]}],action:"pressure",params:'{"pressure": "reset"}'},f:["Reset"]}," ",{p:[26,5,1061],t:7,e:"ui-button",a:{icon:"minus",state:[{t:2,x:{r:["data.releasePressure","data.minReleasePressure"],s:'_0>_1?null:"disabled"'},p:[26,36,1092]}],action:"pressure",params:'{"pressure": "min"}'},f:["Min"]}," ",{p:[28,5,1239],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "custom"}'},f:["Set"]}," ",{p:[29,5,1335],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.releasePressure","data.maxReleasePressure"],s:'_0<_1?null:"disabled"'},p:[29,35,1365]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}]}," ",{p:[32,3,1527],t:7,e:"ui-section",a:{label:"Valve"},f:[{p:[33,5,1559],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.valveOpen"],s:'_0?"unlock":"lock"'},p:[33,22,1576]}],state:[{t:2,x:{r:["data.maskConnected"],s:'_0?null:"disabled"'},p:[33,69,1623]}],action:"valve"},f:[{t:2,x:{r:["data.valveOpen"],s:'_0?"Open":"Closed"'},p:[34,22,1689]}]}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],42:[function(t,e,n){var r,i,a;t("ie8/build/ie8.max"),t("dom4/build/dom4.max"),t("es5-shim"),t("html5shiv"),t("./math"),r=t("ractive/ractive.runtime"),r.DEBUG=/minified/.test(function(t){}),i=t("webfontloader"),i.load({custom:{families:["FontAwesome"],urls:["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.5.0/css/font-awesome.min.css"],testStrings:{FontAwesome:""}}}),a=t("./tgui"),window.tgui=new a({el:"#container",data:function(){var t;return t=JSON.parse(document.getElementById("data").textContent),(null==t||null==t.data||null==t.config)&&alert("Initial data did not load correctly."),t.adata=t.data,t}})},{"./math":43,"./tgui":45,"dom4/build/dom4.max":1,"es5-shim":2,html5shiv:3,"ie8/build/ie8.max":4,"ractive/ractive.runtime":7,webfontloader:8}],43:[function(t,e,n){Math.clamp=function(t,e,n){return Math.max(e,Math.min(t,n))},Math.fixed=function(t,e){return null==e&&(e=1),+(Math.round(t+"e"+e)+"e-"+e)}},{}],44:[function(t,e,n){e.exports={upperCaseFirst:function(t){return t[0].toUpperCase()+t.slice(1).toLowerCase()},titleCase:function(t){return t.replace(/\w\S*/g,this.upperCaseFirst)}}},{}],45:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(e){var n;n=t("./dragresize"),e.exports={components:{"ui-bar":t("./components/bar"),"ui-button":t("./components/button"),"ui-display":t("./components/display"),"ui-notice":t("./components/notice"),"ui-section":t("./components/section"),"ui-subdisplay":t("./components/subdisplay")},events:{enter:t("ractive-events-keys").enter,space:t("ractive-events-keys").space},transitions:{fade:t("ractive-transitions-fade")},onconfig:function(){var e,n;return n=this.get("config.interface"),e={air_alarm:t("./interfaces/air_alarm.ract"),airlock_electronics:t("./interfaces/airlock_electronics.ract"),apc:t("./interfaces/apc.ract"),atmos_filter:t("./interfaces/atmos_filter.ract"),atmos_mixer:t("./interfaces/atmos_mixer.ract"),atmos_pump:t("./interfaces/atmos_pump.ract"),canister:t("./interfaces/canister.ract"),chem_dispenser:t("./interfaces/chem_dispenser.ract"),chem_heater:t("./interfaces/chem_heater.ract"),cryo:t("./interfaces/cryo.ract"),error:t("./interfaces/error.ract"),smes:t("./interfaces/smes.ract"),solar_control:t("./interfaces/solar_control.ract"),space_heater:t("./interfaces/space_heater.ract"),tanks:t("./interfaces/tanks.ract")},null!=e[n]?this.components["interface"]=e[n]:null==this.components["interface"]?this.components["interface"]=t("./interfaces/error"):void 0},oninit:function(){return this.on("titlebar.drag",function(){return this.toggle("drag"),!1}),this.on("resize.resize",function(){return this.toggle("resize"),!1}),document.addEventListener("mousemove",function(t){return function(e){return t.get("drag")?n.drag(t,e):t.get("resize")?n.resize(t,e):void 0}}(this)),document.addEventListener("mouseup",function(t){return function(e){var n,r;return(n=t.get("drag"))&&t.set("drag"),(r=t.get("resize"))&&t.set("resize"),n||r?(t.set("x"),t.set("y")):void 0}}(this))},onrender:function(){return this.observe("config.style",function(t,e,n){return null!=e&&(document.body.classList.remove(e),this.el.classList.remove(e)),null!=t?(this.el.classList.add(t),document.body.classList.add(t)):void 0})}}}(i),i.exports.template={v:3,t:[" "," "," ",{p:[47,1,1872],t:7,e:"titlebar",f:[{t:3,r:"config.title",p:[47,11,1882]}]}," ",{p:[48,1,1913],t:7,e:"main",f:[{p:[49,3,1923],t:7,e:"interface"}]}," ",{p:[51,1,1946],t:7,e:"resize"}]},i.exports.components=i.exports.components||{};var a={titlebar:t("./components/titlebar.ract"),resize:t("./components/resize.ract")};for(var o in a)a.hasOwnProperty(o)&&(i.exports.components[o]=a[o]);e.exports=r.extend(i.exports)},{"./components/bar":10,"./components/button":11,"./components/display":12,"./components/notice":13,"./components/resize.ract":14,"./components/section":15,"./components/subdisplay":16,"./components/titlebar.ract":17,"./dragresize":19,"./interfaces/air_alarm.ract":20,"./interfaces/airlock_electronics.ract":28,"./interfaces/apc.ract":29,"./interfaces/atmos_filter.ract":30,"./interfaces/atmos_mixer.ract":31,"./interfaces/atmos_pump.ract":32,"./interfaces/canister.ract":33,"./interfaces/chem_dispenser.ract":34,"./interfaces/chem_heater.ract":35,"./interfaces/cryo.ract":36,"./interfaces/error":37,"./interfaces/error.ract":37,"./interfaces/smes.ract":38,"./interfaces/solar_control.ract":39,"./interfaces/space_heater.ract":40,"./interfaces/tanks.ract":41,"ractive-events-keys":5,"ractive-transitions-fade":6,"ractive/ractive.runtime":7 +}]},{},[42]); \ No newline at end of file diff --git a/tgui/scripts/components/display.ract b/tgui/scripts/components/display.ract index cdb1fb3c070..176c1781717 100644 --- a/tgui/scripts/components/display.ract +++ b/tgui/scripts/components/display.ract @@ -2,7 +2,9 @@ {{#if title}}

{{title}}

- {{#if button}}{{yield button}}{{/if}} + {{#if button}} +
{{yield button}}
+ {{/if}}
{{/if}}
diff --git a/tgui/scripts/interfaces/chem_dispenser.ract b/tgui/scripts/interfaces/chem_dispenser.ract index 8ec9acf8b68..072863e93dd 100644 --- a/tgui/scripts/interfaces/chem_dispenser.ract +++ b/tgui/scripts/interfaces/chem_dispenser.ract @@ -1,16 +1,14 @@ - + {{Math.fixed(adata.energy)}} Units - {{#if data.beakerTransferAmounts}} - - {{#each data.beakerTransferAmounts}} - {{.}} - {{/each}} - - {{/if}} - + + {{#partial button}} + {{#each data.beakerTransferAmounts}} + {{.}} + {{/each}} + {{/partial}} {{#each data.chemicals}} {{title}} @@ -19,15 +17,11 @@ {{#partial button}} + {{#each data.beakerTransferAmounts}} + {{.}} + {{/each}} Eject {{/partial}} - {{#if data.beakerTransferAmounts}} - - {{#each data.beakerTransferAmounts}} - {{.}} - {{/each}} - - {{/if}} {{#if data.isBeakerLoaded}} {{Math.round(adata.beakerCurrentVolume)}}/{{data.beakerMaxVolume}} Units diff --git a/tgui/styles/components/display.styl b/tgui/styles/components/display.styl index 1201c07e62c..0dd58c482e5 100644 --- a/tgui/styles/components/display.styl +++ b/tgui/styles/components/display.styl @@ -15,7 +15,7 @@ div.display border-bottom: 2px solid colors.rule - .button + .buttonRight position: absolute bottom: 6px right: 4px From 6450f937b2dc9f25d02967241d2d5f459235f2d1 Mon Sep 17 00:00:00 2001 From: Nerd Lord Date: Sun, 3 Jan 2016 16:56:34 -0500 Subject: [PATCH 116/310] abduct this --- code/modules/mob/living/carbon/human/species_types.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/living/carbon/human/species_types.dm b/code/modules/mob/living/carbon/human/species_types.dm index c8ae6d2343f..3dc77373b70 100644 --- a/code/modules/mob/living/carbon/human/species_types.dm +++ b/code/modules/mob/living/carbon/human/species_types.dm @@ -453,16 +453,16 @@ datum/species/human/spec_death(gibbed, mob/living/carbon/human/H) /datum/species/abductor/handle_speech(message) //Hacks var/mob/living/carbon/human/user = usr + var/rendered = "[user.name]: [message]" for(var/mob/living/carbon/human/H in mob_list) if(H.dna.species.id != "abductor") continue else var/datum/species/abductor/target_spec = H.dna.species if(target_spec.team == team) - H << "[user.name]: [message]" - //return - technically you can add more aliens to a team + H << rendered for(var/mob/M in dead_mob_list) - M << "[user.name]: [message]" + M << "(F)[rendered]" return "" From 0b98fffeef83480b4d49125f79ff7ecbe427e465 Mon Sep 17 00:00:00 2001 From: phil235 Date: Sun, 3 Jan 2016 23:19:30 +0100 Subject: [PATCH 117/310] - Adds a visible message when the larva grows into a humanoid. - Removes some duplicated code in alien growth code (larva-to-humanoid, praetorian and queen now all use the same proc). - Alien drones can no longer evolve into a praetorian while inside a pipe (praetorian can't ventcrawl) or other containers. - Removed an unneeded check in larva_evolve/fire(). - Fixes bug where a larva could evolve despite being incapacitated/dead during the selection of the alien caste. - Remove outdated code in monkey/attack_hand about disarm and grab intent. - Evolving into a royal alien no longer delets what you hold in your hands and the content of your stomach. --- code/modules/mob/living/carbon/alien/alien.dm | 6 ++++++ .../carbon/alien/humanoid/caste/drone.dm | 10 +++++----- .../carbon/alien/humanoid/caste/praetorian.dm | 6 ++---- .../living/carbon/alien/humanoid/humanoid.dm | 9 +++++++++ .../mob/living/carbon/alien/larva/powers.dm | 9 +++++---- .../modules/mob/living/carbon/monkey/monkey.dm | 18 ------------------ 6 files changed, 27 insertions(+), 31 deletions(-) diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm index ccb3d3f8695..4e444378c6f 100644 --- a/code/modules/mob/living/carbon/alien/alien.dm +++ b/code/modules/mob/living/carbon/alien/alien.dm @@ -177,6 +177,12 @@ Des: Removes all infected images from the alien. /mob/living/carbon/alien/get_standard_pixel_y_offset(lying = 0) return initial(pixel_y) +/mob/living/carbon/alien/proc/alien_evolve(mob/living/carbon/alien/new_xeno) + src << "You begin to evolve!" + visible_message("[src] begins to twist and contort!") + if(mind) + mind.transfer_to(new_xeno) + qdel(src) #undef HEAT_DAMAGE_LEVEL_1 #undef HEAT_DAMAGE_LEVEL_2 diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm index 8f12f2b593b..1b98f34f670 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/drone.dm @@ -26,12 +26,12 @@ action_icon_state = "alien_evolve_drone" /obj/effect/proc_holder/alien/evolve/fire(mob/living/carbon/alien/user) - if(!alien_type_present(/mob/living/carbon/alien/humanoid/royal/)) - user << "You begin to evolve!" - user.visible_message("[user] begins to twist and contort!") + if(!isturf(user.loc)) + user << "You can't evolve here!" + return 0 + if(!alien_type_present(/mob/living/carbon/alien/humanoid/royal)) var/mob/living/carbon/alien/humanoid/royal/praetorian/new_xeno = new (user.loc) - user.mind.transfer_to(new_xeno) - qdel(user) + user.alien_evolve(new_xeno) return 1 else user << "We already have a living royal!" diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/praetorian.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/praetorian.dm index a493926e129..8e91b7a59ab 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/praetorian.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/praetorian.dm @@ -54,11 +54,9 @@ /obj/effect/proc_holder/alien/royal/praetorian/evolve/fire(mob/living/carbon/alien/user) if(!alien_type_present(/mob/living/carbon/alien/humanoid/royal/queen)) - user << "You begin to evolve!" - user.visible_message("[user] begins to twist and contort!") + user.alien_evolve(/mob/living/carbon/alien/humanoid/royal/queen) var/mob/living/carbon/alien/humanoid/royal/queen/new_xeno = new (user.loc) - user.mind.transfer_to(new_xeno) - qdel(user) + user.alien_evolve(new_xeno) return 1 else user << "We already have an alive queen." diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm index 6ed3532f9fd..2c9d6b5b156 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm @@ -149,6 +149,15 @@ /mob/living/carbon/alien/humanoid/get_permeability_protection() return 0.8 +/mob/living/carbon/alien/humanoid/alien_evolve(mob/living/carbon/alien/humanoid/new_xeno) + drop_l_hand() + drop_r_hand() + for(var/atom/movable/A in stomach_contents) + stomach_contents.Remove(A) + new_xeno.stomach_contents.Add(A) + A.loc = new_xeno + ..() + //For alien evolution/promotion procs. Checks for proc/alien_type_present(var/alienpath) for(var/mob/living/carbon/alien/humanoid/A in living_mob_list) diff --git a/code/modules/mob/living/carbon/alien/larva/powers.dm b/code/modules/mob/living/carbon/alien/larva/powers.dm index 3f9cb657498..d575ba5f4f8 100644 --- a/code/modules/mob/living/carbon/alien/larva/powers.dm +++ b/code/modules/mob/living/carbon/alien/larva/powers.dm @@ -32,8 +32,6 @@ return var/mob/living/carbon/alien/larva/L = user - if(L.stat != CONSCIOUS) - return if(L.handcuffed || L.legcuffed) // Cuffing larvas ? Eh ? user << "You cannot evolve when you are cuffed." @@ -45,6 +43,9 @@ L << "Drones are the weakest and slowest of the castes, but can grow into the queen if there is none, and are vital to maintaining a hive with their resin secretion abilities." var/alien_caste = alert(L, "Please choose which alien caste you shall belong to.",,"Hunter","Sentinel","Drone") + if(user.incapacitated()) //something happened to us while we were choosing. + return + var/mob/living/carbon/alien/humanoid/new_xeno switch(alien_caste) if("Hunter") @@ -53,8 +54,8 @@ new_xeno = new /mob/living/carbon/alien/humanoid/sentinel(L.loc) if("Drone") new_xeno = new /mob/living/carbon/alien/humanoid/drone(L.loc) - if(L.mind) L.mind.transfer_to(new_xeno) - qdel(L) + + L.alien_evolve(new_xeno) return 0 else user << "You are not fully grown." diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm index 85216f02e9a..5b4a54f544a 100644 --- a/code/modules/mob/living/carbon/monkey/monkey.dm +++ b/code/modules/mob/living/carbon/monkey/monkey.dm @@ -82,8 +82,6 @@ switch(M.a_intent) if("help") help_shake_act(M) - if("grab") - grabbedby(M) if("harm") M.do_attack_animation(src) if (prob(75)) @@ -108,22 +106,6 @@ visible_message("[M] has attempted to punch [name]!", \ "[M] has attempted to punch [name]!") - if("disarm") - if (!( paralysis )) - M.do_attack_animation(src) - if (prob(25)) - Paralyse(2) - playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) - add_logs(M, src, "pushed") - visible_message("[M] has pushed down [src]!", \ - "[M] has pushed down [src]!") - else - if(drop_item()) - playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) - visible_message("[M] has disarmed [src]!", \ - "[M] has disarmed [src]!") - return - /mob/living/carbon/monkey/attack_alien(mob/living/carbon/alien/humanoid/M) if(..()) //if harm or disarm intent. if (M.a_intent == "harm") From 511f9c0b6816e36ec30703764bc57c41ef18aa51 Mon Sep 17 00:00:00 2001 From: WJohn Date: Sun, 3 Jan 2016 17:34:01 -0500 Subject: [PATCH 118/310] Re-adds external sat cameras. --- _maps/map_files/TgStation/tgstation.2.1.3.dmm | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/_maps/map_files/TgStation/tgstation.2.1.3.dmm b/_maps/map_files/TgStation/tgstation.2.1.3.dmm index bd1e70e9e2f..6394ff651ed 100644 --- a/_maps/map_files/TgStation/tgstation.2.1.3.dmm +++ b/_maps/map_files/TgStation/tgstation.2.1.3.dmm @@ -6529,10 +6529,12 @@ "cvC" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) "cvD" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) "cvE" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) +"cvF" = (/obj/structure/lattice,/obj/machinery/camera{c_tag = "MiniSat External NorthWest"; dir = 8; network = list("MiniSat"); pixel_x = 0; pixel_y = 0; start_active = 1},/turf/space,/area/space) "cvG" = (/obj/machinery/porta_turret{ai = 1; dir = 4; installation = /obj/item/weapon/gun/energy/gun},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/bluegrid,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) "cvH" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) "cvI" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) "cvJ" = (/obj/machinery/porta_turret{ai = 1; dir = 4; installation = /obj/item/weapon/gun/energy/gun},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/bluegrid,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) +"cvK" = (/obj/structure/lattice,/obj/machinery/camera{c_tag = "MiniSat External NorthEast"; dir = 4; network = list("MiniSat"); pixel_x = 0; pixel_y = 0; start_active = 1},/turf/space,/area/space) "cvL" = (/obj/structure/sign/securearea{pixel_x = 32; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) "cvM" = (/obj/machinery/camera/motion{c_tag = "MiniSat Core Hallway"; dir = 4; network = list("MiniSat")},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/bluegrid,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) "cvN" = (/obj/structure/sign/securearea{pixel_x = -32; pixel_y = 0},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/turret_protected/AIsatextFS{name = "AI Satellite Hallway"}) @@ -6802,8 +6804,10 @@ "cAR" = (/obj/machinery/door/window{dir = 1; name = "AI Core Door"; req_access_txt = "16"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "cAS" = (/obj/effect/landmark/start{name = "AI"},/obj/item/device/radio/intercom{broadcasting = 0; freerange = 1; listening = 1; name = "Common Channel"; pixel_x = -27; pixel_y = -9},/obj/item/device/radio/intercom{anyai = 1; freerange = 1; listening = 0; name = "Custom Channel"; pixel_x = 0; pixel_y = -31},/obj/item/device/radio/intercom{anyai = 1; broadcasting = 0; freerange = 1; frequency = 1447; name = "Private Channel"; pixel_x = 27; pixel_y = -9},/obj/machinery/newscaster/security_unit{pixel_x = -28; pixel_y = -28},/obj/machinery/requests_console{department = "AI"; departmentType = 5; pixel_x = 28; pixel_y = -28},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "cAT" = (/obj/machinery/ai_slipper{icon_state = "motion0"; uses = 10},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) +"cAU" = (/obj/structure/lattice,/obj/machinery/camera{c_tag = "MiniSat External SouthWest"; dir = 8; network = list("MiniSat"); pixel_x = 0; pixel_y = 0; start_active = 1},/turf/space,/area/space) "cAV" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/showcase{density = 0; desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; dir = 8; icon = 'icons/mob/robots.dmi'; icon_state = "robot_old"; name = "Cyborg Statue"; pixel_x = 9; pixel_y = 2},/obj/machinery/atmospherics/components/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) "cAW" = (/obj/structure/showcase{density = 0; desc = "An old, deactivated cyborg. Whilst once actively used to guard against intruders, it now simply intimidates them with its cold, steely gaze."; dir = 4; icon = 'icons/mob/robots.dmi'; icon_state = "robot_old"; name = "Cyborg Statue"; pixel_x = -9; pixel_y = 2},/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 1; on = 1},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) +"cAX" = (/obj/structure/lattice,/obj/machinery/camera{c_tag = "MiniSat External SouthEast"; dir = 4; network = list("MiniSat"); pixel_x = 0; pixel_y = 0; start_active = 1},/turf/space,/area/space) "cAY" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/wall,/area/turret_protected/ai) "cAZ" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) "cBa" = (/obj/machinery/power/smes{charge = 5e+006},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) @@ -6811,6 +6815,7 @@ "cBc" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/machinery/ai_slipper{icon_state = "motion0"; uses = 10},/turf/simulated/floor/bluegrid,/area/turret_protected/ai) "cBd" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) "cBe" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/turret_protected/ai) +"cBf" = (/obj/machinery/camera{c_tag = "MiniSat External South"; dir = 2; network = list("MiniSat"); pixel_x = 0; pixel_y = 0; start_active = 1},/turf/space,/area/space) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -7022,7 +7027,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcvkcvjcvmcvjcvkcvkcvocvncvkcvjcvqcvjcvkaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacutaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacvkcvscvtcvjcvwcvucvzcvycvwcvjcvCcvBcvkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcvkcvDcvtcvjcvwcvucvzcvycvwcvjcvCcvEcvkaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcvkcvkcvtcvjcvGcvucvIcvHcvJcvjcvCcvkcvkaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacvFcvkcvkcvtcvjcvGcvucvIcvHcvJcvjcvCcvkcvkcvKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafcvkcvLcvjcvMcvucvzcvycvwcvjcvNcvkaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcvkcvQcvPcvScvRcvTcvycvVcvUcvWcvkaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcvkcvXcvjcvZcvYcvzcvycwacvjcvXcvkaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -7037,14 +7042,14 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacvacvacvacwvcwxcwwcwAcwzcwCcwBcvacvacvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacvacvacvacvpcwjcwDcARcwEcwncvpcvacvacvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcvacvacvacvrcwucvvcAScvvcATcvrcvacvacvaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcvacvacvxcvlcAVcvvcvvcvvcAWcvlcvAcvacvaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacAUcvacvacvxcvlcAVcvvcvvcvvcAWcvlcvAcvacvacAXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacwyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcvacvacvacvrcAZcAYcBacvvcvlcvrcvacvacvaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacvacvacvacwvcvlcBbcBccvpcvlcwBcvacvacvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacvacvacvacvpcvlcBdcBecvlcvlcvpcvacvacvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacvacvacvacvacvacvacvacvacvacvacvacvacvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacvacvacvacvacvacvacvacvacvacvacvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafcvacvacvacvacvacvacvacvacvaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaacBfaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From f5bc4b6b4f1ea8589c307ae2dacee39842c95745 Mon Sep 17 00:00:00 2001 From: Lularian Date: Sun, 3 Jan 2016 17:50:20 -0600 Subject: [PATCH 119/310] woops --- code/game/jobs/job/cargo_service.dm | 2 +- code/game/objects/items/weapons/storage/boxes.dm | 15 +++++++++++++++ .../crates_lockers/closets/job_closets.dm | 3 ++- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/code/game/jobs/job/cargo_service.dm b/code/game/jobs/job/cargo_service.dm index 6425e2f5cef..f22bd2daed4 100644 --- a/code/game/jobs/job/cargo_service.dm +++ b/code/game/jobs/job/cargo_service.dm @@ -116,7 +116,7 @@ Bartender ears = /obj/item/device/radio/headset/headset_srv uniform = /obj/item/clothing/under/rank/bartender suit = /obj/item/clothing/suit/armor/vest - backpack_contents = list(/obj/item/weapon/storage/box/rubbershot=1) + backpack_contents = list(/obj/item/weapon/storage/box/beanbag=1) shoes = /obj/item/clothing/shoes/laceup /* diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm index c08715a561e..8bfecb60cea 100644 --- a/code/game/objects/items/weapons/storage/boxes.dm +++ b/code/game/objects/items/weapons/storage/boxes.dm @@ -698,3 +698,18 @@ new /obj/item/ammo_casing/shotgun/buckshot(src) new /obj/item/ammo_casing/shotgun/buckshot(src) new /obj/item/ammo_casing/shotgun/buckshot(src) + +/obj/item/weapon/storage/box/beanbag + name = "box of beanbag slugs" + desc = "A box full of beanbag slugs." + icon_state = "rubbershot_box" + + +/obj/item/weapon/storage/box/beanbag/New() + ..() + new /obj/item/ammo_casing/shotgun/beanbag(src) + new /obj/item/ammo_casing/shotgun/beanbag(src) + new /obj/item/ammo_casing/shotgun/beanbag(src) + new /obj/item/ammo_casing/shotgun/beanbag(src) + new /obj/item/ammo_casing/shotgun/beanbag(src) + new /obj/item/ammo_casing/shotgun/beanbag(src) diff --git a/code/game/objects/structures/crates_lockers/closets/job_closets.dm b/code/game/objects/structures/crates_lockers/closets/job_closets.dm index 6f7d18f2a50..79e583d6ba5 100644 --- a/code/game/objects/structures/crates_lockers/closets/job_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/job_closets.dm @@ -23,9 +23,10 @@ new /obj/item/clothing/shoes/sneakers/black(src) new /obj/item/weapon/reagent_containers/glass/rag(src) new /obj/item/weapon/reagent_containers/glass/rag(src) - new /obj/item/weapon/storage/box/rubbershot(src) + new /obj/item/weapon/storage/box/beanbag(src) new /obj/item/clothing/suit/armor/vest(src) new /obj/item/clothing/glasses/sunglasses/reagent(src) + new /obj/item/weapon/storage/belt/bandolier(src) /obj/structure/closet/chefcloset name = "\proper chef's closet" From 9c1e05f57e982b1988f9b95290293a2cc6d69a3e Mon Sep 17 00:00:00 2001 From: Bjorn Neergaard Date: Sun, 3 Jan 2016 18:15:28 -0600 Subject: [PATCH 120/310] Increase tgui security by inlining for admins only; reduce cruft --- code/modules/client/client procs.dm | 4 -- code/modules/tgui/tgui.dm | 48 ++++++++++++------- tgui/assets/tgui.js | 18 +++---- tgui/scripts/interfaces/air_alarm/status.ract | 2 +- tgui/scripts/main.coffee | 24 ++++++---- tgui/tgui.html | 13 +++-- 6 files changed, 61 insertions(+), 48 deletions(-) diff --git a/code/modules/client/client procs.dm b/code/modules/client/client procs.dm index 73b99c574ad..ef13de95809 100644 --- a/code/modules/client/client procs.dm +++ b/code/modules/client/client procs.dm @@ -35,10 +35,6 @@ return cmd_admin_pm(href_list["priv_msg"],null) return - // NanoUI - if(href_list["nano_error"]) - src << href_list["nano_error"] - throw EXCEPTION("NanoUI: [href_list["nano_error"]]") //Logs all hrefs if(config && config.log_hrefs && href_logfile) diff --git a/code/modules/tgui/tgui.dm b/code/modules/tgui/tgui.dm index 42fa08b2f8b..b1fed9ddf21 100644 --- a/code/modules/tgui/tgui.dm +++ b/code/modules/tgui/tgui.dm @@ -89,6 +89,7 @@ * optional data list The data to intialize the UI with. **/ /datum/tgui/proc/open(list/data = null) + set waitfor = 0 // Don't wait on sleep()s. if(!user.client) return // Bail if there is no client. @@ -105,7 +106,11 @@ if(width && height) // If we have a width and height, use them. window_size = "size=[width]x[height];" - user << browse(get_html(), "window=[window_id];[window_size][list2params(window_options)]") // Open the window. + var/debugable = check_rights_for(user.client, R_DEBUG) + user << browse(get_html(debugable), "window=[window_id];[window_size][list2params(window_options)]") // Open the window. + if(!debugable) + sleep(1) + user << output(url_encode(get_json(initial_data)), "[window_id].browser:initialize") // If the window is not debugable (JSON not inlined), send the JSON. winset(user, window_id, "on-close=\"uiclose \ref[src]\"") // Instruct the client to signal UI when the window is closed. SStgui.on_open(src) @@ -192,11 +197,18 @@ * * Generate HTML for this UI. * + * optional bool inline If the JSON should be inlined into the HTML (for debugging). + * * return string UI HTML output. **/ -/datum/tgui/proc/get_html() - // Poplate HTML with JSON. - return replacetextEx(SStgui.basehtml, "{}", get_json(initial_data)) +/datum/tgui/proc/get_html(var/inline) + var/html + // Poplate HTML with JSON if we're supposed to inline. + if(inline) + html = replacetextEx(SStgui.basehtml, "{}", get_json(initial_data)) + else + html = SStgui.basehtml + return html /** * private @@ -207,19 +219,19 @@ **/ /datum/tgui/proc/get_config_data() var/list/config_data = list( - "title" = title, - "status" = status, - "style" = style, - "interface" = interface, - "fancy" = user.client.prefs.tgui_fancy, - "locked" = user.client.prefs.tgui_lock, - "window" = window_id, - "ref" = "\ref[src]", - "user" = list( - "name" = user.name, - "ref" = "\ref[user]" + "title" = title, + "status" = status, + "style" = style, + "interface" = interface, + "fancy" = user.client.prefs.tgui_fancy, + "locked" = user.client.prefs.tgui_lock, + "window" = window_id, + "ref" = "\ref[src]", + "user" = list( + "name" = user.name, + "ref" = "\ref[user]" ), - "srcObject" = list( + "srcObject" = list( "name" = src_object.name, "ref" = "\ref[src_object]" ) @@ -297,8 +309,8 @@ if(status <= UI_DISABLED && !force) return // Cannot update UI, we have no visibility. - // Send the new JSON to the recieveUpdate() Javascript function. - user << output(url_encode(get_json(data)), "[window_id].browser:receiveUpdate") + // Send the new JSON to the update() Javascript function. + user << output(url_encode(get_json(data)), "[window_id].browser:update") /** diff --git a/tgui/assets/tgui.js b/tgui/assets/tgui.js index 968f31104f4..5b547f0f8b8 100644 --- a/tgui/assets/tgui.js +++ b/tgui/assets/tgui.js @@ -1,9 +1,9 @@ -!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-1}}([].indexOf||function(t){for(V=this.length;V--&&this[V]!==t;);return V}),item:function(t){return this[t]||null},remove:function(){for(var t,e=0;e0||-1)*Math.floor(Math.abs(e))),e},ToPrimitive:function(e){var n,r,i;if(R(e))return e;if(r=e.valueOf,t(r)&&(n=r.call(e),R(n)))return n;if(i=e.toString,t(i)&&(n=i.call(e),R(n)))return n;throw new TypeError},ToObject:function(t){if(null==t)throw new TypeError("can't convert "+t+" to object");return r(t)},ToUint32:function(t){return t>>>0}},D=function(){};M(a,{bind:function(e){var n=this;if(!t(n))throw new TypeError("Function.prototype.bind called on incompatible "+n);for(var i,a=l.call(arguments,1),o=function(){if(this instanceof i){var t=n.apply(this,d.call(a,l.call(arguments)));return r(t)===t?t:this}return n.apply(e,d.call(a,l.call(arguments)))},s=g(0,n.length-a.length),u=[],c=0;s>c;c++)h.call(u,"$"+c);return i=Function("binder","return function ("+u.join(",")+"){ return binder.apply(this, arguments); }")(o),n.prototype&&(D.prototype=n.prototype,i.prototype=new D,D.prototype=null),i}});var U=m.bind(i.hasOwnProperty),V=m.bind(i.toString),B=m.bind(l),q=v.bind(l),H=m.bind(s.slice),z=m.bind(s.split),W=m.bind(s.indexOf),$=m.bind(h),G=m.bind(i.propertyIsEnumerable),K=m.bind(n.sort),Q=e.isArray||function(t){return"[object Array]"===V(t)},Y=1!==[].unshift(0);M(n,{unshift:function(){return f.apply(this,arguments),this.length}},Y),M(e,{isArray:Q});var J=r("a"),Z="a"!==J[0]||!(0 in J),X=function(t){var e=!0,n=!0;return t&&(t.call("foo",function(t,n,r){"object"!=typeof r&&(e=!1)}),t.call([1],function(){"use strict";n="string"==typeof this},"x")),!!t&&e&&n};M(n,{forEach:function(e){var n,r=I.ToObject(this),i=Z&&A(this)?z(this,""):r,a=-1,o=I.ToUint32(i.length);if(arguments.length>1&&(n=arguments[1]),!t(e))throw new TypeError("Array.prototype.forEach callback must be a function");for(;++a1&&(r=arguments[1]),!t(n))throw new TypeError("Array.prototype.map callback must be a function");for(var u=0;o>u;u++)u in a&&(void 0===r?s[u]=n(a[u],u,i):s[u]=n.call(r,a[u],u,i));return s}},!X(n.map)),M(n,{filter:function(e){var n,r,i=I.ToObject(this),a=Z&&A(this)?z(this,""):i,o=I.ToUint32(a.length),s=[];if(arguments.length>1&&(r=arguments[1]),!t(e))throw new TypeError("Array.prototype.filter callback must be a function");for(var u=0;o>u;u++)u in a&&(n=a[u],(void 0===r?e(n,u,i):e.call(r,n,u,i))&&$(s,n));return s}},!X(n.filter)),M(n,{every:function(e){var n,r=I.ToObject(this),i=Z&&A(this)?z(this,""):r,a=I.ToUint32(i.length);if(arguments.length>1&&(n=arguments[1]),!t(e))throw new TypeError("Array.prototype.every callback must be a function");for(var o=0;a>o;o++)if(o in i&&!(void 0===n?e(i[o],o,r):e.call(n,i[o],o,r)))return!1;return!0}},!X(n.every)),M(n,{some:function(e){var n,r=I.ToObject(this),i=Z&&A(this)?z(this,""):r,a=I.ToUint32(i.length);if(arguments.length>1&&(n=arguments[1]),!t(e))throw new TypeError("Array.prototype.some callback must be a function");for(var o=0;a>o;o++)if(o in i&&(void 0===n?e(i[o],o,r):e.call(n,i[o],o,r)))return!0;return!1}},!X(n.some));var tt=!1;n.reduce&&(tt="object"==typeof n.reduce.call("es5",function(t,e,n,r){return r})),M(n,{reduce:function(e){var n=I.ToObject(this),r=Z&&A(this)?z(this,""):n,i=I.ToUint32(r.length);if(!t(e))throw new TypeError("Array.prototype.reduce callback must be a function");if(0===i&&1===arguments.length)throw new TypeError("reduce of empty array with no initial value");var a,o=0;if(arguments.length>=2)a=arguments[1];else for(;;){if(o in r){a=r[o++];break}if(++o>=i)throw new TypeError("reduce of empty array with no initial value")}for(;i>o;o++)o in r&&(a=e(a,r[o],o,n));return a}},!tt);var et=!1;n.reduceRight&&(et="object"==typeof n.reduceRight.call("es5",function(t,e,n,r){return r})),M(n,{reduceRight:function(e){var n=I.ToObject(this),r=Z&&A(this)?z(this,""):n,i=I.ToUint32(r.length);if(!t(e))throw new TypeError("Array.prototype.reduceRight callback must be a function");if(0===i&&1===arguments.length)throw new TypeError("reduceRight of empty array with no initial value");var a,o=i-1;if(arguments.length>=2)a=arguments[1];else for(;;){if(o in r){a=r[o--];break}if(--o<0)throw new TypeError("reduceRight of empty array with no initial value")}if(0>o)return a;do o in r&&(a=e(a,r[o],o,n));while(o--);return a}},!et);var nt=n.indexOf&&-1!==[0,1].indexOf(1,2);M(n,{indexOf:function(t){var e=Z&&A(this)?z(this,""):I.ToObject(this),n=I.ToUint32(e.length);if(0===n)return-1;var r=0;for(arguments.length>1&&(r=I.ToInteger(arguments[1])),r=r>=0?r:g(0,n+r);n>r;r++)if(r in e&&e[r]===t)return r;return-1}},nt);var rt=n.lastIndexOf&&-1!==[0,1].lastIndexOf(0,-3);M(n,{lastIndexOf:function(t){var e=Z&&A(this)?z(this,""):I.ToObject(this),n=I.ToUint32(e.length);if(0===n)return-1;var r=n-1;for(arguments.length>1&&(r=b(r,I.ToInteger(arguments[1]))),r=r>=0?r:n-Math.abs(r);r>=0;r--)if(r in e&&t===e[r])return r;return-1}},rt);var it=function(){var t=[1,2],e=t.splice();return 2===t.length&&Q(e)&&0===e.length}();M(n,{splice:function(t,e){return 0===arguments.length?[]:p.apply(this,arguments)}},!it);var at=function(){var t={};return n.splice.call(t,0,0,1),1===t.length}();M(n,{splice:function(t,e){if(0===arguments.length)return[];var n=arguments;return this.length=g(I.ToInteger(this.length),0),arguments.length>0&&"number"!=typeof e&&(n=B(arguments),n.length<2?$(n,this.length-t):n[1]=I.ToInteger(e)),p.apply(this,n)}},!at);var ot=function(){var t=new e(1e5);return t[8]="x",t.splice(1,1),7===t.indexOf("x")}(),st=function(){var t=256,e=[];return e[t]="a",e.splice(t+1,0,"b"),"a"===e[t]}();M(n,{splice:function(t,e){for(var n,r=I.ToObject(this),i=[],a=I.ToUint32(r.length),s=I.ToInteger(t),u=0>s?g(a+s,0):b(s,a),c=b(g(I.ToInteger(e),0),a-u),l=0;c>l;)n=o(u+l),U(r,n)&&(i[l]=r[n]),l+=1;var p,h=B(arguments,2),f=h.length;if(c>f){for(l=u;a-c>l;)n=o(l+c),p=o(l+f),U(r,n)?r[p]=r[n]:delete r[p],l+=1;for(l=a;l>a-c+f;)delete r[l-1],l-=1}else if(f>c)for(l=a-c;l>u;)n=o(l+c-1),p=o(l+f-1),U(r,n)?r[p]=r[n]:delete r[p],l-=1;l=u;for(var d=0;d=0&&!Q(e)&&t(e.callee)},At=St(arguments)?St:Ot;M(r,{keys:function(e){var n=t(e),r=At(e),i=null!==e&&"object"==typeof e,a=i&&A(e);if(!i&&!n&&!r)throw new TypeError("Object.keys called on a non-object");var s=[],u=yt&&n;if(a&&wt||r)for(var c=0;ch;h++){var f=Tt[h];p&&"constructor"===f||!U(e,f)||$(s,f)}return s}});var Pt=r.keys&&function(){return 2===r.keys(arguments).length}(1,2),jt=r.keys&&function(){var t=r.keys(arguments);return 1!==arguments.length||1!==t.length||1!==t[0]}(1),Nt=r.keys;M(r,{keys:function(t){return Nt(At(t)?B(t):t)}},!Pt||jt);var Ft=-621987552e5,Mt="-000001",Rt=Date.prototype.toISOString&&-1===new Date(Ft).toISOString().indexOf(Mt),Lt=Date.prototype.toISOString&&"1969-12-31T23:59:59.999Z"!==new Date(-1).toISOString();M(Date.prototype,{toISOString:function(){var t,e,n,r,i;if(!isFinite(this))throw new RangeError("Date.prototype.toISOString called on non-finite value.");for(r=this.getUTCFullYear(),i=this.getUTCMonth(),r+=Math.floor(i/12),i=(i%12+12)%12,t=[i+1,this.getUTCDate(),this.getUTCHours(),this.getUTCMinutes(),this.getUTCSeconds()],r=(0>r?"-":r>9999?"+":"")+H("00000"+Math.abs(r),r>=0&&9999>=r?-4:-6),e=t.length;e--;)n=t[e],10>n&&(t[e]="0"+n);return r+"-"+B(t,0,2).join("-")+"T"+B(t,2).join(":")+"."+H("000"+this.getUTCMilliseconds(),-3)+"Z"}},Rt||Lt);var It=function(){try{return Date.prototype.toJSON&&null===new Date(NaN).toJSON()&&-1!==new Date(Ft).toJSON().indexOf(Mt)&&Date.prototype.toJSON.call({toISOString:function(){return!0}})}catch(t){return!1}}();It||(Date.prototype.toJSON=function(e){var n=r(this),i=I.ToPrimitive(n);if("number"==typeof i&&!isFinite(i))return null;var a=n.toISOString;if(!t(a))throw new TypeError("toISOString property is not callable");return a.call(n)});var Dt=1e15===Date.parse("+033658-09-27T01:46:40.000Z"),Ut=!isNaN(Date.parse("2012-04-04T24:00:00.500Z"))||!isNaN(Date.parse("2012-11-31T23:59:59.000Z"))||!isNaN(Date.parse("2012-12-31T23:59:60.000Z")),Vt=isNaN(Date.parse("2000-01-01T00:00:00.000Z"));if(Vt||Ut||!Dt){var Bt=Math.pow(2,31)-1,qt=L(new Date(1970,0,1,0,0,0,Bt+1).getTime());Date=function(t){var e=function(n,r,i,a,s,u,c){var l,p=arguments.length;if(this instanceof t){var h=u,f=c;if(qt&&p>=7&&c>Bt){var d=Math.floor(c/Bt)*Bt,m=Math.floor(d/1e3);h+=m,f-=1e3*m}l=1===p&&o(n)===n?new t(e.parse(n)):p>=7?new t(n,r,i,a,s,h,f):p>=6?new t(n,r,i,a,s,h):p>=5?new t(n,r,i,a,s):p>=4?new t(n,r,i,a):p>=3?new t(n,r,i):p>=2?new t(n,r):p>=1?new t(n):new t}else l=t.apply(this,arguments);return R(l)||M(l,{constructor:e},!0),l},n=RegExp("^(\\d{4}|[+-]\\d{6})(?:-(\\d{2})(?:-(\\d{2})(?:T(\\d{2}):(\\d{2})(?::(\\d{2})(?:(\\.\\d{1,}))?)?(Z|(?:([-+])(\\d{2}):(\\d{2})))?)?)?)?$"),r=[0,31,59,90,120,151,181,212,243,273,304,334,365],i=function(t,e){var n=e>1?1:0;return r[e]+Math.floor((t-1969+n)/4)-Math.floor((t-1901+n)/100)+Math.floor((t-1601+n)/400)+365*(t-1970)},a=function(e){var n=0,r=e;if(qt&&r>Bt){var i=Math.floor(r/Bt)*Bt,a=Math.floor(i/1e3);n+=a,r-=1e3*a}return u(new t(1970,0,1,0,0,n,r))};for(var s in t)U(t,s)&&(e[s]=t[s]);M(e,{now:t.now,UTC:t.UTC},!0),e.prototype=t.prototype,M(e.prototype,{constructor:e},!0);var c=function(e){var r=n.exec(e);if(r){var o,s=u(r[1]),c=u(r[2]||1)-1,l=u(r[3]||1)-1,p=u(r[4]||0),h=u(r[5]||0),f=u(r[6]||0),d=Math.floor(1e3*u(r[7]||0)),m=!(!r[4]||r[8]),v="-"===r[9]?1:-1,g=u(r[10]||0),b=u(r[11]||0),y=h>0||f>0||d>0;return(y?24:25)>p&&60>h&&60>f&&1e3>d&&c>-1&&12>c&&24>g&&60>b&&l>-1&&l=-864e13&&864e13>=o)?o:NaN}return t.parse.apply(this,arguments)};return M(e,{parse:c}),e}(Date)}Date.now||(Date.now=function(){return(new Date).getTime()});var Ht=c.toFixed&&("0.000"!==8e-5.toFixed(3)||"1"!==.9.toFixed(0)||"1.25"!==1.255.toFixed(2)||"1000000000000000128"!==0xde0b6b3a7640080.toFixed(0)),zt={base:1e7,size:6,data:[0,0,0,0,0,0],multiply:function(t,e){for(var n=-1,r=e;++n=0;)n+=zt.data[e],zt.data[e]=Math.floor(n/t),n=n%t*zt.base},numToString:function(){for(var t=zt.size,e="";--t>=0;)if(""!==e||0===t||0!==zt.data[t]){var n=o(zt.data[t]);""===e?e=n:e+=H("0000000",0,7-n.length)+n}return e},pow:function ue(t,e,n){return 0===e?n:e%2===1?ue(t,e-1,n*t):ue(t*t,e/2,n)},log:function(t){for(var e=0,n=t;n>=4096;)e+=12,n/=4096;for(;n>=2;)e+=1,n/=2;return e}},Wt=function(t){var e,n,r,i,a,s,c,l;if(e=u(t),e=L(e)?0:Math.floor(e),0>e||e>20)throw new RangeError("Number.toFixed called with invalid number of decimals");if(n=u(this),L(n))return"NaN";if(-1e21>=n||n>=1e21)return o(n);if(r="",0>n&&(r="-",n=-n),i="0",n>1e-21)if(a=zt.log(n*zt.pow(2,69,1))-69,s=0>a?n*zt.pow(2,-a,1):n/zt.pow(2,a,1),s*=4503599627370496,a=52-a,a>0){for(zt.multiply(0,s),c=e;c>=7;)zt.multiply(1e7,0),c-=7;for(zt.multiply(zt.pow(10,c,1),0),c=a-1;c>=23;)zt.divide(1<<23),c-=23;zt.divide(1<0?(l=i.length,i=e>=l?r+H("0.0000000000000000000",0,e-l+2)+i:r+H(i,0,l-e)+"."+H(i,l-e)):i=r+i,i};M(c,{toFixed:Wt},Ht);var $t=function(){try{return"1"===1..toPrecision(void 0)}catch(t){return!0}}(),Gt=c.toPrecision;M(c,{toPrecision:function(t){return void 0===t?Gt.call(this):Gt.call(this,t)}},$t),2!=="ab".split(/(?:ab)*/).length||4!==".".split(/(.?)(.?)/).length||"t"==="tesst".split(/(s)*/)[1]||4!=="test".split(/(?:)/,-1).length||"".split(/.?/).length||".".split(/()()/).length>1?!function(){var t=void 0===/()??/.exec("")[1],e=Math.pow(2,32)-1;s.split=function(n,r){var i=this+"";if(void 0===n&&0===r)return[];if(!T(n))return z(this,n,r);var a,o,s,u,c=[],l=(n.ignoreCase?"i":"")+(n.multiline?"m":"")+(n.unicode?"u":"")+(n.sticky?"y":""),p=0,f=RegExp(n.source,l+"g");t||(a=RegExp("^"+f.source+"$(?!\\s)",l));var d=void 0===r?e:I.ToUint32(r);for(o=f.exec(i);o&&(s=o.index+o[0].length,!(s>p&&($(c,H(i,p,o.index)),!t&&o.length>1&&o[0].replace(a,function(){for(var t=1;t1&&o.index=d)));)f.lastIndex===o.index&&f.lastIndex++,o=f.exec(i);return p===i.length?(u||!f.test(""))&&$(c,""):$(c,H(i,p)),c.length>d?H(c,0,d):c}}():"0".split(void 0,0).length&&(s.split=function(t,e){return void 0===t&&0===e?[]:z(this,t,e)});var Kt=s.replace,Qt=function(){var t=[];return"x".replace(/x(.)?/g,function(e,n){$(t,n)}),1===t.length&&void 0===t[0]}();Qt||(s.replace=function(e,n){var r=t(n),i=T(e)&&/\)[*?]/.test(e.source);if(r&&i){var a=function(t){var r=arguments.length,i=e.lastIndex;e.lastIndex=0;var a=e.exec(t)||[];return e.lastIndex=i,$(a,arguments[r-2],arguments[r-1]),n.apply(this,a)};return Kt.call(this,e,a)}return Kt.call(this,e,n)});var Yt=s.substr,Jt="".substr&&"b"!=="0b".substr(-1);M(s,{substr:function(t,e){var n=t;return 0>t&&(n=g(this.length+t,0)),Yt.call(this,n,e)}},Jt);var Zt=" \n\x0B\f\r   ᠎              \u2028\u2029\ufeff",Xt="​",te="["+Zt+"]",ee=RegExp("^"+te+te+"*"),ne=RegExp(te+te+"*$"),re=s.trim&&(Zt.trim()||!Xt.trim());M(s,{trim:function(){if(void 0===this||null===this)throw new TypeError("can't convert "+this+" to object");return o(this).replace(ee,"").replace(ne,"")}},re);var ie=s.lastIndexOf&&-1!=="abcあい".lastIndexOf("あい",2);M(s,{lastIndexOf:function(t){if(void 0===this||null===this)throw new TypeError("can't convert "+this+" to object");for(var e=o(this),n=o(t),r=arguments.length>1?u(arguments[1]):NaN,i=L(r)?1/0:I.ToInteger(r),a=b(g(i,0),e.length),s=n.length,c=a+s;c>0;){c=g(0,c-s);var l=W(H(e,c,a+s),n);if(-1!==l)return c+l}return-1}},ie);var ae=s.lastIndexOf;if(M(s,{lastIndexOf:function(t){return ae.apply(this,arguments)}},1!==s.lastIndexOf.length),(8!==parseInt(Zt+"08")||22!==parseInt(Zt+"0x16"))&&(parseInt=function(t){var e=/^[\-+]?0[xX]/;return function(n,r){var i=o(n).trim(),a=u(r)||(e.test(i)?16:10);return t(i,a)}}(parseInt)),new RangeError("test")+""!="RangeError: test"){var oe=function(){if(void 0===this||null===this)throw new TypeError("can't convert "+this+" to object");var t=this.name;void 0===t?t="Error":"string"!=typeof t&&(t=o(t));var e=this.message;return void 0===e?e="":"string"!=typeof e&&(e=o(e)),t?e?t+": "+e:t:e};Error.prototype.toString=oe}if(F){var se=function(t,e){if(G(t,e)){var n=Object.getOwnPropertyDescriptor(t,e);n.enumerable=!1,Object.defineProperty(t,e,n)}};se(Error.prototype,"message"),""!==Error.prototype.message&&(Error.prototype.message=""),se(Error.prototype,"name")}})},{}],3:[function(t,e,n){!function(t,n){function r(t,e){var n=t.createElement("p"),r=t.getElementsByTagName("head")[0]||t.documentElement;return n.innerHTML="x",r.insertBefore(n.lastChild,r.firstChild)}function i(){var t=w.elements;return"string"==typeof t?t.split(" "):t}function a(t,e){var n=w.elements;"string"!=typeof n&&(n=n.join(" ")),"string"!=typeof t&&(t=t.join(" ")),w.elements=n+" "+t,l(e)}function o(t){var e=y[t[g]];return e||(e={},b++,t[g]=b,y[b]=e),e}function s(t,e,r){if(e||(e=n),h)return e.createElement(t);r||(r=o(e));var i;return i=r.cache[t]?r.cache[t].cloneNode():v.test(t)?(r.cache[t]=r.createElem(t)).cloneNode():r.createElem(t),!i.canHaveChildren||m.test(t)||i.tagUrn?i:r.frag.appendChild(i)}function u(t,e){if(t||(t=n),h)return t.createDocumentFragment();e=e||o(t);for(var r=e.frag.cloneNode(),a=0,s=i(),u=s.length;u>a;a++)r.createElement(s[a]);return r}function c(t,e){e.cache||(e.cache={},e.createElem=t.createElement,e.createFrag=t.createDocumentFragment,e.frag=e.createFrag()),t.createElement=function(n){return w.shivMethods?s(n,t,e):e.createElem(n)},t.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+i().join().replace(/[\w\-:]+/g,function(t){return e.createElem(t),e.frag.createElement(t),'c("'+t+'")'})+");return n}")(w,e.frag)}function l(t){t||(t=n);var e=o(t);return!w.shivCSS||p||e.hasCSS||(e.hasCSS=!!r(t,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),h||c(t,e),t}var p,h,f="3.7.3-pre",d=t.html5||{},m=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,v=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,g="_html5shiv",b=0,y={};!function(){try{var t=n.createElement("a");t.innerHTML="",p="hidden"in t,h=1==t.childNodes.length||function(){n.createElement("a");var t=n.createDocumentFragment();return void 0===t.cloneNode||void 0===t.createDocumentFragment||void 0===t.createElement}()}catch(e){p=!0,h=!0}}();var w={elements:d.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:f,shivCSS:d.shivCSS!==!1,supportsUnknownElements:h,shivMethods:d.shivMethods!==!1,type:"default",shivDocument:l,createElement:s,createDocumentFragment:u,addElements:a};t.html5=w,l(n),"object"==typeof e&&e.exports&&(e.exports=w)}("undefined"!=typeof window?window:this,document)},{}],4:[function(t,e,n){(function(t){!function(t){function e(t,e,n,r){for(var a,o=n.slice(),s=i(e,t),u=0,c=o.length;c>u&&(handler=o[u],"object"==typeof handler&&"function"==typeof handler.handleEvent?handler.handleEvent(s):handler.call(t,s),!s.stoppedImmediatePropagation);u++);return a=!s.stoppedPropagation,r&&a&&t.parentNode?t.parentNode.dispatchEvent(s):!s.defaultPrevented}function n(t,e){return{configurable:!0,get:t,set:e}}function r(t,e,r){var i=b(e||t,r);v(t,"textContent",n(function(){return i.get.call(this)},function(t){i.set.call(this,t)}))}function i(t,e){return t.currentTarget=e,t.eventPhase=t.target===t.currentTarget?2:3,t}function a(t,e){for(var n=t.length;n--&&t[n]!==e;);return n}function o(){if("BR"===this.tagName)return"\n";for(var t=this.firstChild,e=[];t;)8!==t.nodeType&&7!==t.nodeType&&e.push(t.textContent),t=t.nextSibling;return e.join("")}function s(t){var e=document.createEvent("Event");e.initEvent("input",!0,!0),(t.srcElement||t.fromElement||document).dispatchEvent(e)}function u(t){!h&&k.test(document.readyState)&&(h=!h,document.detachEvent(f,u),t=document.createEvent("Event"),t.initEvent(d,!0,!0),document.dispatchEvent(t))}function c(t){for(var e;e=this.lastChild;)this.removeChild(e);null!=t&&this.appendChild(document.createTextNode(t))}function l(e,n){return n||(n=t.event),n.target||(n.target=n.srcElement||n.fromElement||document),n.timeStamp||(n.timeStamp=(new Date).getTime()),n}if(!document.createEvent){var p=!0,h=!1,f="onreadystatechange",d="DOMContentLoaded",m="__IE8__"+Math.random(),v=Object.defineProperty||function(t,e,n){t[e]=n.value},g=Object.defineProperties||function(e,n){for(var r in n)if(y.call(n,r))try{v(e,r,n[r])}catch(i){t.console&&console.log(r+" failed on object:",e,i.message)}},b=Object.getOwnPropertyDescriptor,y=Object.prototype.hasOwnProperty,w=t.Element.prototype,x=t.Text.prototype,_=/^[a-z]+$/,k=/loaded|complete/,E={},T=document.createElement("div"),C=document.documentElement,S=C.removeAttribute,O=C.setAttribute;r(t.HTMLCommentElement.prototype,w,"nodeValue"),r(t.HTMLScriptElement.prototype,null,"text"),r(x,null,"nodeValue"),r(t.HTMLTitleElement.prototype,null,"text"),v(t.HTMLStyleElement.prototype,"textContent",function(t){return n(function(){return t.get.call(this.styleSheet)},function(e){t.set.call(this.styleSheet,e)})}(b(t.CSSStyleSheet.prototype,"cssText"))),g(w,{textContent:{get:o,set:c},firstElementChild:{get:function(){for(var t=this.childNodes||[],e=0,n=t.length;n>e;e++)if(1==t[e].nodeType)return t[e]}},lastElementChild:{get:function(){for(var t=this.childNodes||[],e=t.length;e--;)if(1==t[e].nodeType)return t[e]}},oninput:{get:function(){return this._oninput||null},set:function(t){this._oninput&&(this.removeEventListener("input",this._oninput),this._oninput=t,t&&this.addEventListener("input",t))}},previousElementSibling:{get:function(){for(var t=this.previousSibling;t&&1!=t.nodeType;)t=t.previousSibling;return t}},nextElementSibling:{get:function(){for(var t=this.nextSibling;t&&1!=t.nodeType;)t=t.nextSibling;return t}},childElementCount:{get:function(){for(var t=0,e=this.childNodes||[],n=e.length;n--;t+=1==e[n].nodeType);return t}},addEventListener:{value:function(t,n,r){var i,o,u=this,c="on"+t,p=u[m]||v(u,m,{value:{}})[m],h=p[c]||(p[c]={}),f=h.h||(h.h=[]);if(!y.call(h,"w")){if(h.w=function(t){return t[m]||e(u,l(u,t),f,!1)},!y.call(E,c))if(_.test(t)){try{i=document.createEventObject(),i[m]=!0,9!=u.nodeType&&null==u.parentNode&&T.appendChild(u),(o=u.getAttribute(c))&&S.call(u,c),u.fireEvent(c,i),E[c]=!0}catch(i){for(E[c]=!1;T.hasChildNodes();)T.removeChild(T.firstChild)}null!=o&&O.call(u,c,o)}else E[c]=!1;(h.n=E[c])&&u.attachEvent(c,h.w)}a(f,n)<0&&f[r?"unshift":"push"](n),"input"===t&&u.attachEvent("onkeyup",s)}},dispatchEvent:{value:function(t){var n,r=this,i="on"+t.type,a=r[m],o=a&&a[i],s=!!o;return t.target||(t.target=r),s?o.n?r.fireEvent(i,t):e(r,t,o.h,!0):(n=r.parentNode)?n.dispatchEvent(t):!0,!t.defaultPrevented}},removeEventListener:{value:function(t,e,n){var r=this,i="on"+t,o=r[m],s=o&&o[i],u=s&&s.h,c=u?a(u,e):-1;c>-1&&u.splice(c,1)}}}),g(x,{addEventListener:{value:w.addEventListener},dispatchEvent:{value:w.dispatchEvent},removeEventListener:{value:w.removeEventListener}}),g(t.XMLHttpRequest.prototype,{addEventListener:{value:function(t,e,n){var r=this,i="on"+t,o=r[m]||v(r,m,{value:{}})[m],s=o[i]||(o[i]={}),u=s.h||(s.h=[]);a(u,e)<0&&(r[i]||(r[i]=function(){var e=document.createEvent("Event");e.initEvent(t,!0,!0),r.dispatchEvent(e)}),u[n?"unshift":"push"](e))}},dispatchEvent:{value:function(t){var n=this,r="on"+t.type,i=n[m],a=i&&i[r],o=!!a;return o&&(a.n?n.fireEvent(r,t):e(n,t,a.h,!0))}},removeEventListener:{value:w.removeEventListener}}),g(t.Event.prototype,{bubbles:{value:!0,writable:!0},cancelable:{value:!0,writable:!0},preventDefault:{value:function(){this.cancelable&&(this.defaultPrevented=!0,this.returnValue=!1)}},stopPropagation:{value:function(){this.stoppedPropagation=!0,this.cancelBubble=!0}},stopImmediatePropagation:{value:function(){this.stoppedImmediatePropagation=!0,this.stopPropagation()}},initEvent:{value:function(t,e,n){this.type=t,this.bubbles=!!e,this.cancelable=!!n,this.bubbles||this.stopPropagation()}}}),g(t.HTMLDocument.prototype,{defaultView:{get:function(){ -return this.parentWindow}},textContent:{get:function(){return 11===this.nodeType?o.call(this):null},set:function(t){11===this.nodeType&&c.call(this,t)}},addEventListener:{value:function(e,n,r){var i=this;w.addEventListener.call(i,e,n,r),p&&e===d&&!k.test(i.readyState)&&(p=!1,i.attachEvent(f,u),t==top&&!function a(t){try{i.documentElement.doScroll("left"),u()}catch(e){setTimeout(a,50)}}())}},dispatchEvent:{value:w.dispatchEvent},removeEventListener:{value:w.removeEventListener},createEvent:{value:function(t){var e;if("Event"!==t)throw Error("unsupported "+t);return e=document.createEventObject(),e.timeStamp=(new Date).getTime(),e}}}),g(t.Window.prototype,{getComputedStyle:{value:function(){function t(t){this._=t}function e(){}var n=/^(?:[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|))(?!px)[a-z%]+$/,r=/^(top|right|bottom|left)$/,i=/\-([a-z])/g,a=function(t,e){return e.toUpperCase()};return t.prototype.getPropertyValue=function(t){var e,o,s,u=this._,c=u.style,l=u.currentStyle,p=u.runtimeStyle;return t=("float"===t?"style-float":t).replace(i,a),e=l?l[t]:c[t],n.test(e)&&!r.test(t)&&(o=c.left,s=p&&p.left,s&&(p.left=l.left),c.left="fontSize"===t?"1em":e,e=c.pixelLeft+"px",c.left=o,s&&(p.left=s)),null==e?e:e+""||"auto"},e.prototype.getPropertyValue=function(){return null},function(n,r){return r?new e(n):new t(n)}}()},addEventListener:{value:function(n,r,i){var o,s=t,u="on"+n;s[u]||(s[u]=function(t){return e(s,l(s,t),o,!1)}),o=s[u][m]||(s[u][m]=[]),a(o,r)<0&&o[i?"unshift":"push"](r)}},dispatchEvent:{value:function(e){var n=t["on"+e.type];return n?n.call(t,e)!==!1&&!e.defaultPrevented:!0}},removeEventListener:{value:function(e,n,r){var i="on"+e,o=(t[i]||Object)[m],s=o?a(o,n):-1;s>-1&&o.splice(s,1)}}}),function(t,e,n){for(n=0;n1?e-1:0),r=1;e>r;r++)n[r-1]=arguments[r];for(var i,a;a=n.shift();)for(i in a)Oo.call(a,i)&&(t[i]=a[i]);return t}function i(t){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;e>r;r++)n[r-1]=arguments[r];return n.forEach(function(e){for(var n in e)!e.hasOwnProperty(n)||n in t||(t[n]=e[n])}),t}function a(t){return"[object Array]"===Ao.call(t)}function o(t){return Po.test(Ao.call(t))}function s(t,e){return null===t&&null===e?!0:"object"==typeof t||"object"==typeof e?!1:t===e}function u(t){return!isNaN(parseFloat(t))&&isFinite(t)}function c(t){return t&&"[object Object]"===Ao.call(t)}function l(t,e){return t.replace(/%s/g,function(){return e.shift()})}function p(t){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;e>r;r++)n[r-1]=arguments[r];throw t=l(t,n),Error(t)}function h(){Av.DEBUG&&To.apply(null,arguments)}function f(t){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;e>r;r++)n[r-1]=arguments[r];t=l(t,n),Co(t,n)}function d(t){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;e>r;r++)n[r-1]=arguments[r];t=l(t,n),No[t]||(No[t]=!0,Co(t,n))}function m(){Av.DEBUG&&f.apply(null,arguments)}function v(){Av.DEBUG&&d.apply(null,arguments)}function g(t,e,n){var r=b(t,e,n);return r?r[t][n]:null}function b(t,e,n){for(;e;){if(n in e[t])return e;if(e.isolated)return null;e=e.parent}}function y(t){return function(){return t}}function w(t){var e,n,r,i,a,o;for(e=t.split("."),(n=Bo[e.length])||(n=x(e.length)),a=[],r=function(t,n){return t?"*":e[n]},i=n.length;i--;)o=n[i].map(r).join("."),a.hasOwnProperty(o)||(a.push(o),a[o]=!0);return a}function x(t){var e,n,r,i,a,o,s,u,c="";if(!Bo[t]){for(r=[];c.length=a;a+=1){for(n=a.toString(2);n.lengtho;o++)u.push(i(n[o]));r[a]=u}Bo[t]=r}return Bo[t]}function _(t,e,n,r){var i=t[e];if(!i||!i.equalsOrStartsWith(r)&&i.equalsOrStartsWith(n))return t[e]=i?i.replace(n,r):r,!0}function k(t){var e=t.slice(2);return"i"===t[1]&&u(e)?+e:e}function E(t){return null==t?t:(zo.hasOwnProperty(t)||(zo[t]=new Wo(t)),zo[t])}function T(t,e){function n(e,n){var r,i,o;return n.isRoot?o=[].concat(Object.keys(t.viewmodel.data),Object.keys(t.viewmodel.mappings),Object.keys(t.viewmodel.computations)):(r=t.viewmodel.wrapped[n.str],i=r?r.get():t.viewmodel.get(n),o=i?Object.keys(i):null),o&&o.forEach(function(t){"_ractive"===t&&a(i)||e.push(n.join(t))}),e}var r,i,o;for(r=e.str.split("."),o=[Go];i=r.shift();)"*"===i?o=o.reduce(n,[]):o[0]===Go?o[0]=E(i):o=o.map(C(i));return o}function C(t){return function(e){return e.join(t)}}function S(t){return t?t.replace(qo,".$1"):""}function O(t,e,n){if("string"!=typeof e||!u(n))throw Error("Bad arguments");var r=void 0,i=void 0;if(/\*/.test(e))return i={},T(t,E(S(e))).forEach(function(e){var r=t.viewmodel.get(e);if(!u(r))throw Error(Qo);i[e.str]=r+n}),t.set(i);if(r=t.get(e),!u(r))throw Error(Qo);return t.set(e,+r+n)}function A(t,e){return Ko(this,t,void 0===e?1:+e)}function P(t){this.event=t,this.method="on"+t,this.deprecate=ts[t]}function j(t,e){var n=t.indexOf(e);-1===n&&t.push(e)}function N(t,e){for(var n=0,r=t.length;r>n;n++)if(t[n]==e)return!0;return!1}function F(t,e){var n;if(!a(t)||!a(e))return!1;if(t.length!==e.length)return!1;for(n=t.length;n--;)if(t[n]!==e[n])return!1;return!0}function M(t){return"string"==typeof t?[t]:void 0===t?[]:t}function R(t){return t[t.length-1]}function L(t,e){var n=t.indexOf(e);-1!==n&&t.splice(n,1)}function I(t){for(var e=[],n=t.length;n--;)e[n]=t[n];return e}function D(t){setTimeout(t,0)}function U(t,e){return function(){for(var n;n=t.shift();)n(e)}}function V(t,e,n,r){var i;if(e===t)throw new TypeError("A promise's fulfillment handler cannot return the same promise");if(e instanceof es)e.then(n,r);else if(!e||"object"!=typeof e&&"function"!=typeof e)n(e);else{try{i=e.then}catch(a){return void r(a)}if("function"==typeof i){var o,s,u;s=function(e){o||(o=!0,V(t,e,n,r))},u=function(t){o||(o=!0,r(t))};try{i.call(e,s,u)}catch(a){if(!o)return r(a),void(o=!0)}}else n(e)}}function B(t,e,n){var r;return e=S(e),"~/"===e.substr(0,2)?(r=E(e.substring(2)),z(t,r.firstKey,n)):"."===e[0]?(r=q(ss(n),e),r&&z(t,r.firstKey,n)):r=H(t,E(e),n),r}function q(t,e){var n;if(void 0!=t&&"string"!=typeof t&&(t=t.str),"."===e)return E(t);if(n=t?t.split("."):[],"../"===e.substr(0,3)){for(;"../"===e.substr(0,3);){if(!n.length)throw Error('Could not resolve reference - too many "../" prefixes');n.pop(),e=e.substring(3)}return n.push(e),E(n.join("."))}return E(t?t+e.replace(/^\.\//,"."):e.replace(/^\.\/?/,""))}function H(t,e,n,r){var i,a,o,s,u;if(e.isRoot)return e;for(a=e.firstKey;n;)if(i=n.context,n=n.parent,i&&(s=!0,o=t.viewmodel.get(i),o&&("object"==typeof o||"function"==typeof o)&&a in o))return i.join(e.str);return W(t.viewmodel,a)?e:t.parent&&!t.isolated&&(s=!0,n=t.component.parentFragment,a=E(a),u=H(t.parent,a,n,!0))?(t.viewmodel.map(a,{origin:t.parent.viewmodel,keypath:u}),e):r||s?void 0:(t.viewmodel.set(e,void 0),e)}function z(t,e){var n;!t.parent||t.isolated||W(t.viewmodel,e)||(e=E(e),(n=H(t.parent,e,t.component.parentFragment,!0))&&t.viewmodel.map(e,{origin:t.parent.viewmodel,keypath:n}))}function W(t,e){return""===e||e in t.data||e in t.computations||e in t.mappings}function $(t){t.teardown()}function G(t){t.unbind()}function K(t){t.unrender()}function Q(t){t.cancel()}function Y(t){t.detach()}function J(t){t.detachNodes()}function Z(t){!t.ready||t.outros.length||t.outroChildren||(t.outrosComplete||(t.parent?t.parent.decrementOutros(t):t.detachNodes(),t.outrosComplete=!0),t.intros.length||t.totalChildren||("function"==typeof t.callback&&t.callback(),t.parent&&t.parent.decrementTotal()))}function X(){for(var t,e,n;ls.ractives.length;)e=ls.ractives.pop(),n=e.viewmodel.applyChanges(),n&&ds.fire(e,n);for(tt(),t=0;t=0;a--)i=t._subs[e[a]],i&&(s=gt(t,i,n,r)&&s);if(Vs.dequeue(t),t.parent&&s){if(o&&t.component){var u=t.component.name+"."+e[e.length-1];e=E(u).wildcardMatches(),n&&(n.component=t)}vt(t.parent,e,n,r)}}function gt(t,e,n,r){var i=null,a=!1;n&&!n._noArg&&(r=[n].concat(r)),e=e.slice();for(var o=0,s=e.length;s>o;o+=1)e[o].apply(t,r)===!1&&(a=!0);return n&&!n._noArg&&a&&(i=n.original)&&(i.preventDefault&&i.preventDefault(),i.stopPropagation&&i.stopPropagation()),!a}function bt(t){var e={args:Array.prototype.slice.call(arguments,1)};Bs(this,t,e)}function yt(t){var e;return t=E(S(t)),e=this.viewmodel.get(t,zs),void 0===e&&this.parent&&!this.isolated&&us(this,t.str,this.component.parentFragment)&&(e=this.viewmodel.get(t)),e}function wt(e,n){if(!this.fragment.rendered)throw Error("The API has changed - you must call `ractive.render(target[, anchor])` to render your Ractive instance. Once rendered you can use `ractive.insert()`.");if(e=t(e),n=t(n)||null,!e)throw Error("You must specify a valid target to insert into");e.insertBefore(this.detach(),n),this.el=e,(e.__ractive_instances__||(e.__ractive_instances__=[])).push(this),this.detached=null,xt(this)}function xt(t){$s.fire(t),t.findAllComponents("*").forEach(function(t){xt(t.instance)})}function _t(t,e,n){var r,i;return t=E(S(t)),r=this.viewmodel.get(t),a(r)&&a(e)?(i=ms.start(this,!0),this.viewmodel.merge(t,r,e,n),ms.end(),i):this.set(t,e,n&&n.complete)}function kt(t,e){var n,r;return n=T(t,e),r={},n.forEach(function(e){r[e.str]=t.get(e.str)}),r}function Et(t,e,n,r){var i,a,o;e=E(S(e)),r=r||su,e.isPattern?(i=new au(t,e,n,r),t.viewmodel.patternObservers.push(i),a=!0):i=new Ys(t,e,n,r),i.init(r.init),t.viewmodel.register(e,i,a?"patternObservers":"observers"),i.ready=!0;var s={cancel:function(){var n;o||(a?(n=t.viewmodel.patternObservers.indexOf(i),t.viewmodel.patternObservers.splice(n,1),t.viewmodel.unregister(e,i,"patternObservers")):t.viewmodel.unregister(e,i,"observers"),o=!0)}};return t._observers.push(s),s}function Tt(t,e,n){var r,i,a,o;if(c(t)){n=e,i=t,r=[];for(t in i)i.hasOwnProperty(t)&&(e=i[t],r.push(this.observe(t,e,n)));return{cancel:function(){for(;r.length;)r.pop().cancel()}}}if("function"==typeof t)return n=e,e=t,t="",ou(this,t,e,n);if(a=t.split(" "),1===a.length)return ou(this,t,e,n);for(r=[],o=a.length;o--;)t=a[o],t&&r.push(ou(this,t,e,n));return{cancel:function(){for(;r.length;)r.pop().cancel()}}}function Ct(t,e,n){var r=this.observe(t,function(){e.apply(this,arguments),r.cancel()},{init:!1,defer:n&&n.defer});return r}function St(t,e){var n,r=this;if(t)n=t.split(" ").map(lu).filter(pu),n.forEach(function(t){var n,i;(n=r._subs[t])&&(e?(i=n.indexOf(e),-1!==i&&n.splice(i,1)):r._subs[t]=[])});else for(t in this._subs)delete this._subs[t];return this}function Ot(t,e){var n,r,i,a=this;if("object"==typeof t){n=[];for(r in t)t.hasOwnProperty(r)&&n.push(this.on(r,t[r]));return{cancel:function(){for(var t;t=n.pop();)t.cancel()}}}return i=t.split(" ").map(lu).filter(pu),i.forEach(function(t){(a._subs[t]||(a._subs[t]=[])).push(e)}),{cancel:function(){return a.off(t,e)}}}function At(t,e){var n=this.on(t,function(){e.apply(this,arguments),n.cancel()});return n}function Pt(t,e,n){var r,i,a,o,s,u,c=[];if(r=jt(t,e,n),!r)return null;for(i=t.length,s=r.length-2-r[1],a=Math.min(i,r[0]),o=a+r[1],u=0;a>u;u+=1)c.push(u);for(;o>u;u+=1)c.push(-1);for(;i>u;u+=1)c.push(u+s);return 0!==s?c.touchedFrom=r[0]:c.touchedFrom=t.length,c}function jt(t,e,n){switch(e){case"splice":for(void 0!==n[0]&&n[0]<0&&(n[0]=t.length+Math.max(n[0],-t.length));n.length<2;)n.push(0);return n[1]=Math.min(n[1],t.length-n[0]),n;case"sort":case"reverse":return null;case"pop":return t.length?[t.length-1,1]:[0,0];case"push":return[t.length,0].concat(n);case"shift":return[0,t.length?1:0];case"unshift":return[0,0].concat(n)}}function Nt(e,n){var r,i,a,o=this;if(a=this.transitionsEnabled,this.noIntro&&(this.transitionsEnabled=!1),r=ms.start(this,!0),ms.scheduleTask(function(){return Ou.fire(o)},!0),this.fragment.rendered)throw Error("You cannot call ractive.render() on an already rendered instance! Call ractive.unrender() first");if(e=t(e)||this.el,n=t(n)||this.anchor,this.el=e,this.anchor=n,!this.append&&e){var s=e.__ractive_instances__;s&&s.length&&Ft(s),e.innerHTML=""}return this.cssId&&Cu.apply(),e&&((i=e.__ractive_instances__)?i.push(this):e.__ractive_instances__=[this],n?e.insertBefore(this.fragment.render(),n):e.appendChild(this.fragment.render())),ms.end(),this.transitionsEnabled=a,r.then(function(){return Au.fire(o)})}function Ft(t){t.splice(0,t.length).forEach($)}function Mt(t,e){for(var n=t.slice(),r=e.length;r--;)~n.indexOf(e[r])||n.push(e[r]);return n}function Rt(t,e){var n,r,i;return r='[data-ractive-css~="{'+e+'}"]',i=function(t){var e,n,i,a,o,s,u,c=[];for(e=[];n=Ru.exec(t);)e.push({str:n[0],base:n[1],modifiers:n[2]});for(a=e.map(It),u=e.length;u--;)s=a.slice(),i=e[u],s[u]=i.base+r+i.modifiers||"",o=a.slice(),o[u]=r+" "+o[u],c.push(s.join(" "),o.join(" "));return c.join(", ")},n=Iu.test(t)?t.replace(Iu,r):t.replace(Mu,"").replace(Fu,function(t,e){var n,r;return Lu.test(e)?t:(n=e.split(",").map(Lt),r=n.map(i).join(", ")+" ",t.replace(e,r))})}function Lt(t){return t.trim?t.trim():t.replace(/^\s+/,"").replace(/\s+$/,"")}function It(t){return t.str}function Dt(t){t&&t.constructor!==Object&&("function"==typeof t||("object"!=typeof t?p("data option must be an object or a function, `"+t+"` is not valid"):m("If supplied, options.data should be a plain JavaScript object - using a non-POJO as the root object may work, but is discouraged")))}function Ut(t,e){Dt(e);var n="function"==typeof t,r="function"==typeof e;return e||n||(e={}),n||r?function(){var i=r?Vt(e,this):e,a=n?Vt(t,this):t;return Bt(i,a)}:Bt(e,t)}function Vt(t,e){var n=t.call(e);if(n)return"object"!=typeof n&&p("Data function must return an object"),n.constructor!==Object&&v("Data function returned something other than a plain JavaScript object. This might work, but is strongly discouraged"),n}function Bt(t,e){if(t&&e){for(var n in e)n in t||(t[n]=e[n]);return t}return t||e}function qt(t){var e=wo(Wu);return e.parse=function(e,n){return Ht(e,n||t)},e}function Ht(t,e){if(!Hu)throw Error("Missing Ractive.parse - cannot parse template. Either preparse or use the version that includes the parser");return Hu(t,e||this.options)}function zt(t,e){var n;if(!Za){if(e&&e.noThrow)return;throw Error("Cannot retrieve template #"+t+" as Ractive is not running in a browser.")}if(Wt(t)&&(t=t.substring(1)),!(n=document.getElementById(t))){if(e&&e.noThrow)return;throw Error("Could not find template element with id #"+t)}if("SCRIPT"!==n.tagName.toUpperCase()){if(e&&e.noThrow)return;throw Error("Template element with id #"+t+", must be a {{{config.title}}} From 57cd223eb0de658c2cb8789b96001bde40f07d8a Mon Sep 17 00:00:00 2001 From: Bjorn Neergaard Date: Mon, 4 Jan 2016 12:17:09 -0600 Subject: [PATCH 137/310] Fix contains proc to use a loop --- code/__HELPERS/unsorted.dm | 12 ++++++------ code/modules/tgui/states/deep_inventory.dm | 2 +- code/modules/tgui/states/notcontained.dm | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 416362c16fa..a4eec6dc868 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -1232,10 +1232,10 @@ B --><-- A return L -/atom/proc/contains(var/atom/location) - if(!location) - return 0 - if(location == src) - return 1 - return contains(location.loc) +/atom/proc/contains(var/atom/A) + if(!A) + return 0 + for(var/atom/location = A.loc, location, location = location.loc); // Semicolon is for the empty statement. + if(location == src) + return 1 \ No newline at end of file diff --git a/code/modules/tgui/states/deep_inventory.dm b/code/modules/tgui/states/deep_inventory.dm index e250a80d51a..70f2a59992e 100644 --- a/code/modules/tgui/states/deep_inventory.dm +++ b/code/modules/tgui/states/deep_inventory.dm @@ -1,7 +1,7 @@ /** * tgui state: deep_inventory_state * - * Checks that the src_object is in the user's fist-level (backpack, webbing, etc) inventory. + * Checks that the src_object is in the user's deep (backpack, box, toolbox, etc) inventory. **/ /var/global/datum/ui_state/deep_inventory_state/deep_inventory_state = new() diff --git a/code/modules/tgui/states/notcontained.dm b/code/modules/tgui/states/notcontained.dm index 109bbd16932..0b6462fe331 100644 --- a/code/modules/tgui/states/notcontained.dm +++ b/code/modules/tgui/states/notcontained.dm @@ -15,7 +15,7 @@ return UI_CLOSE /mob/living/notcontained_can_use_topic(atom/src_object) - if(src in src_object.contents) + if(src_object.contains(src)) return UI_CLOSE // Close if we're inside it. return default_can_use_topic(src_object) From 8994f95308740fd4059afed18fc73cd1906e149f Mon Sep 17 00:00:00 2001 From: Bjorn Neergaard Date: Mon, 4 Jan 2016 12:22:22 -0600 Subject: [PATCH 138/310] Clean some old comments --- code/__HELPERS/unsorted.dm | 2 +- code/controllers/subsystem/tgui.dm | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index a4eec6dc868..755ad12b35c 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -1236,6 +1236,6 @@ B --><-- A /atom/proc/contains(var/atom/A) if(!A) return 0 - for(var/atom/location = A.loc, location, location = location.loc); // Semicolon is for the empty statement. + for(var/atom/location = A.loc, location, location = location.loc) if(location == src) return 1 \ No newline at end of file diff --git a/code/controllers/subsystem/tgui.dm b/code/controllers/subsystem/tgui.dm index a2861c7415b..22604f811db 100644 --- a/code/controllers/subsystem/tgui.dm +++ b/code/controllers/subsystem/tgui.dm @@ -9,8 +9,8 @@ var/datum/subsystem/tgui/SStgui can_fire = 1 // This needs to fire before round start. var/list/open_uis = list() // A list of open UIs, grouped by src_object and ui_key. - var/list/processing_uis = list() // A list of processing UIs, not grouped. - var/basehtml // The HTML template used by new UIs; minus initial data. + var/list/processing_uis = list() // A list of processing UIs, ungrouped. + var/basehtml // The HTML base used for all UIs. /datum/subsystem/tgui/New() @@ -19,9 +19,9 @@ var/datum/subsystem/tgui/SStgui NEW_SS_GLOBAL(SStgui) /datum/subsystem/tgui/stat_entry() - ..("P:[processing_uis.len]") // Show how many interfaces we have open/are processing. + ..("P:[processing_uis.len]") -/datum/subsystem/tgui/fire() // Process UIs. +/datum/subsystem/tgui/fire() for(var/thing in processing_uis) var/datum/tgui/ui = thing if(ui && ui.user && ui.src_object) From 6060c4ce2f58741c1c6c76ef548fdff59cdbcd95 Mon Sep 17 00:00:00 2001 From: AnturK Date: Mon, 4 Jan 2016 21:17:20 +0100 Subject: [PATCH 139/310] Fixes modified clone records breaking --- code/game/machinery/cloning.dm | 7 ++++--- code/game/machinery/computer/cloning.dm | 3 ++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index 627f5727480..8c30cfc0c41 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -186,11 +186,12 @@ H << "Consciousness slowly creeps over you as your body regenerates.
So this is what cloning feels like?
" H.hardset_dna(ui, se, H.real_name, null, mrace, features) - H.faction |= factions + if(H) + H.faction |= factions - H.set_cloned_appearance() + H.set_cloned_appearance() - H.suiciding = 0 + H.suiciding = 0 src.attempting = 0 return 1 diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm index 8cfd51a294f..d706a89a1bf 100644 --- a/code/game/machinery/computer/cloning.dm +++ b/code/game/machinery/computer/cloning.dm @@ -297,7 +297,8 @@ src.updateUsrDialog() return - src.active_record.fields = diskette.fields.Copy() + for(var/key in diskette.fields) + src.active_record.fields[key] = diskette.fields[key] src.temp = "Load successful." if("eject") From 4815a0f37c62243d66bf08a3e4796b0aa41bd23f Mon Sep 17 00:00:00 2001 From: Nerd Lord Date: Mon, 4 Jan 2016 15:29:23 -0500 Subject: [PATCH 140/310] Simple animals no longer convert other damage types to brute using the brute damage proc, allowing you to make mobs immune to brute but not all damage types. No, no, do it properly not half-ass it --- .../gamemodes/miniantags/revenant/revenant.dm | 2 +- code/modules/holiday/halloween.dm | 4 ++-- code/modules/mining/equipment_locker.dm | 2 +- code/modules/mob/living/simple_animal/bot/bot.dm | 11 +++-------- .../living/simple_animal/guardian/guardian.dm | 2 +- .../mob/living/simple_animal/hostile/hostile.dm | 2 +- .../mob/living/simple_animal/hostile/mimic.dm | 2 +- .../living/simple_animal/hostile/mining_mobs.dm | 6 +++--- .../mob/living/simple_animal/hostile/mushroom.dm | 2 +- .../simple_animal/hostile/retaliate/retaliate.dm | 2 +- .../mob/living/simple_animal/simple_animal.dm | 16 +++++++++++----- 11 files changed, 26 insertions(+), 25 deletions(-) diff --git a/code/game/gamemodes/miniantags/revenant/revenant.dm b/code/game/gamemodes/miniantags/revenant/revenant.dm index ed153281399..cdbef5976ef 100644 --- a/code/game/gamemodes/miniantags/revenant/revenant.dm +++ b/code/game/gamemodes/miniantags/revenant/revenant.dm @@ -139,7 +139,7 @@ /mob/living/simple_animal/revenant/narsie_act() return //most humans will now be either bones or harvesters, but we're still un-alive. -/mob/living/simple_animal/revenant/adjustBruteLoss(amount) +/mob/living/simple_animal/revenant/adjustHealth(amount) if(!revealed) return essence = max(0, essence-amount) diff --git a/code/modules/holiday/halloween.dm b/code/modules/holiday/halloween.dm index 6f187ea2ae9..ea41f4f1807 100644 --- a/code/modules/holiday/halloween.dm +++ b/code/modules/holiday/halloween.dm @@ -212,7 +212,7 @@ step(I,direction) return -/mob/living/simple_animal/shade/howling_ghost/adjustBruteLoss() +/mob/living/simple_animal/shade/howling_ghost/adjustHealth() return /mob/living/simple_animal/shade/howling_ghost/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) @@ -272,7 +272,7 @@ /mob/living/simple_animal/hostile/retaliate/clown/insane/AttackTarget() return -/mob/living/simple_animal/hostile/retaliate/clown/insane/adjustBruteLoss() +/mob/living/simple_animal/hostile/retaliate/clown/insane/adjustHealth() if(prob(5)) playsound(loc, 'sound/spookoween/insane_low_laugh.ogg', 300, 1) diff --git a/code/modules/mining/equipment_locker.dm b/code/modules/mining/equipment_locker.dm index ac26ed6c52b..7d0e9756caf 100644 --- a/code/modules/mining/equipment_locker.dm +++ b/code/modules/mining/equipment_locker.dm @@ -742,7 +742,7 @@ O.loc = src.loc return -/mob/living/simple_animal/hostile/mining_drone/adjustBruteLoss() +/mob/living/simple_animal/hostile/mining_drone/adjustHealth() if(search_objects) SetOffenseBehavior() ..() diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm index d03ed22c237..c1b9737308f 100644 --- a/code/modules/mob/living/simple_animal/bot/bot.dm +++ b/code/modules/mob/living/simple_animal/bot/bot.dm @@ -163,12 +163,7 @@ else user << "[src] is in pristine condition." -/mob/living/simple_animal/bot/adjustBruteLoss(amount) - if(amount>0 && prob(10)) - new /obj/effect/decal/cleanable/oil(loc) - return ..(amount) - -/mob/living/simple_animal/bot/adjustFireLoss(amount) +/mob/living/simple_animal/bot/adjustHealth(amount) if(amount>0 && prob(10)) new /obj/effect/decal/cleanable/oil(loc) return ..(amount) @@ -710,12 +705,12 @@ Pass a positive integer as an argument to override a bot's default speed. if(usr in users) users.Remove(usr) return 1 - + if(topic_denied(usr)) usr << "[src]'s interface is not responding!" return 1 add_fingerprint(usr) - + if((href_list["power"]) && (bot_core.allowed(usr) || !locked)) if (on) turn_off() diff --git a/code/modules/mob/living/simple_animal/guardian/guardian.dm b/code/modules/mob/living/simple_animal/guardian/guardian.dm index afced5e62b3..849443eacf7 100644 --- a/code/modules/mob/living/simple_animal/guardian/guardian.dm +++ b/code/modules/mob/living/simple_animal/guardian/guardian.dm @@ -78,7 +78,7 @@ summoner << "Your [name] died somehow!" summoner.death() -/mob/living/simple_animal/hostile/guardian/adjustBruteLoss(amount) //The spirit is invincible, but passes on damage to the summoner +/mob/living/simple_animal/hostile/guardian/adjustHealth(amount) //The spirit is invincible, but passes on damage to the summoner var/damage = amount * damage_transfer if (summoner) if(loc == summoner) diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm index ffdde0fb938..06d620caa4c 100644 --- a/code/modules/mob/living/simple_animal/hostile/hostile.dm +++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm @@ -179,7 +179,7 @@ /mob/living/simple_animal/hostile/proc/Goto(target, delay, minimum_distance) walk_to(src, target, minimum_distance, delay) -/mob/living/simple_animal/hostile/adjustBruteLoss(damage) +/mob/living/simple_animal/hostile/adjustHealth(damage) ..(damage) if(!ckey && !stat && search_objects < 3 && damage > 0)//Not unconscious, and we don't ignore mobs if(search_objects)//Turn off item searching and ignore whatever item we were looking at, we're more concerned with fight or flight diff --git a/code/modules/mob/living/simple_animal/hostile/mimic.dm b/code/modules/mob/living/simple_animal/hostile/mimic.dm index 3db6b3e76f8..ed4ec3fdfde 100644 --- a/code/modules/mob/living/simple_animal/hostile/mimic.dm +++ b/code/modules/mob/living/simple_animal/hostile/mimic.dm @@ -70,7 +70,7 @@ visible_message("[src] starts to move!") attempt_open = 1 -/mob/living/simple_animal/hostile/mimic/crate/adjustBruteLoss(damage) +/mob/living/simple_animal/hostile/mimic/crate/adjustHealth(damage) trigger() ..(damage) 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 bfd17bc69db..29ae2bad90d 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm @@ -181,7 +181,7 @@ visible_message("The [P.name] was repelled by [src.name]'s girth!") return -/mob/living/simple_animal/hostile/asteroid/goldgrub/adjustBruteLoss(damage) +/mob/living/simple_animal/hostile/asteroid/goldgrub/adjustHealth(damage) idle_vision_range = 9 ..() @@ -384,7 +384,7 @@ pre_attack = 0 return -/mob/living/simple_animal/hostile/asteroid/goliath/adjustBruteLoss(damage) +/mob/living/simple_animal/hostile/asteroid/goliath/adjustHealth(damage) ranged_cooldown-- handle_preattack() ..() @@ -524,7 +524,7 @@ Inflate() ..() -/mob/living/simple_animal/hostile/asteroid/fugu/adjustBruteLoss(var/damage) +/mob/living/simple_animal/hostile/asteroid/fugu/adjustHealth(var/damage) if(wumbo) return ..() diff --git a/code/modules/mob/living/simple_animal/hostile/mushroom.dm b/code/modules/mob/living/simple_animal/hostile/mushroom.dm index fe593390418..03dbb7e29b6 100644 --- a/code/modules/mob/living/simple_animal/hostile/mushroom.dm +++ b/code/modules/mob/living/simple_animal/hostile/mushroom.dm @@ -61,7 +61,7 @@ deathmessage = "[src] fainted." ..() -/mob/living/simple_animal/hostile/mushroom/adjustBruteLoss(damage)//Possibility to flee from a fight just to make it more visually interesting +/mob/living/simple_animal/hostile/mushroom/adjustHealth(damage)//Possibility to flee from a fight just to make it more visually interesting if(!retreat_distance && prob(33)) retreat_distance = 5 spawn(30) 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 5c4a4621da0..f2c009f2c3b 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/retaliate.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/retaliate.dm @@ -51,7 +51,7 @@ H.enemies |= enemies return 0 -/mob/living/simple_animal/hostile/retaliate/adjustBruteLoss(damage) +/mob/living/simple_animal/hostile/retaliate/adjustHealth(damage) ..(damage) if(stat == CONSCIOUS) Retaliate() diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index f0c670e6d9a..ea563b51068 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -276,25 +276,31 @@ Proj.on_hit(src) return 0 +/mob/living/simple_animal/proc/adjustHealth(amount) + if(status_flags & GODMODE) + return 0 + bruteloss = min(max(bruteloss + amount, 0),(maxHealth*2)) + handle_regular_status_updates() + /mob/living/simple_animal/adjustBruteLoss(amount) if(damage_coeff[BRUTE]) - ..(amount*damage_coeff[BRUTE]) + adjustHealth(amount*damage_coeff[BRUTE]) /mob/living/simple_animal/adjustFireLoss(amount) if(damage_coeff[BURN]) - adjustBruteLoss(amount*damage_coeff[BURN]) + adjustHealth(amount*damage_coeff[BURN]) /mob/living/simple_animal/adjustOxyLoss(amount) if(damage_coeff[OXY]) - adjustBruteLoss(amount*damage_coeff[OXY]) + adjustHealth(amount*damage_coeff[OXY]) /mob/living/simple_animal/adjustToxLoss(amount) if(damage_coeff[TOX]) - ..(amount*damage_coeff[TOX]) + adjustHealth(amount*damage_coeff[TOX]) /mob/living/simple_animal/adjustCloneLoss(amount) if(damage_coeff[CLONE]) - ..(amount*damage_coeff[CLONE]) + adjustHealth(amount*damage_coeff[CLONE]) /mob/living/simple_animal/adjustStaminaLoss(amount) return From 3d32bde4a6242d28a8868a734e66fff126331786 Mon Sep 17 00:00:00 2001 From: Nerd Lord Date: Mon, 4 Jan 2016 15:41:08 -0500 Subject: [PATCH 141/310] I mean, you shouldn't make any of these immune to damage types but it won't break the healing if you do. --- code/game/gamemodes/miniantags/bot_swarm/swarmer.dm | 2 +- code/game/gamemodes/miniantags/morph/morph.dm | 2 +- code/modules/mob/living/simple_animal/constructs.dm | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm b/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm index da0a9add2ce..b3b032bf8d4 100644 --- a/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm +++ b/code/game/gamemodes/miniantags/bot_swarm/swarmer.dm @@ -486,7 +486,7 @@ return src << "Attempting to repair damage to our body, stand by..." if(do_mob(src, src, 100)) - adjustBruteLoss(-100) + adjustHealth(-100) src << "We successfully repaired ourselves." /mob/living/simple_animal/hostile/swarmer/proc/ToggleLight() diff --git a/code/game/gamemodes/miniantags/morph/morph.dm b/code/game/gamemodes/miniantags/morph/morph.dm index be09a38c2c1..9576cf396f8 100644 --- a/code/game/gamemodes/miniantags/morph/morph.dm +++ b/code/game/gamemodes/miniantags/morph/morph.dm @@ -153,7 +153,7 @@ if(do_after(src, 30, target = L)) visible_message("[src] swallows [target] whole!") L.loc = src - adjustBruteLoss(-50) + adjustHealth(-50) return else if(istype(target,/obj/item)) // Eat items just to be annoying var/obj/item/I = target diff --git a/code/modules/mob/living/simple_animal/constructs.dm b/code/modules/mob/living/simple_animal/constructs.dm index ee584f7cbbe..5ea94615935 100644 --- a/code/modules/mob/living/simple_animal/constructs.dm +++ b/code/modules/mob/living/simple_animal/constructs.dm @@ -57,7 +57,7 @@ /mob/living/simple_animal/hostile/construct/attack_animal(mob/living/simple_animal/M) if(istype(M, /mob/living/simple_animal/hostile/construct/builder)) if(health < maxHealth) - adjustBruteLoss(-5) + adjustHealth(-5) if(src != M) Beam(M,icon_state="sendbeam",icon='icons/effects/effects.dmi',time=4) M.visible_message("[M] repairs some of \the [src]'s dents.", \ From 31281dabf71ef7cbc4d65913fc952b3c3300ad3b Mon Sep 17 00:00:00 2001 From: Bjorn Neergaard Date: Mon, 4 Jan 2016 15:17:26 -0600 Subject: [PATCH 142/310] Add IE detection Now we beg the user to upgrade, or to switch to No Frills mode Also fix some minor IE bugs --- code/modules/tgui/tgui.dm | 12 ++++++++++ tgui/assets/tgui.css | 2 +- tgui/assets/tgui.js | 18 +++++++-------- tgui/scripts/components/button.ract | 11 +++++---- tgui/scripts/components/warnings.ract | 33 +++++++++++++++++++++++++++ tgui/scripts/dragresize.coffee | 2 ++ tgui/scripts/tgui.ract | 2 ++ tgui/styles/components/notice.styl | 3 +++ tgui/styles/core/text.styl | 2 +- 9 files changed, 69 insertions(+), 16 deletions(-) create mode 100644 tgui/scripts/components/warnings.ract diff --git a/code/modules/tgui/tgui.dm b/code/modules/tgui/tgui.dm index 48194d94802..0d775e1824e 100644 --- a/code/modules/tgui/tgui.dm +++ b/code/modules/tgui/tgui.dm @@ -278,6 +278,18 @@ var/action = href_list["action"] // Pull the action out. href_list -= "action" + // Handle any special actions. + switch(action) + if("tgui:ie") + user << link("http://windows.microsoft.com/en-us/internet-explorer/download-ie") + return + if("tgui:fancy") + user.client.prefs.tgui_fancy = TRUE + return + if("tgui:nofrills") + user.client.prefs.tgui_fancy = FALSE + return + var/update = src_object.ui_act(action, href_list, state) // Call ui_act() on the src_object. if(src_object && update) SStgui.update_uis(src_object) // If we have a src_object and its ui_act() told us to update. diff --git a/tgui/assets/tgui.css b/tgui/assets/tgui.css index a1932ad1687..15539c37f2c 100644 --- a/tgui/assets/tgui.css +++ b/tgui/assets/tgui.css @@ -1 +1 @@ -.normal{color:#40628a}.good{color:#537d29}.average{color:#be6209}.bad{color:#b00e0e}.highlight,.label{color:#8ba5c4}.dark{color:#272727}html{box-sizing:border-box;min-height:100%;margin:0;cursor:default}*,:after,:before{box-sizing:inherit}body{min-height:100%;height:100%;margin:0 6px;background-color:#202020;font-family:Verdana,Geneva,sans-serif;font-size:12px;color:#fff}main{display:block;margin-top:32px;padding-top:3px}hr{height:2px;background-color:#40628a;border:none}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}.bar .barText,span.button{color:#fff;font-size:12px;font-weight:400;font-style:normal;text-decoration:none}.bold{font-weight:700}.italic{font-style:italic}[unselectable]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.bar{display:inline-block;position:relative;vertical-align:middle;width:100%;height:20px;line-height:17px;padding:1px;border:1px solid #40628a;background:#272727}.bar .barText{position:absolute;top:0;right:3px}.bar .barFill{display:block;height:100%;transition:background-color 1s;background-color:#40628a}.bar .barFill.good{background-color:#537d29}.bar .barFill.average{background-color:#be6209}.bar .barFill.bad{background-color:#b00e0e}.bar .barFill.highlight{background-color:#8ba5c4}span.button{display:inline-block;vertical-align:middle;height:20px;line-height:19px;padding:0 5px;white-space:nowrap;transition:background-color .25s,box-shadow .25s}span.button .fa{padding-right:2px}span.button.normal{background-color:#40628a}span.button.normal:focus,span.button.normal:hover{outline:0;box-shadow:inset 0 0 100px 100px hsla(0,0%,100%,.15)}span.button.disabled{background-color:#999}span.button.selected{background-color:#2f943c}span.button.caution{background-color:#9a9d00}span.button.danger{background-color:#9d0808}span.button.gridable{width:125px;margin:2px 0}div.display,div.notice{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)}div.display header,div.notice header,div.subdisplay header{display:block;position:relative;width:100%;padding:0 4px;margin-bottom:6px;border-bottom:2px solid #40628a}div.display header .buttonRight,div.notice header .buttonRight,div.subdisplay header .buttonRight{position:absolute;bottom:6px;right:4px}div.display article,div.notice article,div.subdisplay article{display:table;width:100%;border-spacing:4px 6px}div.notice{background-color:#bb9b68;background-image:repeating-linear-gradient(-45deg,#bb9b68,#bb9b68 10px,#b1905d 0,#b1905d 20px);margin:8px 0;box-shadow:none;color:#000;font-weight:700;font-style:italic}div.notice .button{outline:1px solid #272727}div.notice .label{color:#000}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)}section .content,section .label,section .line{display:table-cell;margin:0;text-align:left;vertical-align:middle}section{display:table-row;width:100%;padding:3px 0}section:not(first-child){padding-top:4px}section .label{width:1%;padding-right:32px;white-space:nowrap;color:#8ba5c4}section .content:not(:last-child){padding-right:16px}section .line{width:100%}section .buttoninfo{margin-left:5px}div.subdisplay{width:100%;margin:0}header.titlebar .close,header.titlebar .minimize{display:inline-block;position:relative;padding:7px;margin:-7px;color:#98b0c3}header.titlebar .close:hover,header.titlebar .minimize:hover{color:#a7bccc}header.titlebar{position:fixed;top:0;left:0;width:100%;height:32px;background-color:#363636;box-shadow:0 3px 3px rgba(0,0,0,.1)}header.titlebar .statusicon{position:absolute;top:4px;left:12px;transition:color .5s}header.titlebar .title{position:absolute;top:6px;left:46px;color:#98b0c3;font-size:16px;white-space:nowrap}header.titlebar .minimize{position:absolute;top:6px;right:46px}header.titlebar .close{position:absolute;top:4px;right:12px}.wf-inactive .minimize:after{content:"-"}.wf-inactive .close:after{content:"X"}body.generic{background:linear-gradient(180deg,#2a2a2a 0,#202020)}body.generic,body.nanotrasen{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2a2a2a',endColorstr='#ff202020',GradientType=0)}body.nanotrasen{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjAiIHZpZXdCb3g9IjAgMCA0MjUgMjAwIiBvcGFjaXR5PSIuMjUiPgogIDxwYXRoIGQ9Im0gMTc4LjAwMzk5LDAuMDM4NjkgLTcxLjIwMzkzLDAgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIC02Ljc2MTM0LDYuMDI1NTUgbCAwLDE4Ny44NzE0NyBhIDYuNzYxMzQyMiw2LjAyNTU0OTUgMCAwIDAgNi43NjEzNCw2LjAyNTU0IGwgNTMuMTA3MiwwIGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCA2Ljc2MTM1LC02LjAyNTU0IGwgMCwtMTAxLjU0NDAxOCA3Mi4yMTYyOCwxMDQuNjk5Mzk4IGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCA1Ljc2MDE1LDIuODcwMTYgbCA3My41NTQ4NywwIGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCA2Ljc2MTM1LC02LjAyNTU0IGwgMCwtMTg3Ljg3MTQ3IGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCAtNi43NjEzNSwtNi4wMjU1NSBsIC01NC43MTY0NCwwIGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCAtNi43NjEzMyw2LjAyNTU1IGwgMCwxMDIuNjE5MzUgTCAxODMuNzY0MTMsMi45MDg4NiBhIDYuNzYxMzQyMiw2LjAyNTU0OTUgMCAwIDAgLTUuNzYwMTQsLTIuODcwMTcgeiIgLz4KICA8cGF0aCBkPSJNIDQuODQ0NjMzMywyMi4xMDg3NSBBIDEzLjQxMjAzOSwxMi41MDE4NDIgMCAwIDEgMTMuNDc3NTg4LDAuMDM5MjQgbCA2Ni4xMTgzMTUsMCBhIDUuMzY0ODE1OCw1LjAwMDczNyAwIDAgMSA1LjM2NDgyMyw1LjAwMDczIGwgMCw3OS44NzkzMSB6IiAvPgogIDxwYXRoIGQ9Im0gNDIwLjE1NTM1LDE3Ny44OTExOSBhIDEzLjQxMjAzOCwxMi41MDE4NDIgMCAwIDEgLTguNjMyOTUsMjIuMDY5NTEgbCAtNjYuMTE4MzIsMCBhIDUuMzY0ODE1Miw1LjAwMDczNyAwIDAgMSAtNS4zNjQ4MiwtNS4wMDA3NCBsIDAsLTc5Ljg3OTMxIHoiIC8+Cjwvc3ZnPgo=") no-repeat fixed center/70% 70%,linear-gradient(180deg,#2a2a2a 0,#202020)} \ No newline at end of file +.normal{color:#40628a}.good{color:#537d29}.average{color:#be6209}.bad{color:#b00e0e}.highlight,.label{color:#8ba5c4}.dark{color:#272727}html{box-sizing:border-box;min-height:100%;margin:0;cursor:default}*,:after,:before{box-sizing:inherit}body{min-height:100%;height:100%;margin:0 6px;background-color:#202020;font-family:Verdana,Geneva,sans-serif;font-size:12px;color:#fff}main{display:block;margin-top:32px;padding-top:3px}hr{height:2px;background-color:#40628a;border:none}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}.bar .barText,span.button{color:#fff;font-size:12px;font-weight:400;font-style:normal;text-decoration:none}.bold{font-weight:700}.italic{font-style:italic}[unselectable=on]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.bar{display:inline-block;position:relative;vertical-align:middle;width:100%;height:20px;line-height:17px;padding:1px;border:1px solid #40628a;background:#272727}.bar .barText{position:absolute;top:0;right:3px}.bar .barFill{display:block;height:100%;transition:background-color 1s;background-color:#40628a}.bar .barFill.good{background-color:#537d29}.bar .barFill.average{background-color:#be6209}.bar .barFill.bad{background-color:#b00e0e}.bar .barFill.highlight{background-color:#8ba5c4}span.button{display:inline-block;vertical-align:middle;height:20px;line-height:19px;padding:0 5px;white-space:nowrap;transition:background-color .25s,box-shadow .25s}span.button .fa{padding-right:2px}span.button.normal{background-color:#40628a}span.button.normal:focus,span.button.normal:hover{outline:0;box-shadow:inset 0 0 100px 100px hsla(0,0%,100%,.15)}span.button.disabled{background-color:#999}span.button.selected{background-color:#2f943c}span.button.caution{background-color:#9a9d00}span.button.danger{background-color:#9d0808}span.button.gridable{width:125px;margin:2px 0}div.display,div.notice{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)}div.display header,div.notice header,div.subdisplay header{display:block;position:relative;width:100%;padding:0 4px;margin-bottom:6px;border-bottom:2px solid #40628a}div.display header .buttonRight,div.notice header .buttonRight,div.subdisplay header .buttonRight{position:absolute;bottom:6px;right:4px}div.display article,div.notice article,div.subdisplay article{display:table;width:100%;border-spacing:4px 6px}div.notice{background-color:#bb9b68;background-image:repeating-linear-gradient(-45deg,#bb9b68,#bb9b68 10px,#b1905d 0,#b1905d 20px);margin:8px 0;box-shadow:none;color:#000;font-weight:700;font-style:italic}div.notice .button{outline:1px solid #272727}div.notice .label{color:#000}div.notice hr{background-color:#272727}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)}section .content,section .label,section .line{display:table-cell;margin:0;text-align:left;vertical-align:middle}section{display:table-row;width:100%;padding:3px 0}section:not(first-child){padding-top:4px}section .label{width:1%;padding-right:32px;white-space:nowrap;color:#8ba5c4}section .content:not(:last-child){padding-right:16px}section .line{width:100%}section .buttoninfo{margin-left:5px}div.subdisplay{width:100%;margin:0}header.titlebar .close,header.titlebar .minimize{display:inline-block;position:relative;padding:7px;margin:-7px;color:#98b0c3}header.titlebar .close:hover,header.titlebar .minimize:hover{color:#a7bccc}header.titlebar{position:fixed;top:0;left:0;width:100%;height:32px;background-color:#363636;box-shadow:0 3px 3px rgba(0,0,0,.1)}header.titlebar .statusicon{position:absolute;top:4px;left:12px;transition:color .5s}header.titlebar .title{position:absolute;top:6px;left:46px;color:#98b0c3;font-size:16px;white-space:nowrap}header.titlebar .minimize{position:absolute;top:6px;right:46px}header.titlebar .close{position:absolute;top:4px;right:12px}.wf-inactive .minimize:after{content:"-"}.wf-inactive .close:after{content:"X"}body.generic{background:linear-gradient(180deg,#2a2a2a 0,#202020)}body.generic,body.nanotrasen{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2a2a2a',endColorstr='#ff202020',GradientType=0)}body.nanotrasen{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjAiIHZpZXdCb3g9IjAgMCA0MjUgMjAwIiBvcGFjaXR5PSIuMjUiPgogIDxwYXRoIGQ9Im0gMTc4LjAwMzk5LDAuMDM4NjkgLTcxLjIwMzkzLDAgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIC02Ljc2MTM0LDYuMDI1NTUgbCAwLDE4Ny44NzE0NyBhIDYuNzYxMzQyMiw2LjAyNTU0OTUgMCAwIDAgNi43NjEzNCw2LjAyNTU0IGwgNTMuMTA3MiwwIGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCA2Ljc2MTM1LC02LjAyNTU0IGwgMCwtMTAxLjU0NDAxOCA3Mi4yMTYyOCwxMDQuNjk5Mzk4IGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCA1Ljc2MDE1LDIuODcwMTYgbCA3My41NTQ4NywwIGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCA2Ljc2MTM1LC02LjAyNTU0IGwgMCwtMTg3Ljg3MTQ3IGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCAtNi43NjEzNSwtNi4wMjU1NSBsIC01NC43MTY0NCwwIGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCAtNi43NjEzMyw2LjAyNTU1IGwgMCwxMDIuNjE5MzUgTCAxODMuNzY0MTMsMi45MDg4NiBhIDYuNzYxMzQyMiw2LjAyNTU0OTUgMCAwIDAgLTUuNzYwMTQsLTIuODcwMTcgeiIgLz4KICA8cGF0aCBkPSJNIDQuODQ0NjMzMywyMi4xMDg3NSBBIDEzLjQxMjAzOSwxMi41MDE4NDIgMCAwIDEgMTMuNDc3NTg4LDAuMDM5MjQgbCA2Ni4xMTgzMTUsMCBhIDUuMzY0ODE1OCw1LjAwMDczNyAwIDAgMSA1LjM2NDgyMyw1LjAwMDczIGwgMCw3OS44NzkzMSB6IiAvPgogIDxwYXRoIGQ9Im0gNDIwLjE1NTM1LDE3Ny44OTExOSBhIDEzLjQxMjAzOCwxMi41MDE4NDIgMCAwIDEgLTguNjMyOTUsMjIuMDY5NTEgbCAtNjYuMTE4MzIsMCBhIDUuMzY0ODE1Miw1LjAwMDczNyAwIDAgMSAtNS4zNjQ4MiwtNS4wMDA3NCBsIDAsLTc5Ljg3OTMxIHoiIC8+Cjwvc3ZnPgo=") no-repeat fixed center/70% 70%,linear-gradient(180deg,#2a2a2a 0,#202020)} \ No newline at end of file diff --git a/tgui/assets/tgui.js b/tgui/assets/tgui.js index bbb3bdc5449..e3a1a167301 100644 --- a/tgui/assets/tgui.js +++ b/tgui/assets/tgui.js @@ -1,9 +1,9 @@ -!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-1}}([].indexOf||function(t){for(V=this.length;V--&&this[V]!==t;);return V}),item:function(t){return this[t]||null},remove:function(){for(var t,e=0;e0||-1)*Math.floor(Math.abs(e))),e},ToPrimitive:function(e){var n,r,i;if(R(e))return e;if(r=e.valueOf,t(r)&&(n=r.call(e),R(n)))return n;if(i=e.toString,t(i)&&(n=i.call(e),R(n)))return n;throw new TypeError},ToObject:function(t){if(null==t)throw new TypeError("can't convert "+t+" to object");return r(t)},ToUint32:function(t){return t>>>0}},D=function(){};M(a,{bind:function(e){var n=this;if(!t(n))throw new TypeError("Function.prototype.bind called on incompatible "+n);for(var i,a=l.call(arguments,1),o=function(){if(this instanceof i){var t=n.apply(this,d.call(a,l.call(arguments)));return r(t)===t?t:this}return n.apply(e,d.call(a,l.call(arguments)))},s=g(0,n.length-a.length),u=[],c=0;s>c;c++)h.call(u,"$"+c);return i=Function("binder","return function ("+u.join(",")+"){ return binder.apply(this, arguments); }")(o),n.prototype&&(D.prototype=n.prototype,i.prototype=new D,D.prototype=null),i}});var U=m.bind(i.hasOwnProperty),V=m.bind(i.toString),B=m.bind(l),q=v.bind(l),z=m.bind(s.slice),H=m.bind(s.split),W=m.bind(s.indexOf),$=m.bind(h),G=m.bind(i.propertyIsEnumerable),K=m.bind(n.sort),Q=e.isArray||function(t){return"[object Array]"===V(t)},Y=1!==[].unshift(0);M(n,{unshift:function(){return f.apply(this,arguments),this.length}},Y),M(e,{isArray:Q});var J=r("a"),Z="a"!==J[0]||!(0 in J),X=function(t){var e=!0,n=!0;return t&&(t.call("foo",function(t,n,r){"object"!=typeof r&&(e=!1)}),t.call([1],function(){"use strict";n="string"==typeof this},"x")),!!t&&e&&n};M(n,{forEach:function(e){var n,r=I.ToObject(this),i=Z&&A(this)?H(this,""):r,a=-1,o=I.ToUint32(i.length);if(arguments.length>1&&(n=arguments[1]),!t(e))throw new TypeError("Array.prototype.forEach callback must be a function");for(;++a1&&(r=arguments[1]),!t(n))throw new TypeError("Array.prototype.map callback must be a function");for(var u=0;o>u;u++)u in a&&(void 0===r?s[u]=n(a[u],u,i):s[u]=n.call(r,a[u],u,i));return s}},!X(n.map)),M(n,{filter:function(e){var n,r,i=I.ToObject(this),a=Z&&A(this)?H(this,""):i,o=I.ToUint32(a.length),s=[];if(arguments.length>1&&(r=arguments[1]),!t(e))throw new TypeError("Array.prototype.filter callback must be a function");for(var u=0;o>u;u++)u in a&&(n=a[u],(void 0===r?e(n,u,i):e.call(r,n,u,i))&&$(s,n));return s}},!X(n.filter)),M(n,{every:function(e){var n,r=I.ToObject(this),i=Z&&A(this)?H(this,""):r,a=I.ToUint32(i.length);if(arguments.length>1&&(n=arguments[1]),!t(e))throw new TypeError("Array.prototype.every callback must be a function");for(var o=0;a>o;o++)if(o in i&&!(void 0===n?e(i[o],o,r):e.call(n,i[o],o,r)))return!1;return!0}},!X(n.every)),M(n,{some:function(e){var n,r=I.ToObject(this),i=Z&&A(this)?H(this,""):r,a=I.ToUint32(i.length);if(arguments.length>1&&(n=arguments[1]),!t(e))throw new TypeError("Array.prototype.some callback must be a function");for(var o=0;a>o;o++)if(o in i&&(void 0===n?e(i[o],o,r):e.call(n,i[o],o,r)))return!0;return!1}},!X(n.some));var tt=!1;n.reduce&&(tt="object"==typeof n.reduce.call("es5",function(t,e,n,r){return r})),M(n,{reduce:function(e){var n=I.ToObject(this),r=Z&&A(this)?H(this,""):n,i=I.ToUint32(r.length);if(!t(e))throw new TypeError("Array.prototype.reduce callback must be a function");if(0===i&&1===arguments.length)throw new TypeError("reduce of empty array with no initial value");var a,o=0;if(arguments.length>=2)a=arguments[1];else for(;;){if(o in r){a=r[o++];break}if(++o>=i)throw new TypeError("reduce of empty array with no initial value")}for(;i>o;o++)o in r&&(a=e(a,r[o],o,n));return a}},!tt);var et=!1;n.reduceRight&&(et="object"==typeof n.reduceRight.call("es5",function(t,e,n,r){return r})),M(n,{reduceRight:function(e){var n=I.ToObject(this),r=Z&&A(this)?H(this,""):n,i=I.ToUint32(r.length);if(!t(e))throw new TypeError("Array.prototype.reduceRight callback must be a function");if(0===i&&1===arguments.length)throw new TypeError("reduceRight of empty array with no initial value");var a,o=i-1;if(arguments.length>=2)a=arguments[1];else for(;;){if(o in r){a=r[o--];break}if(--o<0)throw new TypeError("reduceRight of empty array with no initial value")}if(0>o)return a;do o in r&&(a=e(a,r[o],o,n));while(o--);return a}},!et);var nt=n.indexOf&&-1!==[0,1].indexOf(1,2);M(n,{indexOf:function(t){var e=Z&&A(this)?H(this,""):I.ToObject(this),n=I.ToUint32(e.length);if(0===n)return-1;var r=0;for(arguments.length>1&&(r=I.ToInteger(arguments[1])),r=r>=0?r:g(0,n+r);n>r;r++)if(r in e&&e[r]===t)return r;return-1}},nt);var rt=n.lastIndexOf&&-1!==[0,1].lastIndexOf(0,-3);M(n,{lastIndexOf:function(t){var e=Z&&A(this)?H(this,""):I.ToObject(this),n=I.ToUint32(e.length);if(0===n)return-1;var r=n-1;for(arguments.length>1&&(r=b(r,I.ToInteger(arguments[1]))),r=r>=0?r:n-Math.abs(r);r>=0;r--)if(r in e&&t===e[r])return r;return-1}},rt);var it=function(){var t=[1,2],e=t.splice();return 2===t.length&&Q(e)&&0===e.length}();M(n,{splice:function(t,e){return 0===arguments.length?[]:p.apply(this,arguments)}},!it);var at=function(){var t={};return n.splice.call(t,0,0,1),1===t.length}();M(n,{splice:function(t,e){if(0===arguments.length)return[];var n=arguments;return this.length=g(I.ToInteger(this.length),0),arguments.length>0&&"number"!=typeof e&&(n=B(arguments),n.length<2?$(n,this.length-t):n[1]=I.ToInteger(e)),p.apply(this,n)}},!at);var ot=function(){var t=new e(1e5);return t[8]="x",t.splice(1,1),7===t.indexOf("x")}(),st=function(){var t=256,e=[];return e[t]="a",e.splice(t+1,0,"b"),"a"===e[t]}();M(n,{splice:function(t,e){for(var n,r=I.ToObject(this),i=[],a=I.ToUint32(r.length),s=I.ToInteger(t),u=0>s?g(a+s,0):b(s,a),c=b(g(I.ToInteger(e),0),a-u),l=0;c>l;)n=o(u+l),U(r,n)&&(i[l]=r[n]),l+=1;var p,h=B(arguments,2),f=h.length;if(c>f){for(l=u;a-c>l;)n=o(l+c),p=o(l+f),U(r,n)?r[p]=r[n]:delete r[p],l+=1;for(l=a;l>a-c+f;)delete r[l-1],l-=1}else if(f>c)for(l=a-c;l>u;)n=o(l+c-1),p=o(l+f-1),U(r,n)?r[p]=r[n]:delete r[p],l-=1;l=u;for(var d=0;d=0&&!Q(e)&&t(e.callee)},At=St(arguments)?St:Ot;M(r,{keys:function(e){var n=t(e),r=At(e),i=null!==e&&"object"==typeof e,a=i&&A(e);if(!i&&!n&&!r)throw new TypeError("Object.keys called on a non-object");var s=[],u=yt&&n;if(a&&wt||r)for(var c=0;ch;h++){var f=Tt[h];p&&"constructor"===f||!U(e,f)||$(s,f)}return s}});var Pt=r.keys&&function(){return 2===r.keys(arguments).length}(1,2),jt=r.keys&&function(){var t=r.keys(arguments);return 1!==arguments.length||1!==t.length||1!==t[0]}(1),Nt=r.keys;M(r,{keys:function(t){return Nt(At(t)?B(t):t)}},!Pt||jt);var Ft=-621987552e5,Mt="-000001",Rt=Date.prototype.toISOString&&-1===new Date(Ft).toISOString().indexOf(Mt),Lt=Date.prototype.toISOString&&"1969-12-31T23:59:59.999Z"!==new Date(-1).toISOString();M(Date.prototype,{toISOString:function(){var t,e,n,r,i;if(!isFinite(this))throw new RangeError("Date.prototype.toISOString called on non-finite value.");for(r=this.getUTCFullYear(),i=this.getUTCMonth(),r+=Math.floor(i/12),i=(i%12+12)%12,t=[i+1,this.getUTCDate(),this.getUTCHours(),this.getUTCMinutes(),this.getUTCSeconds()],r=(0>r?"-":r>9999?"+":"")+z("00000"+Math.abs(r),r>=0&&9999>=r?-4:-6),e=t.length;e--;)n=t[e],10>n&&(t[e]="0"+n);return r+"-"+B(t,0,2).join("-")+"T"+B(t,2).join(":")+"."+z("000"+this.getUTCMilliseconds(),-3)+"Z"}},Rt||Lt);var It=function(){try{return Date.prototype.toJSON&&null===new Date(NaN).toJSON()&&-1!==new Date(Ft).toJSON().indexOf(Mt)&&Date.prototype.toJSON.call({toISOString:function(){return!0}})}catch(t){return!1}}();It||(Date.prototype.toJSON=function(e){var n=r(this),i=I.ToPrimitive(n);if("number"==typeof i&&!isFinite(i))return null;var a=n.toISOString;if(!t(a))throw new TypeError("toISOString property is not callable");return a.call(n)});var Dt=1e15===Date.parse("+033658-09-27T01:46:40.000Z"),Ut=!isNaN(Date.parse("2012-04-04T24:00:00.500Z"))||!isNaN(Date.parse("2012-11-31T23:59:59.000Z"))||!isNaN(Date.parse("2012-12-31T23:59:60.000Z")),Vt=isNaN(Date.parse("2000-01-01T00:00:00.000Z"));if(Vt||Ut||!Dt){var Bt=Math.pow(2,31)-1,qt=L(new Date(1970,0,1,0,0,0,Bt+1).getTime());Date=function(t){var e=function(n,r,i,a,s,u,c){var l,p=arguments.length;if(this instanceof t){var h=u,f=c;if(qt&&p>=7&&c>Bt){var d=Math.floor(c/Bt)*Bt,m=Math.floor(d/1e3);h+=m,f-=1e3*m}l=1===p&&o(n)===n?new t(e.parse(n)):p>=7?new t(n,r,i,a,s,h,f):p>=6?new t(n,r,i,a,s,h):p>=5?new t(n,r,i,a,s):p>=4?new t(n,r,i,a):p>=3?new t(n,r,i):p>=2?new t(n,r):p>=1?new t(n):new t}else l=t.apply(this,arguments);return R(l)||M(l,{constructor:e},!0),l},n=RegExp("^(\\d{4}|[+-]\\d{6})(?:-(\\d{2})(?:-(\\d{2})(?:T(\\d{2}):(\\d{2})(?::(\\d{2})(?:(\\.\\d{1,}))?)?(Z|(?:([-+])(\\d{2}):(\\d{2})))?)?)?)?$"),r=[0,31,59,90,120,151,181,212,243,273,304,334,365],i=function(t,e){var n=e>1?1:0;return r[e]+Math.floor((t-1969+n)/4)-Math.floor((t-1901+n)/100)+Math.floor((t-1601+n)/400)+365*(t-1970)},a=function(e){var n=0,r=e;if(qt&&r>Bt){var i=Math.floor(r/Bt)*Bt,a=Math.floor(i/1e3);n+=a,r-=1e3*a}return u(new t(1970,0,1,0,0,n,r))};for(var s in t)U(t,s)&&(e[s]=t[s]);M(e,{now:t.now,UTC:t.UTC},!0),e.prototype=t.prototype,M(e.prototype,{constructor:e},!0);var c=function(e){var r=n.exec(e);if(r){var o,s=u(r[1]),c=u(r[2]||1)-1,l=u(r[3]||1)-1,p=u(r[4]||0),h=u(r[5]||0),f=u(r[6]||0),d=Math.floor(1e3*u(r[7]||0)),m=!(!r[4]||r[8]),v="-"===r[9]?1:-1,g=u(r[10]||0),b=u(r[11]||0),y=h>0||f>0||d>0;return(y?24:25)>p&&60>h&&60>f&&1e3>d&&c>-1&&12>c&&24>g&&60>b&&l>-1&&l=-864e13&&864e13>=o)?o:NaN}return t.parse.apply(this,arguments)};return M(e,{parse:c}),e}(Date)}Date.now||(Date.now=function(){return(new Date).getTime()});var zt=c.toFixed&&("0.000"!==8e-5.toFixed(3)||"1"!==.9.toFixed(0)||"1.25"!==1.255.toFixed(2)||"1000000000000000128"!==0xde0b6b3a7640080.toFixed(0)),Ht={base:1e7,size:6,data:[0,0,0,0,0,0],multiply:function(t,e){for(var n=-1,r=e;++n=0;)n+=Ht.data[e],Ht.data[e]=Math.floor(n/t),n=n%t*Ht.base},numToString:function(){for(var t=Ht.size,e="";--t>=0;)if(""!==e||0===t||0!==Ht.data[t]){var n=o(Ht.data[t]);""===e?e=n:e+=z("0000000",0,7-n.length)+n}return e},pow:function ue(t,e,n){return 0===e?n:e%2===1?ue(t,e-1,n*t):ue(t*t,e/2,n)},log:function(t){for(var e=0,n=t;n>=4096;)e+=12,n/=4096;for(;n>=2;)e+=1,n/=2;return e}},Wt=function(t){var e,n,r,i,a,s,c,l;if(e=u(t),e=L(e)?0:Math.floor(e),0>e||e>20)throw new RangeError("Number.toFixed called with invalid number of decimals");if(n=u(this),L(n))return"NaN";if(-1e21>=n||n>=1e21)return o(n);if(r="",0>n&&(r="-",n=-n),i="0",n>1e-21)if(a=Ht.log(n*Ht.pow(2,69,1))-69,s=0>a?n*Ht.pow(2,-a,1):n/Ht.pow(2,a,1),s*=4503599627370496,a=52-a,a>0){for(Ht.multiply(0,s),c=e;c>=7;)Ht.multiply(1e7,0),c-=7;for(Ht.multiply(Ht.pow(10,c,1),0),c=a-1;c>=23;)Ht.divide(1<<23),c-=23;Ht.divide(1<0?(l=i.length,i=e>=l?r+z("0.0000000000000000000",0,e-l+2)+i:r+z(i,0,l-e)+"."+z(i,l-e)):i=r+i,i};M(c,{toFixed:Wt},zt);var $t=function(){try{return"1"===1..toPrecision(void 0)}catch(t){return!0}}(),Gt=c.toPrecision;M(c,{toPrecision:function(t){return void 0===t?Gt.call(this):Gt.call(this,t)}},$t),2!=="ab".split(/(?:ab)*/).length||4!==".".split(/(.?)(.?)/).length||"t"==="tesst".split(/(s)*/)[1]||4!=="test".split(/(?:)/,-1).length||"".split(/.?/).length||".".split(/()()/).length>1?!function(){var t=void 0===/()??/.exec("")[1],e=Math.pow(2,32)-1;s.split=function(n,r){var i=this+"";if(void 0===n&&0===r)return[];if(!T(n))return H(this,n,r);var a,o,s,u,c=[],l=(n.ignoreCase?"i":"")+(n.multiline?"m":"")+(n.unicode?"u":"")+(n.sticky?"y":""),p=0,f=RegExp(n.source,l+"g");t||(a=RegExp("^"+f.source+"$(?!\\s)",l));var d=void 0===r?e:I.ToUint32(r);for(o=f.exec(i);o&&(s=o.index+o[0].length,!(s>p&&($(c,z(i,p,o.index)),!t&&o.length>1&&o[0].replace(a,function(){for(var t=1;t1&&o.index=d)));)f.lastIndex===o.index&&f.lastIndex++,o=f.exec(i);return p===i.length?(u||!f.test(""))&&$(c,""):$(c,z(i,p)),c.length>d?z(c,0,d):c}}():"0".split(void 0,0).length&&(s.split=function(t,e){return void 0===t&&0===e?[]:H(this,t,e)});var Kt=s.replace,Qt=function(){var t=[];return"x".replace(/x(.)?/g,function(e,n){$(t,n)}),1===t.length&&void 0===t[0]}();Qt||(s.replace=function(e,n){var r=t(n),i=T(e)&&/\)[*?]/.test(e.source);if(r&&i){var a=function(t){var r=arguments.length,i=e.lastIndex;e.lastIndex=0;var a=e.exec(t)||[];return e.lastIndex=i,$(a,arguments[r-2],arguments[r-1]),n.apply(this,a)};return Kt.call(this,e,a)}return Kt.call(this,e,n)});var Yt=s.substr,Jt="".substr&&"b"!=="0b".substr(-1);M(s,{substr:function(t,e){var n=t;return 0>t&&(n=g(this.length+t,0)),Yt.call(this,n,e)}},Jt);var Zt=" \n\x0B\f\r   ᠎              \u2028\u2029\ufeff",Xt="​",te="["+Zt+"]",ee=RegExp("^"+te+te+"*"),ne=RegExp(te+te+"*$"),re=s.trim&&(Zt.trim()||!Xt.trim());M(s,{trim:function(){if(void 0===this||null===this)throw new TypeError("can't convert "+this+" to object");return o(this).replace(ee,"").replace(ne,"")}},re);var ie=s.lastIndexOf&&-1!=="abcあい".lastIndexOf("あい",2);M(s,{lastIndexOf:function(t){if(void 0===this||null===this)throw new TypeError("can't convert "+this+" to object");for(var e=o(this),n=o(t),r=arguments.length>1?u(arguments[1]):NaN,i=L(r)?1/0:I.ToInteger(r),a=b(g(i,0),e.length),s=n.length,c=a+s;c>0;){c=g(0,c-s);var l=W(z(e,c,a+s),n);if(-1!==l)return c+l}return-1}},ie);var ae=s.lastIndexOf;if(M(s,{lastIndexOf:function(t){return ae.apply(this,arguments)}},1!==s.lastIndexOf.length),(8!==parseInt(Zt+"08")||22!==parseInt(Zt+"0x16"))&&(parseInt=function(t){var e=/^[\-+]?0[xX]/;return function(n,r){var i=o(n).trim(),a=u(r)||(e.test(i)?16:10);return t(i,a)}}(parseInt)),new RangeError("test")+""!="RangeError: test"){var oe=function(){if(void 0===this||null===this)throw new TypeError("can't convert "+this+" to object");var t=this.name;void 0===t?t="Error":"string"!=typeof t&&(t=o(t));var e=this.message;return void 0===e?e="":"string"!=typeof e&&(e=o(e)),t?e?t+": "+e:t:e};Error.prototype.toString=oe}if(F){var se=function(t,e){if(G(t,e)){var n=Object.getOwnPropertyDescriptor(t,e);n.enumerable=!1,Object.defineProperty(t,e,n)}};se(Error.prototype,"message"),""!==Error.prototype.message&&(Error.prototype.message=""),se(Error.prototype,"name")}})},{}],3:[function(t,e,n){!function(t,n){function r(t,e){var n=t.createElement("p"),r=t.getElementsByTagName("head")[0]||t.documentElement;return n.innerHTML="x",r.insertBefore(n.lastChild,r.firstChild)}function i(){var t=w.elements;return"string"==typeof t?t.split(" "):t}function a(t,e){var n=w.elements;"string"!=typeof n&&(n=n.join(" ")),"string"!=typeof t&&(t=t.join(" ")),w.elements=n+" "+t,l(e)}function o(t){var e=y[t[g]];return e||(e={},b++,t[g]=b,y[b]=e),e}function s(t,e,r){if(e||(e=n),h)return e.createElement(t);r||(r=o(e));var i;return i=r.cache[t]?r.cache[t].cloneNode():v.test(t)?(r.cache[t]=r.createElem(t)).cloneNode():r.createElem(t),!i.canHaveChildren||m.test(t)||i.tagUrn?i:r.frag.appendChild(i)}function u(t,e){if(t||(t=n),h)return t.createDocumentFragment();e=e||o(t);for(var r=e.frag.cloneNode(),a=0,s=i(),u=s.length;u>a;a++)r.createElement(s[a]);return r}function c(t,e){e.cache||(e.cache={},e.createElem=t.createElement,e.createFrag=t.createDocumentFragment,e.frag=e.createFrag()),t.createElement=function(n){return w.shivMethods?s(n,t,e):e.createElem(n)},t.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+i().join().replace(/[\w\-:]+/g,function(t){return e.createElem(t),e.frag.createElement(t),'c("'+t+'")'})+");return n}")(w,e.frag)}function l(t){t||(t=n);var e=o(t);return!w.shivCSS||p||e.hasCSS||(e.hasCSS=!!r(t,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),h||c(t,e),t}var p,h,f="3.7.3-pre",d=t.html5||{},m=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,v=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,g="_html5shiv",b=0,y={};!function(){try{var t=n.createElement("a");t.innerHTML="",p="hidden"in t,h=1==t.childNodes.length||function(){n.createElement("a");var t=n.createDocumentFragment();return void 0===t.cloneNode||void 0===t.createDocumentFragment||void 0===t.createElement}()}catch(e){p=!0,h=!0}}();var w={elements:d.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:f,shivCSS:d.shivCSS!==!1,supportsUnknownElements:h,shivMethods:d.shivMethods!==!1,type:"default",shivDocument:l,createElement:s,createDocumentFragment:u,addElements:a};t.html5=w,l(n),"object"==typeof e&&e.exports&&(e.exports=w)}("undefined"!=typeof window?window:this,document)},{}],4:[function(t,e,n){(function(t){!function(t){function e(t,e,n,r){for(var a,o=n.slice(),s=i(e,t),u=0,c=o.length;c>u&&(handler=o[u],"object"==typeof handler&&"function"==typeof handler.handleEvent?handler.handleEvent(s):handler.call(t,s),!s.stoppedImmediatePropagation);u++);return a=!s.stoppedPropagation,r&&a&&t.parentNode?t.parentNode.dispatchEvent(s):!s.defaultPrevented}function n(t,e){return{configurable:!0,get:t,set:e}}function r(t,e,r){var i=b(e||t,r);v(t,"textContent",n(function(){return i.get.call(this)},function(t){i.set.call(this,t)}))}function i(t,e){return t.currentTarget=e,t.eventPhase=t.target===t.currentTarget?2:3,t}function a(t,e){for(var n=t.length;n--&&t[n]!==e;);return n}function o(){if("BR"===this.tagName)return"\n";for(var t=this.firstChild,e=[];t;)8!==t.nodeType&&7!==t.nodeType&&e.push(t.textContent),t=t.nextSibling;return e.join("")}function s(t){var e=document.createEvent("Event");e.initEvent("input",!0,!0),(t.srcElement||t.fromElement||document).dispatchEvent(e)}function u(t){!h&&k.test(document.readyState)&&(h=!h,document.detachEvent(f,u),t=document.createEvent("Event"),t.initEvent(d,!0,!0),document.dispatchEvent(t))}function c(t){for(var e;e=this.lastChild;)this.removeChild(e);null!=t&&this.appendChild(document.createTextNode(t))}function l(e,n){return n||(n=t.event),n.target||(n.target=n.srcElement||n.fromElement||document),n.timeStamp||(n.timeStamp=(new Date).getTime()),n}if(!document.createEvent){var p=!0,h=!1,f="onreadystatechange",d="DOMContentLoaded",m="__IE8__"+Math.random(),v=Object.defineProperty||function(t,e,n){t[e]=n.value},g=Object.defineProperties||function(e,n){for(var r in n)if(y.call(n,r))try{v(e,r,n[r])}catch(i){t.console&&console.log(r+" failed on object:",e,i.message)}},b=Object.getOwnPropertyDescriptor,y=Object.prototype.hasOwnProperty,w=t.Element.prototype,x=t.Text.prototype,_=/^[a-z]+$/,k=/loaded|complete/,E={},T=document.createElement("div"),C=document.documentElement,S=C.removeAttribute,O=C.setAttribute;r(t.HTMLCommentElement.prototype,w,"nodeValue"),r(t.HTMLScriptElement.prototype,null,"text"),r(x,null,"nodeValue"),r(t.HTMLTitleElement.prototype,null,"text"),v(t.HTMLStyleElement.prototype,"textContent",function(t){return n(function(){return t.get.call(this.styleSheet)},function(e){t.set.call(this.styleSheet,e)})}(b(t.CSSStyleSheet.prototype,"cssText"))),g(w,{textContent:{get:o,set:c},firstElementChild:{get:function(){for(var t=this.childNodes||[],e=0,n=t.length;n>e;e++)if(1==t[e].nodeType)return t[e]}},lastElementChild:{get:function(){for(var t=this.childNodes||[],e=t.length;e--;)if(1==t[e].nodeType)return t[e]}},oninput:{get:function(){return this._oninput||null},set:function(t){this._oninput&&(this.removeEventListener("input",this._oninput),this._oninput=t,t&&this.addEventListener("input",t))}},previousElementSibling:{get:function(){for(var t=this.previousSibling;t&&1!=t.nodeType;)t=t.previousSibling;return t}},nextElementSibling:{get:function(){for(var t=this.nextSibling;t&&1!=t.nodeType;)t=t.nextSibling;return t}},childElementCount:{get:function(){for(var t=0,e=this.childNodes||[],n=e.length;n--;t+=1==e[n].nodeType);return t}},addEventListener:{value:function(t,n,r){var i,o,u=this,c="on"+t,p=u[m]||v(u,m,{value:{}})[m],h=p[c]||(p[c]={}),f=h.h||(h.h=[]);if(!y.call(h,"w")){if(h.w=function(t){return t[m]||e(u,l(u,t),f,!1)},!y.call(E,c))if(_.test(t)){try{i=document.createEventObject(),i[m]=!0,9!=u.nodeType&&null==u.parentNode&&T.appendChild(u),(o=u.getAttribute(c))&&S.call(u,c),u.fireEvent(c,i),E[c]=!0}catch(i){for(E[c]=!1;T.hasChildNodes();)T.removeChild(T.firstChild)}null!=o&&O.call(u,c,o)}else E[c]=!1;(h.n=E[c])&&u.attachEvent(c,h.w)}a(f,n)<0&&f[r?"unshift":"push"](n),"input"===t&&u.attachEvent("onkeyup",s)}},dispatchEvent:{value:function(t){var n,r=this,i="on"+t.type,a=r[m],o=a&&a[i],s=!!o;return t.target||(t.target=r),s?o.n?r.fireEvent(i,t):e(r,t,o.h,!0):(n=r.parentNode)?n.dispatchEvent(t):!0,!t.defaultPrevented}},removeEventListener:{value:function(t,e,n){var r=this,i="on"+t,o=r[m],s=o&&o[i],u=s&&s.h,c=u?a(u,e):-1;c>-1&&u.splice(c,1)}}}),g(x,{addEventListener:{value:w.addEventListener},dispatchEvent:{value:w.dispatchEvent},removeEventListener:{value:w.removeEventListener}}),g(t.XMLHttpRequest.prototype,{addEventListener:{value:function(t,e,n){var r=this,i="on"+t,o=r[m]||v(r,m,{value:{}})[m],s=o[i]||(o[i]={}),u=s.h||(s.h=[]);a(u,e)<0&&(r[i]||(r[i]=function(){var e=document.createEvent("Event");e.initEvent(t,!0,!0),r.dispatchEvent(e)}),u[n?"unshift":"push"](e))}},dispatchEvent:{value:function(t){var n=this,r="on"+t.type,i=n[m],a=i&&i[r],o=!!a;return o&&(a.n?n.fireEvent(r,t):e(n,t,a.h,!0))}},removeEventListener:{value:w.removeEventListener}}),g(t.Event.prototype,{bubbles:{value:!0,writable:!0},cancelable:{value:!0,writable:!0},preventDefault:{value:function(){this.cancelable&&(this.defaultPrevented=!0,this.returnValue=!1)}},stopPropagation:{value:function(){this.stoppedPropagation=!0,this.cancelBubble=!0}},stopImmediatePropagation:{value:function(){this.stoppedImmediatePropagation=!0,this.stopPropagation()}},initEvent:{value:function(t,e,n){this.type=t,this.bubbles=!!e,this.cancelable=!!n,this.bubbles||this.stopPropagation()}}}),g(t.HTMLDocument.prototype,{defaultView:{get:function(){ -return this.parentWindow}},textContent:{get:function(){return 11===this.nodeType?o.call(this):null},set:function(t){11===this.nodeType&&c.call(this,t)}},addEventListener:{value:function(e,n,r){var i=this;w.addEventListener.call(i,e,n,r),p&&e===d&&!k.test(i.readyState)&&(p=!1,i.attachEvent(f,u),t==top&&!function a(t){try{i.documentElement.doScroll("left"),u()}catch(e){setTimeout(a,50)}}())}},dispatchEvent:{value:w.dispatchEvent},removeEventListener:{value:w.removeEventListener},createEvent:{value:function(t){var e;if("Event"!==t)throw Error("unsupported "+t);return e=document.createEventObject(),e.timeStamp=(new Date).getTime(),e}}}),g(t.Window.prototype,{getComputedStyle:{value:function(){function t(t){this._=t}function e(){}var n=/^(?:[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|))(?!px)[a-z%]+$/,r=/^(top|right|bottom|left)$/,i=/\-([a-z])/g,a=function(t,e){return e.toUpperCase()};return t.prototype.getPropertyValue=function(t){var e,o,s,u=this._,c=u.style,l=u.currentStyle,p=u.runtimeStyle;return t=("float"===t?"style-float":t).replace(i,a),e=l?l[t]:c[t],n.test(e)&&!r.test(t)&&(o=c.left,s=p&&p.left,s&&(p.left=l.left),c.left="fontSize"===t?"1em":e,e=c.pixelLeft+"px",c.left=o,s&&(p.left=s)),null==e?e:e+""||"auto"},e.prototype.getPropertyValue=function(){return null},function(n,r){return r?new e(n):new t(n)}}()},addEventListener:{value:function(n,r,i){var o,s=t,u="on"+n;s[u]||(s[u]=function(t){return e(s,l(s,t),o,!1)}),o=s[u][m]||(s[u][m]=[]),a(o,r)<0&&o[i?"unshift":"push"](r)}},dispatchEvent:{value:function(e){var n=t["on"+e.type];return n?n.call(t,e)!==!1&&!e.defaultPrevented:!0}},removeEventListener:{value:function(e,n,r){var i="on"+e,o=(t[i]||Object)[m],s=o?a(o,n):-1;s>-1&&o.splice(s,1)}}}),function(t,e,n){for(n=0;n1?e-1:0),r=1;e>r;r++)n[r-1]=arguments[r];for(var i,a;a=n.shift();)for(i in a)Oo.call(a,i)&&(t[i]=a[i]);return t}function i(t){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;e>r;r++)n[r-1]=arguments[r];return n.forEach(function(e){for(var n in e)!e.hasOwnProperty(n)||n in t||(t[n]=e[n])}),t}function a(t){return"[object Array]"===Ao.call(t)}function o(t){return Po.test(Ao.call(t))}function s(t,e){return null===t&&null===e?!0:"object"==typeof t||"object"==typeof e?!1:t===e}function u(t){return!isNaN(parseFloat(t))&&isFinite(t)}function c(t){return t&&"[object Object]"===Ao.call(t)}function l(t,e){return t.replace(/%s/g,function(){return e.shift()})}function p(t){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;e>r;r++)n[r-1]=arguments[r];throw t=l(t,n),Error(t)}function h(){Av.DEBUG&&To.apply(null,arguments)}function f(t){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;e>r;r++)n[r-1]=arguments[r];t=l(t,n),Co(t,n)}function d(t){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;e>r;r++)n[r-1]=arguments[r];t=l(t,n),No[t]||(No[t]=!0,Co(t,n))}function m(){Av.DEBUG&&f.apply(null,arguments)}function v(){Av.DEBUG&&d.apply(null,arguments)}function g(t,e,n){var r=b(t,e,n);return r?r[t][n]:null}function b(t,e,n){for(;e;){if(n in e[t])return e;if(e.isolated)return null;e=e.parent}}function y(t){return function(){return t}}function w(t){var e,n,r,i,a,o;for(e=t.split("."),(n=Bo[e.length])||(n=x(e.length)),a=[],r=function(t,n){return t?"*":e[n]},i=n.length;i--;)o=n[i].map(r).join("."),a.hasOwnProperty(o)||(a.push(o),a[o]=!0);return a}function x(t){var e,n,r,i,a,o,s,u,c="";if(!Bo[t]){for(r=[];c.length=a;a+=1){for(n=a.toString(2);n.lengtho;o++)u.push(i(n[o]));r[a]=u}Bo[t]=r}return Bo[t]}function _(t,e,n,r){var i=t[e];if(!i||!i.equalsOrStartsWith(r)&&i.equalsOrStartsWith(n))return t[e]=i?i.replace(n,r):r,!0}function k(t){var e=t.slice(2);return"i"===t[1]&&u(e)?+e:e}function E(t){return null==t?t:(Ho.hasOwnProperty(t)||(Ho[t]=new Wo(t)),Ho[t])}function T(t,e){function n(e,n){var r,i,o;return n.isRoot?o=[].concat(Object.keys(t.viewmodel.data),Object.keys(t.viewmodel.mappings),Object.keys(t.viewmodel.computations)):(r=t.viewmodel.wrapped[n.str],i=r?r.get():t.viewmodel.get(n),o=i?Object.keys(i):null),o&&o.forEach(function(t){"_ractive"===t&&a(i)||e.push(n.join(t))}),e}var r,i,o;for(r=e.str.split("."),o=[Go];i=r.shift();)"*"===i?o=o.reduce(n,[]):o[0]===Go?o[0]=E(i):o=o.map(C(i));return o}function C(t){return function(e){return e.join(t)}}function S(t){return t?t.replace(qo,".$1"):""}function O(t,e,n){if("string"!=typeof e||!u(n))throw Error("Bad arguments");var r=void 0,i=void 0;if(/\*/.test(e))return i={},T(t,E(S(e))).forEach(function(e){var r=t.viewmodel.get(e);if(!u(r))throw Error(Qo);i[e.str]=r+n}),t.set(i);if(r=t.get(e),!u(r))throw Error(Qo);return t.set(e,+r+n)}function A(t,e){return Ko(this,t,void 0===e?1:+e)}function P(t){this.event=t,this.method="on"+t,this.deprecate=ts[t]}function j(t,e){var n=t.indexOf(e);-1===n&&t.push(e)}function N(t,e){for(var n=0,r=t.length;r>n;n++)if(t[n]==e)return!0;return!1}function F(t,e){var n;if(!a(t)||!a(e))return!1;if(t.length!==e.length)return!1;for(n=t.length;n--;)if(t[n]!==e[n])return!1;return!0}function M(t){return"string"==typeof t?[t]:void 0===t?[]:t}function R(t){return t[t.length-1]}function L(t,e){var n=t.indexOf(e);-1!==n&&t.splice(n,1)}function I(t){for(var e=[],n=t.length;n--;)e[n]=t[n];return e}function D(t){setTimeout(t,0)}function U(t,e){return function(){for(var n;n=t.shift();)n(e)}}function V(t,e,n,r){var i;if(e===t)throw new TypeError("A promise's fulfillment handler cannot return the same promise");if(e instanceof es)e.then(n,r);else if(!e||"object"!=typeof e&&"function"!=typeof e)n(e);else{try{i=e.then}catch(a){return void r(a)}if("function"==typeof i){var o,s,u;s=function(e){o||(o=!0,V(t,e,n,r))},u=function(t){o||(o=!0,r(t))};try{i.call(e,s,u)}catch(a){if(!o)return r(a),void(o=!0)}}else n(e)}}function B(t,e,n){var r;return e=S(e),"~/"===e.substr(0,2)?(r=E(e.substring(2)),H(t,r.firstKey,n)):"."===e[0]?(r=q(ss(n),e),r&&H(t,r.firstKey,n)):r=z(t,E(e),n),r}function q(t,e){var n;if(void 0!=t&&"string"!=typeof t&&(t=t.str),"."===e)return E(t);if(n=t?t.split("."):[],"../"===e.substr(0,3)){for(;"../"===e.substr(0,3);){if(!n.length)throw Error('Could not resolve reference - too many "../" prefixes');n.pop(),e=e.substring(3)}return n.push(e),E(n.join("."))}return E(t?t+e.replace(/^\.\//,"."):e.replace(/^\.\/?/,""))}function z(t,e,n,r){var i,a,o,s,u;if(e.isRoot)return e;for(a=e.firstKey;n;)if(i=n.context,n=n.parent,i&&(s=!0,o=t.viewmodel.get(i),o&&("object"==typeof o||"function"==typeof o)&&a in o))return i.join(e.str);return W(t.viewmodel,a)?e:t.parent&&!t.isolated&&(s=!0,n=t.component.parentFragment,a=E(a),u=z(t.parent,a,n,!0))?(t.viewmodel.map(a,{origin:t.parent.viewmodel,keypath:u}),e):r||s?void 0:(t.viewmodel.set(e,void 0),e)}function H(t,e){var n;!t.parent||t.isolated||W(t.viewmodel,e)||(e=E(e),(n=z(t.parent,e,t.component.parentFragment,!0))&&t.viewmodel.map(e,{origin:t.parent.viewmodel,keypath:n}))}function W(t,e){return""===e||e in t.data||e in t.computations||e in t.mappings}function $(t){t.teardown()}function G(t){t.unbind()}function K(t){t.unrender()}function Q(t){t.cancel()}function Y(t){t.detach()}function J(t){t.detachNodes()}function Z(t){!t.ready||t.outros.length||t.outroChildren||(t.outrosComplete||(t.parent?t.parent.decrementOutros(t):t.detachNodes(),t.outrosComplete=!0),t.intros.length||t.totalChildren||("function"==typeof t.callback&&t.callback(),t.parent&&t.parent.decrementTotal()))}function X(){for(var t,e,n;ls.ractives.length;)e=ls.ractives.pop(),n=e.viewmodel.applyChanges(),n&&ds.fire(e,n);for(tt(),t=0;t=0;a--)i=t._subs[e[a]],i&&(s=gt(t,i,n,r)&&s);if(Vs.dequeue(t),t.parent&&s){if(o&&t.component){var u=t.component.name+"."+e[e.length-1];e=E(u).wildcardMatches(),n&&(n.component=t)}vt(t.parent,e,n,r)}}function gt(t,e,n,r){var i=null,a=!1;n&&!n._noArg&&(r=[n].concat(r)),e=e.slice();for(var o=0,s=e.length;s>o;o+=1)e[o].apply(t,r)===!1&&(a=!0);return n&&!n._noArg&&a&&(i=n.original)&&(i.preventDefault&&i.preventDefault(),i.stopPropagation&&i.stopPropagation()),!a}function bt(t){var e={args:Array.prototype.slice.call(arguments,1)};Bs(this,t,e)}function yt(t){var e;return t=E(S(t)),e=this.viewmodel.get(t,Hs),void 0===e&&this.parent&&!this.isolated&&us(this,t.str,this.component.parentFragment)&&(e=this.viewmodel.get(t)),e}function wt(e,n){if(!this.fragment.rendered)throw Error("The API has changed - you must call `ractive.render(target[, anchor])` to render your Ractive instance. Once rendered you can use `ractive.insert()`.");if(e=t(e),n=t(n)||null,!e)throw Error("You must specify a valid target to insert into");e.insertBefore(this.detach(),n),this.el=e,(e.__ractive_instances__||(e.__ractive_instances__=[])).push(this),this.detached=null,xt(this)}function xt(t){$s.fire(t),t.findAllComponents("*").forEach(function(t){xt(t.instance)})}function _t(t,e,n){var r,i;return t=E(S(t)),r=this.viewmodel.get(t),a(r)&&a(e)?(i=ms.start(this,!0),this.viewmodel.merge(t,r,e,n),ms.end(),i):this.set(t,e,n&&n.complete)}function kt(t,e){var n,r;return n=T(t,e),r={},n.forEach(function(e){r[e.str]=t.get(e.str)}),r}function Et(t,e,n,r){var i,a,o;e=E(S(e)),r=r||su,e.isPattern?(i=new au(t,e,n,r),t.viewmodel.patternObservers.push(i),a=!0):i=new Ys(t,e,n,r),i.init(r.init),t.viewmodel.register(e,i,a?"patternObservers":"observers"),i.ready=!0;var s={cancel:function(){var n;o||(a?(n=t.viewmodel.patternObservers.indexOf(i),t.viewmodel.patternObservers.splice(n,1),t.viewmodel.unregister(e,i,"patternObservers")):t.viewmodel.unregister(e,i,"observers"),o=!0)}};return t._observers.push(s),s}function Tt(t,e,n){var r,i,a,o;if(c(t)){n=e,i=t,r=[];for(t in i)i.hasOwnProperty(t)&&(e=i[t],r.push(this.observe(t,e,n)));return{cancel:function(){for(;r.length;)r.pop().cancel()}}}if("function"==typeof t)return n=e,e=t,t="",ou(this,t,e,n);if(a=t.split(" "),1===a.length)return ou(this,t,e,n);for(r=[],o=a.length;o--;)t=a[o],t&&r.push(ou(this,t,e,n));return{cancel:function(){for(;r.length;)r.pop().cancel()}}}function Ct(t,e,n){var r=this.observe(t,function(){e.apply(this,arguments),r.cancel()},{init:!1,defer:n&&n.defer});return r}function St(t,e){var n,r=this;if(t)n=t.split(" ").map(lu).filter(pu),n.forEach(function(t){var n,i;(n=r._subs[t])&&(e?(i=n.indexOf(e),-1!==i&&n.splice(i,1)):r._subs[t]=[])});else for(t in this._subs)delete this._subs[t];return this}function Ot(t,e){var n,r,i,a=this;if("object"==typeof t){n=[];for(r in t)t.hasOwnProperty(r)&&n.push(this.on(r,t[r]));return{cancel:function(){for(var t;t=n.pop();)t.cancel()}}}return i=t.split(" ").map(lu).filter(pu),i.forEach(function(t){(a._subs[t]||(a._subs[t]=[])).push(e)}),{cancel:function(){return a.off(t,e)}}}function At(t,e){var n=this.on(t,function(){e.apply(this,arguments),n.cancel()});return n}function Pt(t,e,n){var r,i,a,o,s,u,c=[];if(r=jt(t,e,n),!r)return null;for(i=t.length,s=r.length-2-r[1],a=Math.min(i,r[0]),o=a+r[1],u=0;a>u;u+=1)c.push(u);for(;o>u;u+=1)c.push(-1);for(;i>u;u+=1)c.push(u+s);return 0!==s?c.touchedFrom=r[0]:c.touchedFrom=t.length,c}function jt(t,e,n){switch(e){case"splice":for(void 0!==n[0]&&n[0]<0&&(n[0]=t.length+Math.max(n[0],-t.length));n.length<2;)n.push(0);return n[1]=Math.min(n[1],t.length-n[0]),n;case"sort":case"reverse":return null;case"pop":return t.length?[t.length-1,1]:[0,0];case"push":return[t.length,0].concat(n);case"shift":return[0,t.length?1:0];case"unshift":return[0,0].concat(n)}}function Nt(e,n){var r,i,a,o=this;if(a=this.transitionsEnabled,this.noIntro&&(this.transitionsEnabled=!1),r=ms.start(this,!0),ms.scheduleTask(function(){return Ou.fire(o)},!0),this.fragment.rendered)throw Error("You cannot call ractive.render() on an already rendered instance! Call ractive.unrender() first");if(e=t(e)||this.el,n=t(n)||this.anchor,this.el=e,this.anchor=n,!this.append&&e){var s=e.__ractive_instances__;s&&s.length&&Ft(s),e.innerHTML=""}return this.cssId&&Cu.apply(),e&&((i=e.__ractive_instances__)?i.push(this):e.__ractive_instances__=[this],n?e.insertBefore(this.fragment.render(),n):e.appendChild(this.fragment.render())),ms.end(),this.transitionsEnabled=a,r.then(function(){return Au.fire(o)})}function Ft(t){t.splice(0,t.length).forEach($)}function Mt(t,e){for(var n=t.slice(),r=e.length;r--;)~n.indexOf(e[r])||n.push(e[r]);return n}function Rt(t,e){var n,r,i;return r='[data-ractive-css~="{'+e+'}"]',i=function(t){var e,n,i,a,o,s,u,c=[];for(e=[];n=Ru.exec(t);)e.push({str:n[0],base:n[1],modifiers:n[2]});for(a=e.map(It),u=e.length;u--;)s=a.slice(),i=e[u],s[u]=i.base+r+i.modifiers||"",o=a.slice(),o[u]=r+" "+o[u],c.push(s.join(" "),o.join(" "));return c.join(", ")},n=Iu.test(t)?t.replace(Iu,r):t.replace(Mu,"").replace(Fu,function(t,e){var n,r;return Lu.test(e)?t:(n=e.split(",").map(Lt),r=n.map(i).join(", ")+" ",t.replace(e,r))})}function Lt(t){return t.trim?t.trim():t.replace(/^\s+/,"").replace(/\s+$/,"")}function It(t){return t.str}function Dt(t){t&&t.constructor!==Object&&("function"==typeof t||("object"!=typeof t?p("data option must be an object or a function, `"+t+"` is not valid"):m("If supplied, options.data should be a plain JavaScript object - using a non-POJO as the root object may work, but is discouraged")))}function Ut(t,e){Dt(e);var n="function"==typeof t,r="function"==typeof e;return e||n||(e={}),n||r?function(){var i=r?Vt(e,this):e,a=n?Vt(t,this):t;return Bt(i,a)}:Bt(e,t)}function Vt(t,e){var n=t.call(e);if(n)return"object"!=typeof n&&p("Data function must return an object"),n.constructor!==Object&&v("Data function returned something other than a plain JavaScript object. This might work, but is strongly discouraged"),n}function Bt(t,e){if(t&&e){for(var n in e)n in t||(t[n]=e[n]);return t}return t||e}function qt(t){var e=wo(Wu);return e.parse=function(e,n){return zt(e,n||t)},e}function zt(t,e){if(!zu)throw Error("Missing Ractive.parse - cannot parse template. Either preparse or use the version that includes the parser");return zu(t,e||this.options)}function Ht(t,e){var n;if(!Za){if(e&&e.noThrow)return;throw Error("Cannot retrieve template #"+t+" as Ractive is not running in a browser.")}if(Wt(t)&&(t=t.substring(1)),!(n=document.getElementById(t))){if(e&&e.noThrow)return;throw Error("Could not find template element with id #"+t)}if("SCRIPT"!==n.tagName.toUpperCase()){if(e&&e.noThrow)return;throw Error("Template element with id #"+t+", must be a + on-click-enter='{{#clickable}}press{{/}}'> {{#if icon}} {{/if}} diff --git a/tgui/scripts/components/warnings.ract b/tgui/scripts/components/warnings.ract new file mode 100644 index 00000000000..ae6bf9aa27e --- /dev/null +++ b/tgui/scripts/components/warnings.ract @@ -0,0 +1,33 @@ + + + +{{#if config.fancy && ie && ie <= 8}} + + You have an old (<= 8) version of Internet Explorer installed. Please upgrade to the latest available version of IE.
+ To upgrade, please click 'Check For Upgrades' below to download the latest available version from Microsoft.
+ Otherwise, if you are unable (XP/Wine) or unwilling to upgrade past IE8, please click 'No Frills' below to disable incompatible features (and this message). +
+ Check For Upgrades + No Frills + Debug Info + {{#if debug}} +
+ Detected: IE{{ie}}
+ User Agent: {{userAgent}} + {{/if}} +
+{{/if}} diff --git a/tgui/scripts/dragresize.coffee b/tgui/scripts/dragresize.coffee index c4e6e6d0b07..321090078c6 100644 --- a/tgui/scripts/dragresize.coffee +++ b/tgui/scripts/dragresize.coffee @@ -3,6 +3,7 @@ byond = require "./byond" module.exports = drag: (ractive, event) -> + event.preventDefault() lock = (x, y) -> if x < 0 # Left x = 0 @@ -23,6 +24,7 @@ module.exports = ractive.set x: event.screenX, y: event.screenY resize: (ractive, event) -> + event.preventDefault() sane = (x, y) -> x = Math.clamp x, 100, screen.width y = Math.clamp y, 100, screen.height diff --git a/tgui/scripts/tgui.ract b/tgui/scripts/tgui.ract index f5ba748c48f..9871625ffe3 100644 --- a/tgui/scripts/tgui.ract +++ b/tgui/scripts/tgui.ract @@ -1,5 +1,6 @@ + - + From fd80575f383424ef4def1737ba1936a065aa052e Mon Sep 17 00:00:00 2001 From: MrStonedOne Date: Mon, 4 Jan 2016 15:17:12 -0800 Subject: [PATCH 149/310] Removes a bunch of sleep(-1) and spawn(-1) from the code This seems to be causing issues where if the queue was too long, byond would attempt to process through all of it while hanging everything else. --- code/controllers/master.dm | 2 +- code/controllers/subsystem/ticker.dm | 2 +- code/datums/helper_datums/events.dm | 2 +- code/datums/helper_datums/teleport.dm | 4 ++-- code/game/communications.dm | 2 +- code/game/mecha/mech_fabricator.dm | 2 +- code/modules/admin/admin_ranks.dm | 2 +- code/modules/admin/holder2.dm | 4 ++-- code/modules/client/asset_cache.dm | 2 +- code/modules/shuttle/shuttle.dm | 4 ++-- 10 files changed, 13 insertions(+), 13 deletions(-) diff --git a/code/controllers/master.dm b/code/controllers/master.dm index 1632b5f318f..db25833d75f 100644 --- a/code/controllers/master.dm +++ b/code/controllers/master.dm @@ -149,7 +149,7 @@ var/global/datum/controller/master/Master = new() // If we caused BYOND to miss a tick, stop processing for a bit... if(startingtick < world.time || start_time + 1 < world.timeofday) break - sleep(-1) + sleep(0) cost = MC_AVERAGE(cost, world.timeofday - start_time) if(ran_subsystems) diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index 6951d554dec..56cdf29535f 100644 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -485,5 +485,5 @@ var/datum/subsystem/ticker/ticker //map rotate chance defaults to 75% of the length of the round (in minutes) if (!prob((world.time/600)*config.maprotatechancedelta)) return - spawn(-1) //compiling a map can lock up the mc for 30 to 60 seconds if we don't spawn + spawn(0) //compiling a map can lock up the mc for 30 to 60 seconds if we don't spawn maprotate() diff --git a/code/datums/helper_datums/events.dm b/code/datums/helper_datums/events.dm index f5e60ee7b0c..fa0dccd2a15 100644 --- a/code/datums/helper_datums/events.dm +++ b/code/datums/helper_datums/events.dm @@ -34,7 +34,7 @@ //world << "Events in [args[1]] called" var/list/event = listgetindex(events,args[1]) if(istype(event)) - spawn(-1) + spawn(0) for(var/datum/event/E in event) if(!E.Fire(arglist(args.Copy(2)))) clearEvent(args[1],E) diff --git a/code/datums/helper_datums/teleport.dm b/code/datums/helper_datums/teleport.dm index 6c22a9c08db..ef73781c1e6 100644 --- a/code/datums/helper_datums/teleport.dm +++ b/code/datums/helper_datums/teleport.dm @@ -82,12 +82,12 @@ /datum/teleport/proc/playSpecials(atom/location,datum/effect_system/effect,sound) if(location) if(effect) - spawn(-1) + spawn(0) src = null effect.attach(location) effect.start() if(sound) - spawn(-1) + spawn(0) src = null playsound(location,sound,60,1) return diff --git a/code/game/communications.dm b/code/game/communications.dm index d9c1595ec2e..2052b793936 100644 --- a/code/game/communications.dm +++ b/code/game/communications.dm @@ -40,7 +40,7 @@ obj/proc/receive_signal(datum/signal/signal, var/receive_method as num, var/receive_param) Handler from received signals. By default does nothing. Define your own for your object. - Avoid of sending signals directly from this proc, use spawn(-1). Do not use sleep() here please. + Avoid of sending signals directly from this proc, use spawn(0). Do not use sleep() here please. parameters: signal - see description below. Extract all needed data from the signal before doing sleep(), spawn() or return! receive_method - may be TRANSMISSION_WIRE or TRANSMISSION_RADIO. diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm index 622686e70ec..0beb82c3cdc 100644 --- a/code/game/mecha/mech_fabricator.dm +++ b/code/game/mecha/mech_fabricator.dm @@ -396,7 +396,7 @@ add_part_set_to_queue(filter.get("partset_to_queue")) return update_queue_on_page() if(href_list["process_queue"]) - spawn(-1) + spawn(0) if(processing_queue || being_built) return 0 processing_queue = 1 diff --git a/code/modules/admin/admin_ranks.dm b/code/modules/admin/admin_ranks.dm index 735b00c6aac..a2612b46ee2 100644 --- a/code/modules/admin/admin_ranks.dm +++ b/code/modules/admin/admin_ranks.dm @@ -10,7 +10,7 @@ var/list/admin_ranks = list() //list of all admin_rank datums name = init_name switch(name) if("Removed",null,"") - spawn(-1) + spawn(0) qdel(src) throw EXCEPTION("invalid admin-rank name") return diff --git a/code/modules/admin/holder2.dm b/code/modules/admin/holder2.dm index abe7abcd91a..e7a0550b862 100644 --- a/code/modules/admin/holder2.dm +++ b/code/modules/admin/holder2.dm @@ -16,12 +16,12 @@ var/list/admin_datums = list() /datum/admins/New(datum/admin_rank/R, ckey) if(!ckey) - spawn(-1) + spawn(0) del(src) throw EXCEPTION("Admin datum created without a ckey") return if(!istype(R)) - spawn(-1) + spawn(0) del(src) throw EXCEPTION("Admin datum created without a rank") return diff --git a/code/modules/client/asset_cache.dm b/code/modules/client/asset_cache.dm index 6e73a0bfd97..9928eea9eda 100644 --- a/code/modules/client/asset_cache.dm +++ b/code/modules/client/asset_cache.dm @@ -131,7 +131,7 @@ You can set verify to TRUE if you want send() to sleep until the client has the if (register_asset) register_asset(file,files[file]) send_asset(client,file) - sleep(-1) //queuing calls like this too quickly can cause issues in some client versions + sleep(0) //queuing calls like this too quickly can cause issues in some client versions //This proc "registers" an asset, it adds it to the cache for further use, you cannot touch it from this point on or you'll fuck things up. //if it's an icon or something be careful, you'll have to copy it before further use. diff --git a/code/modules/shuttle/shuttle.dm b/code/modules/shuttle/shuttle.dm index e3185534e1c..9ff02f88090 100644 --- a/code/modules/shuttle/shuttle.dm +++ b/code/modules/shuttle/shuttle.dm @@ -374,7 +374,7 @@ //close open doors if(istype(O, /obj/machinery/door)) var/obj/machinery/door/Door = O - spawn(-1) + spawn(0) if(Door) Door.close() else if (istype(AM,/mob)) @@ -443,7 +443,7 @@ if(T) var/obj/machinery/door/Door = locate() in T if(Door) - spawn(-1) + spawn(0) Door.close() /obj/docking_port/mobile/proc/roadkill(list/L, dir, x, y) From 41eeedfc4620f8be384970b34a3bbf9faed49898 Mon Sep 17 00:00:00 2001 From: Nerd Lord Date: Mon, 4 Jan 2016 18:23:29 -0500 Subject: [PATCH 150/310] Fixes doubled shadowling messages --- .../shadowling/shadowling_abilities.dm | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/code/game/gamemodes/shadowling/shadowling_abilities.dm b/code/game/gamemodes/shadowling/shadowling_abilities.dm index 79a0ea87150..151b8b6a160 100644 --- a/code/game/gamemodes/shadowling/shadowling_abilities.dm +++ b/code/game/gamemodes/shadowling/shadowling_abilities.dm @@ -272,7 +272,7 @@ return var/my_message = "\[Shadowling\] [user.real_name]: [text]" for(var/mob/M in mob_list) - if(is_shadow_or_thrall(M) || (M in dead_mob_list)) + if(is_shadow_or_thrall(M)) M << my_message if(M in dead_mob_list) M << "(F)[my_message]" @@ -750,9 +750,12 @@ datum/reagent/shadowling_blindness_smoke //Reagent used for above spell var/text = stripped_input(user, "What do you want to say your masters and fellow thralls?.", "Lesser Commune", "") if(!text) return + text = "\[Thrall\] [user.real_name]: [text]" for(var/mob/M in mob_list) - if(is_shadow_or_thrall(M) || (M in dead_mob_list)) - M << "\[Thrall\] [user.real_name]: [text]" + if(is_shadow_or_thrall(M)) + M << text + if(isobserver(M)) + M << "(F)[text]" log_say("[user.real_name]/[user.key] : [text]") @@ -891,8 +894,10 @@ datum/reagent/shadowling_blindness_smoke //Reagent used for above spell var/text = stripped_input(user, "What do you want to say to fellow thralls and shadowlings?.", "Hive Chat", "") if(!text) return - text = "[text]" + text = "\[Ascendant\] [user.real_name]: [text]" for(var/mob/M in mob_list) - if(is_shadow_or_thrall(M) || (M in dead_mob_list)) - M << "\[Ascendant\] [user.real_name]: [text]" //Bigger text for ascendants. + if(is_shadow_or_thrall(M)) + M << text + if(isobserver(M)) + M << "(F)[text]" log_say("[user.real_name]/[user.key] : [text]") From 935ba88c481c2486df8c0cf553e833c66a2109b9 Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Mon, 4 Jan 2016 17:38:03 -0600 Subject: [PATCH 151/310] Pod launch uses vars --- .../subsystem/shuttles/emergency.dm | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/code/controllers/subsystem/shuttles/emergency.dm b/code/controllers/subsystem/shuttles/emergency.dm index 312769ae3c8..cd11668f581 100644 --- a/code/controllers/subsystem/shuttles/emergency.dm +++ b/code/controllers/subsystem/shuttles/emergency.dm @@ -1,3 +1,7 @@ +#define UNLAUNCHED 0 +#define ENDGAME_LAUNCHED 1 +#define EARLY_LAUNCHED 2 + /obj/docking_port/mobile/emergency name = "emergency shuttle" id = "emergency" @@ -113,7 +117,8 @@ if(time_left <= 0 && !SSshuttle.emergencyNoEscape) //move each escape pod to its corresponding transit dock for(var/obj/docking_port/mobile/pod/M in SSshuttle.mobile) - if(M.z == ZLEVEL_STATION) //Will not launch from the mine/planet + if(!M.launch_status) //Will not launch from the mine/planet + M.launch_status = ENDGAME_LAUNCHED M.enterTransit() //now move the actual emergency shuttle to its transit dock for(var/area/shuttle/escape/E in world) @@ -126,7 +131,7 @@ if(time_left <= 0) //move each escape pod to its corresponding escape dock for(var/obj/docking_port/mobile/pod/M in SSshuttle.mobile) - if(M.z == ZLEVEL_CENTCOM) + if(M.launch_status == ENDGAME_LAUNCHED) M.dock(SSshuttle.getDock("[M.id]_away")) //now move the actual emergency shuttle to centcomm for(var/area/shuttle/escape/E in world) @@ -149,9 +154,11 @@ dwidth = 1 width = 3 height = 4 + var/launch_status = UNLAUNCHED /obj/docking_port/mobile/pod/request() - if((security_level == SEC_LEVEL_RED || security_level == SEC_LEVEL_DELTA) && z == ZLEVEL_STATION) + if((security_level == SEC_LEVEL_RED || security_level == SEC_LEVEL_DELTA) && launch_status == UNLAUNCHED) + launch_status = EARLY_LAUNCHED return ..() /obj/docking_port/mobile/pod/New() @@ -239,3 +246,9 @@ /obj/item/weapon/storage/pod/attack_hand(mob/user) return + + + +#undef UNLAUNCHED +#undef LAUNCHED +#undef EARLY_LAUNCHED From c2a3be931b885ba26cc9f3dbff7660ab3705b0d7 Mon Sep 17 00:00:00 2001 From: Nerd Lord Date: Mon, 4 Jan 2016 19:26:07 -0500 Subject: [PATCH 152/310] Adds a space after the ghost follow link for messages that lacked it --- code/game/gamemodes/blob/overmind.dm | 4 ++-- code/game/gamemodes/cult/cult.dm | 2 +- code/game/gamemodes/gang/recaller.dm | 2 +- code/game/gamemodes/miniantags/revenant/revenant.dm | 2 +- code/game/gamemodes/shadowling/shadowling_abilities.dm | 6 +++--- code/modules/mob/living/carbon/alien/say.dm | 2 +- code/modules/mob/living/say.dm | 2 +- code/modules/mob/living/silicon/say.dm | 2 +- code/modules/mob/living/simple_animal/guardian/guardian.dm | 4 ++-- 9 files changed, 13 insertions(+), 13 deletions(-) diff --git a/code/game/gamemodes/blob/overmind.dm b/code/game/gamemodes/blob/overmind.dm index 439b1b01366..dcf6c5747a9 100644 --- a/code/game/gamemodes/blob/overmind.dm +++ b/code/game/gamemodes/blob/overmind.dm @@ -90,13 +90,13 @@ return var/message_a = say_quote(message, get_spans()) - var/rendered = "Blob Telepathy, [name]([blob_reagent_datum.name]) [message_a]" + var/rendered = "\[Blob Telepathy\] [name]([blob_reagent_datum.name]) [message_a]" for(var/mob/M in mob_list) if(isovermind(M) || istype(M, /mob/living/simple_animal/hostile/blob)) M << rendered if(isobserver(M)) - M << "(F)[rendered]" + M << "(F) [rendered]" /mob/camera/blob/emote(act,m_type=1,message = null) return diff --git a/code/game/gamemodes/cult/cult.dm b/code/game/gamemodes/cult/cult.dm index f49079389da..7166ef3eea8 100644 --- a/code/game/gamemodes/cult/cult.dm +++ b/code/game/gamemodes/cult/cult.dm @@ -25,7 +25,7 @@ if(iscultist(M)) M << my_message if(M in dead_mob_list) - M << "(F)[my_message]" + M << "(F) [my_message]" log_say("[user.real_name]/[user.key] : [message]") diff --git a/code/game/gamemodes/gang/recaller.dm b/code/game/gamemodes/gang/recaller.dm index 96d454e6f6b..f5631779f09 100644 --- a/code/game/gamemodes/gang/recaller.dm +++ b/code/game/gamemodes/gang/recaller.dm @@ -358,7 +358,7 @@ if(ganger.current && (ganger.current.z <= 2) && (ganger.current.stat == CONSCIOUS)) ganger.current << ping for(var/mob/M in dead_mob_list) - M << "(F)[ping]" + M << "(F) [ping]" log_game("[key_name(user)] Messaged [gang.name] Gang: [message].") diff --git a/code/game/gamemodes/miniantags/revenant/revenant.dm b/code/game/gamemodes/miniantags/revenant/revenant.dm index d9b1493584b..f7330e9d42e 100644 --- a/code/game/gamemodes/miniantags/revenant/revenant.dm +++ b/code/game/gamemodes/miniantags/revenant/revenant.dm @@ -243,7 +243,7 @@ if(istype(M, /mob/living/simple_animal/revenant)) M << rendered if(isobserver(M)) - M << "(F)[rendered]" + M << "(F) [rendered]" return diff --git a/code/game/gamemodes/shadowling/shadowling_abilities.dm b/code/game/gamemodes/shadowling/shadowling_abilities.dm index 151b8b6a160..10ccb88d386 100644 --- a/code/game/gamemodes/shadowling/shadowling_abilities.dm +++ b/code/game/gamemodes/shadowling/shadowling_abilities.dm @@ -275,7 +275,7 @@ if(is_shadow_or_thrall(M)) M << my_message if(M in dead_mob_list) - M << "(F)[my_message]" + M << "(F) [my_message]" @@ -755,7 +755,7 @@ datum/reagent/shadowling_blindness_smoke //Reagent used for above spell if(is_shadow_or_thrall(M)) M << text if(isobserver(M)) - M << "(F)[text]" + M << "(F) [text]" log_say("[user.real_name]/[user.key] : [text]") @@ -899,5 +899,5 @@ datum/reagent/shadowling_blindness_smoke //Reagent used for above spell if(is_shadow_or_thrall(M)) M << text if(isobserver(M)) - M << "(F)[text]" + M << "(F) [text]" log_say("[user.real_name]/[user.key] : [text]") diff --git a/code/modules/mob/living/carbon/alien/say.dm b/code/modules/mob/living/carbon/alien/say.dm index e36f8e3eaac..f66c3c8794d 100644 --- a/code/modules/mob/living/carbon/alien/say.dm +++ b/code/modules/mob/living/carbon/alien/say.dm @@ -14,7 +14,7 @@ if(!S.stat && S.hivecheck()) S << rendered if(S in dead_mob_list) - S << "(F)[rendered]" + S << "(F) [rendered]" /mob/living/carbon/alien/humanoid/royal/queen/alien_talk(message, shown_name = name) shown_name = "[shown_name]" diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 7bb35fd2d27..471cec390b6 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -208,7 +208,7 @@ var/list/crit_allowed_modes = list(MODE_WHISPER,MODE_CHANGELING,MODE_ALIEN) log_say("[mind.changeling.changelingID]/[src.key] : [message]") for(var/mob/M in mob_list) if(M in dead_mob_list) - M << "(F)[msg]" + M << "(F) [msg]" else switch(M.lingcheck()) if(2) diff --git a/code/modules/mob/living/silicon/say.dm b/code/modules/mob/living/silicon/say.dm index 5333e8b9623..00cdfcc10e4 100644 --- a/code/modules/mob/living/silicon/say.dm +++ b/code/modules/mob/living/silicon/say.dm @@ -20,7 +20,7 @@ else M << rendered if(M in dead_mob_list) - M << "(F)[rendered]" + M << "(F) [rendered]" /mob/living/silicon/binarycheck() return 1 diff --git a/code/modules/mob/living/simple_animal/guardian/guardian.dm b/code/modules/mob/living/simple_animal/guardian/guardian.dm index afced5e62b3..dd551e4ddf4 100644 --- a/code/modules/mob/living/simple_animal/guardian/guardian.dm +++ b/code/modules/mob/living/simple_animal/guardian/guardian.dm @@ -134,7 +134,7 @@ if(M == summoner) M << my_message if(M in dead_mob_list) - M << "(F)[my_message]" + M << "(F) [my_message]" src << "[my_message]" log_say("[src.real_name]/[src.key] : [input]") @@ -156,7 +156,7 @@ if(G.summoner == src) G << "[my_message]" else if (M in dead_mob_list) - M << "(F)[my_message]" + M << "(F) [my_message]" src << "[src]: [input]" log_say("[src.real_name]/[src.key] : [text]") From 2ed4643e74bcd208621a3ea855ce8627a250c8bf Mon Sep 17 00:00:00 2001 From: phil235 Date: Tue, 5 Jan 2016 01:49:07 +0100 Subject: [PATCH 153/310] forgot to remove that line. --- .../modules/mob/living/carbon/alien/humanoid/caste/praetorian.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/praetorian.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/praetorian.dm index 8e91b7a59ab..c7ce06b06b6 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/praetorian.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/praetorian.dm @@ -54,7 +54,6 @@ /obj/effect/proc_holder/alien/royal/praetorian/evolve/fire(mob/living/carbon/alien/user) if(!alien_type_present(/mob/living/carbon/alien/humanoid/royal/queen)) - user.alien_evolve(/mob/living/carbon/alien/humanoid/royal/queen) var/mob/living/carbon/alien/humanoid/royal/queen/new_xeno = new (user.loc) user.alien_evolve(new_xeno) return 1 From 3d74978881bd0db3f799b4c19d044e5be9f328cb Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Mon, 4 Jan 2016 19:40:01 -0600 Subject: [PATCH 154/310] Uses get_turf --- code/modules/power/smes.dm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm index 8abb0318333..3f446395bd2 100644 --- a/code/modules/power/smes.dm +++ b/code/modules/power/smes.dm @@ -158,8 +158,9 @@ terminal.dismantle(user) //crowbarring it ! + var/turf/T = get_turf(src) if(default_deconstruction_crowbar(I)) - message_admins("[src] has been deconstructed by [key_name_admin(user)](?) (FLW) in ([user.x],[user.y],[user.z] - JMP)",0,1) + message_admins("[src] has been deconstructed by [key_name_admin(user)](?) (FLW) in ([T.x],[T.y],[T.z] - JMP)",0,1) log_game("[src] has been deconstructed by [key_name(user)]") investigate_log("SMES deconstructed by [key_name(user)]","singulo") @@ -437,4 +438,4 @@ #undef SMES_OUTPUTTING #undef SMES_NOT_OUTPUTTING #undef SMES_INPUTTING -#undef SMES_INPUT_ATTEMPT \ No newline at end of file +#undef SMES_INPUT_ATTEMPT From 9e7b9f94f5aea07ba938614d39e57cbdf40801ba Mon Sep 17 00:00:00 2001 From: Kole6738 Date: Mon, 4 Jan 2016 18:01:55 -0800 Subject: [PATCH 155/310] Fix missing plural apostrophe Patients Rooms to Patients' Rooms --- code/game/area/Space Station 13 areas.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/Space Station 13 areas.dm index 2d979f712bf..1fb167a8163 100644 --- a/code/game/area/Space Station 13 areas.dm +++ b/code/game/area/Space Station 13 areas.dm @@ -740,7 +740,7 @@ var/list/teleportlocs = list() music = 'sound/ambience/signal.ogg' /area/medical/patients_rooms - name = "Patient's Rooms" + name = "Patients' Rooms" icon_state = "patients" /area/medical/cmo From 6be292913acc4a2bce988ea469518a7b163b497b Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Mon, 4 Jan 2016 20:10:13 -0600 Subject: [PATCH 156/310] Fixes --- _maps/map_files/MetaStation/MetaStation.v41I.dmm | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/_maps/map_files/MetaStation/MetaStation.v41I.dmm b/_maps/map_files/MetaStation/MetaStation.v41I.dmm index 12fef27b067..8b18832a2b5 100644 --- a/_maps/map_files/MetaStation/MetaStation.v41I.dmm +++ b/_maps/map_files/MetaStation/MetaStation.v41I.dmm @@ -989,7 +989,7 @@ "ata" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/airlock/maintenance{name = "Storage Room"; req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/fore) "atb" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating{dir = 8; icon_state = "warnplate"},/area/maintenance/fore) "atc" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/plating,/area/maintenance/fore) -"atd" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 1; on = 1},/obj/machinery/light/small{dir = 1},/obj/structure/table/wood,/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/obj/item/weapon/lighter,/turf/simulated/floor/wood,/area/crew_quarters/sleep) +"atd" = (/obj/machinery/light/small{dir = 1},/obj/structure/table/wood,/obj/machinery/newscaster{pixel_x = 0; pixel_y = 32},/obj/item/weapon/lighter,/turf/simulated/floor/wood,/area/crew_quarters/sleep) "ate" = (/obj/structure/closet/secure_closet/personal/cabinet,/obj/machinery/alarm{pixel_y = 23},/obj/item/clothing/under/assistantformal,/turf/simulated/floor/wood,/area/crew_quarters/sleep) "atf" = (/obj/structure/bed,/obj/item/weapon/bedsheet,/obj/machinery/button/door{id = "Cabin3"; name = "Cabin Bolt Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/obj/effect/decal/cleanable/cobweb2,/obj/machinery/atmospherics/components/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/wood,/area/crew_quarters/sleep) "atg" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall,/area/crew_quarters/sleep) @@ -8395,6 +8395,8 @@ "dfw" = (/mob/living/simple_animal/cockroach,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue) "dfx" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/mob/living/simple_animal/cockroach,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) "dfy" = (/mob/living/simple_animal/cockroach,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"}) +"dfz" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/engine/vacuum{tag = "icon-bcircuit"; icon_state = "bcircuit"},/area/toxins/xenobiology) +"dfA" = (/obj/machinery/camera{c_tag = "Xenobiology Lab - Kill Chamber"; dir = 1; network = list("SS13","RD","Xeno"); start_active = 1},/turf/simulated/floor/engine/vacuum{tag = "icon-bcircuit"; icon_state = "bcircuit"},/area/toxins/xenobiology) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -8611,8 +8613,8 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadczdecdcIddYdedddWdcIdeedcFdcPdcPdcPdcPdebaaaaaaaaaaafaaacTCcXvcTCcTCcTCcTCcTCcTCcTCcTCcTCcXscTCaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadczdegdefdeidehdekdejdeldcFdendemdemdeodczaaaaaaaaaaaaaaacTCdeOdePdePdePdeQdeRcXscXscXscXscXscTCaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadepdcAdcAdcAdcAdcAdcAdcAdeqdcAdcAdcAdcAderaaaaaaaaaaafaaacTCcTCcTCcTCcTCcTydeScTycTCcTCcTCcTCcTCaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadetdesdesdesdeudesdesdeudesdesdesdevaaaaaaaaaaaaaafaafaafaaaaafcTCdeVdeVdeWdeVdeVcTCaafaafaafaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadewdewdewdeudewdewdeudewdewdewaaaaaaaaaaaaaaaaaiaaaaafaaaaaacTCdeVdeVdeWdeVdeVcTCaaaaafaaaaafaaaaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadetdesdesdesdeudesdesdeudesdesdesdevaaaaaaaaaaaaaafaafaafaaaaafcTCdfzdeVdeWdeVdfzcTCaafaafaafaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadewdewdewdeudewdewdeudewdewdewaaaaaaaaaaaaaaaaaiaaaaafaaaaaacTCdfAdeVdeWdeVdeVcTCaaaaafaaaaafaaaaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaagaaaaaaaaacTCcTCcTydeXcTycTCcTCaaaaaaaaaaagaaiaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaiaagaagaaaaafaaacXlaaaaaaaafaagaaiaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaiaagaaaaaaaafaagaagaagaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa From 3a1beb1521505cf20d0ee754f840a25e878d0512 Mon Sep 17 00:00:00 2001 From: Kole6738 Date: Mon, 4 Jan 2016 18:12:50 -0800 Subject: [PATCH 157/310] Pluralize Engineer's Quarters to Engineers' Quarters (I find it unlikely that there's only one Engineer, but if I'm wrong, tell me!) --- code/game/area/Space Station 13 areas.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/Space Station 13 areas.dm index 2d979f712bf..ace749b4b82 100644 --- a/code/game/area/Space Station 13 areas.dm +++ b/code/game/area/Space Station 13 areas.dm @@ -1142,7 +1142,7 @@ var/list/teleportlocs = list() icon_state = "yellow" /area/construction/quarters - name = "Engineer's Quarters" + name = "Engineers' Quarters" icon_state = "yellow" /area/construction/qmaint From 060fd8b52980cd420ebbdc21069d34dda1a0e0e3 Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Mon, 4 Jan 2016 20:22:24 -0600 Subject: [PATCH 158/310] Fixes gang implanter message --- code/game/gamemodes/gang/gang_pen.dm | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/code/game/gamemodes/gang/gang_pen.dm b/code/game/gamemodes/gang/gang_pen.dm index 4ef55716810..bf856cce812 100644 --- a/code/game/gamemodes/gang/gang_pen.dm +++ b/code/game/gamemodes/gang/gang_pen.dm @@ -92,17 +92,16 @@ if(I != src) qdel(I) - var/success - if(target.stat != DEAD) - if(target.mind in ticker.mode.get_gangsters()) - if(ticker.mode.remove_gangster(target.mind,0,1)) - success = 1 //Was not a gang boss, convert as usual - else - success = 1 - - if(!target.mind) + if(!target.mind || target.stat == DEAD) return 0 + var/success + if(target.mind in ticker.mode.get_gangsters()) + if(ticker.mode.remove_gangster(target.mind,0,1)) + success = 1 //Was not a gang boss, convert as usual + else + success = 1 + if(ishuman(target)) if(!success) target.visible_message("[target] seems to resist the implant!", "You feel the influence of your enemies try to invade your mind!") From 872bf0a692939174eff30e65d692e8728fe51d37 Mon Sep 17 00:00:00 2001 From: Bjorn Neergaard Date: Mon, 4 Jan 2016 22:01:14 -0600 Subject: [PATCH 159/310] Fix some typos, don't wash out button hover colors, fix APC delays --- code/modules/tgui/tgui.dm | 1 + tgui/assets/tgui.css | 2 +- tgui/assets/tgui.js | 8 ++++---- tgui/scripts/components/button.ract | 6 +++--- tgui/scripts/interfaces/apc.ract | 4 ++-- tgui/styles/components/button.styl | 30 +++++++++++++++-------------- 6 files changed, 27 insertions(+), 24 deletions(-) diff --git a/code/modules/tgui/tgui.dm b/code/modules/tgui/tgui.dm index 2f507341c18..427a664efa4 100644 --- a/code/modules/tgui/tgui.dm +++ b/code/modules/tgui/tgui.dm @@ -264,6 +264,7 @@ switch(action) if("tgui:initialize") user << output(url_encode(get_json(initial_data)), "[window_id].browser:initialize") + return if("tgui:ie") user << link("http://windows.microsoft.com/en-us/internet-explorer/download-ie") return diff --git a/tgui/assets/tgui.css b/tgui/assets/tgui.css index 15539c37f2c..aaa092768ba 100644 --- a/tgui/assets/tgui.css +++ b/tgui/assets/tgui.css @@ -1 +1 @@ -.normal{color:#40628a}.good{color:#537d29}.average{color:#be6209}.bad{color:#b00e0e}.highlight,.label{color:#8ba5c4}.dark{color:#272727}html{box-sizing:border-box;min-height:100%;margin:0;cursor:default}*,:after,:before{box-sizing:inherit}body{min-height:100%;height:100%;margin:0 6px;background-color:#202020;font-family:Verdana,Geneva,sans-serif;font-size:12px;color:#fff}main{display:block;margin-top:32px;padding-top:3px}hr{height:2px;background-color:#40628a;border:none}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}.bar .barText,span.button{color:#fff;font-size:12px;font-weight:400;font-style:normal;text-decoration:none}.bold{font-weight:700}.italic{font-style:italic}[unselectable=on]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.bar{display:inline-block;position:relative;vertical-align:middle;width:100%;height:20px;line-height:17px;padding:1px;border:1px solid #40628a;background:#272727}.bar .barText{position:absolute;top:0;right:3px}.bar .barFill{display:block;height:100%;transition:background-color 1s;background-color:#40628a}.bar .barFill.good{background-color:#537d29}.bar .barFill.average{background-color:#be6209}.bar .barFill.bad{background-color:#b00e0e}.bar .barFill.highlight{background-color:#8ba5c4}span.button{display:inline-block;vertical-align:middle;height:20px;line-height:19px;padding:0 5px;white-space:nowrap;transition:background-color .25s,box-shadow .25s}span.button .fa{padding-right:2px}span.button.normal{background-color:#40628a}span.button.normal:focus,span.button.normal:hover{outline:0;box-shadow:inset 0 0 100px 100px hsla(0,0%,100%,.15)}span.button.disabled{background-color:#999}span.button.selected{background-color:#2f943c}span.button.caution{background-color:#9a9d00}span.button.danger{background-color:#9d0808}span.button.gridable{width:125px;margin:2px 0}div.display,div.notice{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)}div.display header,div.notice header,div.subdisplay header{display:block;position:relative;width:100%;padding:0 4px;margin-bottom:6px;border-bottom:2px solid #40628a}div.display header .buttonRight,div.notice header .buttonRight,div.subdisplay header .buttonRight{position:absolute;bottom:6px;right:4px}div.display article,div.notice article,div.subdisplay article{display:table;width:100%;border-spacing:4px 6px}div.notice{background-color:#bb9b68;background-image:repeating-linear-gradient(-45deg,#bb9b68,#bb9b68 10px,#b1905d 0,#b1905d 20px);margin:8px 0;box-shadow:none;color:#000;font-weight:700;font-style:italic}div.notice .button{outline:1px solid #272727}div.notice .label{color:#000}div.notice hr{background-color:#272727}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)}section .content,section .label,section .line{display:table-cell;margin:0;text-align:left;vertical-align:middle}section{display:table-row;width:100%;padding:3px 0}section:not(first-child){padding-top:4px}section .label{width:1%;padding-right:32px;white-space:nowrap;color:#8ba5c4}section .content:not(:last-child){padding-right:16px}section .line{width:100%}section .buttoninfo{margin-left:5px}div.subdisplay{width:100%;margin:0}header.titlebar .close,header.titlebar .minimize{display:inline-block;position:relative;padding:7px;margin:-7px;color:#98b0c3}header.titlebar .close:hover,header.titlebar .minimize:hover{color:#a7bccc}header.titlebar{position:fixed;top:0;left:0;width:100%;height:32px;background-color:#363636;box-shadow:0 3px 3px rgba(0,0,0,.1)}header.titlebar .statusicon{position:absolute;top:4px;left:12px;transition:color .5s}header.titlebar .title{position:absolute;top:6px;left:46px;color:#98b0c3;font-size:16px;white-space:nowrap}header.titlebar .minimize{position:absolute;top:6px;right:46px}header.titlebar .close{position:absolute;top:4px;right:12px}.wf-inactive .minimize:after{content:"-"}.wf-inactive .close:after{content:"X"}body.generic{background:linear-gradient(180deg,#2a2a2a 0,#202020)}body.generic,body.nanotrasen{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2a2a2a',endColorstr='#ff202020',GradientType=0)}body.nanotrasen{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjAiIHZpZXdCb3g9IjAgMCA0MjUgMjAwIiBvcGFjaXR5PSIuMjUiPgogIDxwYXRoIGQ9Im0gMTc4LjAwMzk5LDAuMDM4NjkgLTcxLjIwMzkzLDAgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIC02Ljc2MTM0LDYuMDI1NTUgbCAwLDE4Ny44NzE0NyBhIDYuNzYxMzQyMiw2LjAyNTU0OTUgMCAwIDAgNi43NjEzNCw2LjAyNTU0IGwgNTMuMTA3MiwwIGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCA2Ljc2MTM1LC02LjAyNTU0IGwgMCwtMTAxLjU0NDAxOCA3Mi4yMTYyOCwxMDQuNjk5Mzk4IGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCA1Ljc2MDE1LDIuODcwMTYgbCA3My41NTQ4NywwIGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCA2Ljc2MTM1LC02LjAyNTU0IGwgMCwtMTg3Ljg3MTQ3IGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCAtNi43NjEzNSwtNi4wMjU1NSBsIC01NC43MTY0NCwwIGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCAtNi43NjEzMyw2LjAyNTU1IGwgMCwxMDIuNjE5MzUgTCAxODMuNzY0MTMsMi45MDg4NiBhIDYuNzYxMzQyMiw2LjAyNTU0OTUgMCAwIDAgLTUuNzYwMTQsLTIuODcwMTcgeiIgLz4KICA8cGF0aCBkPSJNIDQuODQ0NjMzMywyMi4xMDg3NSBBIDEzLjQxMjAzOSwxMi41MDE4NDIgMCAwIDEgMTMuNDc3NTg4LDAuMDM5MjQgbCA2Ni4xMTgzMTUsMCBhIDUuMzY0ODE1OCw1LjAwMDczNyAwIDAgMSA1LjM2NDgyMyw1LjAwMDczIGwgMCw3OS44NzkzMSB6IiAvPgogIDxwYXRoIGQ9Im0gNDIwLjE1NTM1LDE3Ny44OTExOSBhIDEzLjQxMjAzOCwxMi41MDE4NDIgMCAwIDEgLTguNjMyOTUsMjIuMDY5NTEgbCAtNjYuMTE4MzIsMCBhIDUuMzY0ODE1Miw1LjAwMDczNyAwIDAgMSAtNS4zNjQ4MiwtNS4wMDA3NCBsIDAsLTc5Ljg3OTMxIHoiIC8+Cjwvc3ZnPgo=") no-repeat fixed center/70% 70%,linear-gradient(180deg,#2a2a2a 0,#202020)} \ No newline at end of file +.normal{color:#40628a}.good{color:#537d29}.average{color:#be6209}.bad{color:#b00e0e}.highlight,.label{color:#8ba5c4}.dark{color:#272727}html{box-sizing:border-box;min-height:100%;margin:0;cursor:default}*,:after,:before{box-sizing:inherit}body{min-height:100%;height:100%;margin:0 6px;background-color:#202020;font-family:Verdana,Geneva,sans-serif;font-size:12px;color:#fff}main{display:block;margin-top:32px;padding-top:3px}hr{height:2px;background-color:#40628a;border:none}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}.bar .barText,span.button{color:#fff;font-size:12px;font-weight:400;font-style:normal;text-decoration:none}.bold{font-weight:700}.italic{font-style:italic}[unselectable=on]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.bar{display:inline-block;position:relative;vertical-align:middle;width:100%;height:20px;line-height:17px;padding:1px;border:1px solid #40628a;background:#272727}.bar .barText{position:absolute;top:0;right:3px}.bar .barFill{display:block;height:100%;transition:background-color 1s;background-color:#40628a}.bar .barFill.good{background-color:#537d29}.bar .barFill.average{background-color:#be6209}.bar .barFill.bad{background-color:#b00e0e}.bar .barFill.highlight{background-color:#8ba5c4}span.button{display:inline-block;vertical-align:middle;height:20px;line-height:19px;padding:0 5px;white-space:nowrap}span.button .fa{padding-right:2px}span.button.normal{transition:background-color .5s;background-color:#40628a}span.button.normal.active:focus,span.button.normal.active:hover{transition:background-color .25s;background-color:#4f78aa;outline:0}span.button.disabled{transition:background-color .5s;background-color:#999}span.button.disabled.active:focus,span.button.disabled.active:hover{transition:background-color .25s;background-color:#a8a8a8;outline:0}span.button.selected{transition:background-color .5s;background-color:#2f943c}span.button.selected.active:focus,span.button.selected.active:hover{transition:background-color .25s;background-color:#3ab84b;outline:0}span.button.caution{transition:background-color .5s;background-color:#9a9d00}span.button.caution.active:focus,span.button.caution.active:hover{transition:background-color .25s;background-color:#ced200;outline:0}span.button.danger{transition:background-color .5s;background-color:#9d0808}span.button.danger.active:focus,span.button.danger.active:hover{transition:background-color .25s;background-color:#ce0b0b;outline:0}span.button.gridable{width:125px;margin:2px 0}div.display,div.notice{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)}div.display header,div.notice header,div.subdisplay header{display:block;position:relative;width:100%;padding:0 4px;margin-bottom:6px;border-bottom:2px solid #40628a}div.display header .buttonRight,div.notice header .buttonRight,div.subdisplay header .buttonRight{position:absolute;bottom:6px;right:4px}div.display article,div.notice article,div.subdisplay article{display:table;width:100%;border-spacing:4px 6px}div.notice{background-color:#bb9b68;background-image:repeating-linear-gradient(-45deg,#bb9b68,#bb9b68 10px,#b1905d 0,#b1905d 20px);margin:8px 0;box-shadow:none;color:#000;font-weight:700;font-style:italic}div.notice .button{outline:1px solid #272727}div.notice .label{color:#000}div.notice hr{background-color:#272727}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)}section .content,section .label,section .line{display:table-cell;margin:0;text-align:left;vertical-align:middle}section{display:table-row;width:100%;padding:3px 0}section:not(first-child){padding-top:4px}section .label{width:1%;padding-right:32px;white-space:nowrap;color:#8ba5c4}section .content:not(:last-child){padding-right:16px}section .line{width:100%}section .buttoninfo{margin-left:5px}div.subdisplay{width:100%;margin:0}header.titlebar .close,header.titlebar .minimize{display:inline-block;position:relative;padding:7px;margin:-7px;color:#98b0c3}header.titlebar .close:hover,header.titlebar .minimize:hover{color:#a7bccc}header.titlebar{position:fixed;top:0;left:0;width:100%;height:32px;background-color:#363636;box-shadow:0 3px 3px rgba(0,0,0,.1)}header.titlebar .statusicon{position:absolute;top:4px;left:12px;transition:color .5s}header.titlebar .title{position:absolute;top:6px;left:46px;color:#98b0c3;font-size:16px;white-space:nowrap}header.titlebar .minimize{position:absolute;top:6px;right:46px}header.titlebar .close{position:absolute;top:4px;right:12px}.wf-inactive .minimize:after{content:"-"}.wf-inactive .close:after{content:"X"}body.generic{background:linear-gradient(180deg,#2a2a2a 0,#202020)}body.generic,body.nanotrasen{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2a2a2a',endColorstr='#ff202020',GradientType=0)}body.nanotrasen{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjAiIHZpZXdCb3g9IjAgMCA0MjUgMjAwIiBvcGFjaXR5PSIuMjUiPgogIDxwYXRoIGQ9Im0gMTc4LjAwMzk5LDAuMDM4NjkgLTcxLjIwMzkzLDAgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIC02Ljc2MTM0LDYuMDI1NTUgbCAwLDE4Ny44NzE0NyBhIDYuNzYxMzQyMiw2LjAyNTU0OTUgMCAwIDAgNi43NjEzNCw2LjAyNTU0IGwgNTMuMTA3MiwwIGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCA2Ljc2MTM1LC02LjAyNTU0IGwgMCwtMTAxLjU0NDAxOCA3Mi4yMTYyOCwxMDQuNjk5Mzk4IGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCA1Ljc2MDE1LDIuODcwMTYgbCA3My41NTQ4NywwIGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCA2Ljc2MTM1LC02LjAyNTU0IGwgMCwtMTg3Ljg3MTQ3IGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCAtNi43NjEzNSwtNi4wMjU1NSBsIC01NC43MTY0NCwwIGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCAtNi43NjEzMyw2LjAyNTU1IGwgMCwxMDIuNjE5MzUgTCAxODMuNzY0MTMsMi45MDg4NiBhIDYuNzYxMzQyMiw2LjAyNTU0OTUgMCAwIDAgLTUuNzYwMTQsLTIuODcwMTcgeiIgLz4KICA8cGF0aCBkPSJNIDQuODQ0NjMzMywyMi4xMDg3NSBBIDEzLjQxMjAzOSwxMi41MDE4NDIgMCAwIDEgMTMuNDc3NTg4LDAuMDM5MjQgbCA2Ni4xMTgzMTUsMCBhIDUuMzY0ODE1OCw1LjAwMDczNyAwIDAgMSA1LjM2NDgyMyw1LjAwMDczIGwgMCw3OS44NzkzMSB6IiAvPgogIDxwYXRoIGQ9Im0gNDIwLjE1NTM1LDE3Ny44OTExOSBhIDEzLjQxMjAzOCwxMi41MDE4NDIgMCAwIDEgLTguNjMyOTUsMjIuMDY5NTEgbCAtNjYuMTE4MzIsMCBhIDUuMzY0ODE1Miw1LjAwMDczNyAwIDAgMSAtNS4zNjQ4MiwtNS4wMDA3NCBsIDAsLTc5Ljg3OTMxIHoiIC8+Cjwvc3ZnPgo=") no-repeat fixed center/70% 70%,linear-gradient(180deg,#2a2a2a 0,#202020)} \ No newline at end of file diff --git a/tgui/assets/tgui.js b/tgui/assets/tgui.js index 9b976a7054a..7ac31566ac5 100644 --- a/tgui/assets/tgui.js +++ b/tgui/assets/tgui.js @@ -3,7 +3,7 @@ return this.parentWindow}},textContent:{get:function(){return 11===this.nodeType !0):void 0:(r.index=0,u=new ev(r),t.fragmentsToRender.push(t.fragments[0]=u),t.length=1,!0):un(t)}function un(t){return t.length?(t.fragmentsToUnrender=t.fragments.splice(0,t.fragments.length).filter(cn),t.fragmentsToUnrender.forEach(G),t.length=t.fragmentsToRender.length=0,!0):void 0}function cn(t){return t.rendered}function ln(t){t.rebind("","")}function pn(t){var e,n,r;for(e="",n=0,r=this.length,n=0;r>n;n+=1)e+=this.fragments[n].toString(t);return e}function hn(){var t=this;this.fragments.forEach(G),this.fragmentsToRender.forEach(function(e){return L(t.fragments,e)}),this.fragmentsToRender=[],gl.call(this),this.length=0,this.unbound=!0}function fn(t){this.fragments.forEach(t?dn:mn),this.renderedFragments=[],this.rendered=!1}function dn(t){t.unrender(!0)}function mn(t){t.unrender(!1)}function vn(){var t,e,n,r,i,a,o;for(n=this.renderedFragments;t=this.fragmentsToUnrender.pop();)t.unrender(!0),n.splice(n.indexOf(t),1);for(;t=this.fragmentsToRender.shift();)t.render();for(this.rendered&&(i=this.parentFragment.getNode()),o=this.fragments.length,a=0;o>a;a+=1)t=this.fragments[a],e=n.indexOf(t,a),e!==a?(this.docFrag.appendChild(t.detach()),-1!==e&&n.splice(e,1),n.splice(a,0,t)):this.docFrag.childNodes.length&&(r=t.firstNode(),i.insertBefore(this.docFrag,r));this.rendered&&this.docFrag.childNodes.length&&(r=this.parentFragment.findNextNode(this),i.insertBefore(this.docFrag,r)),this.renderedFragments=this.fragments.slice()}function gn(){var t,e;if(this.docFrag){for(t=this.nodes.length,e=0;t>e;e+=1)this.docFrag.appendChild(this.nodes[e]);return this.docFrag}}function bn(t){var e,n,r,i;for(n=this.nodes.length,e=0;n>e;e+=1)if(r=this.nodes[e],1===r.nodeType){if(po(r,t))return r;if(i=r.querySelector(t))return i}return null}function yn(t,e){var n,r,i,a,o,s;for(r=this.nodes.length,n=0;r>n;n+=1)if(i=this.nodes[n],1===i.nodeType&&(po(i,t)&&e.push(i),a=i.querySelectorAll(t)))for(o=a.length,s=0;o>s;s+=1)e.push(a[s])}function wn(){return this.rendered&&this.nodes[0]?this.nodes[0]:this.parentFragment.findNextNode(this)}function xn(t){return fp[t]||(fp[t]=lo(t))}function _n(t){var e,n,r;t&&"select"===t.name&&t.binding&&(e=I(t.node.options).filter(kn),t.getAttribute("multiple")?r=e.map(function(t){return t.value}):(n=e[0])&&(r=n.value),void 0!==r&&t.binding.setValue(r),t.bubble())}function kn(t){return t.selected}function En(){if(this.rendered)throw Error("Attempted to render an item that was already rendered");return this.docFrag=document.createDocumentFragment(),this.nodes=dp(this.value,this.parentFragment.getNode(),this.docFrag),mp(this.pElement),this.rendered=!0,this.docFrag}function Tn(t){var e;(e=this.root.viewmodel.wrapped[this.keypath.str])&&(t=e.get()),t!==this.value&&(this.value=t,this.parentFragment.bubble(),this.rendered&&ms.addView(this))}function Cn(){return void 0!=this.value?_e(""+this.value):""}function On(t){this.rendered&&t&&(this.nodes.forEach(e),this.rendered=!1)}function Sn(){var t,e;if(this.rendered){for(;this.nodes&&this.nodes.length;)t=this.nodes.pop(),t.parentNode.removeChild(t);e=this.parentFragment.getNode(),this.nodes=dp(this.value,e,this.docFrag),e.insertBefore(this.docFrag,this.parentFragment.findNextNode(this)),mp(this.pElement)}}function An(){var t,e=this.node;return e?((t=e.parentNode)&&t.removeChild(e),e):void 0}function Pn(){return null}function jn(){return this.node}function Fn(t){return this.attributes&&this.attributes[t]?this.attributes[t].value:void 0}function Nn(){var t=this.useProperty||!this.rendered?this.fragment.getValue():""+this.fragment;s(t,this.value)||("id"===this.name&&this.value&&delete this.root.nodes[this.value],this.value=t,"value"===this.name&&this.node&&(this.node._ractive.value=t),this.rendered&&ms.addView(this))}function Mn(t){var e=t.fragment.items;if(1===e.length)return e[0].type===xc?e[0]:void 0}function Rn(t){return this.type=Oc,this.element=t.element,this.root=t.root,Bp(this,t.name),this.isBoolean=el.test(this.name),t.value&&"string"!=typeof t.value?(this.parentFragment=this.element.parentFragment,this.fragment=new ev({template:t.value,root:this.root,owner:this}),this.value=this.fragment.getValue(),this.interpolator=qp(this),this.isBindable=!!this.interpolator&&!this.interpolator.isStatic,void(this.ready=!0)):void(this.value=this.isBoolean?!0:t.value||"")}function Ln(t,e){this.fragment&&this.fragment.rebind(t,e)}function In(t){var e;this.node=t,t.namespaceURI&&t.namespaceURI!==no.html||(e=$p[this.name]||this.name,void 0!==t[e]&&(this.propertyName=e),(this.isBoolean||this.isTwoway)&&(this.useProperty=!0),"value"===e&&(t._ractive.value=this.value)),this.rendered=!0,this.update()}function Dn(){var t=this,e=t.name,n=t.namespacePrefix,r=t.value,i=t.interpolator,a=t.fragment;if(("value"!==e||"select"!==this.element.name&&"textarea"!==this.element.name)&&("value"!==e||void 0===this.element.getAttribute("contenteditable"))){if("name"===e&&"input"===this.element.name&&i)return"name={{"+(i.keypath.str||i.ref)+"}}";if(this.isBoolean)return r?e:"";if(a){if(1===a.items.length&&null==a.items[0].value)return"";r=""+a}return n&&(e=n+":"+e),r?e+'="'+Un(r)+'"':e}}function Un(t){return t.replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'")}function Vn(){this.fragment&&this.fragment.unbind(),"id"===this.name&&delete this.root.nodes[this.value]}function Bn(){var t,e,n,r,i=this.value;if(!this.locked)for(this.node._ractive.value=i,t=this.node.options,r=t.length;r--;)if(e=t[r],n=e._ractive?e._ractive.value:e.value,n==i){e.selected=!0;break}}function qn(){var t,e,n,r,i=this.value;for(a(i)||(i=[i]),t=this.node.options,e=t.length;e--;)n=t[e],r=n._ractive?n._ractive.value:n.value,n.selected=F(i,r)}function zn(){var t=this,e=t.node,n=t.value;e.checked=n==e._ractive.value}function Wn(){var t,e,n,r,i=this.node;if(t=i.checked,i.value=this.element.getAttribute("value"),i.checked=this.element.getAttribute("value")===this.element.getAttribute("name"),t&&!i.checked&&this.element.binding&&(n=this.element.binding.siblings,r=n.length)){for(;r--;){if(e=n[r],!e.element.node)return;if(e.element.node.checked)return ms.addRactive(e.root),e.handleChange()}this.root.viewmodel.set(e.keypath,void 0)}}function Hn(){var t,e,n=this,r=n.element,i=n.node,o=n.value,s=r.binding;if(t=r.getAttribute("value"),a(o)){for(e=o.length;e--;)if(t==o[e])return void(s.isChecked=i.checked=!0);s.isChecked=i.checked=!1}else s.isChecked=i.checked=o==t}function $n(){this.node.className=n(this.value)}function Gn(){var t=this,e=t.node,n=t.value;this.root.nodes[n]=e,e.id=n}function Kn(){var t,e;t=this.node,e=this.value,void 0===e&&(e=""),t.style.setAttribute("cssText",e)}function Qn(){var t=this.value;void 0===t&&(t=""),this.locked||(this.node.innerHTML=t)}function Yn(){var t=this,e=t.node,n=t.value;e._ractive.value=n,this.locked||(e.value=void 0==n?"":n)}function Zn(){this.locked||(this.node[this.propertyName]=this.value)}function Jn(){var t=this,e=t.node,n=t.namespace,r=t.name,i=t.value,a=t.fragment;n?e.setAttributeNS(n,r,""+(a||i)):this.isBoolean?i?e.setAttribute(r,""):e.removeAttribute(r):null==i?e.removeAttribute(r):e.setAttribute(r,""+(a||i))}function Xn(){var t,e,n=this,r=n.name,i=n.element,a=n.node;"id"===r?e=eh:"value"===r?"select"===i.name&&"value"===r?e=i.getAttribute("multiple")?Yp:Qp:"textarea"===i.name?e=ih:null!=i.getAttribute("contenteditable")?e=rh:"input"===i.name&&(t=i.getAttribute("type"),e="file"===t?jo:"radio"===t&&i.binding&&"name"===i.binding.name?Jp:ih):this.isTwoway&&"name"===r?"radio"===a.type?e=Zp:"checkbox"===a.type&&(e=Xp):"style"===r&&a.style.setAttribute?e=nh:"class"!==r||a.namespaceURI&&a.namespaceURI!==no.html?this.useProperty&&(e=ah):e=th,e||(e=oh),this.update=e,this.update()}function tr(t,e){var n=e?"svg":"div";return ch.innerHTML="<"+n+" "+t+">",I(ch.childNodes[0].attributes)}function er(t,e){for(var n=t.length;n--;)if(t[n].name===e.name)return!1;return!0}function nr(t){for(;t=t.parent;)if("form"===t.name)return t}function rr(){this._ractive.binding.handleChange()}function ir(){var t;bh.call(this),t=this._ractive.root.viewmodel.get(this._ractive.binding.keypath),this.value=void 0==t?"":t}function ar(){var t=this._ractive.binding,e=this;t._timeout&&clearTimeout(t._timeout),t._timeout=setTimeout(function(){t.rendered&&bh.call(e),t._timeout=void 0},t.element.lazy)}function or(t,e,n){var r=t+e+n;return kh[r]||(kh[r]=[])}function sr(t){return t.isChecked}function ur(t){return t.element.getAttribute("value")}function cr(t){var e,n,r,i,a,o=t.attributes;return t.binding&&(t.binding.teardown(),t.binding=null),(t.getAttribute("contenteditable")||o.contenteditable&&lr(o.contenteditable))&&lr(o.value)?n=xh:"input"===t.name?(e=t.getAttribute("type"),"radio"===e||"checkbox"===e?(r=lr(o.name),i=lr(o.checked),r&&i&&m("A radio input can have two-way binding on its name attribute, or its checked attribute - not both",{ractive:t.root}),r?n="radio"===e?Oh:Ah:i&&(n="radio"===e?Th:jh)):"file"===e&&lr(o.value)?n=Ih:lr(o.value)&&(n="number"===e||"range"===e?Dh:yh)):"select"===t.name&&lr(o.value)?n=t.getAttribute("multiple")?Rh:Nh:"textarea"===t.name&&lr(o.value)&&(n=yh),n&&(a=new n(t))&&a.keypath?a:void 0}function lr(t){return t&&t.isBindable}function pr(){var t=this.getAction();t&&!this.hasListener?this.listen():!t&&this.hasListener&&this.unrender()}function hr(t){Bs(this.root,this.getAction(),{event:t})}function fr(){return(""+this.action).trim()}function dr(t,e,n){var r,i,a,o=this;this.element=t,this.root=t.root,this.parentFragment=t.parentFragment,this.name=e,-1!==e.indexOf("*")&&(p('Only component proxy-events may contain "*" wildcards, <%s on-%s="..."/> is not valid',t.name,e),this.invalid=!0),n.m?(i=n.a.r,this.method=n.m,this.keypaths=[],this.fn=Al(n.a.s,i.length),this.parentFragment=t.parentFragment,a=this.root,this.refResolvers=[],i.forEach(function(t,e){var n=void 0;(n=Wh.exec(t))?o.keypaths[e]={eventObject:!0,refinements:n[1]?n[1].split("."):[]}:o.refResolvers.push(Sl(o,t,function(t){return o.resolve(e,t)}))}),this.fire=mr):(r=n.n||n,"string"!=typeof r&&(r=new ev({template:r,root:this.root,owner:this})),this.action=r,n.d?(this.dynamicParams=new ev({template:n.d,root:this.root,owner:this.element}),this.fire=gr):n.a&&(this.params=n.a,this.fire=vr))}function mr(t){var e,n,r;if(e=this.root,"function"!=typeof e[this.method])throw Error('Attempted to call a non-existent method ("'+this.method+'")');n=this.keypaths.map(function(n){var r,i,a;if(void 0!==n){if(n.eventObject){if(r=t,i=n.refinements.length)for(a=0;i>a;a+=1)r=r[n.refinements[a]]}else r=e.viewmodel.get(n);return r}}),Vs.enqueue(e,t),r=this.fn.apply(null,n),e[this.method].apply(e,r),Vs.dequeue(e)}function vr(t){Bs(this.root,this.getAction(),{event:t,args:this.params})}function gr(t){var e=this.dynamicParams.getArgsList();"string"==typeof e&&(e=e.substr(1,e.length-2)),Bs(this.root,this.getAction(),{event:t,args:e})}function br(t){var e,n,r,i={};e=this._ractive,n=e.events[t.type],(r=Cl(n.element.parentFragment))&&(i=Cl.resolve(r)),n.fire({node:this,original:t,index:i,keypath:e.keypath.str,context:e.root.viewmodel.get(e.keypath)})}function yr(){var t,e=this.name;if(!this.invalid){if(t=g("events",this.root,e))this.custom=t(this.node,wr(e));else{if(!("on"+e in this.node||window&&"on"+e in window||Xa))return void(Kh[e]||v(Ro(e,"event"),{node:this.node}));this.node.addEventListener(e,Hh,!1)}this.hasListener=!0}}function wr(t){return Gh[t]||(Gh[t]=function(e){var n=e.node._ractive;e.index=n.index,e.keypath=n.keypath.str,e.context=n.root.viewmodel.get(n.keypath),n.events[t].fire(e)}),Gh[t]}function xr(t,e){function n(n){n&&n.rebind(t,e)}var r;return this.method?(r=this.element.parentFragment,void this.refResolvers.forEach(n)):("string"!=typeof this.action&&n(this.action),void(this.dynamicParams&&n(this.dynamicParams)))}function _r(){this.node=this.element.node,this.node._ractive.events[this.name]=this,(this.method||this.getAction())&&this.listen()}function kr(t,e){this.keypaths[t]=e}function Er(){return this.method?void this.refResolvers.forEach(G):("string"!=typeof this.action&&this.action.unbind(),void(this.dynamicParams&&this.dynamicParams.unbind()))}function Tr(){this.custom?this.custom.teardown():this.node.removeEventListener(this.name,Hh,!1),this.hasListener=!1}function Cr(){var t=this;this.dirty||(this.dirty=!0,ms.scheduleTask(function(){Or(t),t.dirty=!1})),this.parentFragment.bubble()}function Or(t){var e,n,r,i,a;e=t.node,e&&(i=I(e.options),n=t.getAttribute("value"),r=t.getAttribute("multiple"),void 0!==n?(i.forEach(function(t){var e,i;e=t._ractive?t._ractive.value:t.value,i=r?Sr(n,e):n==e,i&&(a=!0),t.selected=i}),a||(i[0]&&(i[0].selected=!0),t.binding&&t.binding.forceUpdate())):t.binding&&t.binding.forceUpdate())}function Sr(t,e){for(var n=t.length;n--;)if(t[n]==e)return!0}function Ar(t,e){t.select=jr(t.parent),t.select&&(t.select.options.push(t),e.a||(e.a={}),void 0!==e.a.value||e.a.hasOwnProperty("disabled")||(e.a.value=e.f),"selected"in e.a&&void 0!==t.select.getAttribute("value")&&delete e.a.selected)}function Pr(t){t.select&&L(t.select.options,t)}function jr(t){if(t)do if("select"===t.name)return t;while(t=t.parent)}function Fr(t){var e,n,r,i,a,o,s;this.type=Ec,e=this.parentFragment=t.parentFragment,n=this.template=t.template,this.parent=t.pElement||e.pElement,this.root=r=e.root,this.index=t.index,this.key=t.key,this.name=Vp(n.e),"option"===this.name&&Ar(this,n),"select"===this.name&&(this.options=[],this.bubble=Cr),"form"===this.name&&(this.formBindings=[]),s=Dp(this,n),this.attributes=ph(this,n.a),this.conditionalAttributes=dh(this,n.m),n.f&&(this.fragment=new ev({template:n.f,root:r,owner:this,pElement:this,cssIds:null})),o=r.twoway,s.twoway===!1?o=!1:s.twoway===!0&&(o=!0),this.twoway=o,this.lazy=s.lazy,o&&(i=Uh(this,n.a))&&(this.binding=i,a=this.root._twowayBindings[i.keypath.str]||(this.root._twowayBindings[i.keypath.str]=[]),a.push(i)),n.v&&(this.eventHandlers=nf(this,n.v)),n.o&&(this.decorator=new uf(this,n.o)),this.intro=n.t0||n.t1,this.outro=n.t0||n.t2}function Nr(t,e){function n(n){n.rebind(t,e)}var r,i,a,o;if(this.attributes&&this.attributes.forEach(n),this.conditionalAttributes&&this.conditionalAttributes.forEach(n),this.eventHandlers&&this.eventHandlers.forEach(n),this.decorator&&n(this.decorator),this.fragment&&n(this.fragment),a=this.liveQueries)for(o=this.root,r=a.length;r--;)a[r]._makeDirty();this.node&&(i=this.node._ractive)&&_(i,"keypath",t,e)}function Mr(t){var e;(t.attributes.width||t.attributes.height)&&t.node.addEventListener("load",e=function(){var n=t.getAttribute("width"),r=t.getAttribute("height");void 0!==n&&t.node.setAttribute("width",n),void 0!==r&&t.node.setAttribute("height",r),t.node.removeEventListener("load",e,!1)},!1)}function Rr(t){t.node.addEventListener("reset",Ir,!1)}function Lr(t){t.node.removeEventListener("reset",Ir,!1)}function Ir(){var t=this._ractive.proxy;ms.start(),t.formBindings.forEach(Dr),ms.end()}function Dr(t){t.root.viewmodel.set(t.keypath,t.resetValue)}function Ur(t,e,n){var r,i,a;this.element=t,this.root=r=t.root,this.isIntro=n,i=e.n||e,("string"==typeof i||(a=new ev({template:i,root:r,owner:t}),i=""+a,a.unbind(),""!==i))&&(this.name=i,e.a?this.params=e.a:e.d&&(a=new ev({template:e.d,root:r,owner:t}),this.params=a.getArgsList(),a.unbind()),this._fn=g("transitions",r,i),this._fn||v(Ro(i,"transition"),{ractive:this.root}))}function Vr(t){return t}function Br(){Df.hidden=document[Mf]}function qr(){Df.hidden=!0}function zr(){Df.hidden=!1}function Wr(){var t,e,n,r=this;return t=this.node=this.element.node,e=t.getAttribute("style"),this.complete=function(i){n||(!i&&r.isIntro&&Hr(t,e),t._ractive.transition=null,r._manager.remove(r),n=!0)},this._fn?void this._fn.apply(this.root,[this].concat(this.params)):void this.complete()}function Hr(t,e){e?t.setAttribute("style",e):(t.getAttribute("style"),t.removeAttribute("style"))}function $r(){var t,e,n,r=this,i=this.root;return t=Gr(this),e=this.node=lo(this.name,t),this.parentFragment.cssIds&&this.node.setAttribute("data-ractive-css",this.parentFragment.cssIds.map(function(t){return"{"+t+"}"}).join(" ")),xo(this.node,"_ractive",{value:{proxy:this,keypath:ss(this.parentFragment),events:wo(null),root:i}}),this.attributes.forEach(function(t){return t.render(e)}),this.conditionalAttributes.forEach(function(t){return t.render(e)}),this.fragment&&("script"===this.name?(this.bubble=Qf,this.node.text=this.fragment.toString(!1),this.fragment.unrender=jo):"style"===this.name?(this.bubble=Kf,this.bubble(),this.fragment.unrender=jo):this.binding&&this.getAttribute("contenteditable")?this.fragment.unrender=jo:this.node.appendChild(this.fragment.render())),this.binding&&(this.binding.render(),this.node._ractive.binding=this.binding),this.eventHandlers&&this.eventHandlers.forEach(function(t){return t.render()}),"option"===this.name&&Kr(this),"img"===this.name?Mr(this):"form"===this.name?Rr(this):"input"===this.name||"textarea"===this.name?this.node.defaultValue=this.node.value:"option"===this.name&&(this.node.defaultSelected=this.node.selected),this.decorator&&this.decorator.fn&&ms.scheduleTask(function(){r.decorator.torndown||r.decorator.init()},!0),i.transitionsEnabled&&this.intro&&(n=new Yf(this,this.intro,!0),ms.registerTransition(n),ms.scheduleTask(function(){return n.start()},!0),this.transition=n),this.node.autofocus&&ms.scheduleTask(function(){return r.node.focus()},!0),Qr(this),this.node}function Gr(t){var e,n,r;return e=(n=t.getAttribute("xmlns"))?n:"svg"===t.name?no.svg:(r=t.parent)?"foreignObject"===r.name?no.html:r.node.namespaceURI:t.root.el.namespaceURI}function Kr(t){var e,n,r;if(t.select&&(n=t.select.getAttribute("value"),void 0!==n))if(e=t.getAttribute("value"),t.select.node.multiple&&a(n)){for(r=n.length;r--;)if(e==n[r]){t.node.selected=!0;break}}else t.node.selected=e==n}function Qr(t){var e,n,r,i,a;e=t.root;do for(n=e._liveQueries,r=n.length;r--;)i=n[r],a=n["_"+i],a._test(t)&&(t.liveQueries||(t.liveQueries=[])).push(a);while(e=e.parent)}function Yr(t){var e,n,r;if(e=t.getAttribute("value"),void 0===e||!t.select)return!1;if(n=t.select.getAttribute("value"),n==e)return!0;if(t.select.getAttribute("multiple")&&a(n))for(r=n.length;r--;)if(n[r]==e)return!0}function Zr(t){var e,n,r,i;return e=t.attributes,n=e.type,r=e.value,i=e.name,n&&"radio"===n.value&&r&&i.interpolator&&r.value===i.interpolator.value?!0:void 0}function Jr(t){var e=""+t;return e?" "+e:""}function Xr(){this.fragment&&this.fragment.unbind(),this.binding&&this.binding.unbind(),this.eventHandlers&&this.eventHandlers.forEach(G),"option"===this.name&&Pr(this),this.attributes.forEach(G),this.conditionalAttributes.forEach(G)}function ti(t){var e,n,r;(r=this.transition)&&r.complete(),"option"===this.name?this.detach():t&&ms.detachWhenReady(this),this.fragment&&this.fragment.unrender(!1),(e=this.binding)&&(this.binding.unrender(),this.node._ractive.binding=null,n=this.root._twowayBindings[e.keypath.str],n.splice(n.indexOf(e),1)),this.eventHandlers&&this.eventHandlers.forEach(K),this.decorator&&ms.registerDecorator(this.decorator),this.root.transitionsEnabled&&this.outro&&(r=new Yf(this,this.outro,!1),ms.registerTransition(r),ms.scheduleTask(function(){return r.start()})),this.liveQueries&&ei(this),"form"===this.name&&Lr(this)}function ei(t){var e,n,r;for(r=t.liveQueries.length;r--;)e=t.liveQueries[r],n=e.selector,e._remove(t.node)}function ni(t,e){var n=id.exec(e)[0];return null===t||n.length%s}}) cannot contain nested inline partials",e,{ractive:t});var s=r?a:ai(a,e);s.partials[e]=i=o.t}return r&&(i._fn=r),i.v?i.t:i}}function ai(t,e){return t.partials.hasOwnProperty(e)?t:oi(t.constructor,e)}function oi(t,e){return t?t.partials.hasOwnProperty(e)?t:oi(t._Parent,e):void 0}function si(t,e){if(e){if(e.template&&e.template.p&&e.template.p[t])return e.template.p[t];if(e.parentFragment&&e.parentFragment.owner)return si(t,e.parentFragment.owner)}}function ui(t,e){var n,r=b("components",t,e);if(r&&(n=r.components[e],!n._Parent)){var i=n.bind(r);if(i.isOwner=r.components.hasOwnProperty(e),n=i(),!n)return void m(Mo,e,"component","component",{ractive:t});"string"==typeof n&&(n=ui(t,n)),n._fn=i,r.components[e]=n}return n}function ci(){var t=this.instance.fragment.detach();return vd.fire(this.instance),t}function li(t){return this.instance.fragment.find(t)}function pi(t,e){return this.instance.fragment.findAll(t,e)}function hi(t,e){e._test(this,!0),this.instance.fragment&&this.instance.fragment.findAllComponents(t,e)}function fi(t){return t&&t!==this.name?this.instance.fragment?this.instance.fragment.findComponent(t):null:this.instance}function di(){return this.parentFragment.findNextNode(this)}function mi(){return this.rendered?this.instance.fragment.firstNode():null}function vi(t,e,n){function r(t){var n,r;t.value=e,t.updating||(r=t.ractive,n=t.keypath,t.updating=!0,ms.start(r),r.viewmodel.mark(n),ms.end(),t.updating=!1)}var i,a,o,s,u,c;if(i=t.obj,a=t.prop,n&&!n.configurable){if("length"===a)return;throw Error('Cannot use magic mode with property "'+a+'" - object is not configurable')}n&&(o=n.get,s=n.set),u=o||function(){return e},c=function(t){s&&s(t),e=o?o():t,c._ractiveWrappers.forEach(r)},c._ractiveWrappers=[t],Object.defineProperty(i,a,{get:u,set:c,enumerable:!0,configurable:!0})}function gi(t,e){var n,r,i,a;if(this.adaptors)for(n=this.adaptors.length,r=0;n>r;r+=1)if(i=this.adaptors[r],i.filter(e,t,this.ractive))return a=this.wrapped[t]=i.wrap(this.ractive,e,t,yi(t)),void(a.value=e)}function bi(t,e){var n,r={};if(!e)return t;e+=".";for(n in t)t.hasOwnProperty(n)&&(r[e+n]=t[n]);return r}function yi(t){var e;return Vd[t]||(e=t?t+".":"",Vd[t]=function(n,r){var i;return"string"==typeof n?(i={},i[e+n]=r,i):"object"==typeof n?e?bi(n,t):n:void 0}),Vd[t]}function wi(t){var e,n,r=[Go];for(e=t.length;e--;)for(n=t[e].parent;n&&!n.isRoot;)-1===t.indexOf(n)&&j(r,n),n=n.parent;return r}function xi(t,e,n){var r;ki(t,e),n||(r=e.wildcardMatches(),r.forEach(function(n){_i(t,n,e)}))}function _i(t,e,n){var r,i,a;e=e.str||e,r=t.depsMap.patternObservers,i=r&&r[e],i&&i.forEach(function(e){a=n.join(e.lastKey),ki(t,a),_i(t,e,a)})}function ki(t,e){t.patternObservers.forEach(function(t){t.regex.test(e.str)&&t.update(e)})}function Ei(){function t(t){var r=t.key;t.viewmodel===o?(o.clearCache(r.str),t.invalidate(),n.push(r),e(r)):t.viewmodel.mark(r)}function e(n){var r,i;o.noCascade.hasOwnProperty(n.str)||((i=o.deps.computed[n.str])&&i.forEach(t),(r=o.depsMap.computed[n.str])&&r.forEach(e))}var n,r,i,a=this,o=this,s={};return n=this.changes,n.length?(n.slice().forEach(e),r=Bd(n),r.forEach(function(e){var r;-1===n.indexOf(e)&&(r=o.deps.computed[e.str])&&r.forEach(t)}),this.changes=[],this.patternObservers.length&&(r.forEach(function(t){return qd(a,t,!0)}),n.forEach(function(t){return qd(a,t)})),this.deps.observers&&(r.forEach(function(t){return Ti(a,null,t,"observers")}),Oi(this,n,"observers")),this.deps["default"]&&(i=[],r.forEach(function(t){return Ti(a,i,t,"default")}),i.length&&Ci(this,i,n),Oi(this,n,"default")),n.forEach(function(t){s[t.str]=a.get(t)}),this.implicitChanges={},this.noCascade={},s):void 0}function Ti(t,e,n,r){var i,a;(i=Si(t,n,r))&&(a=t.get(n),i.forEach(function(t){e&&t.refineValue?e.push(t):t.setValue(a)}))}function Ci(t,e,n){e.forEach(function(e){for(var r=!1,i=0,a=n.length,o=[];a>i;){var s=n[i];if(s===e.keypath){r=!0;break}s.slice(0,e.keypath.length)===e.keypath&&o.push(s),i++}r&&e.setValue(t.get(e.keypath)),o.length&&e.refineValue(o)})}function Oi(t,e,n){function r(t){t.forEach(i),t.forEach(a)}function i(e){var r=Si(t,e,n);r&&s.push({keypath:e,deps:r})}function a(e){var i;(i=t.depsMap[n][e.str])&&r(i)}function o(e){var n=t.get(e.keypath);e.deps.forEach(function(t){return t.setValue(n)})}var s=[];r(e),s.forEach(o)}function Si(t,e,n){var r=t.deps[n];return r?r[e.str]:null}function Ai(){this.captureGroups.push([])}function Pi(t,e){var n,r;if(e||(r=this.wrapped[t])&&r.teardown()!==!1&&(this.wrapped[t]=null),this.cache[t]=void 0,n=this.cacheMap[t])for(;n.length;)this.clearCache(n.pop())}function ji(t,e){var n=e.firstKey;return!(n in t.data||n in t.computations||n in t.mappings)}function Fi(t,e){var n=new Qd(t,e);return this.ready&&n.init(this),this.computations[t.str]=n}function Ni(t,e){var n,r,i,a,o,s=this.cache,u=t.str;if(e=e||Xd,e.capture&&(a=R(this.captureGroups))&&(~a.indexOf(t)||a.push(t)),So.call(this.mappings,t.firstKey))return this.mappings[t.firstKey].get(t,e);if(t.isSpecial)return t.value;if(void 0===s[u]?((r=this.computations[u])&&!r.bypass?(n=r.get(),this.adapt(u,n)):(i=this.wrapped[u])?n=i.value:t.isRoot?(this.adapt("",this.data),n=this.data):n=Mi(this,t),s[u]=n):n=s[u],!e.noUnwrap&&(i=this.wrapped[u])&&(n=i.get()),t.isRoot&&e.fullRootGet)for(o in this.mappings)n[o]=this.mappings[o].getValue();return n===Zd?void 0:n}function Mi(t,e){var n,r,i,a;return n=t.get(e.parent),(a=t.wrapped[e.parent.str])&&(n=a.get()),null!==n&&void 0!==n?((r=t.cacheMap[e.parent.str])?-1===r.indexOf(e.str)&&r.push(e.str):t.cacheMap[e.parent.str]=[e.str],"object"!=typeof n||e.lastKey in n?(i=n[e.lastKey],t.adapt(e.str,i,!1),t.cache[e.str]=i,i):t.cache[e.str]=Zd):void 0}function Ri(){var t;for(t in this.computations)this.computations[t].init(this)}function Li(t,e){var n=this.mappings[t.str]=new nm(t,e);return n.initViewmodel(this),n}function Ii(t,e){var n,r=t.str;e&&(e.implicit&&(this.implicitChanges[r]=!0),e.noCascade&&(this.noCascade[r]=!0)),(n=this.computations[r])&&n.invalidate(),-1===this.changes.indexOf(t)&&this.changes.push(t);var i=e?e.keepExistingWrapper:!1;this.clearCache(r,i),this.ready&&this.onchange()}function Di(t,e,n,r){var i,a,o,s;if(this.mark(t),r&&r.compare){o=Vi(r.compare);try{i=e.map(o),a=n.map(o)}catch(u){m('merge(): "%s" comparison failed. Falling back to identity checking',t),i=e,a=n}}else i=e,a=n;s=im(i,a),this.smartUpdate(t,n,s,e.length!==n.length)}function Ui(t){return JSON.stringify(t)}function Vi(t){if(t===!0)return Ui;if("string"==typeof t)return om[t]||(om[t]=function(e){return e[t]}),om[t];if("function"==typeof t)return t;throw Error("The `compare` option must be a function, or a string representing an identifying field (or `true` to use JSON.stringify)")}function Bi(t,e){var n,r,i,a=void 0===arguments[2]?"default":arguments[2];e.isStatic||((n=this.mappings[t.firstKey])?n.register(t,e,a):(r=this.deps[a]||(this.deps[a]={}),i=r[t.str]||(r[t.str]=[]),i.push(e),this.depsMap[a]||(this.depsMap[a]={}),t.isRoot||qi(this,t,a)))}function qi(t,e,n){for(var r,i,a;!e.isRoot;)r=t.depsMap[n],i=r[e.parent.str]||(r[e.parent.str]=[]),a=e.str,void 0===i["_"+a]&&(i["_"+a]=0,i.push(e)),i["_"+a]+=1,e=e.parent}function zi(){return this.captureGroups.pop()}function Wi(t){this.data=t,this.clearCache("")}function Hi(t,e){var n,r,i,a,o=void 0===arguments[2]?{}:arguments[2];if(!o.noMapping&&(n=this.mappings[t.firstKey]))return n.set(t,e);if(r=this.computations[t.str]){if(r.setting)return;r.set(e),e=r.get()}s(this.cache[t.str],e)||(i=this.wrapped[t.str],i&&i.reset&&(a=i.reset(e)!==!1,a&&(e=i.get())),r||a||$i(this,t,e),o.silent?this.clearCache(t.str):this.mark(t))}function $i(t,e,n){var r,i,a,o;a=function(){r.set?r.set(e.lastKey,n):(i=r.get(),o())},o=function(){i||(i=Md(e.lastKey),t.set(e.parent,i,{silent:!0})),i[e.lastKey]=n},r=t.wrapped[e.parent.str],r?a():(i=t.get(e.parent),(r=t.wrapped[e.parent.str])?a():o())}function Gi(t,e,n){var r,i,a,o=this;if(i=n.length,n.forEach(function(e,n){-1===e&&o.mark(t.join(n),fm)}),this.set(t,e,{silent:!0}),(r=this.deps["default"][t.str])&&r.filter(Ki).forEach(function(t){return t.shuffle(n,e)}),i!==e.length){for(this.mark(t.join("length"),hm),a=n.touchedFrom;aa;a+=1)this.mark(t.join(a),fm)}}function Ki(t){return"function"==typeof t.shuffle}function Qi(){var t,e=this;for(Object.keys(this.cache).forEach(function(t){return e.clearCache(t)});t=this.unresolvedImplicitDependencies.pop();)t.teardown()}function Yi(t,e){var n,r,i,a=void 0===arguments[2]?"default":arguments[2];if(!e.isStatic){if(n=this.mappings[t.firstKey])return n.unregister(t,e,a);if(r=this.deps[a][t.str],i=r.indexOf(e),-1===i)throw Error("Attempted to remove a dependant that was no longer registered! This should not happen. If you are seeing this bug in development please raise an issue at https://github.com/RactiveJS/Ractive/issues - thanks");r.splice(i,1),t.isRoot||Zi(this,t,a)}}function Zi(t,e,n){for(var r,i;!e.isRoot;)r=t.depsMap[n],i=r[e.parent.str],i["_"+e.str]-=1,i["_"+e.str]||(L(i,e),i["_"+e.str]=void 0),e=e.parent}function Ji(t){this.hook=new ns(t),this.inProcess={},this.queue={}}function Xi(t,e){return t[e._guid]||(t[e._guid]=[])}function ta(t,e){var n=Xi(t.queue,e);for(t.hook.fire(e);n.length;)ta(t,n.shift());delete t.queue[e._guid]}function ea(t,e){var n,r={};for(n in e)r[n]=na(t,n,e[n]);return r}function na(t,e,n){var r,i;return"function"==typeof n&&(r=ia(n,t)),"string"==typeof n&&(r=ra(t,n)),"object"==typeof n&&("string"==typeof n.get?r=ra(t,n.get):"function"==typeof n.get?r=ia(n.get,t):p("`%s` computation must have a `get()` method",e),"function"==typeof n.set&&(i=ia(n.set,t))),{getter:r,setter:i}}function ra(t,e){var n,r,i;return n="return ("+e.replace(wm,function(t,e){return r=!0,'__ractive.get("'+e+'")'})+");",r&&(n="var __ractive = this; "+n),i=Function(n),r?i.bind(t):i}function ia(t,e){return/this/.test(""+t)?t.bind(e):t}function aa(e){var n,i,a=void 0===arguments[1]?{}:arguments[1],o=void 0===arguments[2]?{}:arguments[2];if(Av.DEBUG&&Oo(),ua(e,o),xo(e,"data",{get:ca}),xm.fire(e,a),Tm.forEach(function(t){e[t]=r(wo(e.constructor[t]||null),a[t])}),i=new gm({adapt:oa(e,e.adapt,a),data:qu.init(e.constructor,e,a),computed:ym(e,r(wo(e.constructor.prototype.computed),a.computed)),mappings:o.mappings,ractive:e,onchange:function(){return ms.addRactive(e)}}),e.viewmodel=i,i.init(),oc.init(e.constructor,e,a),_m.fire(e),km.begin(e),e.template){var s=void 0;(o.cssIds||e.cssId)&&(s=o.cssIds?o.cssIds.slice():[],e.cssId&&s.push(e.cssId)),e.fragment=new ev({template:e.template,root:e,owner:e,cssIds:s})}if(km.end(e),n=t(e.el)){var u=e.render(n,e.append);Av.DEBUG_PROMISES&&u["catch"](function(t){throw v("Promise debugging is enabled, to help solve errors that happen asynchronously. Some browsers will log unhandled promise rejections, in which case you can safely disable promise debugging:\n Ractive.DEBUG_PROMISES = false;"),m("An error happened during rendering",{ractive:e}),t.stack&&h(t.stack),t})}}function oa(t,e,n){function r(e){return"string"==typeof e&&(e=g("adaptors",t,e),e||p(Ro(e,"adaptor"))),e}var i,a,o;if(e=e.map(r),i=M(n.adapt).map(r),i=sa(e,i),a="magic"in n?n.magic:t.magic,o="modifyArrays"in n?n.modifyArrays:t.modifyArrays,a){if(!eo)throw Error("Getters and setters (magic mode) are not supported in this browser");o&&i.push(Dd),i.push(Id)}return o&&i.push(Fd),i}function sa(t,e){for(var n=t.slice(),r=e.length;r--;)~n.indexOf(e[r])||n.push(e[r]);return n}function ua(t,e){t._guid="r-"+Em++,t._subs=wo(null),t._config={},t._twowayBindings=wo(null),t._animations=[],t.nodes={},t._liveQueries=[],t._liveComponentQueries=[],t._boundFunctions=[],t._observers=[],e.component?(t.parent=e.parent,t.container=e.container||null,t.root=t.parent.root,t.component=e.component,e.component.instance=t,t._inlinePartials=e.inlinePartials):(t.root=t,t.parent=t.container=null)}function ca(){throw Error("Using `ractive.data` is no longer supported - you must use the `ractive.get()` API instead")}function la(t,e,n){this.parentFragment=t.parentFragment,this.callback=n,this.fragment=new ev({template:e,root:t.root,owner:this}),this.update()}function pa(t,e,n){var r;return e.r?r=Sl(t,e.r,n):e.x?r=new Fl(t,t.parentFragment,e.x,n):e.rx&&(r=new Ll(t,e.rx,n)),r; }function ha(t){return 1===t.length&&t[0].t===xc}function fa(t,e){var n;for(n in e)e.hasOwnProperty(n)&&da(t.instance,t.root,n,e[n])}function da(t,e,n,r){"string"!=typeof r&&p("Components currently only support simple events - you cannot include arguments. Sorry!"),t.on(n,function(){var t,n;return arguments.length&&arguments[0]&&arguments[0].node&&(t=Array.prototype.shift.call(arguments)),n=Array.prototype.slice.call(arguments),Bs(e,r,{event:t,args:n}),!1})}function ma(t,e){var n,r;if(!e)throw Error('Component "'+this.name+'" not found');n=this.parentFragment=t.parentFragment,r=n.root,this.root=r,this.type=Sc,this.name=t.template.e,this.index=t.index,this.indexRefBindings={},this.yielders={},this.resolvers=[],Sm(this,e,t.template.a,t.template.f,t.template.p),Am(this,t.template.v),(t.template.t0||t.template.t1||t.template.t2||t.template.o)&&m('The "intro", "outro" and "decorator" directives have no effect on components',{ractive:this.instance}),Pm(this)}function va(t,e){function n(n){n.rebind(t,e)}var r;this.resolvers.forEach(n);for(var i in this.yielders)this.yielders[i][0]&&n(this.yielders[i][0]);(r=this.root._liveComponentQueries["_"+this.name])&&r._makeDirty()}function ga(){var t=this.instance;return t.render(this.parentFragment.getNode()),this.rendered=!0,t.fragment.detach()}function ba(){return""+this.instance.fragment}function ya(){var t=this.instance;this.resolvers.forEach(G),wa(this),t._observers.forEach(Q),t.fragment.unbind(),t.viewmodel.teardown(),t.fragment.rendered&&t.el.__ractive_instances__&&L(t.el.__ractive_instances__,t),Lm.fire(t)}function wa(t){var e,n;e=t.root;do(n=e._liveComponentQueries["_"+t.name])&&n._remove(t);while(e=e.parent)}function xa(t){this.shouldDestroy=t,this.instance.unrender()}function _a(t){var e=this;this.owner=t.owner,this.parent=this.owner.parentFragment,this.root=t.root,this.pElement=t.pElement,this.context=t.context,this.index=t.index,this.key=t.key,this.registeredIndexRefs=[],this.cssIds="cssIds"in t?t.cssIds:this.parent?this.parent.cssIds:null,this.items=t.template.map(function(n,r){return ka({parentFragment:e,pElement:t.pElement,template:n,index:r})}),this.value=this.argsList=null,this.dirtyArgs=this.dirtyValue=!0,this.bound=!0}function ka(t){if("string"==typeof t.template)return new vl(t);switch(t.template.t){case Ac:return new zm(t);case xc:return new ql(t);case kc:return new up(t);case _c:return new Cp(t);case Ec:var e=void 0;return(e=dd(t.parentFragment.root,t.template.e))?new Um(t,e):new nd(t);case Tc:return new fd(t);case Cc:return new Bm(t);case Pc:return new Hm(t);default:throw Error("Something very strange happened. Please file an issue at https://github.com/ractivejs/ractive/issues. Thanks!")}}function Ea(t,e){(!this.owner||this.owner.hasContext)&&_(this,"context",t,e),this.items.forEach(function(n){n.rebind&&n.rebind(t,e)})}function Ta(){var t;return 1===this.items.length?t=this.items[0].render():(t=document.createDocumentFragment(),this.items.forEach(function(e){t.appendChild(e.render())})),this.rendered=!0,t}function Ca(t){return this.items?this.items.map(t?Sa:Oa).join(""):""}function Oa(t){return""+t}function Sa(t){return t.toString(!0)}function Aa(){this.bound&&(this.items.forEach(Pa),this.bound=!1)}function Pa(t){t.unbind&&t.unbind()}function ja(t){if(!this.rendered)throw Error("Attempted to unrender a fragment that was not rendered");this.items.forEach(function(e){return e.unrender(t)}),this.rendered=!1}function Fa(t){var e,n,r,i,a;if(t=t||{},"object"!=typeof t)throw Error("The reset method takes either no arguments, or an object containing new data");for((n=this.viewmodel.wrapped[""])&&n.reset?n.reset(t)===!1&&this.viewmodel.reset(t):this.viewmodel.reset(t),r=oc.reset(this),i=r.length;i--;)if(rv.indexOf(r[i])>-1){a=!0;break}if(a){var o=void 0;this.viewmodel.mark(Go),(o=this.component)&&(o.shouldDestroy=!0),this.unrender(),o&&(o.shouldDestroy=!1),this.fragment.template!==this.template&&(this.fragment.unbind(),this.fragment=new ev({template:this.template,root:this,owner:this})),e=this.render(this.el,this.anchor)}else e=ms.start(this,!0),this.viewmodel.mark(Go),ms.end();return iv.fire(this,t),e}function Na(t){var e,n;Ku.init(null,this,{template:t}),e=this.transitionsEnabled,this.transitionsEnabled=!1,(n=this.component)&&(n.shouldDestroy=!0),this.unrender(),n&&(n.shouldDestroy=!1),this.fragment.unbind(),this.fragment=new ev({template:this.template,root:this,owner:this}),this.render(this.el,this.anchor),this.transitionsEnabled=e}function Ma(t,e){var n,r;if(r=ms.start(this,!0),c(t)){n=t;for(t in n)n.hasOwnProperty(t)&&(e=n[t],Ra(this,t,e))}else Ra(this,t,e);return ms.end(),r}function Ra(t,e,n){e=E(O(e)),e.isPattern?T(t,e).forEach(function(e){t.viewmodel.set(e,n)}):t.viewmodel.set(e,n)}function La(t,e){return Ko(this,t,void 0===e?-1:-e)}function Ia(){var t;return this.fragment.unbind(),this.viewmodel.teardown(),this._observers.forEach(Q),this.fragment.rendered&&this.el.__ractive_instances__&&L(this.el.__ractive_instances__,this),this.shouldDestroy=!0,t=this.fragment.rendered?this.unrender():os.resolve(),dv.fire(this),this._boundFunctions.forEach(Da),t}function Da(t){delete t.fn[t.prop]}function Ua(t){var e=this;if("string"!=typeof t)throw new TypeError(No);var n=void 0;return/\*/.test(t)?(n={},T(this,E(O(t))).forEach(function(t){n[t.str]=!e.viewmodel.get(t)}),this.set(n)):this.set(t,!this.get(t))}function Va(){return this.fragment.toString(!0)}function Ba(){var t,e;if(!this.fragment.rendered)return m("ractive.unrender() was called on a Ractive instance that was not rendered"),os.resolve();for(t=ms.start(this,!0),e=!this.component||this.component.shouldDestroy||this.shouldDestroy;this._animations[0];)this._animations[0].stop();return this.fragment.unrender(e),L(this.el.__ractive_instances__,this),bv.fire(this),ms.end(),t}function qa(t){var e;return t=E(t)||Go,e=ms.start(this,!0),this.viewmodel.mark(t),ms.end(),xv.fire(this,t),e}function za(t,e){var n,r,i;if("string"!=typeof t||e){i=[];for(r in this._twowayBindings)(!t||E(r).equalsOrStartsWith(t))&&i.push.apply(i,this._twowayBindings[r])}else i=this._twowayBindings[t];return n=Wa(this,i),this.set(n)}function Wa(t,e){var n={},r=[];return e.forEach(function(t){var e,i;if(!t.radioName||t.element.node.checked){if(t.checkboxName)return void(r[t.keypath.str]||t.changed()||(r.push(t.keypath),r[t.keypath.str]=t));e=t.attribute.value,i=t.getValue(),N(e,i)||s(e,i)||(n[t.keypath.str]=i)}}),r.length&&r.forEach(function(t){var e,i,a;e=r[t.str],i=e.attribute.value,a=e.getValue(),N(i,a)||(n[t.str]=a)}),n}function Ha(t,e){return"function"==typeof e&&/_super/.test(t)}function $a(t){for(var e={};t;)Ga(t,e),Qa(t,e),t=t._Parent!==Av?t._Parent:!1;return e}function Ga(t,e){ec.forEach(function(n){Ka(n.useDefaults?t.prototype:t,e,n.name)})}function Ka(t,e,n){var r,i=Object.keys(t[n]);i.length&&((r=e[n])||(r=e[n]={}),i.filter(function(t){return!(t in r)}).forEach(function(e){return r[e]=t[n][e]}))}function Qa(t,e){Object.keys(t.prototype).forEach(function(n){if("computed"!==n){var r=t.prototype[n];if(n in e){if("function"==typeof e[n]&&"function"==typeof r&&e[n]._method){var i=void 0,a=r._method;a&&(r=r._method),i=Ev(e[n]._method,r),a&&(i._method=i),e[n]=i}}else e[n]=r._method?r._method:r}})}function Ya(){for(var t=arguments.length,e=Array(t),n=0;t>n;n++)e[n]=arguments[n];return e.length?e.reduce(Za,this):Za(this)}function Za(t){var e,n,i=void 0===arguments[1]?{}:arguments[1];return i.prototype instanceof Av&&(i=Tv(i)),e=function(t){return this instanceof e?void Cm(this,t):new e(t)},n=wo(t.prototype),n.constructor=e,_o(e,{defaults:{value:n},extend:{value:Ya,writable:!0,configurable:!0},_Parent:{value:t}}),oc.extend(t,n,i),qu.extend(t,n,i),i.computed&&(n.computed=r(wo(t.prototype.computed),i.computed)),e.prototype=n,e}var Ja,Xa,to,eo,no,ro,io,ao=3,oo={el:void 0,append:!1,template:{v:ao,t:[]},preserveWhitespace:!1,sanitize:!1,stripComments:!0,delimiters:["{{","}}"],tripleDelimiters:["{{{","}}}"],interpolate:!1,data:{},computed:{},magic:!1,modifyArrays:!0,adapt:[],isolated:!1,twoway:!0,lazy:!1,noIntro:!1,transitionsEnabled:!0,complete:void 0,css:null,noCssTransform:!1},so=oo,uo={linear:function(t){return t},easeIn:function(t){return Math.pow(t,3)},easeOut:function(t){return Math.pow(t-1,3)+1},easeInOut:function(t){return(t/=.5)<1?.5*Math.pow(t,3):.5*(Math.pow(t-2,3)+2)}};Ja="object"==typeof document,Xa="undefined"!=typeof navigator&&/jsDom/.test(navigator.appName),to="undefined"!=typeof console&&"function"==typeof console.warn&&"function"==typeof console.warn.apply;try{Object.defineProperty({},"test",{value:0}),eo=!0}catch(co){eo=!1}no={html:"http://www.w3.org/1999/xhtml",mathml:"http://www.w3.org/1998/Math/MathML",svg:"http://www.w3.org/2000/svg",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"},ro="undefined"==typeof document?!1:document&&document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1"),io=["o","ms","moz","webkit"];var lo,po,ho,fo,mo,vo,go,bo,yo;if(lo=ro?function(t,e){return e&&e!==no.html?document.createElementNS(e,t):document.createElement(t)}:function(t,e){if(e&&e!==no.html)throw"This browser does not support namespaces other than http://www.w3.org/1999/xhtml. The most likely cause of this error is that you're trying to render SVG in an older browser. See http://docs.ractivejs.org/latest/svg-and-older-browsers for more information";return document.createElement(t)},Ja){for(ho=lo("div"),fo=["matches","matchesSelector"],yo=function(t){return function(e,n){return e[t](n)}},go=fo.length;go--&&!po;)if(mo=fo[go],ho[mo])po=yo(mo);else for(bo=io.length;bo--;)if(vo=io[go]+mo.substr(0,1).toUpperCase()+mo.substring(1),ho[vo]){po=yo(vo);break}po||(po=function(t,e){var n,r,i;for(r=t.parentNode,r||(ho.innerHTML="",r=ho,t=t.cloneNode(),ho.appendChild(t)),n=r.querySelectorAll(e),i=n.length;i--;)if(n[i]===t)return!0;return!1})}else po=null;var wo,xo,_o,ko=null;try{Object.defineProperty({},"test",{value:0}),Ja&&Object.defineProperty(document.createElement("div"),"test",{value:0}),xo=Object.defineProperty}catch(Eo){xo=function(t,e,n){t[e]=n.value}}try{try{Object.defineProperties({},{test:{value:0}})}catch(Eo){throw Eo}Ja&&Object.defineProperties(lo("div"),{test:{value:0}}),_o=Object.defineProperties}catch(Eo){_o=function(t,e){var n;for(n in e)e.hasOwnProperty(n)&&xo(t,n,e[n])}}try{Object.create(null),wo=Object.create}catch(Eo){wo=function(){var t=function(){};return function(e,n){var r;return null===e?{}:(t.prototype=e,r=new t,n&&Object.defineProperties(r,n),r)}}()}var To,Co,Oo,So=Object.prototype.hasOwnProperty,Ao=Object.prototype.toString,Po=/^\[object (?:Array|FileList)\]$/,jo=function(){},Fo={};to?!function(){var t=["%cRactive.js %c0.7.3 %cin debug mode, %cmore...","color: rgb(114, 157, 52); font-weight: normal;","color: rgb(85, 85, 85); font-weight: normal;","color: rgb(85, 85, 85); font-weight: normal;","color: rgb(82, 140, 224); font-weight: normal; text-decoration: underline;"],e="You're running Ractive 0.7.3 in debug mode - messages will be printed to the console to help you fix problems and optimise your application.\n\nTo disable debug mode, add this line at the start of your app:\n Ractive.DEBUG = false;\n\nTo disable debug mode when your app is minified, add this snippet:\n Ractive.DEBUG = /unminified/.test(function(){/*unminified*/});\n\nGet help and support:\n http://docs.ractivejs.org\n http://stackoverflow.com/questions/tagged/ractivejs\n http://groups.google.com/forum/#!forum/ractive-js\n http://twitter.com/ractivejs\n\nFound a bug? Raise an issue:\n https://github.com/ractivejs/ractive/issues\n\n";Oo=function(){var n=!!console.groupCollapsed;console[n?"groupCollapsed":"log"].apply(console,t),console.log(e),n&&console.groupEnd(t),Oo=jo},Co=function(t,e){if(Oo(),"object"==typeof e[e.length-1]){var n=e.pop(),r=n?n.ractive:null;if(r){var i=void 0;r.component&&(i=r.component.name)&&(t="<"+i+"> "+t);var a=void 0;(a=n.node||r.fragment&&r.fragment.rendered&&r.find("*"))&&e.push(a)}}console.warn.apply(console,["%cRactive.js: %c"+t,"color: rgb(114, 157, 52);","color: rgb(85, 85, 85);"].concat(e))},To=function(){console.log.apply(console,arguments)}}():Co=To=Oo=jo;var No="Bad arguments",Mo='A function was specified for "%s" %s, but no %s was returned',Ro=function(t,e){return'Missing "'+t+'" '+e+" plugin. You may need to download a plugin via http://docs.ractivejs.org/latest/plugins#"+e+"s"},Lo=function(t,e,n,r){if(t===e)return y(e);if(r){var i=g("interpolators",n,r);if(i)return i(t,e)||y(e);p(Ro(r,"interpolator"))}return Uo.number(t,e)||Uo.array(t,e)||Uo.object(t,e)||y(e)},Io=Lo,Do={number:function(t,e){var n;return u(t)&&u(e)?(t=+t,e=+e,n=e-t,n?function(e){return t+e*n}:function(){return t}):null},array:function(t,e){var n,r,i,o;if(!a(t)||!a(e))return null;for(n=[],r=[],o=i=Math.min(t.length,e.length);o--;)r[o]=Io(t[o],e[o]);for(o=i;o=this.duration?(null!==a&&(ms.start(this.root),this.root.viewmodel.set(a,this.to),ms.end()),this.step&&this.step(1,this.to),this.complete(this.to),i=this.root._animations.indexOf(this),-1===i&&m("Animation was not found"),this.root._animations.splice(i,1),this.running=!1,!1):(e=this.easing?this.easing(t/this.duration):t/this.duration,null!==a&&(n=this.interpolator(e),ms.start(this.root),this.root.viewmodel.set(a,n),ms.end()),this.step&&this.step(e,n),!0)):!1},stop:function(){var t;this.running=!1,t=this.root._animations.indexOf(this),-1===t&&m("Animation was not found"),this.root._animations.splice(t,1)}};var ws=ys,xs=nt,_s={stop:jo},ks=it,Es=new ns("detach"),Ts=at,Cs=ot,Os=function(){var t,e,n;t=this._root[this._isComponentQuery?"liveComponentQueries":"liveQueries"],e=this.selector,n=t.indexOf(e),-1!==n&&(t.splice(n,1),t[e]=null)},Ss=function(t,e){var n,r,i,a,o,s,u,c,l,p;for(n=ut(t.component||t._ractive.proxy),r=ut(e.component||e._ractive.proxy),i=R(n),a=R(r);i&&i===a;)n.pop(),r.pop(),o=i,i=R(n),a=R(r);if(i=i.component||i,a=a.component||a,l=i.parentFragment,p=a.parentFragment,l===p)return s=l.items.indexOf(i),u=p.items.indexOf(a),s-u||n.length-r.length;if(c=o.fragments)return s=c.indexOf(l),u=c.indexOf(p),s-u||n.length-r.length;throw Error("An unexpected condition was met while comparing the position of two components. Please file an issue at https://github.com/RactiveJS/Ractive/issues - thanks!")},As=function(t,e){var n;return t.compareDocumentPosition?(n=t.compareDocumentPosition(e),2&n?1:-1):Ss(t,e)},Ps=function(){this.sort(this._isComponentQuery?Ss:As),this._dirty=!1},js=function(){var t=this;this._dirty||(this._dirty=!0,ms.scheduleTask(function(){t._sort()}))},Fs=function(t){var e=this.indexOf(this._isComponentQuery?t.instance:t);-1!==e&&this.splice(e,1)},Ns=ct,Ms=lt,Rs=pt,Ls=ht,Is=ft,Ds=dt,Us={enqueue:function(t,e){t.event&&(t._eventQueue=t._eventQueue||[],t._eventQueue.push(t.event)),t.event=e},dequeue:function(t){t._eventQueue&&t._eventQueue.length?t.event=t._eventQueue.pop():delete t.event}},Vs=Us,Bs=mt,qs=bt,zs=yt,Ws={capture:!0,noUnwrap:!0,fullRootGet:!0},Hs=wt,$s=new ns("insert"),Gs=_t,Ks=function(t,e,n,r){this.root=t,this.keypath=e,this.callback=n,this.defer=r.defer,this.context=r&&r.context?r.context:t};Ks.prototype={init:function(t){this.value=this.root.get(this.keypath.str),t!==!1?this.update():this.oldValue=this.value},setValue:function(t){var e=this;s(t,this.value)||(this.value=t,this.defer&&this.ready?ms.scheduleTask(function(){return e.update()}):this.update())},update:function(){this.updating||(this.updating=!0,this.callback.call(this.context,this.value,this.oldValue,this.keypath.str),this.oldValue=this.value,this.updating=!1)}};var Qs,Ys=Ks,Zs=kt,Js=Array.prototype.slice;Qs=function(t,e,n,r){this.root=t,this.callback=n,this.defer=r.defer,this.keypath=e,this.regex=RegExp("^"+e.str.replace(/\./g,"\\.").replace(/\*/g,"([^\\.]+)")+"$"),this.values={},this.defer&&(this.proxies=[]),this.context=r&&r.context?r.context:t},Qs.prototype={init:function(t){var e,n;if(e=Zs(this.root,this.keypath),t!==!1)for(n in e)e.hasOwnProperty(n)&&this.update(E(n));else this.values=e},update:function(t){var e,n=this;if(t.isPattern){e=Zs(this.root,t);for(t in e)e.hasOwnProperty(t)&&this.update(E(t))}else if(!this.root.viewmodel.implicitChanges[t.str])return this.defer&&this.ready?void ms.scheduleTask(function(){return n.getProxy(t).update()}):void this.reallyUpdate(t)},reallyUpdate:function(t){var e,n,r,i;return e=t.str,n=this.root.viewmodel.get(t),this.updating?void(this.values[e]=n):(this.updating=!0,s(n,this.values[e])&&this.ready||(r=Js.call(this.regex.exec(e),1),i=[n,this.values[e],e].concat(r),this.values[e]=n,this.callback.apply(this.context,i)),void(this.updating=!1))},getProxy:function(t){var e=this;return this.proxies[t.str]||(this.proxies[t.str]={update:function(){return e.reallyUpdate(t)}}),this.proxies[t.str]}};var Xs,tu,eu,nu,ru,iu,au=Qs,ou=Et,su={},uu=Tt,cu=Ct,lu=function(t){return t.trim()},pu=function(t){return""!==t},hu=Ot,fu=St,du=At,mu=Pt,vu=Array.prototype,gu=function(t){return function(e){for(var n=arguments.length,r=Array(n>1?n-1:0),i=1;n>i;i++)r[i-1]=arguments[i];var o,s,u,c,l=[];if(e=E(O(e)),o=this.viewmodel.get(e),s=o.length,!a(o))throw Error("Called ractive."+t+"('"+e.str+"'), but '"+e.str+"' does not refer to an array");return l=mu(o,t,r),c=vu[t].apply(o,r),u=ms.start(this,!0).then(function(){return c}),l?this.viewmodel.smartUpdate(e,o,l):this.viewmodel.mark(e),ms.end(),u}},bu=gu("pop"),yu=gu("push"),wu="/* Ractive.js component styles */\n",xu=[],_u=!1;Ja?(eu=document.createElement("style"),eu.type="text/css",nu=document.getElementsByTagName("head")[0],iu=!1,ru=eu.styleSheet,tu=function(){var t=wu+xu.map(function(t){return"\n/* {"+t.id+"} */\n"+t.styles}).join("\n");ru?ru.cssText=t:eu.innerHTML=t,iu||(nu.appendChild(eu),iu=!0)},Xs={add:function(t){xu.push(t),_u=!0},apply:function(){_u&&(tu(),_u=!1)}}):Xs={add:jo,apply:jo};var ku,Eu,Tu,Cu=Xs,Ou=Ft,Su=new ns("render"),Au=new ns("complete"),Pu={extend:function(t,e,n){e.adapt=Mt(e.adapt,M(n.adapt))},init:function(){}},ju=Pu,Fu=Rt,Nu=/(?:^|\})?\s*([^\{\}]+)\s*\{/g,Mu=/\/\*.*?\*\//g,Ru=/((?:(?:\[[^\]+]\])|(?:[^\s\+\>\~:]))+)((?::[^\s\+\>\~\(]+(?:\([^\)]+\))?)?\s*[\s\+\>\~]?)\s*/g,Lu=/^@media/,Iu=/\[data-ractive-css~="\{[a-z0-9-]+\}"]/g,Du=1,Uu={name:"css",extend:function(t,e,n){if(n.css){var r=Du++,i=n.noCssTransform?n.css:Fu(n.css,r);e.cssId=r,Cu.add({id:r,styles:i})}},init:function(){}},Vu=Uu,Bu={name:"data",extend:function(t,e,n){var r=void 0,i=void 0;if(n.data&&c(n.data))for(r in n.data)i=n.data[r],i&&"object"==typeof i&&(c(i)||a(i))&&m("Passing a `data` option with object and array properties to Ractive.extend() is discouraged, as mutating them is likely to cause bugs. Consider using a data function instead:\n\n // this...\n data: function () {\n return {\n myObject: {}\n };\n })\n\n // instead of this:\n data: {\n myObject: {}\n }");e.data=Ut(e.data,n.data)},init:function(t,e,n){var r=Ut(t.prototype.data,n.data);return"function"==typeof r&&(r=r.call(e)),r||{}},reset:function(t){var e=this.init(t.constructor,t,t.viewmodel);return t.viewmodel.reset(e),!0}},qu=Bu,zu=null,Wu=["preserveWhitespace","sanitize","stripComments","delimiters","tripleDelimiters","interpolate"],Hu={fromId:Wt,isHashedId:Ht,isParsed:$t,getParseOptions:Gt,createHelper:qt,parse:zt},$u=Hu,Gu={name:"template",extend:function(t,e,n){var r;"template"in n&&(r=n.template,"function"==typeof r?e.template=r:e.template=Zt(r,e))},init:function(t,e,n){var r,i;r="template"in n?n.template:t.prototype.template,"function"==typeof r&&(i=r,r=Qt(e,i),e._config.template={fn:i,result:r}),r=Zt(r,e),e.template=r.t,r.p&&Jt(e.partials,r.p)},reset:function(t){var e,n=Kt(t);return n?(e=Zt(n,t),t.template=e.t,Jt(t.partials,e.p,!0),!0):void 0}},Ku=Gu;ku=["adaptors","components","computed","decorators","easing","events","interpolators","partials","transitions"],Eu=function(t,e){this.name=t,this.useDefaults=e},Eu.prototype={constructor:Eu,extend:function(t,e,n){this.configure(this.useDefaults?t.defaults:t,this.useDefaults?e:e.constructor,n)},init:function(){},configure:function(t,e,n){var r,i=this.name,a=n[i];r=wo(t[i]);for(var o in a)r[o]=a[o];e[i]=r},reset:function(t){var e=t[this.name],n=!1;return Object.keys(e).forEach(function(t){var r=e[t];r._fn&&(r._fn.isOwner?e[t]=r._fn:delete e[t],n=!0)}),n}},Tu=ku.map(function(t){return new Eu(t,"computed"===t)});var Qu,Yu,Zu,Ju,Xu,tc,ec=Tu,nc=Xt,rc=re;Ju={adapt:ju,css:Vu,data:qu,template:Ku},Zu=Object.keys(so),tc=oe(Zu.filter(function(t){return!Ju[t]})),Xu=oe(Zu.concat(ec.map(function(t){return t.name}))),Yu=[].concat(Zu.filter(function(t){return!ec[t]&&!Ju[t]}),ec,Ju.data,Ju.template,Ju.css),Qu={extend:function(t,e,n){return ie("extend",t,e,n)},init:function(t,e,n){return ie("init",t,e,n)},reset:function(t){return Yu.filter(function(e){return e.reset&&e.reset(t)}).map(function(t){return t.name})},order:Yu};var ic,ac,oc=Qu,sc=se,uc=ue,cc=ce,lc=le,pc=pe,hc=he,fc=fe,dc=de,mc=/^\s+/;ac=function(t){this.name="ParseError",this.message=t;try{throw Error(t)}catch(e){this.stack=e.stack}},ac.prototype=Error.prototype,ic=function(t,e){var n,r,i=0;for(this.str=t,this.options=e||{},this.pos=0,this.lines=this.str.split("\n"),this.lineEnds=this.lines.map(function(t){var e=i+t.length+1;return i=e,e},0),this.init&&this.init(t,e),n=[];this.posn;n+=1)if(this.pos=e,i=t[n](this))return i;return null},getLinePos:function(t){for(var e,n=0,r=0;t>=this.lineEnds[n];)r=this.lineEnds[n],n+=1;return e=t-r,[n+1,e+1,t]},error:function(t){var e=this.getLinePos(this.pos),n=e[0],r=e[1],i=this.lines[e[0]-1],a=0,o=i.replace(/\t/g,function(t,n){return n/g,ul=/&/g;var dl=function(){return e(this.node)},ml=function(t){this.type=wc,this.text=t.template};ml.prototype={detach:dl,firstNode:function(){return this.node},render:function(){return this.node||(this.node=document.createTextNode(this.text)),this.node},toString:function(t){return t?Ee(this.text):this.text},unrender:function(t){return t?this.detach():void 0}};var vl=ml,gl=Te,bl=Ce,yl=function(t,e,n){var r;this.ref=e,this.resolved=!1,this.root=t.root,this.parentFragment=t.parentFragment,this.callback=n,r=us(t.root,e,t.parentFragment),void 0!=r?this.resolve(r):ms.addUnresolved(this)};yl.prototype={resolve:function(t){this.keypath&&!t&&ms.addUnresolved(this),this.resolved=!0,this.keypath=t,this.callback(t)},forceResolution:function(){this.resolve(E(this.ref))},rebind:function(t,e){var n;void 0!=this.keypath&&(n=this.keypath.replace(t,e),void 0!==n&&this.resolve(n))},unbind:function(){this.resolved||ms.removeUnresolved(this)}};var wl=yl,xl=function(t,e,n){this.parentFragment=t.parentFragment,this.ref=e,this.callback=n,this.rebind()},_l={"@keypath":{prefix:"c",prop:["context"]},"@index":{prefix:"i",prop:["index"]},"@key":{prefix:"k",prop:["key","index"]}};xl.prototype={rebind:function(){var t,e=this.ref,n=this.parentFragment,r=_l[e];if(!r)throw Error('Unknown special reference "'+e+'" - valid references are @index, @key and @keypath');if(this.cached)return this.callback(E("@"+r.prefix+Oe(this.cached,r)));if(-1!==r.prop.indexOf("index")||-1!==r.prop.indexOf("key"))for(;n;){if(n.owner.currentSubtype===Lc&&void 0!==(t=Oe(n,r)))return this.cached=n,n.registerIndexRef(this),this.callback(E("@"+r.prefix+t));n=!n.parent&&n.owner&&n.owner.component&&n.owner.component.parentFragment&&!n.owner.component.instance.isolated?n.owner.component.parentFragment:n.parent}else for(;n;){if(void 0!==(t=Oe(n,r)))return this.callback(E("@"+r.prefix+t.str));n=n.parent}},unbind:function(){this.cached&&this.cached.unregisterIndexRef(this)}};var kl=xl,El=function(t,e,n){this.parentFragment=t.parentFragment,this.ref=e,this.callback=n,e.ref.fragment.registerIndexRef(this),this.rebind()};El.prototype={rebind:function(){var t,e=this.ref.ref;t="k"===e.ref.t?"k"+e.fragment.key:"i"+e.fragment.index,void 0!==t&&this.callback(E("@"+t))},unbind:function(){this.ref.ref.fragment.unregisterIndexRef(this)}};var Tl=El,Cl=Se;Se.resolve=function(t){var e,n,r={};for(e in t.refs)n=t.refs[e],r[n.ref.n]="k"===n.ref.t?n.fragment.key:n.fragment.index;return r};var Ol,Sl=Ae,Al=Pe,Pl={},jl=Function.prototype.bind;Ol=function(t,e,n,r){var i,a=this;i=t.root,this.root=i,this.parentFragment=e,this.callback=r,this.owner=t,this.str=n.s,this.keypaths=[],this.pending=n.r.length,this.refResolvers=n.r.map(function(t,e){return Sl(a,t,function(t){a.resolve(e,t)})}),this.ready=!0,this.bubble()},Ol.prototype={bubble:function(){this.ready&&(this.uniqueString=Fe(this.str,this.keypaths),this.keypath=Ne(this.uniqueString),this.createEvaluator(),this.callback(this.keypath))},unbind:function(){for(var t;t=this.refResolvers.pop();)t.unbind()},resolve:function(t,e){this.keypaths[t]=e,this.bubble()},createEvaluator:function(){var t,e,n,r,i,a=this;r=this.keypath,t=this.root.viewmodel.computations[r.str],t?this.root.viewmodel.mark(r):(i=Al(this.str,this.refResolvers.length),e=this.keypaths.map(function(t){var e;return"undefined"===t?function(){}:t.isSpecial?(e=t.value,function(){return e}):function(){var e=a.root.viewmodel.get(t,{noUnwrap:!0,fullRootGet:!0});return"function"==typeof e&&(e=Re(e,a.root)),e}}),n={deps:this.keypaths.filter(Me),getter:function(){var t=e.map(je);return i.apply(null,t)}},t=this.root.viewmodel.compute(r,n))},rebind:function(t,e){this.refResolvers.forEach(function(n){return n.rebind(t,e)})}};var Fl=Ol,Nl=function(t,e,n){var r=this;this.resolver=e,this.root=e.root,this.parentFragment=n,this.viewmodel=e.root.viewmodel,"string"==typeof t?this.value=t:t.t===Nc?this.refResolver=Sl(this,t.n,function(t){r.resolve(t)}):new Fl(e,n,t,function(t){r.resolve(t)})};Nl.prototype={resolve:function(t){this.keypath&&this.viewmodel.unregister(this.keypath,this),this.keypath=t,this.value=this.viewmodel.get(t),this.bind(),this.resolver.bubble()},bind:function(){this.viewmodel.register(this.keypath,this)},rebind:function(t,e){this.refResolver&&this.refResolver.rebind(t,e)},setValue:function(t){this.value=t,this.resolver.bubble()},unbind:function(){this.keypath&&this.viewmodel.unregister(this.keypath,this),this.refResolver&&this.refResolver.unbind()},forceResolution:function(){this.refResolver&&this.refResolver.forceResolution()}};var Ml=Nl,Rl=function(t,e,n){var r,i,a,o,s=this;this.parentFragment=o=t.parentFragment,this.root=r=t.root,this.mustache=t,this.ref=i=e.r,this.callback=n,this.unresolved=[],(a=us(r,i,o))?this.base=a:this.baseResolver=new wl(this,i,function(t){s.base=t,s.baseResolver=null,s.bubble()}),this.members=e.m.map(function(t){return new Ml(t,s,o)}),this.ready=!0,this.bubble()};Rl.prototype={getKeypath:function(){var t=this.members.map(Le);return!t.every(Ie)||this.baseResolver?null:this.base.join(t.join("."))},bubble:function(){this.ready&&!this.baseResolver&&this.callback(this.getKeypath())},unbind:function(){this.members.forEach(G)},rebind:function(t,e){var n;if(this.base){var r=this.base.replace(t,e);r&&r!==this.base&&(this.base=r,n=!0)}this.members.forEach(function(r){r.rebind(t,e)&&(n=!0)}),n&&this.bubble()},forceResolution:function(){this.baseResolver&&(this.base=E(this.ref),this.baseResolver.unbind(),this.baseResolver=null),this.members.forEach(De),this.bubble()}};var Ll=Rl,Il=Ue,Dl=Ve,Ul=Be,Vl={getValue:bl,init:Il,resolve:Dl,rebind:Ul},Bl=function(t){this.type=xc,Vl.init(this,t)};Bl.prototype={update:function(){this.node.data=void 0==this.value?"":this.value},resolve:Vl.resolve,rebind:Vl.rebind,detach:dl,unbind:gl,render:function(){return this.node||(this.node=document.createTextNode(n(this.value))),this.node},unrender:function(t){t&&e(this.node)},getValue:Vl.getValue,setValue:function(t){var e;this.keypath&&(e=this.root.viewmodel.wrapped[this.keypath.str])&&(t=e.get()),s(t,this.value)||(this.value=t,this.parentFragment.bubble(),this.node&&ms.addView(this))},firstNode:function(){return this.node},toString:function(t){var e=""+n(this.value);return t?Ee(e):e}};var ql=Bl,zl=qe,Wl=ze,Hl=We,$l=He,Gl=$e,Kl=Ge,Ql=Ke,Yl=Qe,Zl=Ye,Jl=function(t,e){Vl.rebind.call(this,t,e)},Xl=Je,tp=Xe,ep=pn,np=hn,rp=fn,ip=vn,ap=function(t){this.type=kc,this.subtype=this.currentSubtype=t.template.n,this.inverted=this.subtype===Rc,this.pElement=t.pElement,this.fragments=[],this.fragmentsToCreate=[],this.fragmentsToRender=[],this.fragmentsToUnrender=[],t.template.i&&(this.indexRefs=t.template.i.split(",").map(function(t,e){return{n:t,t:0===e?"k":"i"}})),this.renderedFragments=[],this.length=0,Vl.init(this,t)};ap.prototype={bubble:zl,detach:Wl,find:Hl,findAll:$l,findAllComponents:Gl,findComponent:Kl,findNextNode:Ql,firstNode:Yl,getIndexRef:function(t){if(this.indexRefs)for(var e=this.indexRefs.length;e--;){var n=this.indexRefs[e];if(n.n===t)return n}},getValue:Vl.getValue,shuffle:Zl,rebind:Jl,render:Xl,resolve:Vl.resolve,setValue:tp,toString:ep,unbind:np,unrender:rp,update:ip};var op,sp,up=ap,cp=gn,lp=bn,pp=yn,hp=wn,fp={};try{lo("table").innerHTML="foo"}catch(Eo){op=!0,sp={TABLE:['',"
"],THEAD:['',"
"],TBODY:['',"
"],TR:['',"
"],SELECT:['"]}}var dp=function(t,e,n){var r,i,a,o,s,u=[];if(null!=t&&""!==t){for(op&&(i=sp[e.tagName])?(r=xn("DIV"),r.innerHTML=i[0]+t+i[1],r=r.querySelector(".x"),"SELECT"===r.tagName&&(a=r.options[r.selectedIndex])):e.namespaceURI===no.svg?(r=xn("DIV"),r.innerHTML=''+t+"",r=r.querySelector(".x")):(r=xn(e.tagName),r.innerHTML=t,"SELECT"===r.tagName&&(a=r.options[r.selectedIndex]));o=r.firstChild;)u.push(o),n.appendChild(o);if("SELECT"===e.tagName)for(s=u.length;s--;)u[s]!==a&&(u[s].selected=!1)}return u},mp=_n,vp=En,gp=Tn,bp=Cn,yp=On,wp=Sn,xp=function(t){this.type=_c,Vl.init(this,t)};xp.prototype={detach:cp,find:lp,findAll:pp,firstNode:hp,getValue:Vl.getValue,rebind:Vl.rebind,render:vp,resolve:Vl.resolve,setValue:gp,toString:bp,unbind:gl,unrender:yp,update:wp};var _p,kp,Ep,Tp,Cp=xp,Op=function(){this.parentFragment.bubble()},Sp=An,Ap=function(t){return this.node?po(this.node,t)?this.node:this.fragment&&this.fragment.find?this.fragment.find(t):void 0:null},Pp=function(t,e){e._test(this,!0)&&e.live&&(this.liveQueries||(this.liveQueries=[])).push(e),this.fragment&&this.fragment.findAll(t,e)},jp=function(t,e){this.fragment&&this.fragment.findAllComponents(t,e)},Fp=function(t){return this.fragment?this.fragment.findComponent(t):void 0},Np=Pn,Mp=jn,Rp=Fn,Lp=/^true|on|yes|1$/i,Ip=/^[0-9]+$/,Dp=function(t,e){var n,r,i;return i=e.a||{},r={},n=i.twoway,void 0!==n&&(r.twoway=0===n||Lp.test(n)),n=i.lazy,void 0!==n&&(0!==n&&Ip.test(n)?r.lazy=parseInt(n):r.lazy=0===n||Lp.test(n)),r},Up=Nn;_p="altGlyph altGlyphDef altGlyphItem animateColor animateMotion animateTransform clipPath feBlend feColorMatrix feComponentTransfer feComposite feConvolveMatrix feDiffuseLighting feDisplacementMap feDistantLight feFlood feFuncA feFuncB feFuncG feFuncR feGaussianBlur feImage feMerge feMergeNode feMorphology feOffset fePointLight feSpecularLighting feSpotLight feTile feTurbulence foreignObject glyphRef linearGradient radialGradient textPath vkern".split(" "),kp="attributeName attributeType baseFrequency baseProfile calcMode clipPathUnits contentScriptType contentStyleType diffuseConstant edgeMode externalResourcesRequired filterRes filterUnits glyphRef gradientTransform gradientUnits kernelMatrix kernelUnitLength keyPoints keySplines keyTimes lengthAdjust limitingConeAngle markerHeight markerUnits markerWidth maskContentUnits maskUnits numOctaves pathLength patternContentUnits patternTransform patternUnits pointsAtX pointsAtY pointsAtZ preserveAlpha preserveAspectRatio primitiveUnits refX refY repeatCount repeatDur requiredExtensions requiredFeatures specularConstant specularExponent spreadMethod startOffset stdDeviation stitchTiles surfaceScale systemLanguage tableValues targetX targetY textLength viewBox viewTarget xChannelSelector yChannelSelector zoomAndPan".split(" "),Ep=function(t){for(var e={},n=t.length;n--;)e[t[n].toLowerCase()]=t[n];return e},Tp=Ep(_p.concat(kp));var Vp=function(t){var e=t.toLowerCase();return Tp[e]||e},Bp=function(t,e){var n,r;if(n=e.indexOf(":"),-1===n||(r=e.substr(0,n),"xmlns"===r))t.name=t.element.namespace!==no.html?Vp(e):e;else if(e=e.substring(n+1),t.name=Vp(e),t.namespace=no[r.toLowerCase()],t.namespacePrefix=r,!t.namespace)throw'Unknown namespace ("'+r+'")'},qp=Mn,zp=Rn,Wp=Ln,Hp=In,$p={"accept-charset":"acceptCharset",accesskey:"accessKey",bgcolor:"bgColor","class":"className",codebase:"codeBase",colspan:"colSpan",contenteditable:"contentEditable",datetime:"dateTime",dirname:"dirName","for":"htmlFor","http-equiv":"httpEquiv",ismap:"isMap",maxlength:"maxLength",novalidate:"noValidate",pubdate:"pubDate",readonly:"readOnly",rowspan:"rowSpan",tabindex:"tabIndex",usemap:"useMap"},Gp=Dn,Kp=Vn,Qp=Bn,Yp=qn,Zp=zn,Jp=Wn,Xp=Hn,th=$n,eh=Gn,nh=Kn,rh=Qn,ih=Yn,ah=Zn,oh=Jn,sh=Xn,uh=function(t){this.init(t)};uh.prototype={bubble:Up,init:zp,rebind:Wp,render:Hp,toString:Gp,unbind:Kp,update:sh};var ch,lh=uh,ph=function(t,e){var n,r,i=[];for(n in e)"twoway"!==n&&"lazy"!==n&&e.hasOwnProperty(n)&&(r=new lh({element:t,name:n,value:e[n],root:t.root}),i[n]=r,"value"!==n&&i.push(r));return(r=i.value)&&i.push(r),i};"undefined"!=typeof document&&(ch=lo("div"));var hh=function(t,e){this.element=t,this.root=t.root,this.parentFragment=t.parentFragment,this.attributes=[],this.fragment=new ev({root:t.root,owner:this,template:[e]})};hh.prototype={bubble:function(){this.node&&this.update(),this.element.bubble()},rebind:function(t,e){this.fragment.rebind(t,e)},render:function(t){this.node=t,this.isSvg=t.namespaceURI===no.svg,this.update()},unbind:function(){this.fragment.unbind()},update:function(){var t,e,n=this;t=""+this.fragment,e=tr(t,this.isSvg),this.attributes.filter(function(t){return er(e,t)}).forEach(function(t){n.node.removeAttribute(t.name)}),e.forEach(function(t){n.node.setAttribute(t.name,t.value)}),this.attributes=e},toString:function(){return""+this.fragment}};var fh=hh,dh=function(t,e){return e?e.map(function(e){return new fh(t,e)}):[]},mh=function(t){var e,n,r,i;if(this.element=t,this.root=t.root,this.attribute=t.attributes[this.name||"value"],e=this.attribute.interpolator,e.twowayBinding=this,n=e.keypath){if("}"===n.str.slice(-1))return v("Two-way binding does not work with expressions (`%s` on <%s>)",e.resolver.uniqueString,t.name,{ractive:this.root}),!1;if(n.isSpecial)return v("Two-way binding does not work with %s",e.resolver.ref,{ractive:this.root}),!1}else{var a=e.template.r?"'"+e.template.r+"' reference":"expression";m("The %s being used for two-way binding is ambiguous, and may cause unexpected results. Consider initialising your data to eliminate the ambiguity",a,{ractive:this.root}),e.resolver.forceResolution(),n=e.keypath}this.attribute.isTwoway=!0,this.keypath=n,r=this.root.viewmodel.get(n),void 0===r&&this.getInitialValue&&(r=this.getInitialValue(),void 0!==r&&this.root.viewmodel.set(n,r)),(i=nr(t))&&(this.resetValue=r,i.formBindings.push(this))};mh.prototype={handleChange:function(){var t=this;ms.start(this.root),this.attribute.locked=!0,this.root.viewmodel.set(this.keypath,this.getValue()),ms.scheduleTask(function(){return t.attribute.locked=!1}),ms.end()},rebound:function(){var t,e,n;e=this.keypath,n=this.attribute.interpolator.keypath,e!==n&&(L(this.root._twowayBindings[e.str],this),this.keypath=n,t=this.root._twowayBindings[n.str]||(this.root._twowayBindings[n.str]=[]),t.push(this))},unbind:function(){}},mh.extend=function(t){var e,n=this;return e=function(t){mh.call(this,t),this.init&&this.init()},e.prototype=wo(n.prototype),r(e.prototype,t),e.extend=mh.extend,e};var vh,gh=mh,bh=rr;vh=gh.extend({getInitialValue:function(){return""},getValue:function(){return this.element.node.value},render:function(){var t,e=this.element.node,n=!1;this.rendered=!0,t=this.root.lazy,this.element.lazy===!0?t=!0:this.element.lazy===!1?t=!1:u(this.element.lazy)?(t=!1,n=+this.element.lazy):u(t||"")&&(n=+t,t=!1,this.element.lazy=n),this.handler=n?ar:bh,e.addEventListener("change",bh,!1),t||(e.addEventListener("input",this.handler,!1),e.attachEvent&&e.addEventListener("keyup",this.handler,!1)),e.addEventListener("blur",ir,!1)},unrender:function(){var t=this.element.node;this.rendered=!1,t.removeEventListener("change",bh,!1),t.removeEventListener("input",this.handler,!1),t.removeEventListener("keyup",this.handler,!1),t.removeEventListener("blur",ir,!1)}});var yh=vh,wh=yh.extend({getInitialValue:function(){return this.element.fragment?""+this.element.fragment:""},getValue:function(){return this.element.node.innerHTML}}),xh=wh,_h=or,kh={},Eh=gh.extend({name:"checked",init:function(){this.siblings=_h(this.root._guid,"radio",this.element.getAttribute("name")),this.siblings.push(this)},render:function(){var t=this.element.node;t.addEventListener("change",bh,!1),t.attachEvent&&t.addEventListener("click",bh,!1)},unrender:function(){var t=this.element.node;t.removeEventListener("change",bh,!1),t.removeEventListener("click",bh,!1)},handleChange:function(){ms.start(this.root),this.siblings.forEach(function(t){t.root.viewmodel.set(t.keypath,t.getValue())}),ms.end()},getValue:function(){return this.element.node.checked},unbind:function(){L(this.siblings,this)}}),Th=Eh,Ch=gh.extend({name:"name",init:function(){this.siblings=_h(this.root._guid,"radioname",this.keypath.str),this.siblings.push(this),this.radioName=!0},getInitialValue:function(){return this.element.getAttribute("checked")?this.element.getAttribute("value"):void 0},render:function(){var t=this.element.node;t.name="{{"+this.keypath.str+"}}",t.checked=this.root.viewmodel.get(this.keypath)==this.element.getAttribute("value"),t.addEventListener("change",bh,!1),t.attachEvent&&t.addEventListener("click",bh,!1)},unrender:function(){var t=this.element.node;t.removeEventListener("change",bh,!1),t.removeEventListener("click",bh,!1)},getValue:function(){var t=this.element.node;return t._ractive?t._ractive.value:t.value},handleChange:function(){this.element.node.checked&&gh.prototype.handleChange.call(this)},rebound:function(t,e){var n;gh.prototype.rebound.call(this,t,e),(n=this.element.node)&&(n.name="{{"+this.keypath.str+"}}")},unbind:function(){L(this.siblings,this)}}),Oh=Ch,Sh=gh.extend({name:"name",getInitialValue:function(){return this.noInitialValue=!0,[]},init:function(){var t,e;this.checkboxName=!0,this.siblings=_h(this.root._guid,"checkboxes",this.keypath.str),this.siblings.push(this),this.noInitialValue&&(this.siblings.noInitialValue=!0),this.siblings.noInitialValue&&this.element.getAttribute("checked")&&(t=this.root.viewmodel.get(this.keypath),e=this.element.getAttribute("value"),t.push(e))},unbind:function(){L(this.siblings,this)},render:function(){var t,e,n=this.element.node;t=this.root.viewmodel.get(this.keypath),e=this.element.getAttribute("value"),a(t)?this.isChecked=F(t,e):this.isChecked=t==e,n.name="{{"+this.keypath.str+"}}",n.checked=this.isChecked,n.addEventListener("change",bh,!1),n.attachEvent&&n.addEventListener("click",bh,!1)},unrender:function(){var t=this.element.node;t.removeEventListener("change",bh,!1),t.removeEventListener("click",bh,!1)},changed:function(){var t=!!this.isChecked;return this.isChecked=this.element.node.checked,this.isChecked===t},handleChange:function(){this.isChecked=this.element.node.checked,gh.prototype.handleChange.call(this)},getValue:function(){return this.siblings.filter(sr).map(ur)}}),Ah=Sh,Ph=gh.extend({name:"checked",render:function(){var t=this.element.node;t.addEventListener("change",bh,!1),t.attachEvent&&t.addEventListener("click",bh,!1)},unrender:function(){var t=this.element.node;t.removeEventListener("change",bh,!1),t.removeEventListener("click",bh,!1)},getValue:function(){return this.element.node.checked}}),jh=Ph,Fh=gh.extend({getInitialValue:function(){var t,e,n,r,i=this.element.options;if(void 0===this.element.getAttribute("value")&&(e=t=i.length,t)){for(;e--;)if(i[e].getAttribute("selected")){n=i[e].getAttribute("value"),r=!0;break}if(!r)for(;++ee;e+=1)if(r=t[e],t[e].selected)return i=r._ractive?r._ractive.value:r.value},forceUpdate:function(){var t=this,e=this.getValue();void 0!==e&&(this.attribute.locked=!0,ms.scheduleTask(function(){return t.attribute.locked=!1}),this.root.viewmodel.set(this.keypath,e))}}),Nh=Fh,Mh=Nh.extend({getInitialValue:function(){return this.element.options.filter(function(t){return t.getAttribute("selected")}).map(function(t){return t.getAttribute("value")})},render:function(){var t;this.element.node.addEventListener("change",bh,!1),t=this.root.viewmodel.get(this.keypath),void 0===t&&this.handleChange()},unrender:function(){this.element.node.removeEventListener("change",bh,!1)},setValue:function(){throw Error("TODO not implemented yet")},getValue:function(){var t,e,n,r,i,a;for(t=[],e=this.element.node.options,r=e.length,n=0;r>n;n+=1)i=e[n],i.selected&&(a=i._ractive?i._ractive.value:i.value,t.push(a));return t},handleChange:function(){var t,e,n;return t=this.attribute,e=t.value,n=this.getValue(),void 0!==e&&N(n,e)||Nh.prototype.handleChange.call(this),this},forceUpdate:function(){var t=this,e=this.getValue();void 0!==e&&(this.attribute.locked=!0,ms.scheduleTask(function(){return t.attribute.locked=!1}),this.root.viewmodel.set(this.keypath,e))},updateModel:function(){void 0!==this.attribute.value&&this.attribute.value.length||this.root.viewmodel.set(this.keypath,this.initialValue)}}),Rh=Mh,Lh=gh.extend({render:function(){this.element.node.addEventListener("change",bh,!1)},unrender:function(){this.element.node.removeEventListener("change",bh,!1)},getValue:function(){return this.element.node.files}}),Ih=Lh,Dh=yh.extend({getInitialValue:function(){},getValue:function(){var t=parseFloat(this.element.node.value);return isNaN(t)?void 0:t}}),Uh=cr,Vh=pr,Bh=hr,qh=fr,zh=dr,Wh=/^event(?:\.(.+))?/,Hh=br,$h=yr,Gh={},Kh={touchstart:!0,touchmove:!0,touchend:!0,touchcancel:!0,touchleave:!0},Qh=xr,Yh=_r,Zh=kr,Jh=Er,Xh=Tr,tf=function(t,e,n){this.init(t,e,n)};tf.prototype={bubble:Vh,fire:Bh,getAction:qh,init:zh,listen:$h,rebind:Qh,render:Yh,resolve:Zh,unbind:Jh,unrender:Xh};var ef=tf,nf=function(t,e){var n,r,i,a,o=[];for(r in e)if(e.hasOwnProperty(r))for(i=r.split("-"),n=i.length;n--;)a=new ef(t,i[n],e[r]),o.push(a);return o},rf=function(t,e){var n,r,i,a=this;this.element=t,this.root=n=t.root,r=e.n||e,("string"==typeof r||(i=new ev({template:r,root:n,owner:t}),r=""+i,i.unbind(),""!==r))&&(e.a?this.params=e.a:e.d&&(this.fragment=new ev({template:e.d,root:n,owner:t}),this.params=this.fragment.getArgsList(),this.fragment.bubble=function(){this.dirtyArgs=this.dirtyValue=!0,a.params=this.getArgsList(),a.ready&&a.update()}),this.fn=g("decorators",n,r),this.fn||p(Ro(r,"decorator")))};rf.prototype={init:function(){var t,e,n;if(t=this.element.node,this.params?(n=[t].concat(this.params),e=this.fn.apply(this.root,n)):e=this.fn.call(this.root,t),!e||!e.teardown)throw Error("Decorator definition must return an object with a teardown method");this.actual=e,this.ready=!0},update:function(){this.actual.update?this.actual.update.apply(this.root,this.params):(this.actual.teardown(!0),this.init())},rebind:function(t,e){this.fragment&&this.fragment.rebind(t,e)},teardown:function(t){this.torndown=!0,this.ready&&this.actual.teardown(),!t&&this.fragment&&this.fragment.unbind()}};var af,of,sf,uf=rf,cf=Fr,lf=Nr,pf=Ur,hf=function(t){return t.replace(/-([a-zA-Z])/g,function(t,e){return e.toUpperCase()})};Ja?(of={},sf=lo("div").style,af=function(t){var e,n,r;if(t=hf(t),!of[t])if(void 0!==sf[t])of[t]=t;else for(r=t.charAt(0).toUpperCase()+t.substring(1),e=io.length;e--;)if(n=io[e],void 0!==sf[n+r]){of[t]=n+r;break}return of[t]}):af=null;var ff,df,mf=af;Ja?(df=window.getComputedStyle||ko.getComputedStyle,ff=function(t){var e,n,r,i,o;if(e=df(this.node),"string"==typeof t)return o=e[mf(t)],"0px"===o&&(o=0),o;if(!a(t))throw Error("Transition$getStyle must be passed a string, or an array of strings representing CSS properties");for(n={},r=t.length;r--;)i=t[r],o=e[mf(i)],"0px"===o&&(o=0),n[i]=o;return n}):ff=null;var vf=ff,gf=function(t,e){var n;if("string"==typeof t)this.node.style[mf(t)]=e;else for(n in t)t.hasOwnProperty(n)&&(this.node.style[mf(n)]=t[n]);return this},bf=function(t){var e;this.duration=t.duration,this.step=t.step,this.complete=t.complete,"string"==typeof t.easing?(e=t.root.easing[t.easing],e||(v(Ro(t.easing,"easing")),e=Vr)):e="function"==typeof t.easing?t.easing:Vr,this.easing=e,this.start=Xo(),this.end=this.start+this.duration,this.running=!0,bs.add(this)};bf.prototype={tick:function(t){var e,n;return this.running?t>this.end?(this.step&&this.step(1),this.complete&&this.complete(1),!1):(e=t-this.start,n=this.easing(e/this.duration),this.step&&this.step(n),!0):!1},stop:function(){this.abort&&this.abort(),this.running=!1}};var yf,wf,xf,_f,kf,Ef,Tf,Cf,Of=bf,Sf=RegExp("^-(?:"+io.join("|")+")-"),Af=function(t){return t.replace(Sf,"")},Pf=RegExp("^(?:"+io.join("|")+")([A-Z])"),jf=function(t){var e;return t?(Pf.test(t)&&(t="-"+t),e=t.replace(/[A-Z]/g,function(t){return"-"+t.toLowerCase()})):""},Ff={},Nf={};Ja?(wf=lo("div").style,function(){void 0!==wf.transition?(xf="transition",_f="transitionend",kf=!0):void 0!==wf.webkitTransition?(xf="webkitTransition",_f="webkitTransitionEnd",kf=!0):kf=!1}(),xf&&(Ef=xf+"Duration",Tf=xf+"Property",Cf=xf+"TimingFunction"),yf=function(t,e,n,r,i){setTimeout(function(){var a,o,s,u,c;u=function(){o&&s&&(t.root.fire(t.name+":end",t.node,t.isIntro),i())},a=(t.node.namespaceURI||"")+t.node.tagName,t.node.style[Tf]=r.map(mf).map(jf).join(","),t.node.style[Cf]=jf(n.easing||"linear"),t.node.style[Ef]=n.duration/1e3+"s",c=function(e){var n;n=r.indexOf(hf(Af(e.propertyName))),-1!==n&&r.splice(n,1),r.length||(t.node.removeEventListener(_f,c,!1),s=!0,u())},t.node.addEventListener(_f,c,!1),setTimeout(function(){for(var i,l,p,h,f,d=r.length,v=[];d--;)h=r[d],i=a+h,kf&&!Nf[i]&&(t.node.style[mf(h)]=e[h],Ff[i]||(l=t.getStyle(h),Ff[i]=t.getStyle(h)!=e[h],Nf[i]=!Ff[i],Nf[i]&&(t.node.style[mf(h)]=l))),(!kf||Nf[i])&&(void 0===l&&(l=t.getStyle(h)),p=r.indexOf(h),-1===p?m("Something very strange happened with transitions. Please raise an issue at https://github.com/ractivejs/ractive/issues - thanks!",{node:t.node}):r.splice(p,1),f=/[^\d]*$/.exec(e[h])[0],v.push({name:mf(h),interpolator:Io(parseFloat(l),parseFloat(e[h])),suffix:f}));v.length?new Of({root:t.root,duration:n.duration,easing:hf(n.easing||""),step:function(e){var n,r;for(r=v.length;r--;)n=v[r],t.node.style[n.name]=n.interpolator(e)+n.suffix},complete:function(){o=!0,u()}}):o=!0,r.length||(t.node.removeEventListener(_f,c,!1),s=!0,u())},0)},n.delay||0)}):yf=null;var Mf,Rf,Lf,If,Df,Uf=yf;if("undefined"!=typeof document){if(Mf="hidden",Df={},Mf in document)Lf="";else for(If=io.length;If--;)Rf=io[If],Mf=Rf+"Hidden",Mf in document&&(Lf=Rf);void 0!==Lf?(document.addEventListener(Lf+"visibilitychange",Br),Br()):("onfocusout"in document?(document.addEventListener("focusout",qr),document.addEventListener("focusin",zr)):(window.addEventListener("pagehide",qr),window.addEventListener("blur",qr),window.addEventListener("pageshow",zr),window.addEventListener("focus",zr)),Df.hidden=!1)}var Vf,Bf,qf,zf=Df;Ja?(Bf=window.getComputedStyle||ko.getComputedStyle,Vf=function(t,e,n){var r,i=this;if(4===arguments.length)throw Error("t.animateStyle() returns a promise - use .then() instead of passing a callback");if(zf.hidden)return this.setStyle(t,e),qf||(qf=os.resolve());"string"==typeof t?(r={},r[t]=e):(r=t,n=e),n||(v('The "%s" transition does not supply an options object to `t.animateStyle()`. This will break in a future version of Ractive. For more info see https://github.com/RactiveJS/Ractive/issues/340',this.name),n=this);var a=new os(function(t){var e,a,o,s,u,c,l;if(!n.duration)return i.setStyle(r),void t();for(e=Object.keys(r),a=[],o=Bf(i.node),u={},c=e.length;c--;)l=e[c],s=o[mf(l)],"0px"===s&&(s=0),s!=r[l]&&(a.push(l),i.node.style[mf(l)]=s);return a.length?void Uf(i,r,n,a,t):void t()});return a}):Vf=null;var Wf=Vf,Hf=function(t,e){return"number"==typeof t?t={duration:t}:"string"==typeof t?t="slow"===t?{duration:600}:"fast"===t?{duration:200}:{duration:400}:t||(t={}),i({},t,e)},$f=Wr,Gf=function(t,e,n){this.init(t,e,n)};Gf.prototype={init:pf,start:$f,getStyle:vf,setStyle:gf,animateStyle:Wf,processParams:Hf};var Kf,Qf,Yf=Gf,Zf=$r;Kf=function(){var t=this.node,e=this.fragment.toString(!1);if(window&&window.appearsToBeIELessEqual8&&(t.type="text/css"),t.styleSheet)t.styleSheet.cssText=e;else{for(;t.hasChildNodes();)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}},Qf=function(){this.node.type&&"text/javascript"!==this.node.type||m("Script tag was updated. This does not cause the code to be re-evaluated!",{ractive:this.root}),this.node.text=this.fragment.toString(!1)};var Jf=function(){var t,e;return this.template.y?"":(t="<"+this.template.e,t+=this.attributes.map(Jr).join("")+this.conditionalAttributes.map(Jr).join(""),"option"===this.name&&Yr(this)&&(t+=" selected"),"input"===this.name&&Zr(this)&&(t+=" checked"),t+=">","textarea"===this.name&&void 0!==this.getAttribute("value")?t+=Ee(this.getAttribute("value")):void 0!==this.getAttribute("contenteditable")&&(t+=this.getAttribute("value")||""),this.fragment&&(e="script"!==this.name&&"style"!==this.name,t+=this.fragment.toString(e)),nl.test(this.template.e)||(t+=""),t)},Xf=Xr,td=ti,ed=function(t){this.init(t)};ed.prototype={bubble:Op,detach:Sp,find:Ap,findAll:Pp,findAllComponents:jp,findComponent:Fp,findNextNode:Np,firstNode:Mp,getAttribute:Rp,init:cf,rebind:lf,render:Zf,toString:Jf,unbind:Xf,unrender:td};var nd=ed,rd=/^\s*$/,id=/^\s*/,ad=function(t){var e,n,r,i;return e=t.split("\n"),n=e[0],void 0!==n&&rd.test(n)&&e.shift(),r=R(e),void 0!==r&&rd.test(r)&&e.pop(),i=e.reduce(ni,null),i&&(t=e.map(function(t){return t.replace(i,"")}).join("\n")),t},od=ri,sd=function(t,e){var n;return e?n=t.split("\n").map(function(t,n){return n?e+t:t}).join("\n"):t},ud='Could not find template for partial "%s"',cd=function(t){var e,n;e=this.parentFragment=t.parentFragment,this.root=e.root,this.type=Tc,this.index=t.index,this.name=t.template.r,this.rendered=!1,this.fragment=this.fragmentToRender=this.fragmentToUnrender=null,Vl.init(this,t),this.keypath||((n=od(this.root,this.name,e))?(gl.call(this),this.isNamed=!0,this.setTemplate(n)):v(ud,this.name))};cd.prototype={bubble:function(){this.parentFragment.bubble()},detach:function(){return this.fragment.detach()},find:function(t){return this.fragment.find(t)},findAll:function(t,e){return this.fragment.findAll(t,e)},findComponent:function(t){return this.fragment.findComponent(t)},findAllComponents:function(t,e){return this.fragment.findAllComponents(t,e)},firstNode:function(){return this.fragment.firstNode()},findNextNode:function(){return this.parentFragment.findNextNode(this)},getPartialName:function(){return this.isNamed&&this.name?this.name:void 0===this.value?this.name:this.value},getValue:function(){ -return this.fragment.getValue()},rebind:function(t,e){this.isNamed||Ul.call(this,t,e),this.fragment&&this.fragment.rebind(t,e)},render:function(){return this.docFrag=document.createDocumentFragment(),this.update(),this.rendered=!0,this.docFrag},resolve:Vl.resolve,setValue:function(t){var e;(void 0===t||t!==this.value)&&(void 0!==t&&(e=od(this.root,""+t,this.parentFragment)),!e&&this.name&&(e=od(this.root,this.name,this.parentFragment))&&(gl.call(this),this.isNamed=!0),e||v(ud,this.name,{ractive:this.root}),this.value=t,this.setTemplate(e||[]),this.bubble(),this.rendered&&ms.addView(this))},setTemplate:function(t){this.fragment&&(this.fragment.unbind(),this.rendered&&(this.fragmentToUnrender=this.fragment)),this.fragment=new ev({template:t,root:this.root,owner:this,pElement:this.parentFragment.pElement}),this.fragmentToRender=this.fragment},toString:function(t){var e,n,r,i;return e=this.fragment.toString(t),n=this.parentFragment.items[this.index-1],n&&n.type===wc?(r=n.text.split("\n").pop(),(i=/^\s+$/.exec(r))?sd(e,i[0]):e):e},unbind:function(){this.isNamed||gl.call(this),this.fragment&&this.fragment.unbind()},unrender:function(t){this.rendered&&(this.fragment&&this.fragment.unrender(t),this.rendered=!1)},update:function(){var t,e;this.fragmentToUnrender&&(this.fragmentToUnrender.unrender(!0),this.fragmentToUnrender=null),this.fragmentToRender&&(this.docFrag.appendChild(this.fragmentToRender.render()),this.fragmentToRender=null),this.rendered&&(t=this.parentFragment.getNode(),e=this.parentFragment.findNextNode(this),t.insertBefore(this.docFrag,e))}};var ld,pd,hd,fd=cd,dd=ui,md=ci,vd=new ns("detach"),gd=li,bd=pi,yd=hi,wd=fi,xd=di,_d=mi,kd=function(t,e,n,r){var i=t.root,a=t.keypath;r?i.viewmodel.smartUpdate(a,e,r):i.viewmodel.mark(a)},Ed=[],Td=["pop","push","reverse","shift","sort","splice","unshift"];Td.forEach(function(t){var e=function(){for(var e=arguments.length,n=Array(e),r=0;e>r;r++)n[r]=arguments[r];var i,a,o,s;for(i=mu(this,t,n),a=Array.prototype[t].apply(this,arguments),ms.start(),this._ractive.setting=!0,s=this._ractive.wrappers.length;s--;)o=this._ractive.wrappers[s],ms.addRactive(o.root),kd(o,this,t,i);return ms.end(),this._ractive.setting=!1,a};xo(Ed,t,{value:e})}),ld={},ld.__proto__?(pd=function(t){t.__proto__=Ed},hd=function(t){t.__proto__=Array.prototype}):(pd=function(t){var e,n;for(e=Td.length;e--;)n=Td[e],xo(t,n,{value:Ed[n],configurable:!0})},hd=function(t){var e;for(e=Td.length;e--;)delete t[Td[e]]}),pd.unpatch=hd;var Cd,Od,Sd,Ad=pd;Cd={filter:function(t){return a(t)&&(!t._ractive||!t._ractive.setting)},wrap:function(t,e,n){return new Od(t,e,n)}},Od=function(t,e,n){this.root=t,this.value=e,this.keypath=E(n),e._ractive||(xo(e,"_ractive",{value:{wrappers:[],instances:[],setting:!1},configurable:!0}),Ad(e)),e._ractive.instances[t._guid]||(e._ractive.instances[t._guid]=0,e._ractive.instances.push(t)),e._ractive.instances[t._guid]+=1,e._ractive.wrappers.push(this)},Od.prototype={get:function(){return this.value},teardown:function(){var t,e,n,r,i;if(t=this.value,e=t._ractive,n=e.wrappers,r=e.instances,e.setting)return!1;if(i=n.indexOf(this),-1===i)throw Error(Sd);if(n.splice(i,1),n.length){if(r[this.root._guid]-=1,!r[this.root._guid]){if(i=r.indexOf(this.root),-1===i)throw Error(Sd);r.splice(i,1)}}else delete t._ractive,Ad.unpatch(this.value)}},Sd="Something went wrong in a rather interesting way";var Pd,jd,Fd=Cd,Nd=/^\s*[0-9]+\s*$/,Md=function(t){return Nd.test(t)?[]:{}};try{Object.defineProperty({},"test",{value:0}),Pd={filter:function(t,e,n){var r,i;return e?(e=E(e),(r=n.viewmodel.wrapped[e.parent.str])&&!r.magic?!1:(i=n.viewmodel.get(e.parent),a(i)&&/^[0-9]+$/.test(e.lastKey)?!1:i&&("object"==typeof i||"function"==typeof i))):!1},wrap:function(t,e,n){return new jd(t,e,n)}},jd=function(t,e,n){var r,i,a;return n=E(n),this.magic=!0,this.ractive=t,this.keypath=n,this.value=e,this.prop=n.lastKey,r=n.parent,this.obj=r.isRoot?t.viewmodel.data:t.viewmodel.get(r),i=this.originalDescriptor=Object.getOwnPropertyDescriptor(this.obj,this.prop),i&&i.set&&(a=i.set._ractiveWrappers)?void(-1===a.indexOf(this)&&a.push(this)):void vi(this,e,i)},jd.prototype={get:function(){return this.value},reset:function(t){return this.updating?void 0:(this.updating=!0,this.obj[this.prop]=t,ms.addRactive(this.ractive),this.ractive.viewmodel.mark(this.keypath,{keepExistingWrapper:!0}),this.updating=!1,!0)},set:function(t,e){this.updating||(this.obj[this.prop]||(this.updating=!0,this.obj[this.prop]=Md(t),this.updating=!1),this.obj[this.prop][t]=e)},teardown:function(){var t,e,n,r,i;return this.updating?!1:(t=Object.getOwnPropertyDescriptor(this.obj,this.prop),e=t&&t.set,void(e&&(r=e._ractiveWrappers,i=r.indexOf(this),-1!==i&&r.splice(i,1),r.length||(n=this.obj[this.prop],Object.defineProperty(this.obj,this.prop,this.originalDescriptor||{writable:!0,enumerable:!0,configurable:!0}),this.obj[this.prop]=n))))}}}catch(Eo){Pd=!1}var Rd,Ld,Id=Pd;Id&&(Rd={filter:function(t,e,n){return Id.filter(t,e,n)&&Fd.filter(t)},wrap:function(t,e,n){return new Ld(t,e,n)}},Ld=function(t,e,n){this.value=e,this.magic=!0,this.magicWrapper=Id.wrap(t,e,n),this.arrayWrapper=Fd.wrap(t,e,n)},Ld.prototype={get:function(){return this.value},teardown:function(){this.arrayWrapper.teardown(),this.magicWrapper.teardown()},reset:function(t){return this.magicWrapper.reset(t)}});var Dd=Rd,Ud=gi,Vd={},Bd=wi,qd=xi,zd=Ei,Wd=Ai,Hd=Pi,$d=function(t,e){this.computation=t,this.viewmodel=t.viewmodel,this.ref=e,this.root=this.viewmodel.ractive,this.parentFragment=this.root.component&&this.root.component.parentFragment};$d.prototype={resolve:function(t){this.computation.softDeps.push(t),this.computation.unresolvedDeps[t.str]=null,this.viewmodel.register(t,this.computation,"computed")}};var Gd=$d,Kd=function(t,e){this.key=t,this.getter=e.getter,this.setter=e.setter,this.hardDeps=e.deps||[],this.softDeps=[],this.unresolvedDeps={},this.depValues={},this._dirty=this._firstRun=!0};Kd.prototype={constructor:Kd,init:function(t){var e,n=this;this.viewmodel=t,this.bypass=!0,e=t.get(this.key),t.clearCache(this.key.str),this.bypass=!1,this.setter&&void 0!==e&&this.set(e),this.hardDeps&&this.hardDeps.forEach(function(e){return t.register(e,n,"computed")})},invalidate:function(){this._dirty=!0},get:function(){var t,e,n=this,r=!1;if(this.getting){var i="The "+this.key.str+" computation indirectly called itself. This probably indicates a bug in the computation. It is commonly caused by `array.sort(...)` - if that's the case, clone the array first with `array.slice().sort(...)`";return d(i),this.value}if(this.getting=!0,this._dirty){if(this._firstRun||!this.hardDeps.length&&!this.softDeps.length?r=!0:[this.hardDeps,this.softDeps].forEach(function(t){var e,i,a;if(!r)for(a=t.length;a--;)if(e=t[a],i=n.viewmodel.get(e),!s(i,n.depValues[e.str]))return n.depValues[e.str]=i,void(r=!0)}),r){this.viewmodel.capture();try{this.value=this.getter()}catch(a){m('Failed to compute "%s"',this.key.str),h(a.stack||a),this.value=void 0}t=this.viewmodel.release(),e=this.updateDependencies(t),e&&[this.hardDeps,this.softDeps].forEach(function(t){t.forEach(function(t){n.depValues[t.str]=n.viewmodel.get(t)})})}this._dirty=!1}return this.getting=this._firstRun=!1,this.value},set:function(t){if(this.setting)return void(this.value=t);if(!this.setter)throw Error("Computed properties without setters are read-only. (This may change in a future version of Ractive!)");this.setter(t)},updateDependencies:function(t){var e,n,r,i,a;for(n=this.softDeps,e=n.length;e--;)r=n[e],-1===t.indexOf(r)&&(i=!0,this.viewmodel.unregister(r,this,"computed"));for(e=t.length;e--;)r=t[e],-1!==n.indexOf(r)||this.hardDeps&&-1!==this.hardDeps.indexOf(r)||(i=!0,ji(this.viewmodel,r)&&!this.unresolvedDeps[r.str]?(a=new Gd(this,r.str),t.splice(e,1),this.unresolvedDeps[r.str]=a,ms.addUnresolved(a)):this.viewmodel.register(r,this,"computed"));return i&&(this.softDeps=t.slice()),i}};var Qd=Kd,Yd=Fi,Zd={FAILED_LOOKUP:!0},Jd=Ni,Xd={},tm=Ri,em=Li,nm=function(t,e){this.localKey=t,this.keypath=e.keypath,this.origin=e.origin,this.deps=[],this.unresolved=[],this.resolved=!1};nm.prototype={forceResolution:function(){this.keypath=this.localKey,this.setup()},get:function(t,e){return this.resolved?this.origin.get(this.map(t),e):void 0},getValue:function(){return this.keypath?this.origin.get(this.keypath):void 0},initViewmodel:function(t){this.local=t,this.setup()},map:function(t){return void 0===typeof this.keypath?this.localKey:t.replace(this.localKey,this.keypath)},register:function(t,e,n){this.deps.push({keypath:t,dep:e,group:n}),this.resolved&&this.origin.register(this.map(t),e,n)},resolve:function(t){void 0!==this.keypath&&this.unbind(!0),this.keypath=t,this.setup()},set:function(t,e){this.resolved||this.forceResolution(),this.origin.set(this.map(t),e)},setup:function(){var t=this;void 0!==this.keypath&&(this.resolved=!0,this.deps.length&&(this.deps.forEach(function(e){var n=t.map(e.keypath);if(t.origin.register(n,e.dep,e.group),e.dep.setValue)e.dep.setValue(t.origin.get(n));else{if(!e.dep.invalidate)throw Error("An unexpected error occurred. Please raise an issue at https://github.com/ractivejs/ractive/issues - thanks!");e.dep.invalidate()}}),this.origin.mark(this.keypath)))},setValue:function(t){if(!this.keypath)throw Error("Mapping does not have keypath, cannot set value. Please raise an issue at https://github.com/ractivejs/ractive/issues - thanks!");this.origin.set(this.keypath,t)},unbind:function(t){var e=this;t||delete this.local.mappings[this.localKey],this.resolved&&(this.deps.forEach(function(t){e.origin.unregister(e.map(t.keypath),t.dep,t.group)}),this.tracker&&this.origin.unregister(this.keypath,this.tracker))},unregister:function(t,e,n){var r,i;if(this.resolved){for(r=this.deps,i=r.length;i--;)if(r[i].dep===e){r.splice(i,1);break}this.origin.unregister(this.map(t),e,n)}}};var rm=Ii,im=function(t,e){var n,r,i,a;return n={},r=0,i=t.map(function(t,i){var o,s,u;s=r,u=e.length;do{if(o=e.indexOf(t,s),-1===o)return a=!0,-1;s=o+1}while(n[o]&&u>s);return o===r&&(r+=1),o!==i&&(a=!0),n[o]=!0,o})},am=Di,om={},sm=Bi,um=zi,cm=Wi,lm=Hi,pm=Gi,hm={implicit:!0},fm={noCascade:!0},dm=Qi,mm=Yi,vm=function(t){var e,n,r=t.adapt,i=t.data,a=t.ractive,o=t.computed,s=t.mappings;this.ractive=a,this.adaptors=r,this.onchange=t.onchange,this.cache={},this.cacheMap=wo(null),this.deps={computed:wo(null),"default":wo(null)},this.depsMap={computed:wo(null),"default":wo(null)},this.patternObservers=[],this.specials=wo(null),this.wrapped=wo(null),this.computations=wo(null),this.captureGroups=[],this.unresolvedImplicitDependencies=[],this.changes=[],this.implicitChanges={},this.noCascade={},this.data=i,this.mappings=wo(null);for(e in s)this.map(E(e),s[e]);if(i)for(e in i)(n=this.mappings[e])&&void 0===n.getValue()&&n.setValue(i[e]);for(e in o)s&&e in s&&p("Cannot map to a computed property ('%s')",e),this.compute(E(e),o[e]);this.ready=!0};vm.prototype={adapt:Ud,applyChanges:zd,capture:Wd,clearCache:Hd,compute:Yd,get:Jd,init:tm,map:em,mark:rm,merge:am,register:sm,release:um,reset:cm,set:lm,smartUpdate:pm,teardown:dm,unregister:mm};var gm=vm;Ji.prototype={constructor:Ji,begin:function(t){this.inProcess[t._guid]=!0},end:function(t){var e=t.parent;e&&this.inProcess[e._guid]?Xi(this.queue,e).push(t):ta(this,t),delete this.inProcess[t._guid]}};var bm=Ji,ym=ea,wm=/\$\{([^\}]+)\}/g,xm=new ns("construct"),_m=new ns("config"),km=new bm("init"),Em=0,Tm=["adaptors","components","decorators","easing","events","interpolators","partials","transitions"],Cm=aa,Om=la;la.prototype={bubble:function(){this.dirty||(this.dirty=!0,ms.addView(this))},update:function(){this.callback(this.fragment.getValue()),this.dirty=!1},rebind:function(t,e){this.fragment.rebind(t,e)},unbind:function(){this.fragment.unbind()}};var Sm=function(t,e,n,i,o){var s,u,c,l,p,h,f={},d={},v={},g=[];for(u=t.parentFragment,c=t.root,o=o||{},r(f,o),o.content=i||[],f[""]=o.content,e.defaults.el&&m("The <%s/> component has a default `el` property; it has been disregarded",t.name),l=u;l;){if(l.owner.type===Ac){p=l.owner.container;break}l=l.parent}return n&&Object.keys(n).forEach(function(e){var r,i,o=n[e];if("string"==typeof o)r=cl(o),d[e]=r?r.value:o;else if(0===o)d[e]=!0;else{if(!a(o))throw Error("erm wut");ha(o)?(v[e]={origin:t.root.viewmodel,keypath:void 0},i=pa(t,o[0],function(t){t.isSpecial?h?s.set(e,t.value):(d[e]=t.value,delete v[e]):h?s.viewmodel.mappings[e].resolve(t):v[e].keypath=t})):i=new Om(t,o,function(t){h?s.set(e,t):d[e]=t}),g.push(i)}}),s=wo(e.prototype),Cm(s,{el:null,append:!0,data:d,partials:o,magic:c.magic||e.defaults.magic,modifyArrays:c.modifyArrays,adapt:c.adapt},{parent:c,component:t,container:p,mappings:v,inlinePartials:f,cssIds:u.cssIds}),h=!0,t.resolvers=g,s},Am=fa,Pm=function(t){var e,n;for(e=t.root;e;)(n=e._liveComponentQueries["_"+t.name])&&n.push(t.instance),e=e.parent},jm=ma,Fm=va,Nm=ga,Mm=ba,Rm=ya,Lm=new ns("teardown"),Im=xa,Dm=function(t,e){this.init(t,e)};Dm.prototype={detach:md,find:gd,findAll:bd,findAllComponents:yd,findComponent:wd,findNextNode:xd,firstNode:_d,init:jm,rebind:Fm,render:Nm,toString:Mm,unbind:Rm,unrender:Im};var Um=Dm,Vm=function(t){this.type=Cc,this.value=t.template.c};Vm.prototype={detach:dl,firstNode:function(){return this.node},render:function(){return this.node||(this.node=document.createComment(this.value)),this.node},toString:function(){return""},unrender:function(t){t&&this.node.parentNode.removeChild(this.node)}};var Bm=Vm,qm=function(t){var e,n;this.type=Ac,this.container=e=t.parentFragment.root,this.component=n=e.component,this.container=e,this.containerFragment=t.parentFragment,this.parentFragment=n.parentFragment;var r=this.name=t.template.n||"",i=e._inlinePartials[r];i||(m('Could not find template for partial "'+r+'"',{ractive:t.root}),i=[]),this.fragment=new ev({owner:this,root:e.parent,template:i,pElement:this.containerFragment.pElement}),a(n.yielders[r])?n.yielders[r].push(this):n.yielders[r]=[this],ms.scheduleTask(function(){if(n.yielders[r].length>1)throw Error("A component template can only have one {{yield"+(r?" "+r:"")+"}} declaration at a time")})};qm.prototype={detach:function(){return this.fragment.detach()},find:function(t){return this.fragment.find(t)},findAll:function(t,e){return this.fragment.findAll(t,e)},findComponent:function(t){return this.fragment.findComponent(t)},findAllComponents:function(t,e){return this.fragment.findAllComponents(t,e)},findNextNode:function(){return this.containerFragment.findNextNode(this)},firstNode:function(){return this.fragment.firstNode()},getValue:function(t){return this.fragment.getValue(t)},render:function(){return this.fragment.render()},unbind:function(){this.fragment.unbind()},unrender:function(t){this.fragment.unrender(t),L(this.component.yielders[this.name],this)},rebind:function(t,e){this.fragment.rebind(t,e)},toString:function(){return""+this.fragment}};var zm=qm,Wm=function(t){this.declaration=t.template.a};Wm.prototype={init:jo,render:jo,unrender:jo,teardown:jo,toString:function(){return""}};var Hm=Wm,$m=_a,Gm=Ea,Km=Ta,Qm=Ca,Ym=Aa,Zm=ja,Jm=function(t){this.init(t)};Jm.prototype={bubble:sc,detach:uc,find:cc,findAll:lc,findAllComponents:pc,findComponent:hc,findNextNode:fc,firstNode:dc,getArgsList:pl,getNode:hl,getValue:fl,init:$m,rebind:Gm,registerIndexRef:function(t){var e=this.registeredIndexRefs;-1===e.indexOf(t)&&e.push(t)},render:Km,toString:Qm,unbind:Ym,unregisterIndexRef:function(t){var e=this.registeredIndexRefs;e.splice(e.indexOf(t),1)},unrender:Zm};var Xm,tv,ev=Jm,nv=Fa,rv=["template","partials","components","decorators","events"],iv=new ns("reset"),av=function(t,e){function n(e,r,i){i&&i.partials[t]||e.forEach(function(e){e.type===Tc&&e.getPartialName()===t&&r.push(e),e.fragment&&n(e.fragment.items,r,i),a(e.fragments)?n(e.fragments,r,i):a(e.items)?n(e.items,r,i):e.type===Sc&&e.instance&&n(e.instance.fragment.items,r,e.instance),e.type===Ec&&(a(e.attributes)&&n(e.attributes,r,i),a(e.conditionalAttributes)&&n(e.conditionalAttributes,r,i))})}var r,i=[];return n(this.fragment.items,i),this.partials[t]=e,r=ms.start(this,!0),i.forEach(function(e){e.value=void 0,e.setValue(t)}),ms.end(),r},ov=Na,sv=gu("reverse"),uv=Ma,cv=gu("shift"),lv=gu("sort"),pv=gu("splice"),hv=La,fv=Ia,dv=new ns("teardown"),mv=Ua,vv=Va,gv=Ba,bv=new ns("unrender"),yv=gu("unshift"),wv=qa,xv=new ns("update"),_v=za,kv={add:Yo,animate:xs,detach:ks,find:Ts,findAll:Ms,findAllComponents:Rs,findComponent:Ls,findContainer:Is,findParent:Ds,fire:qs,get:zs,insert:Hs,merge:Gs,observe:uu,observeOnce:cu,off:hu,on:fu,once:du,pop:bu,push:yu,render:Ou,reset:nv,resetPartial:av,resetTemplate:ov,reverse:sv,set:uv,shift:cv,sort:lv,splice:pv,subtract:hv,teardown:fv,toggle:mv,toHTML:vv,toHtml:vv,unrender:gv,unshift:yv,update:wv,updateModel:_v},Ev=function(t,e,n){return n||Ha(t,e)?function(){var n,r="_super"in this,i=this._super;return this._super=e,n=t.apply(this,arguments),r&&(this._super=i),n}:t},Tv=$a,Cv=Ya,Ov=function(t){var e,n,r={};return t&&(e=t._ractive)?(r.ractive=e.root,r.keypath=e.keypath.str,r.index={},(n=Cl(e.proxy.parentFragment))&&(r.index=Cl.resolve(n)),r):r};Xm=function(t){return this instanceof Xm?void Cm(this,t):new Xm(t)},tv={DEBUG:{writable:!0,value:!0},DEBUG_PROMISES:{writable:!0,value:!0},extend:{value:Cv},getNodeInfo:{value:Ov},parse:{value:zu},Promise:{value:os},svg:{value:ro},magic:{value:eo},VERSION:{value:"0.7.3"},adaptors:{writable:!0,value:{}},components:{writable:!0,value:{}},decorators:{writable:!0,value:{}},easing:{writable:!0,value:uo},events:{writable:!0,value:{}},interpolators:{writable:!0,value:Uo},partials:{writable:!0,value:{}},transitions:{writable:!0,value:{}}},_o(Xm,tv),Xm.prototype=r(kv,so),Xm.prototype.constructor=Xm,Xm.defaults=Xm.prototype;var Sv="function";if(typeof Date.now!==Sv||typeof String.prototype.trim!==Sv||typeof Object.keys!==Sv||typeof Array.prototype.indexOf!==Sv||typeof Array.prototype.forEach!==Sv||typeof Array.prototype.map!==Sv||typeof Array.prototype.filter!==Sv||"undefined"!=typeof window&&typeof window.addEventListener!==Sv)throw Error("It looks like you're attempting to use Ractive.js in an older browser. You'll need to use one of the 'legacy builds' in order to continue - see http://docs.ractivejs.org/latest/legacy-builds for more information.");var Av=Xm;return Av})},{}],8:[function(t,e,n){!function(){function t(t,e,n){return t.call.apply(t.bind,arguments)}function n(t,e,n){if(!t)throw Error();if(2r;r++)if(n[r]==e)return!0;return!1}function l(t){if("string"==typeof t.f)return t.f;var e=t.m.location.protocol;return"about:"==e&&(e=t.a.location.protocol),"https:"==e?"https:":"http:"}function p(t){return t.m.location.hostname||t.a.location.hostname}function h(t,e,n){function r(){c&&i&&s&&(c(u),c=null)}e=a(t,"link",{rel:"stylesheet",href:e,media:"all"});var i=!1,s=!0,u=null,c=n||null;it?(e.onload=function(){i=!0,r()},e.onerror=function(){i=!0,u=Error("Stylesheet failed to load"),r()}):setTimeout(function(){i=!0,r()},0),o(t,"head",e)}function f(t,e,n,r){var i=t.c.getElementsByTagName("head")[0];if(i){var o=a(t,"script",{src:e}),s=!1;return o.onload=o.onreadystatechange=function(){s||this.readyState&&"loaded"!=this.readyState&&"complete"!=this.readyState||(s=!0,n&&n(null),o.onload=o.onreadystatechange=null,"HEAD"==o.parentNode.tagName&&i.removeChild(o))},i.appendChild(o),setTimeout(function(){s||(s=!0,n&&n(Error("Script load timeout")))},r||5e3),o}return null}function d(){this.a=0,this.c=null}function m(t){return t.a++,function(){t.a--,g(t)}}function v(t,e){t.c=e,g(t)}function g(t){0==t.a&&t.c&&(t.c(),t.c=null)}function b(t){this.a=t||"-"}function y(t,e){this.c=t,this.f=4,this.a="n";var n=(e||"n4").match(/^([nio])([1-9])$/i);n&&(this.a=n[1],this.f=parseInt(n[2],10))}function w(t){return k(t)+" "+(t.f+"00")+" 300px "+x(t.c)}function x(t){var e=[];t=t.split(/,\s*/);for(var n=0;nparseInt(t[1],10)||536===parseInt(t[1],10)&&11>=parseInt(t[2],10))}return ot}function I(t,e,n){for(var r in at)if(at.hasOwnProperty(r)&&e===t.f[at[r]]&&n===t.f[at[r]])return!0;return!1}function D(t){var e,n=t.g.a.offsetWidth,r=t.h.a.offsetWidth;(e=n===t.f.serif&&r===t.f["sans-serif"])||(e=L()&&I(t,n,r)),e?rt()-t.A>=t.w?L()&&I(t,n,r)&&(null===t.u||t.u.hasOwnProperty(t.a.c))?V(t,t.v):V(t,t.B):U(t):V(t,t.v)}function U(t){setTimeout(r(function(){D(this)},t),50)}function V(t,e){setTimeout(r(function(){s(this.g.a),s(this.h.a),s(this.j.a),s(this.o.a),e(this.a)},t),0)}function B(t,e,n){this.c=t,this.a=e,this.f=0,this.o=this.j=!1,this.s=n}function q(t){0==--t.f&&t.j&&(t.o?(t=t.a,t.g&&u(t.f,[t.a.c("wf","active")],[t.a.c("wf","loading"),t.a.c("wf","inactive")]),S(t,"active")):O(t.a))}function z(t){this.j=t,this.a=new A,this.h=0,this.f=this.g=!0}function W(t,e,n,i,a){var o=0==--t.h;(t.f||t.g)&&setTimeout(function(){var t=a||null,s=i||null||{};if(0===n.length&&o)O(e.a);else{e.f+=n.length,o&&(e.j=o);var c,l=[];for(c=0;ce;e++)r[e].load(function(e,n,r){W(t,a,e,n,r)})}function $(t,e){this.c=t,this.a=e}function G(t,e,n){var r=l(t.c);return t=(t.a.api||"fast.fonts.net/jsapi").replace(/^.*http(s?):(\/\/)?/,""),r+"//"+t+"/"+e+".js"+(n?"?v="+n:"")}function K(t,e){this.c=t,this.a=e}function Q(t,e,n){t?this.c=t:this.c=e+ut,this.a=[],this.f=[],this.g=n||""}function Y(t,e){for(var n=e.length,r=0;n>r;r++){var i=e[r].split(":");3==i.length&&t.f.push(i.pop());var a="";2==i.length&&""!=i[1]&&(a=":"),t.a.push(i.join(a))}}function Z(t){if(0==t.a.length)throw Error("No fonts to load!");if(-1!=t.c.indexOf("kit="))return t.c;for(var e=t.a.length,n=[],r=0;e>r;r++)n.push(t.a[r].replace(/ /g,"+"));return e=t.c+"?family="+n.join("%7C"),0n;n++){var r=t.f[n].split(":"),i=r[0].replace(/\+/g," "),a=["n4"];if(2<=r.length){var o,s=r[1];if(o=[],s)for(var s=s.split(","),u=s.length,c=0;u>c;c++){var l;if(l=s[c],l.match(/^[\w-]+$/)){var p=ht.exec(l.toLowerCase());if(null==p)l="";else{if(l=p[2],l=null==l||""==l?"n":pt[l],p=p[1],null==p||""==p)p="4";else var h=lt[p],p=h?h:isNaN(p)?"4":p.substr(0,1);l=""+l+p}}else l="";l&&o.push(l)}0=n.j?n.f(n.a):e.fonts.load(w(n.a),n.h).then(function(e){1<=e.length?n.g(n.a):setTimeout(t,25)},function(){n.f(n.a)})}var e=this.c.m.document,n=this,r=rt();t()};var at={D:"serif",C:"sans-serif"},ot=null;R.prototype.start=function(){this.f.serif=this.j.a.offsetWidth,this.f["sans-serif"]=this.o.a.offsetWidth,this.A=rt(),D(this)};var st=null;B.prototype.g=function(t){var e=this.a;e.g&&u(e.f,[e.a.c("wf",t.c,""+_(t),"active")],[e.a.c("wf",t.c,""+_(t),"loading"),e.a.c("wf",t.c,""+_(t),"inactive")]),S(e,"fontactive",t),this.o=!0,q(this)},B.prototype.h=function(t){var e=this.a;if(e.g){var n=c(e.f,e.a.c("wf",t.c,""+_(t),"active")),r=[],i=[e.a.c("wf",t.c,""+_(t),"loading")];n||r.push(e.a.c("wf",t.c,""+_(t),"inactive")),u(e.f,r,i)}S(e,"fontinactive",t),q(this)},z.prototype.load=function(t){this.c=new i(this.j,t.context||this.j),this.g=!1!==t.events,this.f=!1!==t.classes,H(this,new T(this.c,t),t)},$.prototype.load=function(t){function e(){if(i["__mti_fntLst"+n]){var r,a=i["__mti_fntLst"+n](),o=[];if(a)for(var s=0;se;e++)h(this.c,r[e],m(o));var s=[];for(e=0,n=i.length;n>e;e++)if(r=i[e].split(":"),r[1])for(var u=r[1].split(","),c=0;ci;++i){var o=n.fonts[i];r.a.push(new y(o.name,E("font-weight:"+o.weight+";font-style:"+o.style)))}t(r.a)},f(this.c,l(this.c)+(this.f.api||"//f.fontdeck.com/s/css/js/")+p(this.c)+"/"+e+".js",function(e){e&&t([])})):t([])};var dt=new z(window);dt.a.c.custom=function(t,e){return new K(e,t)},dt.a.c.fontdeck=function(t,e){return new nt(e,t)},dt.a.c.monotype=function(t,e){return new $(e,t)},dt.a.c.typekit=function(t,e){return new et(e,t)},dt.a.c.google=function(t,e){return new tt(e,t)};var mt={load:r(dt.load,dt)};"function"==typeof define&&define.amd?define(function(){return mt}):void 0!==e&&e.exports?e.exports=mt:(window.WebFont=mt,window.WebFontConfig&&dt.load(window.WebFontConfig))}()},{}],9:[function(t,e,n){var r;r=encodeURIComponent,e.exports={href:function(t,e){return null==t&&(t={}),null==e&&(e=""),t=Object.keys(t).map(function(e){return r(e)+"="+r(t[e])}).join("&"),"byond://"+e+"?"+t},act:function(t,e,n){return null==n&&(n={}),n.src=t,n.action=e,location.href=this.href(n)},winset:function(t,e,n){var r;return location.href=this.href((r={},r[t+"."+e]=n,r),"winset")}}},{}],10:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(t){t.exports={oninit:function(){return this.observe("value",function(t,e,n){var r,i,a;return i=this.get("min"),r=this.get("max"),a=Math.clamp(t,i,r),this.animate("percentage",Math.round((a-i)/(r-i)*100))})}}}(i),i.exports.template={v:3,t:[" ",{p:[11,1,301],t:7,e:"div",a:{"class":"bar"},f:[{p:[12,3,322],t:7,e:"div",a:{"class":["barFill ",{t:2,r:"state",p:[12,23,342]}],style:["width: ",{t:2,r:"percentage",p:[12,48,367]},"%"]}}," ",{p:[13,3,394],t:7,e:"span",a:{"class":"barText"},f:[{t:16,p:[13,25,416]}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],11:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(e){var n,r;n=t("../byond"),r=t("../constants"),e.exports={computed:{clickable:function(){return this.get("enabled")&&!this.get("state")?!0:!1},enabled:function(){return this.get("config.status")===r.UI_INTERACTIVE?!0:!1},styles:function(){var t,e,n;return t=this.get("enabled"),e=this.get("state"),n=this.get("style"),t?e?""+e:"normal "+[n]:"disabled"}},oninit:function(){return this.on("press",function(t){var e,r;return t.node.blur(),e=this.get("action"), -r=this.get("params"),null!=e?n.act(this.get("config.ref"),e,r):void 0})}}}(i),i.exports.template={v:3,t:[" ",{p:[29,1,764],t:7,e:"span",a:{"class":["button ",{t:2,r:"styles",p:[29,21,784]}," ",{t:4,f:["gridable"],r:"grid",p:[29,32,795]}],unselectable:"on"},m:[{t:4,f:["tabindex='0'"],r:"clickable",p:[31,3,843]}],v:{"click-enter":{n:[{t:4,f:["press"],r:"clickable",p:[32,19,894]}],d:[]}},f:[{t:4,f:[{p:[34,5,942],t:7,e:"i",a:{"class":["fa fa-",{t:2,r:"icon",p:[34,21,958]}]}}],n:50,r:"icon",p:[33,3,924]}," ",{t:16,p:[36,3,987]}]}]},e.exports=r.extend(i.exports)},{"../byond":9,"../constants":19,"ractive/ractive.runtime":7}],12:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"div",a:{"class":"display"},f:[{t:4,f:[{p:[3,5,44],t:7,e:"header",f:[{p:[4,7,60],t:7,e:"h3",f:[{t:2,r:"title",p:[4,11,64]}]}," ",{t:4,f:[{p:[6,9,110],t:7,e:"div",a:{"class":"buttonRight"},f:[{t:16,n:"button",p:[6,34,135]}]}],n:50,r:"button",p:[5,7,86]}]}],n:50,r:"title",p:[2,3,25]}," ",{p:[10,3,202],t:7,e:"article",f:[{t:16,p:[11,5,217]}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],13:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"div",a:{"class":"notice"},f:[{t:16,p:[2,3,24]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],14:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(e){var n;n=t("../byond"),e.exports={oninit:function(){return this.observe("config.fancy",function(t,e,r){return n.winset(this.get("config.window"),"can-resize",!t)})}}}(i),i.exports.template={v:3,t:[" ",{t:4,f:[{p:[11,3,263],t:7,e:"div",a:{"class":"resize"},v:{mousedown:"resize"}}],n:50,r:"config.fancy",p:[10,1,239]}]},e.exports=r.extend(i.exports)},{"../byond":9,"ractive/ractive.runtime":7}],15:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"section",f:[{t:4,f:[{p:[3,5,32],t:7,e:"span",a:{"class":"label"},f:[{t:2,r:"label",p:[3,25,52]},":"]}," ",{t:4,f:[{t:16,p:[5,7,97]}],n:50,r:"nowrap",p:[4,5,75]},{t:4,n:51,f:[{p:[7,7,128],t:7,e:"div",a:{"class":"content"},f:[{t:16,p:[8,9,159]}]}],r:"nowrap"}],n:50,r:"label",p:[2,3,13]},{t:4,n:51,f:[{t:16,p:[12,5,213]}],r:"label"}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],16:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"div",a:{"class":"subdisplay"},f:[{t:4,f:[{p:[3,5,47],t:7,e:"header",f:[{p:[4,7,63],t:7,e:"h4",f:[{t:2,r:"title",p:[4,11,67]}]}," ",{t:4,f:[{t:16,n:"button",p:[5,21,103]}],n:50,r:"button",p:[5,7,89]}]}],n:50,r:"title",p:[2,3,28]}," ",{p:[8,3,156],t:7,e:"article",f:[{t:16,p:[9,5,171]}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],17:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(e){var n;n=t("../byond"),e.exports={computed:{visualStatus:function(){var e,n;return n=this.get("config.status"),e=t("../constants"),n===e.UI_INTERACTIVE?"good":n===e.UI_UPDATE?"average":n===e.UI_DISABLED?"bad":void 0}},oninit:function(){return this.observe("config.fancy",function(t,e,r){return n.winset(this.get("config.window"),"titlebar",!t)}),this.on({close:function(){return n.winset(this.get("config.window"),"is-visible","false"),location.href=n.href({command:"uiclose "+this.get("config.ref")},"winset")},minimize:function(){return n.winset(this.get("config.window"),"is-minimized","true")}})}}}(i),i.exports.template={v:3,t:[" ",{p:[24,1,800],t:7,e:"header",a:{"class":"titlebar"},v:{mousedown:"drag"},f:[{p:[25,3,849],t:7,e:"i",a:{"class":["statusicon fa fa-eye fa-2x ",{t:2,r:"visualStatus",p:[25,40,886]}]}}," ",{p:[26,3,912],t:7,e:"span",a:{"class":"title"},f:[{t:16,p:[26,23,932]}]}," ",{t:4,f:[{p:[28,5,978],t:7,e:"i",a:{"class":"minimize fa fa-minus fa-2x"},v:{click:"minimize"}}," ",{p:[29,5,1046],t:7,e:"i",a:{"class":"close fa fa-close fa-2x"},v:{click:"close"}}],n:50,r:"config.fancy",p:[27,3,952]}]}]},e.exports=r.extend(i.exports)},{"../byond":9,"../constants":19,"ractive/ractive.runtime":7}],18:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(t){t.exports={data:{userAgent:navigator.userAgent},computed:{ie:function(){var t,e,n;if(document.documentMode)return document.documentMode;for(n=e=11;e>=6;n=--e)if(t=document.createElement("div"),t.innerHTML="",t.getElementsByTagName("span").length)return n}},oninit:function(){return this.on("debug",function(){return this.toggle("debug")})}}}(i),i.exports.template={v:3,t:[" ",{t:4,f:[{p:[19,3,540],t:7,e:"ui-notice",f:[{p:[20,5,557],t:7,e:"span",f:["You have an old (<= 8) version of Internet Explorer installed. Please upgrade to the latest available version of IE."]},{p:[20,137,689],t:7,e:"br"}," ",{p:[21,5,700],t:7,e:"span",f:["To upgrade, please click 'Check For Upgrades' below to download the latest available version from Microsoft."]},{p:[21,126,821],t:7,e:"br"}," ",{p:[22,5,832],t:7,e:"span",f:["Otherwise, if you are unable (XP/Wine) or unwilling to upgrade past IE8, please click 'No Frills' below to disable incompatible features (and this message)."]}," ",{p:[23,5,1007],t:7,e:"hr"}," ",{p:[24,5,1018],t:7,e:"ui-button",a:{icon:"internet-explorer",action:"tgui:ie"},f:["Check For Upgrades"]}," ",{p:[25,5,1107],t:7,e:"ui-button",a:{icon:"close",action:"tgui:nofrills"},f:["No Frills"]}," ",{p:[26,5,1181],t:7,e:"ui-button",a:{icon:"bug"},v:{press:"debug"},f:["Debug Info"]}," ",{t:4,f:[{p:[28,7,1269],t:7,e:"hr"}," ",{p:[29,7,1282],t:7,e:"span",f:["Detected: IE",{t:2,r:"ie",p:[29,25,1300]}]},{p:[29,38,1313],t:7,e:"br"}," ",{p:[30,7,1326],t:7,e:"span",f:["User Agent: ",{t:2,r:"userAgent",p:[30,25,1344]}]}],n:50,r:"debug",p:[27,5,1248]}]}],n:50,x:{r:["config.fancy","ie"],s:"_0&&_1&&_1<=8"},p:[18,1,499]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],19:[function(t,e,n){e.exports={UI_INTERACTIVE:2,UI_UPDATE:1,UI_DISABLED:0,UI_CLOSE:-1}},{}],20:[function(t,e,n){var r;r=t("./byond"),e.exports={drag:function(t,e){var n,i,a,o;return e.preventDefault(),n=function(t,e){return 0>t&&(t=0),0>e&&(e=0),t+window.innerWidth>screen.availWidth&&(t=screen.availWidth-window.innerWidth),e+window.innerHeight>screen.availHeight&&(e=screen.availHeight-window.innerHeight),{x:t,y:e}},t.get("x")&&(a=e.screenX-t.get("x")+window.screenLeft,o=e.screenY-t.get("y")+window.screenTop,t.get("config.locked")&&(i=n(a,o),a=i.x,o=i.y),r.winset(t.get("config.window"),"pos",a+","+o)),t.set({x:e.screenX,y:e.screenY})},resize:function(t,e){var n,i,a,o;return e.preventDefault(),i=function(t,e){return t=Math.clamp(t,100,screen.width),e=Math.clamp(e,100,screen.height),{x:t,y:e}},t.get("x")&&(a=e.screenX-t.get("x")+window.innerWidth,o=e.screenY-t.get("y")+window.innerHeight,n=i(a,o),a=n.x,o=n.y,r.winset(t.get("config.window"),"size",a+","+o)),t.set({x:e.screenX,y:e.screenY})}}},{"./byond":9}],21:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[" "," "," "," "," "," ",{p:[8,1,327],t:7,e:"ui-notice",f:[{t:4,f:[{p:[10,5,372],t:7,e:"ui-section",a:{label:"Interface Lock"},f:[{p:[11,7,415],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.locked"],s:'_0?"lock":"unlock"'},p:[11,24,432]}],action:"lock"},f:[{t:2,x:{r:["data.locked"],s:'_0?"Engaged":"Disengaged"'},p:[11,75,483]}]}]}],n:50,r:"data.siliconUser",p:[9,3,342]},{t:4,n:51,f:[{p:[14,5,574],t:7,e:"span",f:["Swipe an ID card to ",{t:2,x:{r:["data.locked"],s:'_0?"unlock":"lock"'},p:[14,31,600]}," this interface."]}],r:"data.siliconUser"}]}," ",{p:[17,1,685],t:7,e:"status"}," ",{t:4,f:[{t:4,f:[{p:[20,5,770],t:7,e:"controls"}],n:50,x:{r:["data.screen"],s:"_0==1"},p:[19,3,740]},{t:4,n:51,f:[{t:4,n:50,x:{r:["data.screen"],s:"_0==2"},f:[{p:[22,5,817],t:7,e:"vents"}]},{t:4,n:50,x:{r:["data.screen"],s:"(!(_0==2))&&(_0==3)"},f:[" ",{p:[24,5,862],t:7,e:"scrubbers"}]},{t:4,n:50,x:{r:["data.screen"],s:"(!(_0==2))&&((!(_0==3))&&(_0==4))"},f:[" ",{p:[26,5,911],t:7,e:"modes"}]},{t:4,n:50,x:{r:["data.screen"],s:"(!(_0==2))&&((!(_0==3))&&((!(_0==4))&&(_0==5)))"},f:[" ",{p:[28,5,956],t:7,e:"thresholds"}]}],x:{r:["data.screen"],s:"_0==1"}}],n:50,x:{r:["data.locked","data.siliconUser"],s:"!_0||_1"},p:[18,1,696]}]},i.exports.components=i.exports.components||{};var a={vents:t("./air_alarm/vents.ract"),modes:t("./air_alarm/modes.ract"),thresholds:t("./air_alarm/thresholds.ract"),status:t("./air_alarm/status.ract"),scrubbers:t("./air_alarm/scrubbers.ract"),controls:t("./air_alarm/controls.ract")};for(var o in a)a.hasOwnProperty(o)&&(i.exports.components[o]=a[o]);e.exports=r.extend(i.exports)},{"./air_alarm/controls.ract":23,"./air_alarm/modes.ract":24,"./air_alarm/scrubbers.ract":25,"./air_alarm/status.ract":26,"./air_alarm/thresholds.ract":27,"./air_alarm/vents.ract":28,"ractive/ractive.runtime":7}],22:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-button",a:{icon:"arrow-left",action:"screen",params:'{"screen": 1}'},f:["Back"]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],23:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Air Controls"},f:[{p:[2,3,37],t:7,e:"ui-section",f:[{p:[3,5,55],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.atmos_alarm"],s:'_0?"exclamation-triangle":"exclamation"'},p:[3,22,72]}],style:[{t:2,x:{r:["data.atmos_alarm"],s:'_0?"caution":null'},p:[3,92,142]}],action:[{t:2,x:{r:["data.atmos_alarm"],s:'_0?"reset":"alarm"'},p:[4,17,200]}]},f:["Area Atmosphere Alarm"]}]}," ",{p:[6,3,296],t:7,e:"ui-section",f:[{p:[7,5,314],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.mode"],s:'_0==3?"exclamation-triangle":"exclamation"'},p:[7,22,331]}],style:[{t:2,x:{r:["data.mode"],s:'_0==3?"danger":null'},p:[7,90,399]}],action:"mode",params:['{"mode": ',{t:2,x:{r:["data.mode"],s:"_0==3?1:3"},p:[8,38,475]},"}"]},f:["Panic Siphon"]}]}," ",{p:[10,3,549],t:7,e:"br"}," ",{p:[11,3,558],t:7,e:"ui-section",f:[{p:[12,5,576],t:7,e:"ui-button",a:{icon:"sign-out",action:"screen",params:'{"screen": 2}'},f:["Vent Controls"]}]}," ",{p:[14,3,688],t:7,e:"ui-section",f:[{p:[15,5,706],t:7,e:"ui-button",a:{icon:"filter",action:"screen",params:'{"screen": 3}'},f:["Scrubber Controls"]}]}," ",{p:[17,3,820],t:7,e:"ui-section",f:[{p:[18,5,838],t:7,e:"ui-button",a:{icon:"cog",action:"screen",params:'{"screen": 4}'},f:["Operating Mode"]}]}," ",{p:[20,3,946],t:7,e:"ui-section",f:[{p:[21,5,964],t:7,e:"ui-button",a:{icon:"bar-chart",action:"screen",params:'{"screen": 5}'},f:["Alarm Thresholds"]}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],24:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[" ",{p:{button:[{p:[5,5,115],t:7,e:"back"}]},t:7,e:"ui-display",a:{title:"Operating Modes",button:0},f:[" ",{t:4,f:[{p:[8,5,168],t:7,e:"ui-section",f:[{p:[9,7,188],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["selected"],s:'_0?"check-square-o":"square-o"'},p:[9,24,205]}],state:[{t:2,x:{r:["selected","danger"],s:'_0?_1?"danger":"selected":null'},p:[10,16,267]}],action:"mode",params:['{"mode": ',{t:2,r:"mode",p:[11,40,361]},"}"]},f:[{t:2,r:"name",p:[11,51,372]}]}]}],n:52,r:"data.modes",p:[7,3,142]}]}]},i.exports.components=i.exports.components||{};var a={back:t("./back.ract")};for(var o in a)a.hasOwnProperty(o)&&(i.exports.components[o]=a[o]);e.exports=r.extend(i.exports)},{"./back.ract":22,"ractive/ractive.runtime":7}],25:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[" ",{p:{button:[{p:[5,5,117],t:7,e:"back"}]},t:7,e:"ui-display",a:{title:"Scrubber Controls",button:0},f:[" ",{t:4,f:[{p:[8,5,174],t:7,e:"ui-subdisplay",a:{title:[{t:2,r:"long_name",p:[8,27,196]}]},f:[{p:[9,7,219],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[10,9,255],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["power"],s:'_0?"power-off":"close"'},p:[10,26,272]}],style:[{t:2,x:{r:["power"],s:'_0?"selected":null'},p:[10,68,314]}],action:"power",params:['{"id_tag": "',{t:2,r:"id_tag",p:[11,46,391]},'", "val": ',{t:2,x:{r:["power"],s:"+!_0"},p:[11,66,411]},"}"]},f:[{t:2,x:{r:["power"],s:'_0?"On":"Off"'},p:[11,80,425]}]}]}," ",{p:[13,7,490],t:7,e:"ui-section",a:{label:"Mode"},f:[{p:[14,9,525],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["scrubbing"],s:'_0?"filter":"sign-in"'},p:[14,26,542]}],style:[{t:2,x:{r:["scrubbing"],s:'_0?null:"danger"'},p:[14,71,587]}],action:"scrubbing",params:['{"id_tag": "',{t:2,r:"id_tag",p:[15,50,670]},'", "val": ',{t:2,x:{r:["scrubbing"],s:"+!_0"},p:[15,70,690]},"}"]},f:[{t:2,x:{r:["scrubbing"],s:'_0?"Scrubbing":"Siphoning"'},p:[15,88,708]}]}]}," ",{p:[17,7,790],t:7,e:"ui-section",a:{label:"Range"},f:[{p:[18,9,826],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["widenet"],s:'_0?"expand":"compress"'},p:[18,26,843]}],style:[{t:2,x:{r:["widenet"],s:'_0?"selected":null'},p:[18,70,887]}],action:"widenet",params:['{"id_tag": "',{t:2,r:"id_tag",p:[19,48,968]},'", "val": ',{t:2,x:{r:["widenet"],s:"+!_0"},p:[19,68,988]},"}"]},f:[{t:2,x:{r:["widenet"],s:'_0?"Expanded":"Normal"'},p:[19,84,1004]}]}]}," ",{p:[21,7,1080],t:7,e:"ui-section",a:{label:"Filters"},f:[{p:[22,9,1118],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["filter_co2"],s:'_0?"check-square-o":"square-o"'},p:[22,26,1135]}],style:[{t:2,x:{r:["filter_co2"],s:'_0?"selected":null'},p:[22,81,1190]}],action:"co2_scrub",params:['{"id_tag": "',{t:2,r:"id_tag",p:[23,50,1276]},'", "val": ',{t:2,x:{r:["filter_co2"],s:"+!_0"},p:[23,70,1296]},"}"]},f:["CO2"]}," ",{p:[24,9,1340],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["filter_n2o"],s:'_0?"check-square-o":"square-o"'},p:[24,26,1357]}],style:[{t:2,x:{r:["filter_n2o"],s:'_0?"selected":null'},p:[24,81,1412]}],action:"n2o_scrub",params:['{"id_tag": "',{t:2,r:"id_tag",p:[25,50,1498]},'", "val": ',{t:2,x:{r:["filter_n2o"],s:"+!_0"},p:[25,70,1518]},"}"]},f:["N2O"]}," ",{p:[26,9,1562],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["filter_toxins"],s:'_0?"check-square-o":"square-o"'},p:[26,26,1579]}],style:[{t:2,x:{r:["filter_toxins"],s:'_0?"selected":null'},p:[26,84,1637]}],action:"tox_scrub",params:['{"id_tag": "',{t:2,r:"id_tag",p:[27,50,1726]},'", "val": ',{t:2,x:{r:["filter_toxins"],s:"+!_0"},p:[27,70,1746]},"}"]},f:["Plasma"]}]}]}],n:52,r:"data.scrubbers",p:[7,3,144]},{t:4,n:51,f:[{p:[31,5,1847],t:7,e:"span",a:{"class":"bad"},f:["Error: No scrubbers connected."]}],r:"data.scrubbers"}]}]},i.exports.components=i.exports.components||{};var a={back:t("./back.ract")};for(var o in a)a.hasOwnProperty(o)&&(i.exports.components[o]=a[o]);e.exports=r.extend(i.exports)},{"./back.ract":22,"ractive/ractive.runtime":7}],26:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Air Status"},f:[{t:4,f:[{t:4,f:[{p:[4,7,110],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[4,26,129]}]},f:[{p:[5,6,146],t:7,e:"span",a:{"class":[{t:2,x:{r:["danger_level"],s:'_0==2?"bad":_0==1?"average":"good"'},p:[5,19,159]}]},f:[{t:2,x:{r:["value"],s:"Math.fixed(_0,2)"},p:[6,5,237]},{t:2,r:"unit",p:[6,29,261]}]}]}],n:52,r:"adata.environment_data",p:[3,5,70]}," ",{p:[10,5,322],t:7,e:"ui-section",a:{label:"Local Status"},f:[{p:[11,7,363],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.danger_level"],s:'_0==2?"bad bold":_0==1?"average bold":"good"'},p:[11,20,376]}]},f:[{t:2,x:{r:["data.danger_level"],s:'_0==2?"Danger (Internals Required)":_0==1?"Caution":"Optimal"'},p:[12,6,475]}]}]}," ",{p:[15,5,619],t:7,e:"ui-section",a:{label:"Area Status"},f:[{p:[16,7,659],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.atmos_alarm","data.fire_alarm"],s:'_0||_1?"bad bold":"good"'},p:[16,20,672]}]},f:[{t:2,x:{r:["data.atmos_alarm","fire_alarm"],s:'_0?"Atmosphere Alarm":_1?"Fire Alarm":"Nominal"'},p:[17,8,744]}]}]}],n:50,r:"data.environment_data",p:[2,3,35]},{t:4,n:51,f:[{p:[21,5,876],t:7,e:"ui-section",a:{label:"Warning"},f:[{p:[22,7,912],t:7,e:"span",a:{"class":"bad bold"},f:["Cannot obtain air sample for analysis."]}]}],r:"data.environment_data"}," ",{t:4,f:[{p:[26,5,1040],t:7,e:"ui-section",a:{label:"Warning"},f:[{p:[27,7,1076],t:7,e:"span",a:{"class":"bad bold"},f:["Safety measures offline. Device may exhibit abnormal behavior."]}]}],n:50,r:"data.emagged",p:[25,3,1014]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],27:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.css="th,\ntd {\n padding-right: 16px;\n text-align: left;\n}\n",i.exports.template={v:3,t:[" ",{p:{button:[{p:[5,5,116],t:7,e:"back"}]},t:7,e:"ui-display",a:{title:"Alarm Thresholds",button:0},f:[" ",{p:[7,3,143],t:7,e:"table",f:[{p:[8,5,156],t:7,e:"thead",f:[{p:[8,12,163],t:7,e:"tr",f:[{p:[9,7,175],t:7,e:"th"}," ",{p:[10,7,192],t:7,e:"th",f:[{p:[10,11,196],t:7,e:"span",a:{"class":"bad"},f:["min2"]}]}," ",{p:[11,7,238],t:7,e:"th",f:[{p:[11,11,242],t:7,e:"span",a:{"class":"average"},f:["min1"]}]}," ",{p:[12,7,288],t:7,e:"th",f:[{p:[12,11,292],t:7,e:"span",a:{"class":"average"},f:["max1"]}]}," ",{p:[13,7,338],t:7,e:"th",f:[{p:[13,11,342],t:7,e:"span",a:{"class":"bad"},f:["max2"]}]}]}]}," ",{p:[15,5,401],t:7,e:"tbody",f:[{t:4,f:[{p:[16,32,441],t:7,e:"tr",f:[{p:[17,9,455],t:7,e:"th",f:[{t:3,r:"name",p:[17,13,459]}]}," ",{t:4,f:[{p:[18,27,502],t:7,e:"td",f:[{p:[19,11,518],t:7,e:"ui-button",a:{action:"threshold",params:['{"env": "',{t:2,r:"env",p:[19,58,565]},'", "var": "',{t:2,r:"val",p:[19,76,583]},'"}']},f:[{t:2,x:{r:["selected"],s:"Math.fixed(_0,2)"},p:[19,87,594]}]}]}],n:52,r:"settings",p:[18,9,484]}]}],n:52,r:"data.thresholds",p:[16,7,416]}]}," ",{p:[23,3,697],t:7,e:"table",f:[]}]}]}," "]},i.exports.components=i.exports.components||{};var a={back:t("./back.ract")};for(var o in a)a.hasOwnProperty(o)&&(i.exports.components[o]=a[o]);e.exports=r.extend(i.exports)},{"./back.ract":22,"ractive/ractive.runtime":7}],28:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[" ",{p:{button:[{p:[5,5,113],t:7,e:"back"}]},t:7,e:"ui-display",a:{title:"Vent Controls",button:0},f:[" ",{t:4,f:[{p:[8,5,166],t:7,e:"ui-subdisplay",a:{title:[{t:2,r:"long_name",p:[8,27,188]}]},f:[{p:[9,7,211],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[10,9,247],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["power"],s:'_0?"power-off":"close"'},p:[10,26,264]}],style:[{t:2,x:{r:["power"],s:'_0?"selected":null'},p:[10,68,306]}],action:"power",params:['{"id_tag": "',{t:2,r:"id_tag",p:[11,46,383]},'", "val": ',{t:2,x:{r:["power"],s:"+!_0"},p:[11,66,403]},"}"]},f:[{t:2,x:{r:["power"],s:'_0?"On":"Off"'},p:[11,80,417]}]}]}," ",{p:[13,7,482],t:7,e:"ui-section",a:{label:"Mode"},f:[{p:[14,9,517],t:7,e:"span",f:[{t:2,x:{r:["direction"],s:'_0=="release"?"Pressurizing":"Siphoning"'},p:[14,15,523]}]}]}," ",{p:[16,7,616],t:7,e:"ui-section",a:{label:"Pressure Regulator"},f:[{p:[17,9,665],t:7,e:"ui-button",a:{icon:"sign-in",style:[{t:2,x:{r:["incheck"],s:'_0?"selected":null'},p:[17,42,698]}],action:"incheck",params:['{"id_tag": "',{t:2,r:"id_tag",p:[18,48,779]},'", "val": ',{t:2,r:"checks",p:[18,68,799]},"}"]},f:["Internal"]}," ",{p:[19,9,842],t:7,e:"ui-button",a:{icon:"sign-out",style:[{t:2,x:{r:["excheck"],s:'_0?"selected":null'},p:[19,43,876]}],action:"excheck",params:['{"id_tag": "',{t:2,r:"id_tag",p:[20,48,957]},'", "val": ',{t:2,r:"checks",p:[20,68,977]},"}"]},f:["External"]}]}," ",{p:[22,7,1039],t:7,e:"ui-section",a:{label:"Target Pressure"},f:[{p:[23,9,1085],t:7,e:"ui-button",a:{icon:"pencil",action:"external_pressure",params:['{"id_tag": "',{t:2,r:"id_tag",p:[24,31,1168]},'", "pressure": "custom"}']},f:[{t:2,x:{r:["external"],s:"Math.fixed(_0)"},p:[24,67,1204]}]}," ",{p:[25,9,1250],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["extdefault"],s:'_0?"disabled":null'},p:[25,42,1283]}],action:"external_pressure",params:['{"id_tag": "',{t:2,r:"id_tag",p:[26,31,1377]},'", "pressure": "reset"}']},f:["Reset"]}]}]}],n:52,r:"data.vents",p:[7,3,140]},{t:4,n:51,f:[{p:[30,5,1490],t:7,e:"span",a:{"class":"bad"},f:["Error: No vents connected."]}],r:"data.vents"}]}]},i.exports.components=i.exports.components||{};var a={back:t("./back.ract")};for(var o in a)a.hasOwnProperty(o)&&(i.exports.components[o]=a[o]);e.exports=r.extend(i.exports)},{"./back.ract":22,"ractive/ractive.runtime":7}],29:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.css="table {\n width: 100%;\n border-spacing: 2px;\n}\nth {\n text-align: left;\n}\ntd {\n vertical-align: top;\n}\ntd .button {\n margin-top: 4px;\n}\n",i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,3,16],t:7,e:"ui-section",f:[{p:[3,5,34],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.oneAccess"],s:'_0?"unlock":"lock"'},p:[3,22,51]}],action:"one_access"},f:[{t:2,x:{r:["data.oneAccess"],s:'_0?"One":"All"'},p:[3,82,111]}," Required"]}," ",{p:[4,5,172],t:7,e:"ui-button",a:{icon:"refresh",action:"clear"},f:["Clear"]}]}," ",{p:[6,3,251],t:7,e:"hr"}," ",{p:[7,3,260],t:7,e:"table",f:[{p:[8,3,271],t:7,e:"thead",f:[{p:[9,4,283],t:7,e:"tr",f:[{t:4,f:[{p:[10,5,315],t:7,e:"th",f:[{p:[10,9,319],t:7,e:"span",a:{"class":"highlight bold"},f:[{t:2,r:"name",p:[10,38,348]}]}]}],n:52,r:"data.regions",p:[9,8,287]}]}]}," ",{p:[13,3,403],t:7,e:"tbody",f:[{p:[14,4,415],t:7,e:"tr",f:[{t:4,f:[{p:[15,5,447],t:7,e:"td",f:[{t:4,f:[{p:[16,11,481],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["req"],s:'_0?"check-square-o":"square-o"'},p:[16,28,498]}],style:[{t:2,x:{r:["req"],s:'_0?"selected":null'},p:[16,76,546]}],action:"set",params:['{"access": "',{t:2,r:"id",p:[17,46,621]},'"}']},f:[{t:2,r:"name",p:[17,56,631]}]}," ",{p:[18,9,661],t:7,e:"br"}],n:52,r:"accesses",p:[15,9,451]}]}],n:52,r:"data.regions",p:[14,8,419]}]}]}]}]}," "]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],30:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(t){t.exports={data:{powerState:function(t){return 2===t?"good":1===t?"average":"bad"}},computed:{malfAction:function(){var t;return t=this.get("data.malfStatus"),1===t?"hack":2===t?"occupy":3===t?"deoccupy":void 0},malfButton:function(){var t;return t=this.get("data.malfStatus"),1===t?"Override Programming":"Shunt Core Process"},malfIcon:function(){var t;return t=this.get("data.malfStatus"),1===t?"terminal":"caret-square-o-down"},powerCellStatusState:function(){var t;return t=this.get("data.powerCellStatus"),t>50?"good":t>25?"average":"bad"}}}}(i),i.exports.template={v:3,t:[" ",{p:[31,1,988],t:7,e:"ui-notice",f:[{t:4,f:[{p:[33,5,1033],t:7,e:"ui-section",a:{label:"Interface Lock"},f:[{p:[34,7,1076],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.locked"],s:'_0?"lock":"unlock"'},p:[34,24,1093]}],action:"lock"},f:[{t:2,x:{r:["data.locked"],s:'_0?"Engaged":"Disengaged"'},p:[34,75,1144]}]}]}],n:50,r:"data.siliconUser",p:[32,3,1003]},{t:4,n:51,f:[{p:[37,5,1235],t:7,e:"span",f:["Swipe an ID card to ",{t:2,x:{r:["data.locked"],s:'_0?"unlock":"lock"'},p:[37,31,1261]}," this interface."]}],r:"data.siliconUser"}]}," ",{p:[40,1,1346],t:7,e:"ui-display",a:{title:"Power Status"},f:[{p:[41,3,1383],t:7,e:"ui-section",a:{label:"Main Breaker"},f:[{t:4,f:[{p:[43,7,1470],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.isOperating"],s:'_0?"good":"bad"'},p:[43,20,1483]}]},f:[{t:2,x:{r:["data.isOperating"],s:'_0?"On":"Off"'},p:[43,59,1522]}]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"},p:[42,5,1422]},{t:4,n:51,f:[{p:[45,7,1586],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isOperating"],s:'_0?"power-off":"close"'},p:[45,24,1603]}],style:[{t:2,x:{r:["data.isOperating"],s:'_0?"selected":null'},p:[45,77,1656]}],action:"breaker"},f:[{t:2,x:{r:["data.isOperating"],s:'_0?"On":"Off"'},p:[46,26,1724]}]}],x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"}}]}," ",{p:[49,3,1805],t:7,e:"ui-section",a:{label:"External Power"},f:[{p:[50,5,1846],t:7,e:"span",a:{"class":[{t:2,x:{r:["powerState","data.externalPower"],s:"_0(_1)"},p:[50,18,1859]}]},f:[{t:2,x:{r:["data.externalPower"],s:'_0==2?"Good":_0==1?"Low":"None"'},p:[50,54,1895]}]}]}," ",{p:[52,3,2002],t:7,e:"ui-section",a:{label:"Power Cell"},f:[{t:4,f:[{p:[54,7,2083],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.powerCellStatus",p:[54,40,2116]}],state:[{t:2,r:"powerCellStatusState",p:[54,73,2149]}]},f:[{t:2,x:{r:["adata.powerCellStatus"],s:"Math.fixed(_0)"},p:[54,99,2175]},"%"]}],n:50,x:{r:["data.powerCellStatus"],s:"_0!=null"},p:[53,5,2039]},{t:4,n:51,f:[{p:[56,7,2244],t:7,e:"span",a:{"class":"bad"},f:["Power cell removed."]}],x:{r:["data.powerCellStatus"],s:"_0!=null"}}]}," ",{t:4,f:[{p:[60,5,2364],t:7,e:"ui-section",a:{label:"Charge Mode"},f:[{t:4,f:[{p:[62,9,2454],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.chargeMode"],s:'_0?"good":"bad"'},p:[62,22,2467]}]},f:[{t:2,x:{r:["data.chargeMode"],s:'_0?"Auto":"Off"'},p:[62,60,2505]}]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"},p:[61,7,2404]},{t:4,n:51,f:[{p:[64,9,2574],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.chargeMode"],s:'_0?"refresh":"close"'},p:[64,26,2591]}],style:[{t:2,x:{r:["data.chargeMode"],s:'_0?"selected":null'},p:[64,76,2641]}],action:"charge"},f:[{t:2,x:{r:["data.chargeMode"],s:'_0?"Auto":"Off"'},p:[65,27,2709]}]}],x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"}}," [",{p:[68,8,2795],t:7,e:"span",a:{"class":[{t:2,x:{r:["powerState","data.chargingStatus"],s:"_0(_1)"},p:[68,21,2808]}]},f:[{t:2,x:{r:["data.chargingStatus"],s:'_0==2?"Fully Charged":_0==1?"Charging":"Not Charging"'},p:[68,58,2845]}]},"]"]}],n:50,x:{r:["data.powerCellStatus"],s:"_0!=null"},p:[59,3,2322]}]}," ",{p:[72,1,3003],t:7,e:"ui-display",a:{title:"Power Channels"},f:[{t:4,f:[{p:[74,5,3077],t:7,e:"ui-section",a:{label:[{t:2,r:"title",p:[74,24,3096]}],nowrap:0},f:[{p:[75,7,3122],t:7,e:"div",a:{"class":"content"},f:[{t:2,x:{r:["powerLoad"],s:"Math.round(_0)"},p:[75,28,3143]}," W"]}," ",{p:[76,7,3184],t:7,e:"div",a:{"class":"content"},f:[{p:[76,28,3205],t:7,e:"span",a:{"class":[{t:2,x:{r:["status"],s:'_0>=2?"good":"bad"'},p:[76,41,3218]}]},f:[{t:2,x:{r:["status"],s:'_0>=2?"On":"Off"'},p:[76,75,3252]}]}]}," ",{p:[77,7,3303],t:7,e:"div",a:{"class":"content"},f:["[",{p:[77,29,3325],t:7,e:"span",f:[{t:2,x:{r:["status"],s:'_0==1||_0==3?"Auto":"Manual"'},p:[77,35,3331]}]},"]"]}," ",{p:[78,7,3403],t:7,e:"div",a:{"class":"content",style:"float:right"},f:[{t:4,f:[{p:[80,11,3506],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["status"],s:'_0==1||_0==3?"selected":null'},p:[80,44,3539]}],action:"channel",params:[{t:2,r:"topicParams.auto",p:[81,38,3629]}]},f:["Auto"]}," ",{p:[82,11,3679],t:7,e:"ui-button",a:{icon:"power-off",state:[{t:2,x:{r:["status"],s:'_0==2?"selected":null'},p:[82,46,3714]}],action:"channel",params:[{t:2,r:"topicParams.on",p:[83,21,3789]}]},f:["On"]}," ",{p:[84,11,3835],t:7,e:"ui-button",a:{icon:"close",state:[{t:2,x:{r:["status"],s:'_0==0?"selected":null'},p:[84,42,3866]}],action:"channel",params:[{t:2,r:"topicParams.off",p:[85,21,3941]}]},f:["Off"]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"!_0||_1"},p:[79,9,3454]}]}]}],n:52,r:"adata.powerChannels",p:[73,3,3042]}," ",{p:[90,3,4044],t:7,e:"ui-section",a:{label:"Total Load"},f:[{p:[91,5,4081],t:7,e:"span",a:{"class":"bold"},f:[{t:2,x:{r:["adata.totalLoad"],s:"Math.round(_0)"},p:[91,24,4100]}," W"]}]}]}," ",{t:4,f:[{p:[95,3,4202],t:7,e:"ui-display",a:{title:"System Overrides"},f:[{p:[96,5,4245],t:7,e:"ui-button",a:{icon:"lightbulb-o",action:"overload"},f:["Overload"]}," ",{t:4,f:[{p:[98,7,4350],t:7,e:"ui-button",a:{icon:[{t:2,r:"malfIcon",p:[98,24,4367]}],state:[{t:2,x:{r:["data.malfStatus"],s:'_0==4?"disabled":null'},p:[98,45,4388]}],action:[{t:2,r:"malfAction",p:[98,99,4442]}]},f:[{t:2,r:"malfButton",p:[98,115,4458]}]}],n:50,r:"data.malfStatus",p:[97,5,4319]}]}],n:50,r:"data.siliconUser",p:[94,1,4174]},{p:[102,1,4525],t:7,e:"ui-notice",f:[{p:[103,3,4540],t:7,e:"ui-section",a:{label:"Cover Lock"},f:[{t:4,f:[{p:[105,7,4625],t:7,e:"span",f:[{t:2,x:{r:["data.coverLocked"],s:'_0?"Engaged":"Disengaged"'},p:[105,13,4631]}]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"},p:[104,5,4577]},{t:4,n:51,f:[{p:[107,7,4707],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.coverLocked"],s:'_0?"lock":"unlock"'},p:[107,24,4724]}],action:"cover"},f:[{t:2,x:{r:["data.coverLocked"],s:'_0?"Engaged":"Disengaged"'},p:[107,81,4781]}]}],x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"}}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],31:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,3,16],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[3,5,48],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[3,22,65]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[3,66,109]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[4,22,164]}]}]}," ",{p:[6,3,223],t:7,e:"ui-section",a:{label:"Output Pressure"},f:[{p:[7,5,265],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "custom"}'},f:["Set"]}," ",{p:[8,5,361],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.set_pressure","data.max_pressure"],s:'_0==_1?"disabled":null'},p:[8,35,391]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}," ",{p:[9,5,523],t:7,e:"span",a:{"class":"buttoninfo"},f:[{t:2,x:{r:["adata.set_pressure"],s:"Math.round(_0)"},p:[9,30,548]}," kPa"]}]}," ",{p:[11,3,614],t:7,e:"ui-section",a:{label:"Filter"},f:[{p:[12,5,647],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.filter_type"],s:'_0==-1?"selected":null'},p:[12,23,665]}],action:"filter",params:'{"mode": -1}'},f:["Nothing"]}," ",{p:[14,5,783],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.filter_type"],s:'_0==0?"selected":null'},p:[14,23,801]}],action:"filter",params:'{"mode": 0}'},f:["Plasma"]}," ",{p:[16,5,916],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.filter_type"],s:'_0==1?"selected":null'},p:[16,23,934]}],action:"filter",params:'{"mode": 1}'},f:["O2"]}," ",{p:[18,5,1045],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.filter_type"],s:'_0==2?"selected":null'},p:[18,23,1063]}],action:"filter",params:'{"mode": 2}'},f:["N2"]}," ",{p:[20,5,1174],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.filter_type"],s:'_0==3?"selected":null'},p:[20,23,1192]}],action:"filter",params:'{"mode": 3}'},f:["CO2"]}," ",{p:[22,5,1304],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.filter_type"],s:'_0==4?"selected":null'},p:[22,23,1322]}],action:"filter",params:'{"mode": 4}'},f:["N2O"]}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],32:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,3,16],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[3,5,48],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[3,22,65]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[3,66,109]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[4,22,164]}]}]}," ",{p:[6,3,223],t:7,e:"ui-section",a:{label:"Output Pressure"},f:[{p:[7,5,265],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "custom"}'},f:["Set"]}," ",{p:[8,5,361],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.set_pressure","data.max_pressure"],s:'_0==_1?"disabled":null'},p:[8,35,391]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}," ",{p:[9,5,523],t:7,e:"span",a:{"class":"buttoninfo"},f:[{t:2,x:{r:["adata.set_pressure"],s:"Math.round(_0)"},p:[9,30,548]}," kPa"]}]}," ",{p:[11,3,614],t:7,e:"ui-section",a:{label:"Node 1"},f:[{p:[12,5,647],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.node1_concentration"],s:'_0==0?"disabled":null'},p:[12,44,686]}],action:"node1",params:'{"concentration": -0.1}'}}," ",{p:[14,5,803],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.node1_concentration"],s:'_0==0?"disabled":null'},p:[14,39,837]}],action:"node1",params:'{"concentration": -0.01}'}}," ",{p:[16,5,955],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.node1_concentration"],s:'_0==100?"disabled":null'},p:[16,38,988]}],action:"node1",params:'{"concentration": 0.01}'}}," ",{ -p:[18,5,1107],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.node1_concentration"],s:'_0==100?"disabled":null'},p:[18,43,1145]}],action:"node1",params:'{"concentration": 0.1}'}}," ",{p:[20,5,1263],t:7,e:"span",a:{"class":"buttoninfo"},f:[{t:2,x:{r:["adata.node1_concentration"],s:"Math.round(_0)"},p:[20,30,1288]},"%"]}]}," ",{p:[22,3,1358],t:7,e:"ui-section",a:{label:"Node 2"},f:[{p:[23,5,1391],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.node2_concentration"],s:'_0==0?"disabled":null'},p:[23,44,1430]}],action:"node2",params:'{"concentration": -0.1}'}}," ",{p:[25,5,1547],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.node2_concentration"],s:'_0==0?"disabled":null'},p:[25,39,1581]}],action:"node2",params:'{"concentration": -0.01}'}}," ",{p:[27,5,1699],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.node2_concentration"],s:'_0==100?"disabled":null'},p:[27,38,1732]}],action:"node2",params:'{"concentration": 0.01}'}}," ",{p:[29,5,1851],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.node2_concentration"],s:'_0==100?"disabled":null'},p:[29,43,1889]}],action:"node2",params:'{"concentration": 0.1}'}}," ",{p:[31,5,2007],t:7,e:"span",a:{"class":"buttoninfo"},f:[{t:2,x:{r:["adata.node2_concentration"],s:"Math.round(_0)"},p:[31,30,2032]},"%"]}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],33:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,3,16],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[3,5,48],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[3,22,65]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[3,66,109]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[4,22,164]}]}]}," ",{t:4,f:[{p:[7,5,250],t:7,e:"ui-section",a:{label:"Transfer Rate"},f:[{p:[8,7,292],t:7,e:"ui-button",a:{icon:"pencil",action:"transfer",params:'{"rate": "custom"}'},f:["Set"]}," ",{p:[9,7,386],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.transfer_rate","data.max_rate"],s:'_0==_1?"disabled":null'},p:[9,37,416]}],action:"transfer",params:'{"rate": "max"}'},f:["Max"]}," ",{p:[10,7,543],t:7,e:"span",a:{"class":"buttoninfo"},f:[{t:2,x:{r:["adata.transfer_rate"],s:"Math.round(_0)"},p:[10,32,568]}," L/s"]}]}],n:50,r:"data.max_rate",p:[6,3,223]},{t:4,n:51,f:[{p:[13,5,651],t:7,e:"ui-section",a:{label:"Output Pressure"},f:[{p:[14,7,695],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "custom"}'},f:["Set"]}," ",{p:[15,7,793],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.set_pressure","data.max_pressure"],s:'_0==_1?"disabled":null'},p:[15,37,823]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}," ",{p:[16,7,957],t:7,e:"span",a:{"class":"buttoninfo"},f:[{t:2,x:{r:["adata.set_pressure"],s:"Math.round(_0)"},p:[16,32,982]}," kPa"]}]}],r:"data.max_rate"}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],34:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-notice",f:[{p:[2,3,15],t:7,e:"span",f:["The regulator ",{t:2,x:{r:["data.hasHoldingTank"],s:'_0?"is":"is not"'},p:[2,23,35]}," connected to a tank."]}]}," ",{p:{button:[{p:[6,5,185],t:7,e:"ui-button",a:{icon:"pencil",state:[{t:2,x:{r:["data.canLabel"],s:'_0?null:"disabled"'},p:[6,37,217]}],action:"relable"},f:["Relabel"]}]},t:7,e:"ui-display",a:{title:"Canister",button:0},f:[" ",{p:[8,3,312],t:7,e:"ui-section",a:{label:"Pressure"},f:[{p:[9,5,347],t:7,e:"span",f:[{t:2,x:{r:["adata.tankPressure"],s:"Math.round(_0)"},p:[9,11,353]}," kPa"]}]}," ",{p:[11,3,419],t:7,e:"ui-section",a:{label:"Port"},f:[{p:[12,5,450],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.portConnected"],s:'_0?"good":"average"'},p:[12,18,463]}]},f:[{t:2,x:{r:["data.portConnected"],s:'_0?"Connected":"Not Connected"'},p:[12,63,508]}]}]}]}," ",{p:[15,1,603],t:7,e:"ui-display",a:{title:"Valve"},f:[{p:[16,3,633],t:7,e:"ui-section",a:{label:"Release Pressure"},f:[{p:[17,5,676],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.minReleasePressure",p:[17,18,689]}],max:[{t:2,r:"data.maxReleasePressure",p:[17,52,723]}],value:[{t:2,r:"data.releasePressure",p:[18,14,766]}]},f:[{t:2,x:{r:["adata.releasePressure"],s:"Math.round(_0)"},p:[18,40,792]}," kPa"]}]}," ",{p:[20,3,863],t:7,e:"ui-section",a:{label:"Pressure Regulator"},f:[{p:[21,5,908],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.releasePressure","data.defaultReleasePressure"],s:'_0!=_1?null:"disabled"'},p:[21,38,941]}],action:"pressure",params:'{"pressure": "reset"}'},f:["Reset"]}," ",{p:[23,5,1097],t:7,e:"ui-button",a:{icon:"minus",state:[{t:2,x:{r:["data.releasePressure","data.minReleasePressure"],s:'_0>_1?null:"disabled"'},p:[23,36,1128]}],action:"pressure",params:'{"pressure": "min"}'},f:["Min"]}," ",{p:[25,5,1275],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "custom"}'},f:["Set"]}," ",{p:[26,5,1371],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.releasePressure","data.maxReleasePressure"],s:'_0<_1?null:"disabled"'},p:[26,35,1401]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}]}," ",{p:[29,3,1563],t:7,e:"ui-section",a:{label:"Valve"},f:[{p:[30,5,1595],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.valveOpen"],s:'_0?"unlock":"lock"'},p:[30,22,1612]}],style:[{t:2,x:{r:["data.valveOpen","data.hasHoldingTank"],s:'_0?_1?"caution":"danger":null'},p:[31,14,1666]}],action:"valve"},f:[{t:2,x:{r:["data.valveOpen"],s:'_0?"Open":"Closed"'},p:[32,22,1760]}]}]}]}," ",{p:{button:[{t:4,f:[{p:[38,7,1948],t:7,e:"ui-button",a:{icon:"eject",style:[{t:2,x:{r:["data.valveOpen"],s:'_0?"danger":null'},p:[38,38,1979]}],action:"eject"},f:["Eject"]}],n:50,r:"data.hasHoldingTank",p:[37,5,1913]}]},t:7,e:"ui-display",a:{title:"Holding Tank",button:0},f:[" ",{t:4,f:[{p:[42,3,2113],t:7,e:"ui-section",a:{label:"Label"},f:[{t:2,r:"data.holdingTank.name",p:[43,4,2144]}]}," ",{p:[45,3,2190],t:7,e:"ui-section",a:{label:"Pressure"},f:[{t:2,x:{r:["adata.holdingTank.tankPressure"],s:"Math.round(_0)"},p:[46,4,2224]}," kPa"]}],n:50,r:"data.hasHoldingTank",p:[41,3,2082]},{t:4,n:51,f:[{p:[49,3,2306],t:7,e:"ui-section",f:[{p:[50,4,2323],t:7,e:"span",a:{"class":"average"},f:["No Holding Tank"]}]}],r:"data.hasHoldingTank"}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],35:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Status"},f:[{p:[2,3,31],t:7,e:"ui-section",a:{label:"Energy"},f:[{p:[3,5,64],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.maxEnergy",p:[3,26,85]}],value:[{t:2,r:"data.energy",p:[3,53,112]}]},f:[{t:2,x:{r:["adata.energy"],s:"Math.fixed(_0)"},p:[3,70,129]}," Units"]}]}]}," ",{p:{button:[{t:4,f:[{p:[9,7,315],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.amount","."],s:'_0==_1?"selected":null'},p:[9,37,345]}],action:"amount",params:['{"amount": ',{t:2,r:".",p:[9,114,422]},"}"]},f:[{t:2,r:".",p:[9,122,430]}]}],n:52,r:"data.beakerTransferAmounts",p:[8,5,271]}]},t:7,e:"ui-display",a:{title:"Dispense",button:0},f:[" ",{p:[12,3,482],t:7,e:"ui-section",f:[{t:4,f:[{p:[14,7,532],t:7,e:"ui-button",a:{grid:0,icon:"tint",action:"dispense",params:['{"reagent": "',{t:2,r:"id",p:[14,74,599]},'"}']},f:[{t:2,r:"title",p:[14,84,609]}]}],n:52,r:"data.chemicals",p:[13,5,500]}]}]}," ",{p:{button:[{t:4,f:[{p:[21,7,786],t:7,e:"ui-button",a:{icon:"minus",action:"remove",params:['{"amount": ',{t:2,r:".",p:[21,66,845]},"}"]},f:[{t:2,r:".",p:[21,74,853]}]}],n:52,r:"data.beakerTransferAmounts",p:[20,5,742]}," ",{p:[23,5,891],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[23,36,922]}],action:"eject"},f:["Eject"]}]},t:7,e:"ui-display",a:{title:"Beaker",button:0},f:[" ",{p:[25,3,1019],t:7,e:"ui-section",a:{label:"Contents"},f:[{t:4,f:[{p:[27,7,1089],t:7,e:"span",f:[{t:2,x:{r:["adata.beakerCurrentVolume"],s:"Math.round(_0)"},p:[27,13,1095]},"/",{t:2,r:"data.beakerMaxVolume",p:[27,55,1137]}," Units"]}," ",{p:[28,7,1182],t:7,e:"br"}," ",{t:4,f:[{p:[30,9,1235],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[30,52,1278]}," units of ",{t:2,r:"name",p:[30,87,1313]}]},{p:[30,102,1328],t:7,e:"br"}],n:52,r:"adata.beakerContents",p:[29,7,1195]},{t:4,n:51,f:[{p:[32,9,1359],t:7,e:"span",a:{"class":"bad"},f:["Beaker Empty"]}],r:"adata.beakerContents"}],n:50,r:"data.isBeakerLoaded",p:[26,5,1054]},{t:4,n:51,f:[{p:[35,7,1435],t:7,e:"span",a:{"class":"average"},f:["No Beaker"]}],r:"data.isBeakerLoaded"}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],36:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Thermostat"},f:[{p:[2,3,35],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[3,5,67],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isActive"],s:'_0?"power-off":"close"'},p:[3,22,84]}],style:[{t:2,x:{r:["data.isActive"],s:'_0?"selected":null'},p:[4,10,137]}],state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[5,10,186]}],action:"power"},f:[{t:2,x:{r:["data.isActive"],s:'_0?"On":"Off"'},p:[6,18,249]}]}]}," ",{p:[8,3,314],t:7,e:"ui-section",a:{label:"Target"},f:[{p:[9,4,346],t:7,e:"ui-button",a:{icon:"pencil",action:"temperature"},f:[{t:2,x:{r:["adata.targetTemp"],s:"Math.round(_0)"},p:[9,50,392]}," K"]}]}]}," ",{p:{button:[{p:[14,5,535],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[14,36,566]}],action:"eject"},f:["Eject"]}]},t:7,e:"ui-display",a:{title:"Beaker",button:0},f:[" ",{p:[16,3,663],t:7,e:"ui-section",a:{label:"Contents"},f:[{t:4,f:[{p:[18,7,733],t:7,e:"span",f:["Temperature: ",{t:2,x:{r:["adata.currentTemp"],s:"Math.round(_0)"},p:[18,26,752]}," K"]}," ",{p:[19,7,802],t:7,e:"br"}," ",{t:4,f:[{p:[21,9,856],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[21,52,899]}," units of ",{t:2,r:"name",p:[21,87,934]}]},{p:[21,102,949],t:7,e:"br"}],n:52,r:"adata.beakerContents",p:[20,7,816]},{t:4,n:51,f:[{p:[23,9,980],t:7,e:"span",a:{"class":"bad"},f:["Beaker Empty"]}],r:"adata.beakerContents"}],n:50,r:"data.isBeakerLoaded",p:[17,5,698]},{t:4,n:51,f:[{p:[26,7,1056],t:7,e:"span",a:{"class":"average"},f:["No Beaker"]}],r:"data.isBeakerLoaded"}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],37:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(t){t.exports={computed:{cellTemperatureState:function(){var t;return t=this.get("data.cellTemperature"),225>t?"good":273.15>t?"average":"bad"},occupantStatState:function(){var t;return t=this.get("data.occupant.stat"),0===t?"good":1===t?"average":"bad"}}}}(i),i.exports.template={v:3,t:[" ",{p:[16,1,414],t:7,e:"ui-display",a:{title:"Occupant"},f:[{p:[17,3,447],t:7,e:"ui-section",a:{label:"Occupant"},f:[{p:[18,3,480],t:7,e:"span",f:[{t:2,x:{r:["data.occupant.name"],s:'_0?_0:"No Occupant"'},p:[18,9,486]}]}]}," ",{t:4,f:[{p:[21,5,603],t:7,e:"ui-section",a:{label:"State"},f:[{p:[22,7,637],t:7,e:"span",a:{"class":[{t:2,r:"occupantStatState",p:[22,20,650]}]},f:[{t:2,x:{r:["data.occupant.stat"],s:'_0==0?"Conscious":_0==1?"Unconcious":"Dead"'},p:[22,43,673]}]}]}," ",{p:[24,4,794],t:7,e:"ui-section",a:{label:"Temperature"},f:[{p:[25,6,833],t:7,e:"span",f:[{t:2,x:{r:["adata.occupant.bodyTemperature"],s:"Math.round(_0)"},p:[25,12,839]}," K"]}]}," ",{p:[27,5,918],t:7,e:"ui-section",a:{label:"Health"},f:[{p:[28,7,953],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.occupant.minHealth",p:[28,20,966]}],max:[{t:2,r:"data.occupant.maxHealth",p:[28,54,1e3]}],value:[{t:2,r:"data.occupant.health",p:[28,90,1036]}],state:[{t:2,x:{r:["data.occupant.health"],s:'_0>=0?"good":"average"'},p:[29,16,1078]}]},f:[{t:2,x:{r:["adata.occupant.health"],s:"Math.round(_0)"},p:[29,68,1130]}]}]}," ",{t:4,f:[{p:[32,7,1367],t:7,e:"ui-section",a:{label:[{t:2,r:"label",p:[32,26,1386]}]},f:[{p:[33,9,1407],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.occupant.maxHealth",p:[33,30,1428]}],value:[{t:2,rx:{r:"data.occupant",m:[{t:30,n:"type"}]},p:[33,66,1464]}],state:"bad"},f:[{t:2,x:{r:["type","adata.occupant"],s:"Math.round(_1[_0])"},p:[33,103,1501]}]}]}],n:52,x:{r:[],s:'[{label:"Brute",type:"bruteLoss"},{label:"Respiratory",type:"oxyLoss"},{label:"Toxin",type:"toxLoss"},{label:"Burn",type:"fireLoss"}]'},p:[31,5,1201]}],n:50,r:"data.hasOccupant",p:[20,3,573]}]}," ",{p:[38,1,1610],t:7,e:"ui-display",a:{title:"Cell"},f:[{p:[39,3,1639],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[40,5,1671],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isOperating"],s:'_0?"power-off":"close"'},p:[40,22,1688]}],style:[{t:2,x:{r:["data.isOperating"],s:'_0?"selected":null'},p:[41,14,1748]}],state:[{t:2,x:{r:["data.isOpen"],s:'_0?"disabled":null'},p:[42,14,1804]}],action:"power"},f:[{t:2,x:{r:["data.isOperating"],s:'_0?"On":"Off"'},p:[43,22,1863]}]}]}," ",{p:[45,3,1931],t:7,e:"ui-section",a:{label:"Temperature"},f:[{p:[46,3,1967],t:7,e:"span",a:{"class":[{t:2,r:"cellTemperatureState",p:[46,16,1980]}]},f:[{t:2,x:{r:["adata.cellTemperature"],s:"Math.round(_0)"},p:[46,42,2006]}," K"]}]}," ",{p:[48,2,2071],t:7,e:"ui-section",a:{label:"Door"},f:[{p:[49,5,2102],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isOpen"],s:'_0?"unlock":"lock"'},p:[49,22,2119]}],action:"door"},f:[{t:2,x:{r:["data.isOpen"],s:'_0?"Open":"Closed"'},p:[49,73,2170]}]}," ",{p:[50,5,2223],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.autoEject"],s:'_0?"sign-out":"sign-in"'},p:[50,22,2240]}],action:"autoeject"},f:[{t:2,x:{r:["data.autoEject"],s:'_0?"Auto":"Manual"'},p:[50,86,2304]}]}]}]}," ",{p:{button:[{p:[55,5,2450],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[55,36,2481]}],action:"ejectbeaker"},f:["Eject"]}]},t:7,e:"ui-display",a:{title:"Beaker",button:0},f:[" ",{p:[57,3,2584],t:7,e:"ui-section",a:{label:"Contents"},f:[{t:4,f:[{t:4,f:[{p:[60,9,2694],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[60,52,2737]}," units of ",{t:2,r:"name",p:[60,87,2772]}]},{p:[60,102,2787],t:7,e:"br"}],n:52,r:"adata.beakerContents",p:[59,7,2654]},{t:4,n:51,f:[{p:[62,9,2818],t:7,e:"span",a:{"class":"bad"},f:["Beaker Empty"]}],r:"adata.beakerContents"}],n:50,r:"data.isBeakerLoaded",p:[58,5,2619]},{t:4,n:51,f:[{p:[65,7,2894],t:7,e:"span",a:{"class":"average"},f:["No Beaker"]}],r:"data.isBeakerLoaded"}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],38:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-notice",f:[{p:[2,3,15],t:7,e:"span",f:["The requested interface (",{t:2,r:"config.interface",p:[2,34,46]},") was not found. Does it exist?"]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],39:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(t){t.exports={computed:{capacityPercentState:function(){var t;return t=this.get("data.capacityPercent"),t>50?"good":t>15?"average":"bad"},inputState:function(){var t,e;return t=this.get("data.capacityPercent"),e=this.get("data.inputting"),t>=100?"good":e?"average":"bad"},outputState:function(){var t,e;return t=this.get("data.charge"),e=this.get("data.outputting"),e?"good":t>0?"average":"bad"}}}}(i),i.exports.template={v:3,t:[" ",{p:[23,1,624],t:7,e:"ui-display",a:{title:"Storage"},f:[{p:[24,3,656],t:7,e:"ui-section",a:{label:"Stored Energy"},f:[{p:[25,5,696],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.capacityPercent",p:[25,38,729]}],state:[{t:2,r:"capacityPercentState",p:[25,71,762]}]},f:[{t:2,x:{r:["adata.capacityPercent"],s:"Math.fixed(_0)"},p:[25,97,788]},"%"]}]}]}," ",{p:[28,1,869],t:7,e:"ui-display",a:{title:"Input"},f:[{p:[29,3,899],t:7,e:"ui-section",a:{label:"Charge Mode"},f:[{p:[30,5,937],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.inputAttempt"],s:'_0?"refresh":"close"'},p:[30,22,954]}],style:[{t:2,x:{r:["data.inputAttempt"],s:'_0?"selected":null'},p:[30,74,1006]}],action:"tryinput"},f:[{t:2,x:{r:["data.inputAttempt"],s:'_0?"Auto":"Off"'},p:[31,25,1074]}]},"   [",{p:[33,6,1143],t:7,e:"span",a:{"class":[{t:2,r:"inputState",p:[33,19,1156]}]},f:[{t:2,x:{r:["data.capacityPercent","data.inputting"],s:'_0>=100?"Fully Charged":_1?"Charging":"Not Charging"'},p:[33,35,1172]}]},"]"]}," ",{p:[35,3,1296],t:7,e:"ui-section",a:{label:"Target Input"},f:[{p:[36,5,1335],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.inputLevelMax",p:[36,26,1356]}],value:[{t:2,r:"data.inputLevel",p:[36,57,1387]}]},f:[{t:2,x:{r:["adata.inputLevel"],s:"Math.round(_0)"},p:[36,78,1408]},"W"]}]}," ",{p:[38,3,1470],t:7,e:"ui-section",a:{label:"Adjust Input"},f:[{p:[39,5,1509],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.inputLevel"],s:'_0==0?"disabled":null'},p:[39,44,1548]}],action:"input",params:'{"input": "min"}'}}," ",{p:[40,5,1642],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.inputLevel"],s:'_0==0?"disabled":null'},p:[40,39,1676]}],action:"input",params:'{"input": "minus"}'}}," ",{p:[41,5,1772],t:7,e:"ui-button",a:{icon:"pencil",action:"input",params:'{"input": "custom"}'},f:["Set"]}," ",{p:[42,5,1862],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.inputLevel","data.inputLevelMax"],s:'_0==_1?"disabled":null'},p:[42,38,1895]}],action:"input",params:'{"input": "plus"}'}}," ",{p:[43,5,2007],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.inputLevel","data.inputLevelMax"],s:'_0==_1?"disabled":null'},p:[43,43,2045]}],action:"input",params:'{"input": "max"}'}}]}," ",{p:[45,3,2171],t:7,e:"ui-section",a:{label:"Available"},f:[{p:[46,3,2205],t:7,e:"span",f:[{t:2,x:{r:["adata.inputAvailable"],s:"Math.round(_0)"},p:[46,9,2211]},"W"]}]}]}," ",{p:[49,1,2288],t:7,e:"ui-display",a:{title:"Output"},f:[{p:[50,3,2319],t:7,e:"ui-section",a:{label:"Output Mode"},f:[{p:[51,5,2357],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.outputAttempt"],s:'_0?"power-off":"close"'},p:[51,22,2374]}],style:[{t:2,x:{r:["data.outputAttempt"],s:'_0?"selected":null'},p:[51,77,2429]}],action:"tryoutput"},f:[{t:2,x:{r:["data.outputAttempt"],s:'_0?"On":"Off"'},p:[52,26,2499]}]},"   [",{p:[54,6,2567],t:7,e:"span",a:{"class":[{t:2,r:"outputState",p:[54,19,2580]}]},f:[{t:2,x:{r:["data.outputting","data.charge"],s:'_0?"Sending":_1>0?"Not Sending":"No Charge"'},p:[54,36,2597]}]},"]"]}," ",{p:[56,3,2704],t:7,e:"ui-section",a:{label:"Target Output"},f:[{p:[57,5,2744],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.outputLevelMax",p:[57,26,2765]}],value:[{t:2,r:"data.outputLevel",p:[57,58,2797]}]},f:[{t:2,x:{r:["adata.outputLevel"],s:"Math.round(_0)"},p:[57,80,2819]},"W"]}]}," ",{p:[59,3,2882],t:7,e:"ui-section",a:{label:"Adjust Output"},f:[{p:[60,5,2922],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.outputLevel"],s:'_0==0?"disabled":null'},p:[60,44,2961]}],action:"output",params:'{"output": "min"}'}}," ",{p:[61,5,3058],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.outputLevel"],s:'_0==0?"disabled":null'},p:[61,39,3092]}],action:"output",params:'{"output": "minus"}'}}," ",{p:[62,5,3191],t:7,e:"ui-button",a:{icon:"pencil",action:"output",params:'{"output": "custom"}'},f:["Set"]}," ",{p:[63,5,3283],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.outputLevel","data.outputLevelMax"],s:'_0==_1?"disabled":null'},p:[63,38,3316]}],action:"output",params:'{"output": "plus"}'}}," ",{p:[64,5,3432],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.outputLevel","data.outputLevelMax"],s:'_0==_1?"disabled":null'},p:[64,43,3470]}],action:"output",params:'{"output": "max"}'}}]}," ",{p:[66,3,3600],t:7,e:"ui-section",a:{label:"Outputting"},f:[{p:[67,3,3635],t:7,e:"span",f:[{t:2,x:{r:["adata.outputUsed"],s:"Math.round(_0)"},p:[67,9,3641]},"W"]}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],40:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Status"},f:[{p:[2,3,31],t:7,e:"ui-section",a:{label:"Generated Power"},f:[{t:2,x:{r:["adata.generated"],s:"Math.round(_0)"},p:[3,5,73]},"W"]}," ",{p:[5,3,126],t:7,e:"ui-section",a:{label:"Orientation"},f:[{p:[6,5,164],t:7,e:"span",f:[{t:2,x:{r:["adata.angle"],s:"Math.round(_0)"},p:[6,11,170]},"° (",{t:2,r:"data.direction",p:[6,45,204]},")"]}]}," ",{p:[8,3,251],t:7,e:"ui-section",a:{label:"Adjust Angle"},f:[{p:[9,5,290],t:7,e:"ui-button",a:{icon:"step-backward",action:"control",params:'{"cdir": -15}'},f:["15°"]}," ",{p:[10,5,387],t:7,e:"ui-button",a:{icon:"backward",action:"control",params:'{"cdir": -5}'},f:["5°"]}," ",{p:[11,5,477],t:7,e:"ui-button",a:{icon:"forward",action:"control",params:'{"cdir": 5}'},f:["5°"]}," ",{p:[12,5,565],t:7,e:"ui-button",a:{icon:"step-forward",action:"control",params:'{"cdir": 15}'},f:["15°"]}]}]}," ",{p:[15,1,687],t:7,e:"ui-display",a:{title:"Tracking"},f:[{p:[16,3,720],t:7,e:"ui-section",a:{label:"Tracker Mode"},f:[{p:[17,5,759],t:7,e:"ui-button",a:{icon:"close",state:[{t:2,x:{r:["data.tracking_state"],s:'_0==0?"selected":null'},p:[17,36,790]}],action:"tracking",params:'{"mode": 0}'},f:["Off"]}," ",{p:[19,5,907],t:7,e:"ui-button",a:{icon:"clock-o",state:[{t:2,x:{r:["data.tracking_state"],s:'_0==1?"selected":null'},p:[19,38,940]}],action:"tracking",params:'{"mode": 1}'},f:["Timed"]}," ",{p:[21,5,1059],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.connected_tracker","data.tracking_state"],s:'_0?_1==2?"selected":null:"disabled"'},p:[21,38,1092]}],action:"tracking",params:'{"mode": 2}'},f:["Auto"]}]}," ",{p:[24,3,1262],t:7,e:"ui-section",a:{label:"Tracking Rate"},f:[{p:[25,3,1300],t:7,e:"span",f:[{t:2,x:{r:["adata.tracking_rate"],s:"Math.round(_0)"},p:[25,9,1306]},"°/h (",{t:2,r:"data.rotating_way",p:[25,53,1350]},")"]}]}," ",{p:[27,3,1399],t:7,e:"ui-section",a:{label:"Adjust Rate"},f:[{p:[28,5,1437],t:7,e:"ui-button",a:{icon:"fast-backward",action:"control",params:'{"tdir": -180}'},f:["180°"]}," ",{p:[29,5,1536],t:7,e:"ui-button",a:{icon:"step-backward",action:"control",params:'{"tdir": -30}'},f:["30°"]}," ",{p:[30,5,1633],t:7,e:"ui-button",a:{icon:"backward",action:"control",params:'{"tdir": -5}'},f:["5°"]}," ",{p:[31,5,1723],t:7,e:"ui-button",a:{icon:"forward",action:"control",params:'{"tdir": 5}'},f:["5°"]}," ",{p:[32,5,1811],t:7,e:"ui-button",a:{icon:"step-forward",action:"control",params:'{"tdir": 30}'},f:["30°"]}," ",{p:[33,5,1906],t:7,e:"ui-button",a:{icon:"fast-forward",action:"control",params:'{"tdir": 180}'},f:["180°"]}]}]}," ",{p:{button:[{p:[38,5,2094],t:7,e:"ui-button",a:{icon:"refresh",action:"refresh"},f:["Refresh"]}]},t:7,e:"ui-display",a:{title:"Devices",button:0},f:[" ",{p:[40,2,2175],t:7,e:"ui-section",a:{label:"Solar Tracker"},f:[{p:[41,5,2215],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.connected_tracker"],s:'_0?"good":"bad"'},p:[41,18,2228]}]},f:[{t:2,x:{r:["data.connected_tracker"],s:'_0?"":"Not "'},p:[41,63,2273]},"Found"]}]}," ",{p:[43,2,2344],t:7,e:"ui-section",a:{label:"Solar Panels"},f:[{p:[44,3,2381],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.connected_panels"],s:'_0?"good":"bad"'},p:[44,16,2394]}]},f:[{t:2,x:{r:["adata.connected_panels"],s:"Math.round(_0)"},p:[44,60,2438]}," Panels Connected"]}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],41:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(e){e.exports={data:{text:t("../text")}}}(i),i.exports.template={v:3,t:[" ",{p:{button:[{t:4,f:[{p:[10,7,194],t:7,e:"ui-button",a:{icon:"eject",action:"eject"},f:["Eject"]}],n:50,r:"data.open",p:[9,5,169]}]},t:7,e:"ui-display",a:{title:"Power",button:0},f:[" ",{p:[13,3,283],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[14,5,315],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[14,22,332]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[15,14,383]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[16,22,438]}]}]}," ",{p:[18,3,497],t:7,e:"ui-section",a:{label:"Cell"},f:[{t:4,f:[{p:[20,7,561],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.powerLevel",p:[20,40,594]}]},f:[{t:2,x:{r:["adata.powerLevel"],s:"Math.fixed(_0)"},p:[20,61,615]},"%"]}],n:50,r:"data.hasPowercell",p:[19,5,528]},{t:4,n:51,f:[{p:[22,4,674],t:7,e:"span",a:{"class":"bad"},f:["No Cell"]}],r:"data.hasPowercell"}]}]}," ",{p:[26,1,751],t:7,e:"ui-display",a:{title:"Thermostat"},f:[{p:[27,3,786],t:7,e:"ui-section",a:{label:"Current Temperature"},f:[{p:[28,3,830],t:7,e:"span",f:[{t:2,x:{r:["adata.currentTemp"],s:"Math.round(_0)"},p:[28,9,836]},"°C"]}]}," ",{p:[30,2,901],t:7,e:"ui-section",a:{label:"Target Temperature"},f:[{p:[31,3,944],t:7,e:"span",f:[{t:2,x:{r:["adata.targetTemp"],s:"Math.round(_0)"},p:[31,9,950]},"°C"]}]}," ",{t:4,f:[{p:[34,2,1035],t:7,e:"ui-section",a:{label:"Adjust Target"},f:[{p:[35,7,1077],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.targetTemp","data.minTemp"],s:'_0>_1?null:"disabled"'},p:[35,46,1116]}],action:"target",params:'{"target": -20}'}}," ",{p:[36,7,1222],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.targetTemp","data.minTemp"],s:'_0>_1?null:"disabled"'},p:[36,41,1256]}],action:"target",params:'{"target": -5}'}}," ",{p:[37,7,1361],t:7,e:"ui-button",a:{icon:"pencil",action:"target",params:'{"target": "custom"}'},f:["Set"]}," ",{p:[38,7,1455],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.targetTemp","data.maxTemp"],s:'_0<_1?null:"disabled"'},p:[38,40,1488]}],action:"target",params:'{"target": 5}'}}," ",{p:[39,7,1592],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.targetTemp","data.maxTemp"],s:'_0<_1?null:"disabled"'},p:[39,45,1630]}],action:"target",params:'{"target": 20}'}}]}],n:50,r:"data.open",p:[33,3,1015]}," ",{p:[42,3,1759],t:7,e:"ui-section",a:{label:"Mode"},f:[{t:4,f:[{p:[44,7,1813],t:7,e:"ui-button",a:{icon:"long-arrow-up",state:[{t:2,x:{r:["data.mode"],s:'_0=="heat"?"selected":null'},p:[44,46,1852]}],action:"mode",params:'{"mode": "heat"}'},f:["Heat"]}," ",{p:[45,7,1961],t:7,e:"ui-button",a:{icon:"long-arrow-down",state:[{t:2,x:{r:["data.mode"],s:'_0=="cool"?"selected":null'},p:[45,48,2002]}],action:"mode",params:'{"mode": "cool"}'},f:["Cool"]}," ",{p:[46,7,2111],t:7,e:"ui-button",a:{icon:"arrows-v",state:[{t:2,x:{r:["data.mode"],s:'_0=="auto"?"selected":null'},p:[46,41,2145]}],action:"mode",params:'{"mode": "auto"}'},f:["Auto"]}],n:50,r:"data.open",p:[43,3,1788]},{t:4,n:51,f:[{p:[48,4,2263],t:7,e:"span",f:[{t:2,x:{r:["text","data.mode"],s:"_0.titleCase(_1)"},p:[48,10,2269]}]}],r:"data.open"}]}]}]},e.exports=r.extend(i.exports)},{"../text":45,"ractive/ractive.runtime":7}],42:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(t){t.exports={data:{tankPressureState:function(){var t;return t=this.get("data.tankPressureState"),t>=200?"good":t>=100?"average":"bad"}}}}(i),i.exports.template={v:3,t:[" ",{p:[11,1,255],t:7,e:"ui-notice",f:[{p:[12,3,270],t:7,e:"span",f:["The regulator ",{t:2,x:{r:["data.hasHoldingTank"],s:'_0?"is":"is not"'},p:[12,23,290]}," connected to a mask."]}]}," ",{p:[14,1,375],t:7,e:"ui-display",f:[{p:[15,3,391],t:7,e:"ui-section",a:{label:"Tank Pressure"},f:[{p:[16,7,433],t:7,e:"ui-bar",a:{min:"0",max:"1013",value:[{t:2,r:"data.tankPressure",p:[16,41,467]}],state:[{t:2,r:"tankPressureState",p:[17,16,506]}]},f:[{t:2,x:{r:["adata.tankPressure"],s:"Math.round(_0)"},p:[17,39,529]}," kPa"]}]}," ",{p:[19,3,597],t:7,e:"ui-section",a:{label:"Release Pressure"},f:[{p:[20,5,640],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.minReleasePressure",p:[20,18,653]}],max:[{t:2,r:"data.maxReleasePressure",p:[20,52,687]}],value:[{t:2,r:"data.releasePressure",p:[21,14,730]}]},f:[{t:2,x:{r:["adata.releasePressure"],s:"Math.round(_0)"},p:[21,40,756]}," kPa"]}]}," ",{p:[23,3,827],t:7,e:"ui-section",a:{label:"Pressure Regulator"},f:[{p:[24,5,872],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.releasePressure","data.defaultReleasePressure"],s:'_0!=_1?null:"disabled"'},p:[24,38,905]}],action:"pressure",params:'{"pressure": "reset"}'},f:["Reset"]}," ",{p:[26,5,1061],t:7,e:"ui-button",a:{icon:"minus",state:[{t:2,x:{r:["data.releasePressure","data.minReleasePressure"],s:'_0>_1?null:"disabled"'},p:[26,36,1092]}],action:"pressure",params:'{"pressure": "min"}'},f:["Min"]}," ",{p:[28,5,1239],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "custom"}'},f:["Set"]}," ",{p:[29,5,1335],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.releasePressure","data.maxReleasePressure"],s:'_0<_1?null:"disabled"'},p:[29,35,1365]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}]}," ",{p:[32,3,1527],t:7,e:"ui-section",a:{label:"Valve"},f:[{p:[33,5,1559],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.valveOpen"],s:'_0?"unlock":"lock"'},p:[33,22,1576]}],state:[{t:2,x:{r:["data.maskConnected"],s:'_0?null:"disabled"'},p:[33,69,1623]}],action:"valve"},f:[{t:2,x:{r:["data.valveOpen"],s:'_0?"Open":"Closed"'},p:[34,22,1689]}]}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],43:[function(t,e,n){var r,i,a,o,s;t("ie8/build/ie8.max"),t("dom4/build/dom4.max"),t("es5-shim"),t("html5shiv"),t("./math"),r=t("ractive/ractive.runtime"),r.DEBUG=/minified/.test(function(t){}),i=t("webfontloader"),i.load({custom:{families:["FontAwesome"],urls:["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.5.0/css/font-awesome.min.css"],testStrings:{FontAwesome:""}}}),s=t("./tgui.ract"),window.initialize=function(t){return window.tgui?void 0:window.tgui=new s({el:"#container",data:function(){var e;return e=JSON.parse(t)}})},o=document.getElementById("data"),"{}"!==o.textContent?window.initialize(o.textContent):(a=t("./byond"),a.act(o.getAttribute("data-ref"),"tgui:initialize"),o.remove())},{"./byond":9,"./math":44,"./tgui.ract":46,"dom4/build/dom4.max":1,"es5-shim":2,html5shiv:3,"ie8/build/ie8.max":4,"ractive/ractive.runtime":7,webfontloader:8}],44:[function(t,e,n){Math.clamp=function(t,e,n){return Math.max(e,Math.min(t,n))},Math.fixed=function(t,e){return null==e&&(e=1),+(Math.round(t+"e"+e)+"e-"+e)}},{}],45:[function(t,e,n){e.exports={upperCaseFirst:function(t){return t[0].toUpperCase()+t.slice(1).toLowerCase()},titleCase:function(t){return t.replace(/\w\S*/g,this.upperCaseFirst)}}},{}],46:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(e){var n,r;n=t("./byond"),r=t("./dragresize"),e.exports={components:{"ui-bar":t("./components/bar"),"ui-button":t("./components/button"),"ui-display":t("./components/display"),"ui-notice":t("./components/notice"),"ui-section":t("./components/section"),"ui-subdisplay":t("./components/subdisplay")},events:{enter:t("ractive-events-keys").enter,space:t("ractive-events-keys").space},transitions:{fade:t("ractive-transitions-fade")},onconfig:function(){var e,n;return n=this.get("config.interface"),e={air_alarm:t("./interfaces/air_alarm.ract"),airlock_electronics:t("./interfaces/airlock_electronics.ract"),apc:t("./interfaces/apc.ract"),atmos_filter:t("./interfaces/atmos_filter.ract"),atmos_mixer:t("./interfaces/atmos_mixer.ract"),atmos_pump:t("./interfaces/atmos_pump.ract"),canister:t("./interfaces/canister.ract"),chem_dispenser:t("./interfaces/chem_dispenser.ract"),chem_heater:t("./interfaces/chem_heater.ract"),cryo:t("./interfaces/cryo.ract"),error:t("./interfaces/error.ract"),smes:t("./interfaces/smes.ract"),solar_control:t("./interfaces/solar_control.ract"),space_heater:t("./interfaces/space_heater.ract"),tanks:t("./interfaces/tanks.ract")},null!=e[n]?this.components["interface"]=e[n]:null==this.components["interface"]?this.components["interface"]=t("./interfaces/error"):void 0},oninit:function(){return this.on("titlebar.drag",function(){return this.toggle("drag"),!1}),this.on("resize.resize",function(){return this.toggle("resize"),!1}),document.addEventListener("mousemove",function(t){return function(e){return t.get("drag")?r.drag(t,e):t.get("resize")?r.resize(t,e):void 0}}(this)),document.addEventListener("mouseup",function(t){ -return function(e){var n,r;return(n=t.get("drag"))&&t.set("drag"),(r=t.get("resize"))&&t.set("resize"),n||r?(t.set("x"),t.set("y")):void 0}}(this))},onrender:function(){return this.observe("config.style",function(t,e,n){return null!=e&&(document.body.classList.remove(e),this.el.classList.remove(e)),null!=t?(this.el.classList.add(t),document.body.classList.add(t)):void 0})},oncomplete:function(){return n.winset("mapwindow.map","focus",!0)}}}(i),i.exports.template={v:3,t:[" "," "," "," ",{p:[51,1,2057],t:7,e:"titlebar",f:[{t:3,r:"config.title",p:[51,11,2067]}]}," ",{p:[52,1,2098],t:7,e:"main",f:[{p:[53,3,2108],t:7,e:"warnings"}," ",{p:[54,3,2123],t:7,e:"interface"}]}," ",{p:[56,1,2146],t:7,e:"resize"}]},i.exports.components=i.exports.components||{};var a={warnings:t("./components/warnings.ract"),titlebar:t("./components/titlebar.ract"),resize:t("./components/resize.ract")};for(var o in a)a.hasOwnProperty(o)&&(i.exports.components[o]=a[o]);e.exports=r.extend(i.exports)},{"./byond":9,"./components/bar":10,"./components/button":11,"./components/display":12,"./components/notice":13,"./components/resize.ract":14,"./components/section":15,"./components/subdisplay":16,"./components/titlebar.ract":17,"./components/warnings.ract":18,"./dragresize":20,"./interfaces/air_alarm.ract":21,"./interfaces/airlock_electronics.ract":29,"./interfaces/apc.ract":30,"./interfaces/atmos_filter.ract":31,"./interfaces/atmos_mixer.ract":32,"./interfaces/atmos_pump.ract":33,"./interfaces/canister.ract":34,"./interfaces/chem_dispenser.ract":35,"./interfaces/chem_heater.ract":36,"./interfaces/cryo.ract":37,"./interfaces/error":38,"./interfaces/error.ract":38,"./interfaces/smes.ract":39,"./interfaces/solar_control.ract":40,"./interfaces/space_heater.ract":41,"./interfaces/tanks.ract":42,"ractive-events-keys":5,"ractive-transitions-fade":6,"ractive/ractive.runtime":7}]},{},[43]); \ No newline at end of file +return this.fragment.getValue()},rebind:function(t,e){this.isNamed||Ul.call(this,t,e),this.fragment&&this.fragment.rebind(t,e)},render:function(){return this.docFrag=document.createDocumentFragment(),this.update(),this.rendered=!0,this.docFrag},resolve:Vl.resolve,setValue:function(t){var e;(void 0===t||t!==this.value)&&(void 0!==t&&(e=od(this.root,""+t,this.parentFragment)),!e&&this.name&&(e=od(this.root,this.name,this.parentFragment))&&(gl.call(this),this.isNamed=!0),e||v(ud,this.name,{ractive:this.root}),this.value=t,this.setTemplate(e||[]),this.bubble(),this.rendered&&ms.addView(this))},setTemplate:function(t){this.fragment&&(this.fragment.unbind(),this.rendered&&(this.fragmentToUnrender=this.fragment)),this.fragment=new ev({template:t,root:this.root,owner:this,pElement:this.parentFragment.pElement}),this.fragmentToRender=this.fragment},toString:function(t){var e,n,r,i;return e=this.fragment.toString(t),n=this.parentFragment.items[this.index-1],n&&n.type===wc?(r=n.text.split("\n").pop(),(i=/^\s+$/.exec(r))?sd(e,i[0]):e):e},unbind:function(){this.isNamed||gl.call(this),this.fragment&&this.fragment.unbind()},unrender:function(t){this.rendered&&(this.fragment&&this.fragment.unrender(t),this.rendered=!1)},update:function(){var t,e;this.fragmentToUnrender&&(this.fragmentToUnrender.unrender(!0),this.fragmentToUnrender=null),this.fragmentToRender&&(this.docFrag.appendChild(this.fragmentToRender.render()),this.fragmentToRender=null),this.rendered&&(t=this.parentFragment.getNode(),e=this.parentFragment.findNextNode(this),t.insertBefore(this.docFrag,e))}};var ld,pd,hd,fd=cd,dd=ui,md=ci,vd=new ns("detach"),gd=li,bd=pi,yd=hi,wd=fi,xd=di,_d=mi,kd=function(t,e,n,r){var i=t.root,a=t.keypath;r?i.viewmodel.smartUpdate(a,e,r):i.viewmodel.mark(a)},Ed=[],Td=["pop","push","reverse","shift","sort","splice","unshift"];Td.forEach(function(t){var e=function(){for(var e=arguments.length,n=Array(e),r=0;e>r;r++)n[r]=arguments[r];var i,a,o,s;for(i=mu(this,t,n),a=Array.prototype[t].apply(this,arguments),ms.start(),this._ractive.setting=!0,s=this._ractive.wrappers.length;s--;)o=this._ractive.wrappers[s],ms.addRactive(o.root),kd(o,this,t,i);return ms.end(),this._ractive.setting=!1,a};xo(Ed,t,{value:e})}),ld={},ld.__proto__?(pd=function(t){t.__proto__=Ed},hd=function(t){t.__proto__=Array.prototype}):(pd=function(t){var e,n;for(e=Td.length;e--;)n=Td[e],xo(t,n,{value:Ed[n],configurable:!0})},hd=function(t){var e;for(e=Td.length;e--;)delete t[Td[e]]}),pd.unpatch=hd;var Cd,Od,Sd,Ad=pd;Cd={filter:function(t){return a(t)&&(!t._ractive||!t._ractive.setting)},wrap:function(t,e,n){return new Od(t,e,n)}},Od=function(t,e,n){this.root=t,this.value=e,this.keypath=E(n),e._ractive||(xo(e,"_ractive",{value:{wrappers:[],instances:[],setting:!1},configurable:!0}),Ad(e)),e._ractive.instances[t._guid]||(e._ractive.instances[t._guid]=0,e._ractive.instances.push(t)),e._ractive.instances[t._guid]+=1,e._ractive.wrappers.push(this)},Od.prototype={get:function(){return this.value},teardown:function(){var t,e,n,r,i;if(t=this.value,e=t._ractive,n=e.wrappers,r=e.instances,e.setting)return!1;if(i=n.indexOf(this),-1===i)throw Error(Sd);if(n.splice(i,1),n.length){if(r[this.root._guid]-=1,!r[this.root._guid]){if(i=r.indexOf(this.root),-1===i)throw Error(Sd);r.splice(i,1)}}else delete t._ractive,Ad.unpatch(this.value)}},Sd="Something went wrong in a rather interesting way";var Pd,jd,Fd=Cd,Nd=/^\s*[0-9]+\s*$/,Md=function(t){return Nd.test(t)?[]:{}};try{Object.defineProperty({},"test",{value:0}),Pd={filter:function(t,e,n){var r,i;return e?(e=E(e),(r=n.viewmodel.wrapped[e.parent.str])&&!r.magic?!1:(i=n.viewmodel.get(e.parent),a(i)&&/^[0-9]+$/.test(e.lastKey)?!1:i&&("object"==typeof i||"function"==typeof i))):!1},wrap:function(t,e,n){return new jd(t,e,n)}},jd=function(t,e,n){var r,i,a;return n=E(n),this.magic=!0,this.ractive=t,this.keypath=n,this.value=e,this.prop=n.lastKey,r=n.parent,this.obj=r.isRoot?t.viewmodel.data:t.viewmodel.get(r),i=this.originalDescriptor=Object.getOwnPropertyDescriptor(this.obj,this.prop),i&&i.set&&(a=i.set._ractiveWrappers)?void(-1===a.indexOf(this)&&a.push(this)):void vi(this,e,i)},jd.prototype={get:function(){return this.value},reset:function(t){return this.updating?void 0:(this.updating=!0,this.obj[this.prop]=t,ms.addRactive(this.ractive),this.ractive.viewmodel.mark(this.keypath,{keepExistingWrapper:!0}),this.updating=!1,!0)},set:function(t,e){this.updating||(this.obj[this.prop]||(this.updating=!0,this.obj[this.prop]=Md(t),this.updating=!1),this.obj[this.prop][t]=e)},teardown:function(){var t,e,n,r,i;return this.updating?!1:(t=Object.getOwnPropertyDescriptor(this.obj,this.prop),e=t&&t.set,void(e&&(r=e._ractiveWrappers,i=r.indexOf(this),-1!==i&&r.splice(i,1),r.length||(n=this.obj[this.prop],Object.defineProperty(this.obj,this.prop,this.originalDescriptor||{writable:!0,enumerable:!0,configurable:!0}),this.obj[this.prop]=n))))}}}catch(Eo){Pd=!1}var Rd,Ld,Id=Pd;Id&&(Rd={filter:function(t,e,n){return Id.filter(t,e,n)&&Fd.filter(t)},wrap:function(t,e,n){return new Ld(t,e,n)}},Ld=function(t,e,n){this.value=e,this.magic=!0,this.magicWrapper=Id.wrap(t,e,n),this.arrayWrapper=Fd.wrap(t,e,n)},Ld.prototype={get:function(){return this.value},teardown:function(){this.arrayWrapper.teardown(),this.magicWrapper.teardown()},reset:function(t){return this.magicWrapper.reset(t)}});var Dd=Rd,Ud=gi,Vd={},Bd=wi,qd=xi,zd=Ei,Wd=Ai,Hd=Pi,$d=function(t,e){this.computation=t,this.viewmodel=t.viewmodel,this.ref=e,this.root=this.viewmodel.ractive,this.parentFragment=this.root.component&&this.root.component.parentFragment};$d.prototype={resolve:function(t){this.computation.softDeps.push(t),this.computation.unresolvedDeps[t.str]=null,this.viewmodel.register(t,this.computation,"computed")}};var Gd=$d,Kd=function(t,e){this.key=t,this.getter=e.getter,this.setter=e.setter,this.hardDeps=e.deps||[],this.softDeps=[],this.unresolvedDeps={},this.depValues={},this._dirty=this._firstRun=!0};Kd.prototype={constructor:Kd,init:function(t){var e,n=this;this.viewmodel=t,this.bypass=!0,e=t.get(this.key),t.clearCache(this.key.str),this.bypass=!1,this.setter&&void 0!==e&&this.set(e),this.hardDeps&&this.hardDeps.forEach(function(e){return t.register(e,n,"computed")})},invalidate:function(){this._dirty=!0},get:function(){var t,e,n=this,r=!1;if(this.getting){var i="The "+this.key.str+" computation indirectly called itself. This probably indicates a bug in the computation. It is commonly caused by `array.sort(...)` - if that's the case, clone the array first with `array.slice().sort(...)`";return d(i),this.value}if(this.getting=!0,this._dirty){if(this._firstRun||!this.hardDeps.length&&!this.softDeps.length?r=!0:[this.hardDeps,this.softDeps].forEach(function(t){var e,i,a;if(!r)for(a=t.length;a--;)if(e=t[a],i=n.viewmodel.get(e),!s(i,n.depValues[e.str]))return n.depValues[e.str]=i,void(r=!0)}),r){this.viewmodel.capture();try{this.value=this.getter()}catch(a){m('Failed to compute "%s"',this.key.str),h(a.stack||a),this.value=void 0}t=this.viewmodel.release(),e=this.updateDependencies(t),e&&[this.hardDeps,this.softDeps].forEach(function(t){t.forEach(function(t){n.depValues[t.str]=n.viewmodel.get(t)})})}this._dirty=!1}return this.getting=this._firstRun=!1,this.value},set:function(t){if(this.setting)return void(this.value=t);if(!this.setter)throw Error("Computed properties without setters are read-only. (This may change in a future version of Ractive!)");this.setter(t)},updateDependencies:function(t){var e,n,r,i,a;for(n=this.softDeps,e=n.length;e--;)r=n[e],-1===t.indexOf(r)&&(i=!0,this.viewmodel.unregister(r,this,"computed"));for(e=t.length;e--;)r=t[e],-1!==n.indexOf(r)||this.hardDeps&&-1!==this.hardDeps.indexOf(r)||(i=!0,ji(this.viewmodel,r)&&!this.unresolvedDeps[r.str]?(a=new Gd(this,r.str),t.splice(e,1),this.unresolvedDeps[r.str]=a,ms.addUnresolved(a)):this.viewmodel.register(r,this,"computed"));return i&&(this.softDeps=t.slice()),i}};var Qd=Kd,Yd=Fi,Zd={FAILED_LOOKUP:!0},Jd=Ni,Xd={},tm=Ri,em=Li,nm=function(t,e){this.localKey=t,this.keypath=e.keypath,this.origin=e.origin,this.deps=[],this.unresolved=[],this.resolved=!1};nm.prototype={forceResolution:function(){this.keypath=this.localKey,this.setup()},get:function(t,e){return this.resolved?this.origin.get(this.map(t),e):void 0},getValue:function(){return this.keypath?this.origin.get(this.keypath):void 0},initViewmodel:function(t){this.local=t,this.setup()},map:function(t){return void 0===typeof this.keypath?this.localKey:t.replace(this.localKey,this.keypath)},register:function(t,e,n){this.deps.push({keypath:t,dep:e,group:n}),this.resolved&&this.origin.register(this.map(t),e,n)},resolve:function(t){void 0!==this.keypath&&this.unbind(!0),this.keypath=t,this.setup()},set:function(t,e){this.resolved||this.forceResolution(),this.origin.set(this.map(t),e)},setup:function(){var t=this;void 0!==this.keypath&&(this.resolved=!0,this.deps.length&&(this.deps.forEach(function(e){var n=t.map(e.keypath);if(t.origin.register(n,e.dep,e.group),e.dep.setValue)e.dep.setValue(t.origin.get(n));else{if(!e.dep.invalidate)throw Error("An unexpected error occurred. Please raise an issue at https://github.com/ractivejs/ractive/issues - thanks!");e.dep.invalidate()}}),this.origin.mark(this.keypath)))},setValue:function(t){if(!this.keypath)throw Error("Mapping does not have keypath, cannot set value. Please raise an issue at https://github.com/ractivejs/ractive/issues - thanks!");this.origin.set(this.keypath,t)},unbind:function(t){var e=this;t||delete this.local.mappings[this.localKey],this.resolved&&(this.deps.forEach(function(t){e.origin.unregister(e.map(t.keypath),t.dep,t.group)}),this.tracker&&this.origin.unregister(this.keypath,this.tracker))},unregister:function(t,e,n){var r,i;if(this.resolved){for(r=this.deps,i=r.length;i--;)if(r[i].dep===e){r.splice(i,1);break}this.origin.unregister(this.map(t),e,n)}}};var rm=Ii,im=function(t,e){var n,r,i,a;return n={},r=0,i=t.map(function(t,i){var o,s,u;s=r,u=e.length;do{if(o=e.indexOf(t,s),-1===o)return a=!0,-1;s=o+1}while(n[o]&&u>s);return o===r&&(r+=1),o!==i&&(a=!0),n[o]=!0,o})},am=Di,om={},sm=Bi,um=zi,cm=Wi,lm=Hi,pm=Gi,hm={implicit:!0},fm={noCascade:!0},dm=Qi,mm=Yi,vm=function(t){var e,n,r=t.adapt,i=t.data,a=t.ractive,o=t.computed,s=t.mappings;this.ractive=a,this.adaptors=r,this.onchange=t.onchange,this.cache={},this.cacheMap=wo(null),this.deps={computed:wo(null),"default":wo(null)},this.depsMap={computed:wo(null),"default":wo(null)},this.patternObservers=[],this.specials=wo(null),this.wrapped=wo(null),this.computations=wo(null),this.captureGroups=[],this.unresolvedImplicitDependencies=[],this.changes=[],this.implicitChanges={},this.noCascade={},this.data=i,this.mappings=wo(null);for(e in s)this.map(E(e),s[e]);if(i)for(e in i)(n=this.mappings[e])&&void 0===n.getValue()&&n.setValue(i[e]);for(e in o)s&&e in s&&p("Cannot map to a computed property ('%s')",e),this.compute(E(e),o[e]);this.ready=!0};vm.prototype={adapt:Ud,applyChanges:zd,capture:Wd,clearCache:Hd,compute:Yd,get:Jd,init:tm,map:em,mark:rm,merge:am,register:sm,release:um,reset:cm,set:lm,smartUpdate:pm,teardown:dm,unregister:mm};var gm=vm;Ji.prototype={constructor:Ji,begin:function(t){this.inProcess[t._guid]=!0},end:function(t){var e=t.parent;e&&this.inProcess[e._guid]?Xi(this.queue,e).push(t):ta(this,t),delete this.inProcess[t._guid]}};var bm=Ji,ym=ea,wm=/\$\{([^\}]+)\}/g,xm=new ns("construct"),_m=new ns("config"),km=new bm("init"),Em=0,Tm=["adaptors","components","decorators","easing","events","interpolators","partials","transitions"],Cm=aa,Om=la;la.prototype={bubble:function(){this.dirty||(this.dirty=!0,ms.addView(this))},update:function(){this.callback(this.fragment.getValue()),this.dirty=!1},rebind:function(t,e){this.fragment.rebind(t,e)},unbind:function(){this.fragment.unbind()}};var Sm=function(t,e,n,i,o){var s,u,c,l,p,h,f={},d={},v={},g=[];for(u=t.parentFragment,c=t.root,o=o||{},r(f,o),o.content=i||[],f[""]=o.content,e.defaults.el&&m("The <%s/> component has a default `el` property; it has been disregarded",t.name),l=u;l;){if(l.owner.type===Ac){p=l.owner.container;break}l=l.parent}return n&&Object.keys(n).forEach(function(e){var r,i,o=n[e];if("string"==typeof o)r=cl(o),d[e]=r?r.value:o;else if(0===o)d[e]=!0;else{if(!a(o))throw Error("erm wut");ha(o)?(v[e]={origin:t.root.viewmodel,keypath:void 0},i=pa(t,o[0],function(t){t.isSpecial?h?s.set(e,t.value):(d[e]=t.value,delete v[e]):h?s.viewmodel.mappings[e].resolve(t):v[e].keypath=t})):i=new Om(t,o,function(t){h?s.set(e,t):d[e]=t}),g.push(i)}}),s=wo(e.prototype),Cm(s,{el:null,append:!0,data:d,partials:o,magic:c.magic||e.defaults.magic,modifyArrays:c.modifyArrays,adapt:c.adapt},{parent:c,component:t,container:p,mappings:v,inlinePartials:f,cssIds:u.cssIds}),h=!0,t.resolvers=g,s},Am=fa,Pm=function(t){var e,n;for(e=t.root;e;)(n=e._liveComponentQueries["_"+t.name])&&n.push(t.instance),e=e.parent},jm=ma,Fm=va,Nm=ga,Mm=ba,Rm=ya,Lm=new ns("teardown"),Im=xa,Dm=function(t,e){this.init(t,e)};Dm.prototype={detach:md,find:gd,findAll:bd,findAllComponents:yd,findComponent:wd,findNextNode:xd,firstNode:_d,init:jm,rebind:Fm,render:Nm,toString:Mm,unbind:Rm,unrender:Im};var Um=Dm,Vm=function(t){this.type=Cc,this.value=t.template.c};Vm.prototype={detach:dl,firstNode:function(){return this.node},render:function(){return this.node||(this.node=document.createComment(this.value)),this.node},toString:function(){return""},unrender:function(t){t&&this.node.parentNode.removeChild(this.node)}};var Bm=Vm,qm=function(t){var e,n;this.type=Ac,this.container=e=t.parentFragment.root,this.component=n=e.component,this.container=e,this.containerFragment=t.parentFragment,this.parentFragment=n.parentFragment;var r=this.name=t.template.n||"",i=e._inlinePartials[r];i||(m('Could not find template for partial "'+r+'"',{ractive:t.root}),i=[]),this.fragment=new ev({owner:this,root:e.parent,template:i,pElement:this.containerFragment.pElement}),a(n.yielders[r])?n.yielders[r].push(this):n.yielders[r]=[this],ms.scheduleTask(function(){if(n.yielders[r].length>1)throw Error("A component template can only have one {{yield"+(r?" "+r:"")+"}} declaration at a time")})};qm.prototype={detach:function(){return this.fragment.detach()},find:function(t){return this.fragment.find(t)},findAll:function(t,e){return this.fragment.findAll(t,e)},findComponent:function(t){return this.fragment.findComponent(t)},findAllComponents:function(t,e){return this.fragment.findAllComponents(t,e)},findNextNode:function(){return this.containerFragment.findNextNode(this)},firstNode:function(){return this.fragment.firstNode()},getValue:function(t){return this.fragment.getValue(t)},render:function(){return this.fragment.render()},unbind:function(){this.fragment.unbind()},unrender:function(t){this.fragment.unrender(t),L(this.component.yielders[this.name],this)},rebind:function(t,e){this.fragment.rebind(t,e)},toString:function(){return""+this.fragment}};var zm=qm,Wm=function(t){this.declaration=t.template.a};Wm.prototype={init:jo,render:jo,unrender:jo,teardown:jo,toString:function(){return""}};var Hm=Wm,$m=_a,Gm=Ea,Km=Ta,Qm=Ca,Ym=Aa,Zm=ja,Jm=function(t){this.init(t)};Jm.prototype={bubble:sc,detach:uc,find:cc,findAll:lc,findAllComponents:pc,findComponent:hc,findNextNode:fc,firstNode:dc,getArgsList:pl,getNode:hl,getValue:fl,init:$m,rebind:Gm,registerIndexRef:function(t){var e=this.registeredIndexRefs;-1===e.indexOf(t)&&e.push(t)},render:Km,toString:Qm,unbind:Ym,unregisterIndexRef:function(t){var e=this.registeredIndexRefs;e.splice(e.indexOf(t),1)},unrender:Zm};var Xm,tv,ev=Jm,nv=Fa,rv=["template","partials","components","decorators","events"],iv=new ns("reset"),av=function(t,e){function n(e,r,i){i&&i.partials[t]||e.forEach(function(e){e.type===Tc&&e.getPartialName()===t&&r.push(e),e.fragment&&n(e.fragment.items,r,i),a(e.fragments)?n(e.fragments,r,i):a(e.items)?n(e.items,r,i):e.type===Sc&&e.instance&&n(e.instance.fragment.items,r,e.instance),e.type===Ec&&(a(e.attributes)&&n(e.attributes,r,i),a(e.conditionalAttributes)&&n(e.conditionalAttributes,r,i))})}var r,i=[];return n(this.fragment.items,i),this.partials[t]=e,r=ms.start(this,!0),i.forEach(function(e){e.value=void 0,e.setValue(t)}),ms.end(),r},ov=Na,sv=gu("reverse"),uv=Ma,cv=gu("shift"),lv=gu("sort"),pv=gu("splice"),hv=La,fv=Ia,dv=new ns("teardown"),mv=Ua,vv=Va,gv=Ba,bv=new ns("unrender"),yv=gu("unshift"),wv=qa,xv=new ns("update"),_v=za,kv={add:Yo,animate:xs,detach:ks,find:Ts,findAll:Ms,findAllComponents:Rs,findComponent:Ls,findContainer:Is,findParent:Ds,fire:qs,get:zs,insert:Hs,merge:Gs,observe:uu,observeOnce:cu,off:hu,on:fu,once:du,pop:bu,push:yu,render:Ou,reset:nv,resetPartial:av,resetTemplate:ov,reverse:sv,set:uv,shift:cv,sort:lv,splice:pv,subtract:hv,teardown:fv,toggle:mv,toHTML:vv,toHtml:vv,unrender:gv,unshift:yv,update:wv,updateModel:_v},Ev=function(t,e,n){return n||Ha(t,e)?function(){var n,r="_super"in this,i=this._super;return this._super=e,n=t.apply(this,arguments),r&&(this._super=i),n}:t},Tv=$a,Cv=Ya,Ov=function(t){var e,n,r={};return t&&(e=t._ractive)?(r.ractive=e.root,r.keypath=e.keypath.str,r.index={},(n=Cl(e.proxy.parentFragment))&&(r.index=Cl.resolve(n)),r):r};Xm=function(t){return this instanceof Xm?void Cm(this,t):new Xm(t)},tv={DEBUG:{writable:!0,value:!0},DEBUG_PROMISES:{writable:!0,value:!0},extend:{value:Cv},getNodeInfo:{value:Ov},parse:{value:zu},Promise:{value:os},svg:{value:ro},magic:{value:eo},VERSION:{value:"0.7.3"},adaptors:{writable:!0,value:{}},components:{writable:!0,value:{}},decorators:{writable:!0,value:{}},easing:{writable:!0,value:uo},events:{writable:!0,value:{}},interpolators:{writable:!0,value:Uo},partials:{writable:!0,value:{}},transitions:{writable:!0,value:{}}},_o(Xm,tv),Xm.prototype=r(kv,so),Xm.prototype.constructor=Xm,Xm.defaults=Xm.prototype;var Sv="function";if(typeof Date.now!==Sv||typeof String.prototype.trim!==Sv||typeof Object.keys!==Sv||typeof Array.prototype.indexOf!==Sv||typeof Array.prototype.forEach!==Sv||typeof Array.prototype.map!==Sv||typeof Array.prototype.filter!==Sv||"undefined"!=typeof window&&typeof window.addEventListener!==Sv)throw Error("It looks like you're attempting to use Ractive.js in an older browser. You'll need to use one of the 'legacy builds' in order to continue - see http://docs.ractivejs.org/latest/legacy-builds for more information.");var Av=Xm;return Av})},{}],8:[function(t,e,n){!function(){function t(t,e,n){return t.call.apply(t.bind,arguments)}function n(t,e,n){if(!t)throw Error();if(2r;r++)if(n[r]==e)return!0;return!1}function l(t){if("string"==typeof t.f)return t.f;var e=t.m.location.protocol;return"about:"==e&&(e=t.a.location.protocol),"https:"==e?"https:":"http:"}function p(t){return t.m.location.hostname||t.a.location.hostname}function h(t,e,n){function r(){c&&i&&s&&(c(u),c=null)}e=a(t,"link",{rel:"stylesheet",href:e,media:"all"});var i=!1,s=!0,u=null,c=n||null;it?(e.onload=function(){i=!0,r()},e.onerror=function(){i=!0,u=Error("Stylesheet failed to load"),r()}):setTimeout(function(){i=!0,r()},0),o(t,"head",e)}function f(t,e,n,r){var i=t.c.getElementsByTagName("head")[0];if(i){var o=a(t,"script",{src:e}),s=!1;return o.onload=o.onreadystatechange=function(){s||this.readyState&&"loaded"!=this.readyState&&"complete"!=this.readyState||(s=!0,n&&n(null),o.onload=o.onreadystatechange=null,"HEAD"==o.parentNode.tagName&&i.removeChild(o))},i.appendChild(o),setTimeout(function(){s||(s=!0,n&&n(Error("Script load timeout")))},r||5e3),o}return null}function d(){this.a=0,this.c=null}function m(t){return t.a++,function(){t.a--,g(t)}}function v(t,e){t.c=e,g(t)}function g(t){0==t.a&&t.c&&(t.c(),t.c=null)}function b(t){this.a=t||"-"}function y(t,e){this.c=t,this.f=4,this.a="n";var n=(e||"n4").match(/^([nio])([1-9])$/i);n&&(this.a=n[1],this.f=parseInt(n[2],10))}function w(t){return k(t)+" "+(t.f+"00")+" 300px "+x(t.c)}function x(t){var e=[];t=t.split(/,\s*/);for(var n=0;nparseInt(t[1],10)||536===parseInt(t[1],10)&&11>=parseInt(t[2],10))}return ot}function I(t,e,n){for(var r in at)if(at.hasOwnProperty(r)&&e===t.f[at[r]]&&n===t.f[at[r]])return!0;return!1}function D(t){var e,n=t.g.a.offsetWidth,r=t.h.a.offsetWidth;(e=n===t.f.serif&&r===t.f["sans-serif"])||(e=L()&&I(t,n,r)),e?rt()-t.A>=t.w?L()&&I(t,n,r)&&(null===t.u||t.u.hasOwnProperty(t.a.c))?V(t,t.v):V(t,t.B):U(t):V(t,t.v)}function U(t){setTimeout(r(function(){D(this)},t),50)}function V(t,e){setTimeout(r(function(){s(this.g.a),s(this.h.a),s(this.j.a),s(this.o.a),e(this.a)},t),0)}function B(t,e,n){this.c=t,this.a=e,this.f=0,this.o=this.j=!1,this.s=n}function q(t){0==--t.f&&t.j&&(t.o?(t=t.a,t.g&&u(t.f,[t.a.c("wf","active")],[t.a.c("wf","loading"),t.a.c("wf","inactive")]),S(t,"active")):O(t.a))}function z(t){this.j=t,this.a=new A,this.h=0,this.f=this.g=!0}function W(t,e,n,i,a){var o=0==--t.h;(t.f||t.g)&&setTimeout(function(){var t=a||null,s=i||null||{};if(0===n.length&&o)O(e.a);else{e.f+=n.length,o&&(e.j=o);var c,l=[];for(c=0;ce;e++)r[e].load(function(e,n,r){W(t,a,e,n,r)})}function $(t,e){this.c=t,this.a=e}function G(t,e,n){var r=l(t.c);return t=(t.a.api||"fast.fonts.net/jsapi").replace(/^.*http(s?):(\/\/)?/,""),r+"//"+t+"/"+e+".js"+(n?"?v="+n:"")}function K(t,e){this.c=t,this.a=e}function Q(t,e,n){t?this.c=t:this.c=e+ut,this.a=[],this.f=[],this.g=n||""}function Y(t,e){for(var n=e.length,r=0;n>r;r++){var i=e[r].split(":");3==i.length&&t.f.push(i.pop());var a="";2==i.length&&""!=i[1]&&(a=":"),t.a.push(i.join(a))}}function Z(t){if(0==t.a.length)throw Error("No fonts to load!");if(-1!=t.c.indexOf("kit="))return t.c;for(var e=t.a.length,n=[],r=0;e>r;r++)n.push(t.a[r].replace(/ /g,"+"));return e=t.c+"?family="+n.join("%7C"),0n;n++){var r=t.f[n].split(":"),i=r[0].replace(/\+/g," "),a=["n4"];if(2<=r.length){var o,s=r[1];if(o=[],s)for(var s=s.split(","),u=s.length,c=0;u>c;c++){var l;if(l=s[c],l.match(/^[\w-]+$/)){var p=ht.exec(l.toLowerCase());if(null==p)l="";else{if(l=p[2],l=null==l||""==l?"n":pt[l],p=p[1],null==p||""==p)p="4";else var h=lt[p],p=h?h:isNaN(p)?"4":p.substr(0,1);l=""+l+p}}else l="";l&&o.push(l)}0=n.j?n.f(n.a):e.fonts.load(w(n.a),n.h).then(function(e){1<=e.length?n.g(n.a):setTimeout(t,25)},function(){n.f(n.a)})}var e=this.c.m.document,n=this,r=rt();t()};var at={D:"serif",C:"sans-serif"},ot=null;R.prototype.start=function(){this.f.serif=this.j.a.offsetWidth,this.f["sans-serif"]=this.o.a.offsetWidth,this.A=rt(),D(this)};var st=null;B.prototype.g=function(t){var e=this.a;e.g&&u(e.f,[e.a.c("wf",t.c,""+_(t),"active")],[e.a.c("wf",t.c,""+_(t),"loading"),e.a.c("wf",t.c,""+_(t),"inactive")]),S(e,"fontactive",t),this.o=!0,q(this)},B.prototype.h=function(t){var e=this.a;if(e.g){var n=c(e.f,e.a.c("wf",t.c,""+_(t),"active")),r=[],i=[e.a.c("wf",t.c,""+_(t),"loading")];n||r.push(e.a.c("wf",t.c,""+_(t),"inactive")),u(e.f,r,i)}S(e,"fontinactive",t),q(this)},z.prototype.load=function(t){this.c=new i(this.j,t.context||this.j),this.g=!1!==t.events,this.f=!1!==t.classes,H(this,new T(this.c,t),t)},$.prototype.load=function(t){function e(){if(i["__mti_fntLst"+n]){var r,a=i["__mti_fntLst"+n](),o=[];if(a)for(var s=0;se;e++)h(this.c,r[e],m(o));var s=[];for(e=0,n=i.length;n>e;e++)if(r=i[e].split(":"),r[1])for(var u=r[1].split(","),c=0;ci;++i){var o=n.fonts[i];r.a.push(new y(o.name,E("font-weight:"+o.weight+";font-style:"+o.style)))}t(r.a)},f(this.c,l(this.c)+(this.f.api||"//f.fontdeck.com/s/css/js/")+p(this.c)+"/"+e+".js",function(e){e&&t([])})):t([])};var dt=new z(window);dt.a.c.custom=function(t,e){return new K(e,t)},dt.a.c.fontdeck=function(t,e){return new nt(e,t)},dt.a.c.monotype=function(t,e){return new $(e,t)},dt.a.c.typekit=function(t,e){return new et(e,t)},dt.a.c.google=function(t,e){return new tt(e,t)};var mt={load:r(dt.load,dt)};"function"==typeof define&&define.amd?define(function(){return mt}):void 0!==e&&e.exports?e.exports=mt:(window.WebFont=mt,window.WebFontConfig&&dt.load(window.WebFontConfig))}()},{}],9:[function(t,e,n){var r;r=encodeURIComponent,e.exports={href:function(t,e){return null==t&&(t={}),null==e&&(e=""),t=Object.keys(t).map(function(e){return r(e)+"="+r(t[e])}).join("&"),"byond://"+e+"?"+t},act:function(t,e,n){return null==n&&(n={}),n.src=t,n.action=e,location.href=this.href(n)},winset:function(t,e,n){var r;return location.href=this.href((r={},r[t+"."+e]=n,r),"winset")}}},{}],10:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(t){t.exports={oninit:function(){return this.observe("value",function(t,e,n){var r,i,a;return i=this.get("min"),r=this.get("max"),a=Math.clamp(t,i,r),this.animate("percentage",Math.round((a-i)/(r-i)*100))})}}}(i),i.exports.template={v:3,t:[" ",{p:[11,1,301],t:7,e:"div",a:{"class":"bar"},f:[{p:[12,3,322],t:7,e:"div",a:{"class":["barFill ",{t:2,r:"state",p:[12,23,342]}],style:["width: ",{t:2,r:"percentage",p:[12,48,367]},"%"]}}," ",{p:[13,3,394],t:7,e:"span",a:{"class":"barText"},f:[{t:16,p:[13,25,416]}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],11:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(e){var n,r;n=t("../byond"),r=t("../constants"),e.exports={computed:{clickable:function(){return this.get("enabled")&&!this.get("state")?!0:!1},enabled:function(){return this.get("config.status")===r.UI_INTERACTIVE?!0:!1},styles:function(){var t,e,n;return t=this.get("enabled"),e=this.get("state"),n=this.get("style"),t?e?"inactive "+e:"active normal "+[n]:"inactive disabled"}},oninit:function(){return this.on("press",function(t){var e,r;return t.node.blur(), +e=this.get("action"),r=this.get("params"),null!=e?n.act(this.get("config.ref"),e,r):void 0})}}}(i),i.exports.template={v:3,t:[" ",{p:[29,1,789],t:7,e:"span",a:{"class":["button ",{t:2,r:"styles",p:[29,21,809]}," ",{t:4,f:["gridable"],r:"grid",p:[29,32,820]}],unselectable:"on"},m:[{t:4,f:["tabindex='0'"],r:"clickable",p:[31,3,868]}],v:{"click-enter":{n:[{t:4,f:["press"],r:"clickable",p:[32,19,919]}],d:[]}},f:[{t:4,f:[{p:[34,5,967],t:7,e:"i",a:{"class":["fa fa-",{t:2,r:"icon",p:[34,21,983]}]}}],n:50,r:"icon",p:[33,3,949]}," ",{t:16,p:[36,3,1012]}]}]},e.exports=r.extend(i.exports)},{"../byond":9,"../constants":19,"ractive/ractive.runtime":7}],12:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"div",a:{"class":"display"},f:[{t:4,f:[{p:[3,5,44],t:7,e:"header",f:[{p:[4,7,60],t:7,e:"h3",f:[{t:2,r:"title",p:[4,11,64]}]}," ",{t:4,f:[{p:[6,9,110],t:7,e:"div",a:{"class":"buttonRight"},f:[{t:16,n:"button",p:[6,34,135]}]}],n:50,r:"button",p:[5,7,86]}]}],n:50,r:"title",p:[2,3,25]}," ",{p:[10,3,202],t:7,e:"article",f:[{t:16,p:[11,5,217]}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],13:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"div",a:{"class":"notice"},f:[{t:16,p:[2,3,24]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],14:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(e){var n;n=t("../byond"),e.exports={oninit:function(){return this.observe("config.fancy",function(t,e,r){return n.winset(this.get("config.window"),"can-resize",!t)})}}}(i),i.exports.template={v:3,t:[" ",{t:4,f:[{p:[11,3,263],t:7,e:"div",a:{"class":"resize"},v:{mousedown:"resize"}}],n:50,r:"config.fancy",p:[10,1,239]}]},e.exports=r.extend(i.exports)},{"../byond":9,"ractive/ractive.runtime":7}],15:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"section",f:[{t:4,f:[{p:[3,5,32],t:7,e:"span",a:{"class":"label"},f:[{t:2,r:"label",p:[3,25,52]},":"]}," ",{t:4,f:[{t:16,p:[5,7,97]}],n:50,r:"nowrap",p:[4,5,75]},{t:4,n:51,f:[{p:[7,7,128],t:7,e:"div",a:{"class":"content"},f:[{t:16,p:[8,9,159]}]}],r:"nowrap"}],n:50,r:"label",p:[2,3,13]},{t:4,n:51,f:[{t:16,p:[12,5,213]}],r:"label"}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],16:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"div",a:{"class":"subdisplay"},f:[{t:4,f:[{p:[3,5,47],t:7,e:"header",f:[{p:[4,7,63],t:7,e:"h4",f:[{t:2,r:"title",p:[4,11,67]}]}," ",{t:4,f:[{t:16,n:"button",p:[5,21,103]}],n:50,r:"button",p:[5,7,89]}]}],n:50,r:"title",p:[2,3,28]}," ",{p:[8,3,156],t:7,e:"article",f:[{t:16,p:[9,5,171]}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],17:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(e){var n;n=t("../byond"),e.exports={computed:{visualStatus:function(){var e,n;return n=this.get("config.status"),e=t("../constants"),n===e.UI_INTERACTIVE?"good":n===e.UI_UPDATE?"average":n===e.UI_DISABLED?"bad":void 0}},oninit:function(){return this.observe("config.fancy",function(t,e,r){return n.winset(this.get("config.window"),"titlebar",!t)}),this.on({close:function(){return n.winset(this.get("config.window"),"is-visible","false"),location.href=n.href({command:"uiclose "+this.get("config.ref")},"winset")},minimize:function(){return n.winset(this.get("config.window"),"is-minimized","true")}})}}}(i),i.exports.template={v:3,t:[" ",{p:[24,1,800],t:7,e:"header",a:{"class":"titlebar"},v:{mousedown:"drag"},f:[{p:[25,3,849],t:7,e:"i",a:{"class":["statusicon fa fa-eye fa-2x ",{t:2,r:"visualStatus",p:[25,40,886]}]}}," ",{p:[26,3,912],t:7,e:"span",a:{"class":"title"},f:[{t:16,p:[26,23,932]}]}," ",{t:4,f:[{p:[28,5,978],t:7,e:"i",a:{"class":"minimize fa fa-minus fa-2x"},v:{click:"minimize"}}," ",{p:[29,5,1046],t:7,e:"i",a:{"class":"close fa fa-close fa-2x"},v:{click:"close"}}],n:50,r:"config.fancy",p:[27,3,952]}]}]},e.exports=r.extend(i.exports)},{"../byond":9,"../constants":19,"ractive/ractive.runtime":7}],18:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(t){t.exports={data:{userAgent:navigator.userAgent},computed:{ie:function(){var t,e,n;if(document.documentMode)return document.documentMode;for(n=e=11;e>=6;n=--e)if(t=document.createElement("div"),t.innerHTML="",t.getElementsByTagName("span").length)return n}},oninit:function(){return this.on("debug",function(){return this.toggle("debug")})}}}(i),i.exports.template={v:3,t:[" ",{t:4,f:[{p:[19,3,540],t:7,e:"ui-notice",f:[{p:[20,5,557],t:7,e:"span",f:["You have an old (<= 8) version of Internet Explorer installed. Please upgrade to the latest available version of IE."]},{p:[20,137,689],t:7,e:"br"}," ",{p:[21,5,700],t:7,e:"span",f:["To upgrade, please click 'Check For Upgrades' below to download the latest available version from Microsoft."]},{p:[21,126,821],t:7,e:"br"}," ",{p:[22,5,832],t:7,e:"span",f:["Otherwise, if you are unable (XP/Wine) or unwilling to upgrade past IE8, please click 'No Frills' below to disable incompatible features (and this message)."]}," ",{p:[23,5,1007],t:7,e:"hr"}," ",{p:[24,5,1018],t:7,e:"ui-button",a:{icon:"internet-explorer",action:"tgui:ie"},f:["Check For Upgrades"]}," ",{p:[25,5,1107],t:7,e:"ui-button",a:{icon:"close",action:"tgui:nofrills"},f:["No Frills"]}," ",{p:[26,5,1181],t:7,e:"ui-button",a:{icon:"bug"},v:{press:"debug"},f:["Debug Info"]}," ",{t:4,f:[{p:[28,7,1269],t:7,e:"hr"}," ",{p:[29,7,1282],t:7,e:"span",f:["Detected: IE",{t:2,r:"ie",p:[29,25,1300]}]},{p:[29,38,1313],t:7,e:"br"}," ",{p:[30,7,1326],t:7,e:"span",f:["User Agent: ",{t:2,r:"userAgent",p:[30,25,1344]}]}],n:50,r:"debug",p:[27,5,1248]}]}],n:50,x:{r:["config.fancy","ie"],s:"_0&&_1&&_1<=8"},p:[18,1,499]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],19:[function(t,e,n){e.exports={UI_INTERACTIVE:2,UI_UPDATE:1,UI_DISABLED:0,UI_CLOSE:-1}},{}],20:[function(t,e,n){var r;r=t("./byond"),e.exports={drag:function(t,e){var n,i,a,o;return e.preventDefault(),n=function(t,e){return 0>t&&(t=0),0>e&&(e=0),t+window.innerWidth>screen.availWidth&&(t=screen.availWidth-window.innerWidth),e+window.innerHeight>screen.availHeight&&(e=screen.availHeight-window.innerHeight),{x:t,y:e}},t.get("x")&&(a=e.screenX-t.get("x")+window.screenLeft,o=e.screenY-t.get("y")+window.screenTop,t.get("config.locked")&&(i=n(a,o),a=i.x,o=i.y),r.winset(t.get("config.window"),"pos",a+","+o)),t.set({x:e.screenX,y:e.screenY})},resize:function(t,e){var n,i,a,o;return e.preventDefault(),i=function(t,e){return t=Math.clamp(t,100,screen.width),e=Math.clamp(e,100,screen.height),{x:t,y:e}},t.get("x")&&(a=e.screenX-t.get("x")+window.innerWidth,o=e.screenY-t.get("y")+window.innerHeight,n=i(a,o),a=n.x,o=n.y,r.winset(t.get("config.window"),"size",a+","+o)),t.set({x:e.screenX,y:e.screenY})}}},{"./byond":9}],21:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[" "," "," "," "," "," ",{p:[8,1,327],t:7,e:"ui-notice",f:[{t:4,f:[{p:[10,5,372],t:7,e:"ui-section",a:{label:"Interface Lock"},f:[{p:[11,7,415],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.locked"],s:'_0?"lock":"unlock"'},p:[11,24,432]}],action:"lock"},f:[{t:2,x:{r:["data.locked"],s:'_0?"Engaged":"Disengaged"'},p:[11,75,483]}]}]}],n:50,r:"data.siliconUser",p:[9,3,342]},{t:4,n:51,f:[{p:[14,5,574],t:7,e:"span",f:["Swipe an ID card to ",{t:2,x:{r:["data.locked"],s:'_0?"unlock":"lock"'},p:[14,31,600]}," this interface."]}],r:"data.siliconUser"}]}," ",{p:[17,1,685],t:7,e:"status"}," ",{t:4,f:[{t:4,f:[{p:[20,5,770],t:7,e:"controls"}],n:50,x:{r:["data.screen"],s:"_0==1"},p:[19,3,740]},{t:4,n:51,f:[{t:4,n:50,x:{r:["data.screen"],s:"_0==2"},f:[{p:[22,5,817],t:7,e:"vents"}]},{t:4,n:50,x:{r:["data.screen"],s:"(!(_0==2))&&(_0==3)"},f:[" ",{p:[24,5,862],t:7,e:"scrubbers"}]},{t:4,n:50,x:{r:["data.screen"],s:"(!(_0==2))&&((!(_0==3))&&(_0==4))"},f:[" ",{p:[26,5,911],t:7,e:"modes"}]},{t:4,n:50,x:{r:["data.screen"],s:"(!(_0==2))&&((!(_0==3))&&((!(_0==4))&&(_0==5)))"},f:[" ",{p:[28,5,956],t:7,e:"thresholds"}]}],x:{r:["data.screen"],s:"_0==1"}}],n:50,x:{r:["data.locked","data.siliconUser"],s:"!_0||_1"},p:[18,1,696]}]},i.exports.components=i.exports.components||{};var a={vents:t("./air_alarm/vents.ract"),modes:t("./air_alarm/modes.ract"),thresholds:t("./air_alarm/thresholds.ract"),status:t("./air_alarm/status.ract"),scrubbers:t("./air_alarm/scrubbers.ract"),controls:t("./air_alarm/controls.ract")};for(var o in a)a.hasOwnProperty(o)&&(i.exports.components[o]=a[o]);e.exports=r.extend(i.exports)},{"./air_alarm/controls.ract":23,"./air_alarm/modes.ract":24,"./air_alarm/scrubbers.ract":25,"./air_alarm/status.ract":26,"./air_alarm/thresholds.ract":27,"./air_alarm/vents.ract":28,"ractive/ractive.runtime":7}],22:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-button",a:{icon:"arrow-left",action:"screen",params:'{"screen": 1}'},f:["Back"]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],23:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Air Controls"},f:[{p:[2,3,37],t:7,e:"ui-section",f:[{p:[3,5,55],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.atmos_alarm"],s:'_0?"exclamation-triangle":"exclamation"'},p:[3,22,72]}],style:[{t:2,x:{r:["data.atmos_alarm"],s:'_0?"caution":null'},p:[3,92,142]}],action:[{t:2,x:{r:["data.atmos_alarm"],s:'_0?"reset":"alarm"'},p:[4,17,200]}]},f:["Area Atmosphere Alarm"]}]}," ",{p:[6,3,296],t:7,e:"ui-section",f:[{p:[7,5,314],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.mode"],s:'_0==3?"exclamation-triangle":"exclamation"'},p:[7,22,331]}],style:[{t:2,x:{r:["data.mode"],s:'_0==3?"danger":null'},p:[7,90,399]}],action:"mode",params:['{"mode": ',{t:2,x:{r:["data.mode"],s:"_0==3?1:3"},p:[8,38,475]},"}"]},f:["Panic Siphon"]}]}," ",{p:[10,3,549],t:7,e:"br"}," ",{p:[11,3,558],t:7,e:"ui-section",f:[{p:[12,5,576],t:7,e:"ui-button",a:{icon:"sign-out",action:"screen",params:'{"screen": 2}'},f:["Vent Controls"]}]}," ",{p:[14,3,688],t:7,e:"ui-section",f:[{p:[15,5,706],t:7,e:"ui-button",a:{icon:"filter",action:"screen",params:'{"screen": 3}'},f:["Scrubber Controls"]}]}," ",{p:[17,3,820],t:7,e:"ui-section",f:[{p:[18,5,838],t:7,e:"ui-button",a:{icon:"cog",action:"screen",params:'{"screen": 4}'},f:["Operating Mode"]}]}," ",{p:[20,3,946],t:7,e:"ui-section",f:[{p:[21,5,964],t:7,e:"ui-button",a:{icon:"bar-chart",action:"screen",params:'{"screen": 5}'},f:["Alarm Thresholds"]}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],24:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[" ",{p:{button:[{p:[5,5,115],t:7,e:"back"}]},t:7,e:"ui-display",a:{title:"Operating Modes",button:0},f:[" ",{t:4,f:[{p:[8,5,168],t:7,e:"ui-section",f:[{p:[9,7,188],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["selected"],s:'_0?"check-square-o":"square-o"'},p:[9,24,205]}],state:[{t:2,x:{r:["selected","danger"],s:'_0?_1?"danger":"selected":null'},p:[10,16,267]}],action:"mode",params:['{"mode": ',{t:2,r:"mode",p:[11,40,361]},"}"]},f:[{t:2,r:"name",p:[11,51,372]}]}]}],n:52,r:"data.modes",p:[7,3,142]}]}]},i.exports.components=i.exports.components||{};var a={back:t("./back.ract")};for(var o in a)a.hasOwnProperty(o)&&(i.exports.components[o]=a[o]);e.exports=r.extend(i.exports)},{"./back.ract":22,"ractive/ractive.runtime":7}],25:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[" ",{p:{button:[{p:[5,5,117],t:7,e:"back"}]},t:7,e:"ui-display",a:{title:"Scrubber Controls",button:0},f:[" ",{t:4,f:[{p:[8,5,174],t:7,e:"ui-subdisplay",a:{title:[{t:2,r:"long_name",p:[8,27,196]}]},f:[{p:[9,7,219],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[10,9,255],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["power"],s:'_0?"power-off":"close"'},p:[10,26,272]}],style:[{t:2,x:{r:["power"],s:'_0?"selected":null'},p:[10,68,314]}],action:"power",params:['{"id_tag": "',{t:2,r:"id_tag",p:[11,46,391]},'", "val": ',{t:2,x:{r:["power"],s:"+!_0"},p:[11,66,411]},"}"]},f:[{t:2,x:{r:["power"],s:'_0?"On":"Off"'},p:[11,80,425]}]}]}," ",{p:[13,7,490],t:7,e:"ui-section",a:{label:"Mode"},f:[{p:[14,9,525],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["scrubbing"],s:'_0?"filter":"sign-in"'},p:[14,26,542]}],style:[{t:2,x:{r:["scrubbing"],s:'_0?null:"danger"'},p:[14,71,587]}],action:"scrubbing",params:['{"id_tag": "',{t:2,r:"id_tag",p:[15,50,670]},'", "val": ',{t:2,x:{r:["scrubbing"],s:"+!_0"},p:[15,70,690]},"}"]},f:[{t:2,x:{r:["scrubbing"],s:'_0?"Scrubbing":"Siphoning"'},p:[15,88,708]}]}]}," ",{p:[17,7,790],t:7,e:"ui-section",a:{label:"Range"},f:[{p:[18,9,826],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["widenet"],s:'_0?"expand":"compress"'},p:[18,26,843]}],style:[{t:2,x:{r:["widenet"],s:'_0?"selected":null'},p:[18,70,887]}],action:"widenet",params:['{"id_tag": "',{t:2,r:"id_tag",p:[19,48,968]},'", "val": ',{t:2,x:{r:["widenet"],s:"+!_0"},p:[19,68,988]},"}"]},f:[{t:2,x:{r:["widenet"],s:'_0?"Expanded":"Normal"'},p:[19,84,1004]}]}]}," ",{p:[21,7,1080],t:7,e:"ui-section",a:{label:"Filters"},f:[{p:[22,9,1118],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["filter_co2"],s:'_0?"check-square-o":"square-o"'},p:[22,26,1135]}],style:[{t:2,x:{r:["filter_co2"],s:'_0?"selected":null'},p:[22,81,1190]}],action:"co2_scrub",params:['{"id_tag": "',{t:2,r:"id_tag",p:[23,50,1276]},'", "val": ',{t:2,x:{r:["filter_co2"],s:"+!_0"},p:[23,70,1296]},"}"]},f:["CO2"]}," ",{p:[24,9,1340],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["filter_n2o"],s:'_0?"check-square-o":"square-o"'},p:[24,26,1357]}],style:[{t:2,x:{r:["filter_n2o"],s:'_0?"selected":null'},p:[24,81,1412]}],action:"n2o_scrub",params:['{"id_tag": "',{t:2,r:"id_tag",p:[25,50,1498]},'", "val": ',{t:2,x:{r:["filter_n2o"],s:"+!_0"},p:[25,70,1518]},"}"]},f:["N2O"]}," ",{p:[26,9,1562],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["filter_toxins"],s:'_0?"check-square-o":"square-o"'},p:[26,26,1579]}],style:[{t:2,x:{r:["filter_toxins"],s:'_0?"selected":null'},p:[26,84,1637]}],action:"tox_scrub",params:['{"id_tag": "',{t:2,r:"id_tag",p:[27,50,1726]},'", "val": ',{t:2,x:{r:["filter_toxins"],s:"+!_0"},p:[27,70,1746]},"}"]},f:["Plasma"]}]}]}],n:52,r:"data.scrubbers",p:[7,3,144]},{t:4,n:51,f:[{p:[31,5,1847],t:7,e:"span",a:{"class":"bad"},f:["Error: No scrubbers connected."]}],r:"data.scrubbers"}]}]},i.exports.components=i.exports.components||{};var a={back:t("./back.ract")};for(var o in a)a.hasOwnProperty(o)&&(i.exports.components[o]=a[o]);e.exports=r.extend(i.exports)},{"./back.ract":22,"ractive/ractive.runtime":7}],26:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Air Status"},f:[{t:4,f:[{t:4,f:[{p:[4,7,110],t:7,e:"ui-section",a:{label:[{t:2,r:"name",p:[4,26,129]}]},f:[{p:[5,6,146],t:7,e:"span",a:{"class":[{t:2,x:{r:["danger_level"],s:'_0==2?"bad":_0==1?"average":"good"'},p:[5,19,159]}]},f:[{t:2,x:{r:["value"],s:"Math.fixed(_0,2)"},p:[6,5,237]},{t:2,r:"unit",p:[6,29,261]}]}]}],n:52,r:"adata.environment_data",p:[3,5,70]}," ",{p:[10,5,322],t:7,e:"ui-section",a:{label:"Local Status"},f:[{p:[11,7,363],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.danger_level"],s:'_0==2?"bad bold":_0==1?"average bold":"good"'},p:[11,20,376]}]},f:[{t:2,x:{r:["data.danger_level"],s:'_0==2?"Danger (Internals Required)":_0==1?"Caution":"Optimal"'},p:[12,6,475]}]}]}," ",{p:[15,5,619],t:7,e:"ui-section",a:{label:"Area Status"},f:[{p:[16,7,659],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.atmos_alarm","data.fire_alarm"],s:'_0||_1?"bad bold":"good"'},p:[16,20,672]}]},f:[{t:2,x:{r:["data.atmos_alarm","fire_alarm"],s:'_0?"Atmosphere Alarm":_1?"Fire Alarm":"Nominal"'},p:[17,8,744]}]}]}],n:50,r:"data.environment_data",p:[2,3,35]},{t:4,n:51,f:[{p:[21,5,876],t:7,e:"ui-section",a:{label:"Warning"},f:[{p:[22,7,912],t:7,e:"span",a:{"class":"bad bold"},f:["Cannot obtain air sample for analysis."]}]}],r:"data.environment_data"}," ",{t:4,f:[{p:[26,5,1040],t:7,e:"ui-section",a:{label:"Warning"},f:[{p:[27,7,1076],t:7,e:"span",a:{"class":"bad bold"},f:["Safety measures offline. Device may exhibit abnormal behavior."]}]}],n:50,r:"data.emagged",p:[25,3,1014]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],27:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.css="th,\ntd {\n padding-right: 16px;\n text-align: left;\n}\n",i.exports.template={v:3,t:[" ",{p:{button:[{p:[5,5,116],t:7,e:"back"}]},t:7,e:"ui-display",a:{title:"Alarm Thresholds",button:0},f:[" ",{p:[7,3,143],t:7,e:"table",f:[{p:[8,5,156],t:7,e:"thead",f:[{p:[8,12,163],t:7,e:"tr",f:[{p:[9,7,175],t:7,e:"th"}," ",{p:[10,7,192],t:7,e:"th",f:[{p:[10,11,196],t:7,e:"span",a:{"class":"bad"},f:["min2"]}]}," ",{p:[11,7,238],t:7,e:"th",f:[{p:[11,11,242],t:7,e:"span",a:{"class":"average"},f:["min1"]}]}," ",{p:[12,7,288],t:7,e:"th",f:[{p:[12,11,292],t:7,e:"span",a:{"class":"average"},f:["max1"]}]}," ",{p:[13,7,338],t:7,e:"th",f:[{p:[13,11,342],t:7,e:"span",a:{"class":"bad"},f:["max2"]}]}]}]}," ",{p:[15,5,401],t:7,e:"tbody",f:[{t:4,f:[{p:[16,32,441],t:7,e:"tr",f:[{p:[17,9,455],t:7,e:"th",f:[{t:3,r:"name",p:[17,13,459]}]}," ",{t:4,f:[{p:[18,27,502],t:7,e:"td",f:[{p:[19,11,518],t:7,e:"ui-button",a:{action:"threshold",params:['{"env": "',{t:2,r:"env",p:[19,58,565]},'", "var": "',{t:2,r:"val",p:[19,76,583]},'"}']},f:[{t:2,x:{r:["selected"],s:"Math.fixed(_0,2)"},p:[19,87,594]}]}]}],n:52,r:"settings",p:[18,9,484]}]}],n:52,r:"data.thresholds",p:[16,7,416]}]}," ",{p:[23,3,697],t:7,e:"table",f:[]}]}]}," "]},i.exports.components=i.exports.components||{};var a={back:t("./back.ract")};for(var o in a)a.hasOwnProperty(o)&&(i.exports.components[o]=a[o]);e.exports=r.extend(i.exports)},{"./back.ract":22,"ractive/ractive.runtime":7}],28:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[" ",{p:{button:[{p:[5,5,113],t:7,e:"back"}]},t:7,e:"ui-display",a:{title:"Vent Controls",button:0},f:[" ",{t:4,f:[{p:[8,5,166],t:7,e:"ui-subdisplay",a:{title:[{t:2,r:"long_name",p:[8,27,188]}]},f:[{p:[9,7,211],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[10,9,247],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["power"],s:'_0?"power-off":"close"'},p:[10,26,264]}],style:[{t:2,x:{r:["power"],s:'_0?"selected":null'},p:[10,68,306]}],action:"power",params:['{"id_tag": "',{t:2,r:"id_tag",p:[11,46,383]},'", "val": ',{t:2,x:{r:["power"],s:"+!_0"},p:[11,66,403]},"}"]},f:[{t:2,x:{r:["power"],s:'_0?"On":"Off"'},p:[11,80,417]}]}]}," ",{p:[13,7,482],t:7,e:"ui-section",a:{label:"Mode"},f:[{p:[14,9,517],t:7,e:"span",f:[{t:2,x:{r:["direction"],s:'_0=="release"?"Pressurizing":"Siphoning"'},p:[14,15,523]}]}]}," ",{p:[16,7,616],t:7,e:"ui-section",a:{label:"Pressure Regulator"},f:[{p:[17,9,665],t:7,e:"ui-button",a:{icon:"sign-in",style:[{t:2,x:{r:["incheck"],s:'_0?"selected":null'},p:[17,42,698]}],action:"incheck",params:['{"id_tag": "',{t:2,r:"id_tag",p:[18,48,779]},'", "val": ',{t:2,r:"checks",p:[18,68,799]},"}"]},f:["Internal"]}," ",{p:[19,9,842],t:7,e:"ui-button",a:{icon:"sign-out",style:[{t:2,x:{r:["excheck"],s:'_0?"selected":null'},p:[19,43,876]}],action:"excheck",params:['{"id_tag": "',{t:2,r:"id_tag",p:[20,48,957]},'", "val": ',{t:2,r:"checks",p:[20,68,977]},"}"]},f:["External"]}]}," ",{p:[22,7,1039],t:7,e:"ui-section",a:{label:"Target Pressure"},f:[{p:[23,9,1085],t:7,e:"ui-button",a:{icon:"pencil",action:"external_pressure",params:['{"id_tag": "',{t:2,r:"id_tag",p:[24,31,1168]},'", "pressure": "custom"}']},f:[{t:2,x:{r:["external"],s:"Math.fixed(_0)"},p:[24,67,1204]}]}," ",{p:[25,9,1250],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["extdefault"],s:'_0?"disabled":null'},p:[25,42,1283]}],action:"external_pressure",params:['{"id_tag": "',{t:2,r:"id_tag",p:[26,31,1377]},'", "pressure": "reset"}']},f:["Reset"]}]}]}],n:52,r:"data.vents",p:[7,3,140]},{t:4,n:51,f:[{p:[30,5,1490],t:7,e:"span",a:{"class":"bad"},f:["Error: No vents connected."]}],r:"data.vents"}]}]},i.exports.components=i.exports.components||{};var a={back:t("./back.ract")};for(var o in a)a.hasOwnProperty(o)&&(i.exports.components[o]=a[o]);e.exports=r.extend(i.exports)},{"./back.ract":22,"ractive/ractive.runtime":7}],29:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.css="table {\n width: 100%;\n border-spacing: 2px;\n}\nth {\n text-align: left;\n}\ntd {\n vertical-align: top;\n}\ntd .button {\n margin-top: 4px;\n}\n",i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,3,16],t:7,e:"ui-section",f:[{p:[3,5,34],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.oneAccess"],s:'_0?"unlock":"lock"'},p:[3,22,51]}],action:"one_access"},f:[{t:2,x:{r:["data.oneAccess"],s:'_0?"One":"All"'},p:[3,82,111]}," Required"]}," ",{p:[4,5,172],t:7,e:"ui-button",a:{icon:"refresh",action:"clear"},f:["Clear"]}]}," ",{p:[6,3,251],t:7,e:"hr"}," ",{p:[7,3,260],t:7,e:"table",f:[{p:[8,3,271],t:7,e:"thead",f:[{p:[9,4,283],t:7,e:"tr",f:[{t:4,f:[{p:[10,5,315],t:7,e:"th",f:[{p:[10,9,319],t:7,e:"span",a:{"class":"highlight bold"},f:[{t:2,r:"name",p:[10,38,348]}]}]}],n:52,r:"data.regions",p:[9,8,287]}]}]}," ",{p:[13,3,403],t:7,e:"tbody",f:[{p:[14,4,415],t:7,e:"tr",f:[{t:4,f:[{p:[15,5,447],t:7,e:"td",f:[{t:4,f:[{p:[16,11,481],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["req"],s:'_0?"check-square-o":"square-o"'},p:[16,28,498]}],style:[{t:2,x:{r:["req"],s:'_0?"selected":null'},p:[16,76,546]}],action:"set",params:['{"access": "',{t:2,r:"id",p:[17,46,621]},'"}']},f:[{t:2,r:"name",p:[17,56,631]}]}," ",{p:[18,9,661],t:7,e:"br"}],n:52,r:"accesses",p:[15,9,451]}]}],n:52,r:"data.regions",p:[14,8,419]}]}]}]}]}," "]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],30:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(t){t.exports={data:{powerState:function(t){return 2===t?"good":1===t?"average":"bad"}},computed:{malfAction:function(){var t;return t=this.get("data.malfStatus"),1===t?"hack":2===t?"occupy":3===t?"deoccupy":void 0},malfButton:function(){var t;return t=this.get("data.malfStatus"),1===t?"Override Programming":"Shunt Core Process"},malfIcon:function(){var t;return t=this.get("data.malfStatus"),1===t?"terminal":"caret-square-o-down"},powerCellStatusState:function(){var t;return t=this.get("data.powerCellStatus"),t>50?"good":t>25?"average":"bad"}}}}(i),i.exports.template={v:3,t:[" ",{p:[31,1,988],t:7,e:"ui-notice",f:[{t:4,f:[{p:[33,5,1033],t:7,e:"ui-section",a:{label:"Interface Lock"},f:[{p:[34,7,1076],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.locked"],s:'_0?"lock":"unlock"'},p:[34,24,1093]}],action:"lock"},f:[{t:2,x:{r:["data.locked"],s:'_0?"Engaged":"Disengaged"'},p:[34,75,1144]}]}]}],n:50,r:"data.siliconUser",p:[32,3,1003]},{t:4,n:51,f:[{p:[37,5,1235],t:7,e:"span",f:["Swipe an ID card to ",{t:2,x:{r:["data.locked"],s:'_0?"unlock":"lock"'},p:[37,31,1261]}," this interface."]}],r:"data.siliconUser"}]}," ",{p:[40,1,1346],t:7,e:"ui-display",a:{title:"Power Status"},f:[{p:[41,3,1383],t:7,e:"ui-section",a:{label:"Main Breaker"},f:[{t:4,f:[{p:[43,7,1470],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.isOperating"],s:'_0?"good":"bad"'},p:[43,20,1483]}]},f:[{t:2,x:{r:["data.isOperating"],s:'_0?"On":"Off"'},p:[43,59,1522]}]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"},p:[42,5,1422]},{t:4,n:51,f:[{p:[45,7,1586],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isOperating"],s:'_0?"power-off":"close"'},p:[45,24,1603]}],style:[{t:2,x:{r:["data.isOperating"],s:'_0?"selected":null'},p:[45,77,1656]}],action:"breaker"},f:[{t:2,x:{r:["data.isOperating"],s:'_0?"On":"Off"'},p:[46,26,1724]}]}],x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"}}]}," ",{p:[49,3,1805],t:7,e:"ui-section",a:{label:"External Power"},f:[{p:[50,5,1846],t:7,e:"span",a:{"class":[{t:2,x:{r:["powerState","data.externalPower"],s:"_0(_1)"},p:[50,18,1859]}]},f:[{t:2,x:{r:["data.externalPower"],s:'_0==2?"Good":_0==1?"Low":"None"'},p:[50,54,1895]}]}]}," ",{p:[52,3,2002],t:7,e:"ui-section",a:{label:"Power Cell"},f:[{t:4,f:[{p:[54,7,2083],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.powerCellStatus",p:[54,40,2116]}],state:[{t:2,r:"powerCellStatusState",p:[54,73,2149]}]},f:[{t:2,x:{r:["adata.powerCellStatus"],s:"Math.fixed(_0)"},p:[54,99,2175]},"%"]}],n:50,x:{r:["data.powerCellStatus"],s:"_0!=null"},p:[53,5,2039]},{t:4,n:51,f:[{p:[56,7,2244],t:7,e:"span",a:{"class":"bad"},f:["Power cell removed."]}],x:{r:["data.powerCellStatus"],s:"_0!=null"}}]}," ",{t:4,f:[{p:[60,5,2364],t:7,e:"ui-section",a:{label:"Charge Mode"},f:[{t:4,f:[{p:[62,9,2454],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.chargeMode"],s:'_0?"good":"bad"'},p:[62,22,2467]}]},f:[{t:2,x:{r:["data.chargeMode"],s:'_0?"Auto":"Off"'},p:[62,60,2505]}]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"},p:[61,7,2404]},{t:4,n:51,f:[{p:[64,9,2574],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.chargeMode"],s:'_0?"refresh":"close"'},p:[64,26,2591]}],style:[{t:2,x:{r:["data.chargeMode"],s:'_0?"selected":null'},p:[64,76,2641]}],action:"charge"},f:[{t:2,x:{r:["data.chargeMode"],s:'_0?"Auto":"Off"'},p:[65,27,2709]}]}],x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"}}," [",{p:[68,8,2795],t:7,e:"span",a:{"class":[{t:2,x:{r:["powerState","data.chargingStatus"],s:"_0(_1)"},p:[68,21,2808]}]},f:[{t:2,x:{r:["data.chargingStatus"],s:'_0==2?"Fully Charged":_0==1?"Charging":"Not Charging"'},p:[68,58,2845]}]},"]"]}],n:50,x:{r:["data.powerCellStatus"],s:"_0!=null"},p:[59,3,2322]}]}," ",{p:[72,1,3003],t:7,e:"ui-display",a:{title:"Power Channels"},f:[{t:4,f:[{p:[74,5,3076],t:7,e:"ui-section",a:{label:[{t:2,r:"title",p:[74,24,3095]}],nowrap:0},f:[{p:[75,7,3121],t:7,e:"div",a:{"class":"content"},f:[{t:2,x:{r:["@index","adata.powerChannels"],s:"Math.round(_1[_0].powerLoad)"},p:[75,28,3142]}," W"]}," ",{p:[76,7,3211],t:7,e:"div",a:{"class":"content"},f:[{p:[76,28,3232],t:7,e:"span",a:{"class":[{t:2,x:{r:["status"],s:'_0>=2?"good":"bad"'},p:[76,41,3245]}]},f:[{t:2,x:{r:["status"],s:'_0>=2?"On":"Off"'},p:[76,75,3279]}]}]}," ",{p:[77,7,3330],t:7,e:"div",a:{"class":"content"},f:["[",{p:[77,29,3352],t:7,e:"span",f:[{t:2,x:{r:["status"],s:'_0==1||_0==3?"Auto":"Manual"'},p:[77,35,3358]}]},"]"]}," ",{p:[78,7,3430],t:7,e:"div",a:{"class":"content",style:"float:right"},f:[{t:4,f:[{p:[80,11,3533],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["status"],s:'_0==1||_0==3?"selected":null'},p:[80,44,3566]}],action:"channel",params:[{t:2,r:"topicParams.auto",p:[81,38,3656]}]},f:["Auto"]}," ",{p:[82,11,3706],t:7,e:"ui-button",a:{icon:"power-off",state:[{t:2,x:{r:["status"],s:'_0==2?"selected":null'},p:[82,46,3741]}],action:"channel",params:[{t:2,r:"topicParams.on",p:[83,21,3816]}]},f:["On"]}," ",{p:[84,11,3862],t:7,e:"ui-button",a:{icon:"close",state:[{t:2,x:{r:["status"],s:'_0==0?"selected":null'},p:[84,42,3893]}],action:"channel",params:[{t:2,r:"topicParams.off",p:[85,21,3968]}]},f:["Off"]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"!_0||_1"},p:[79,9,3481]}]}]}],n:52,r:"data.powerChannels",p:[73,3,3042]}," ",{p:[90,3,4071],t:7,e:"ui-section",a:{label:"Total Load"},f:[{p:[91,5,4108],t:7,e:"span",a:{"class":"bold"},f:[{t:2,x:{r:["adata.totalLoad"],s:"Math.round(_0)"},p:[91,24,4127]}," W"]}]}]}," ",{t:4,f:[{p:[95,3,4229],t:7,e:"ui-display",a:{title:"System Overrides"},f:[{p:[96,5,4272],t:7,e:"ui-button",a:{icon:"lightbulb-o",action:"overload"},f:["Overload"]}," ",{t:4,f:[{p:[98,7,4377],t:7,e:"ui-button",a:{icon:[{t:2,r:"malfIcon",p:[98,24,4394]}],state:[{t:2,x:{r:["data.malfStatus"],s:'_0==4?"disabled":null'},p:[98,45,4415]}],action:[{t:2,r:"malfAction",p:[98,99,4469]}]},f:[{t:2,r:"malfButton",p:[98,115,4485]}]}],n:50,r:"data.malfStatus",p:[97,5,4346]}]}],n:50,r:"data.siliconUser",p:[94,1,4201]},{p:[102,1,4552],t:7,e:"ui-notice",f:[{p:[103,3,4567],t:7,e:"ui-section",a:{label:"Cover Lock"},f:[{t:4,f:[{p:[105,7,4652],t:7,e:"span",f:[{t:2,x:{r:["data.coverLocked"],s:'_0?"Engaged":"Disengaged"'},p:[105,13,4658]}]}],n:50,x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"},p:[104,5,4604]},{t:4,n:51,f:[{p:[107,7,4734],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.coverLocked"],s:'_0?"lock":"unlock"'},p:[107,24,4751]}],action:"cover"},f:[{t:2,x:{r:["data.coverLocked"],s:'_0?"Engaged":"Disengaged"'},p:[107,81,4808]}]}],x:{r:["data.locked","data.siliconUser"],s:"_0&&!_1"}}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],31:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,3,16],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[3,5,48],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[3,22,65]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[3,66,109]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[4,22,164]}]}]}," ",{p:[6,3,223],t:7,e:"ui-section",a:{label:"Output Pressure"},f:[{p:[7,5,265],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "custom"}'},f:["Set"]}," ",{p:[8,5,361],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.set_pressure","data.max_pressure"],s:'_0==_1?"disabled":null'},p:[8,35,391]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}," ",{p:[9,5,523],t:7,e:"span",a:{"class":"buttoninfo"},f:[{t:2,x:{r:["adata.set_pressure"],s:"Math.round(_0)"},p:[9,30,548]}," kPa"]}]}," ",{p:[11,3,614],t:7,e:"ui-section",a:{label:"Filter"},f:[{p:[12,5,647],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.filter_type"],s:'_0==-1?"selected":null'},p:[12,23,665]}],action:"filter",params:'{"mode": -1}'},f:["Nothing"]}," ",{p:[14,5,783],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.filter_type"],s:'_0==0?"selected":null'},p:[14,23,801]}],action:"filter",params:'{"mode": 0}'},f:["Plasma"]}," ",{p:[16,5,916],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.filter_type"],s:'_0==1?"selected":null'},p:[16,23,934]}],action:"filter",params:'{"mode": 1}'},f:["O2"]}," ",{p:[18,5,1045],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.filter_type"],s:'_0==2?"selected":null'},p:[18,23,1063]}],action:"filter",params:'{"mode": 2}'},f:["N2"]}," ",{p:[20,5,1174],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.filter_type"],s:'_0==3?"selected":null'},p:[20,23,1192]}],action:"filter",params:'{"mode": 3}'},f:["CO2"]}," ",{p:[22,5,1304],t:7,e:"ui-button",a:{state:[{t:2,x:{r:["data.filter_type"],s:'_0==4?"selected":null'},p:[22,23,1322]}],action:"filter",params:'{"mode": 4}'},f:["N2O"]}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],32:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,3,16],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[3,5,48],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[3,22,65]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[3,66,109]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[4,22,164]}]}]}," ",{p:[6,3,223],t:7,e:"ui-section",a:{label:"Output Pressure"},f:[{p:[7,5,265],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "custom"}'},f:["Set"]}," ",{p:[8,5,361],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.set_pressure","data.max_pressure"],s:'_0==_1?"disabled":null'},p:[8,35,391]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}," ",{p:[9,5,523],t:7,e:"span",a:{"class":"buttoninfo"},f:[{t:2,x:{r:["adata.set_pressure"],s:"Math.round(_0)"},p:[9,30,548]}," kPa"]}]}," ",{p:[11,3,614],t:7,e:"ui-section",a:{label:"Node 1"},f:[{p:[12,5,647],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.node1_concentration"],s:'_0==0?"disabled":null'},p:[12,44,686]}],action:"node1",params:'{"concentration": -0.1}'}}," ",{p:[14,5,803],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.node1_concentration"],s:'_0==0?"disabled":null'},p:[14,39,837]}],action:"node1",params:'{"concentration": -0.01}'}}," ",{p:[16,5,955],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.node1_concentration"],s:'_0==100?"disabled":null'},p:[16,38,988]}], +action:"node1",params:'{"concentration": 0.01}'}}," ",{p:[18,5,1107],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.node1_concentration"],s:'_0==100?"disabled":null'},p:[18,43,1145]}],action:"node1",params:'{"concentration": 0.1}'}}," ",{p:[20,5,1263],t:7,e:"span",a:{"class":"buttoninfo"},f:[{t:2,x:{r:["adata.node1_concentration"],s:"Math.round(_0)"},p:[20,30,1288]},"%"]}]}," ",{p:[22,3,1358],t:7,e:"ui-section",a:{label:"Node 2"},f:[{p:[23,5,1391],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.node2_concentration"],s:'_0==0?"disabled":null'},p:[23,44,1430]}],action:"node2",params:'{"concentration": -0.1}'}}," ",{p:[25,5,1547],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.node2_concentration"],s:'_0==0?"disabled":null'},p:[25,39,1581]}],action:"node2",params:'{"concentration": -0.01}'}}," ",{p:[27,5,1699],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.node2_concentration"],s:'_0==100?"disabled":null'},p:[27,38,1732]}],action:"node2",params:'{"concentration": 0.01}'}}," ",{p:[29,5,1851],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.node2_concentration"],s:'_0==100?"disabled":null'},p:[29,43,1889]}],action:"node2",params:'{"concentration": 0.1}'}}," ",{p:[31,5,2007],t:7,e:"span",a:{"class":"buttoninfo"},f:[{t:2,x:{r:["adata.node2_concentration"],s:"Math.round(_0)"},p:[31,30,2032]},"%"]}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],33:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",f:[{p:[2,3,16],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[3,5,48],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[3,22,65]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[3,66,109]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[4,22,164]}]}]}," ",{t:4,f:[{p:[7,5,250],t:7,e:"ui-section",a:{label:"Transfer Rate"},f:[{p:[8,7,292],t:7,e:"ui-button",a:{icon:"pencil",action:"transfer",params:'{"rate": "custom"}'},f:["Set"]}," ",{p:[9,7,386],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.transfer_rate","data.max_rate"],s:'_0==_1?"disabled":null'},p:[9,37,416]}],action:"transfer",params:'{"rate": "max"}'},f:["Max"]}," ",{p:[10,7,543],t:7,e:"span",a:{"class":"buttoninfo"},f:[{t:2,x:{r:["adata.transfer_rate"],s:"Math.round(_0)"},p:[10,32,568]}," L/s"]}]}],n:50,r:"data.max_rate",p:[6,3,223]},{t:4,n:51,f:[{p:[13,5,651],t:7,e:"ui-section",a:{label:"Output Pressure"},f:[{p:[14,7,695],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "custom"}'},f:["Set"]}," ",{p:[15,7,793],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.set_pressure","data.max_pressure"],s:'_0==_1?"disabled":null'},p:[15,37,823]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}," ",{p:[16,7,957],t:7,e:"span",a:{"class":"buttoninfo"},f:[{t:2,x:{r:["adata.set_pressure"],s:"Math.round(_0)"},p:[16,32,982]}," kPa"]}]}],r:"data.max_rate"}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],34:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-notice",f:[{p:[2,3,15],t:7,e:"span",f:["The regulator ",{t:2,x:{r:["data.hasHoldingTank"],s:'_0?"is":"is not"'},p:[2,23,35]}," connected to a tank."]}]}," ",{p:{button:[{p:[6,5,185],t:7,e:"ui-button",a:{icon:"pencil",state:[{t:2,x:{r:["data.canLabel"],s:'_0?null:"disabled"'},p:[6,37,217]}],action:"relable"},f:["Relabel"]}]},t:7,e:"ui-display",a:{title:"Canister",button:0},f:[" ",{p:[8,3,312],t:7,e:"ui-section",a:{label:"Pressure"},f:[{p:[9,5,347],t:7,e:"span",f:[{t:2,x:{r:["adata.tankPressure"],s:"Math.round(_0)"},p:[9,11,353]}," kPa"]}]}," ",{p:[11,3,419],t:7,e:"ui-section",a:{label:"Port"},f:[{p:[12,5,450],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.portConnected"],s:'_0?"good":"average"'},p:[12,18,463]}]},f:[{t:2,x:{r:["data.portConnected"],s:'_0?"Connected":"Not Connected"'},p:[12,63,508]}]}]}]}," ",{p:[15,1,603],t:7,e:"ui-display",a:{title:"Valve"},f:[{p:[16,3,633],t:7,e:"ui-section",a:{label:"Release Pressure"},f:[{p:[17,5,676],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.minReleasePressure",p:[17,18,689]}],max:[{t:2,r:"data.maxReleasePressure",p:[17,52,723]}],value:[{t:2,r:"data.releasePressure",p:[18,14,766]}]},f:[{t:2,x:{r:["adata.releasePressure"],s:"Math.round(_0)"},p:[18,40,792]}," kPa"]}]}," ",{p:[20,3,863],t:7,e:"ui-section",a:{label:"Pressure Regulator"},f:[{p:[21,5,908],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.releasePressure","data.defaultReleasePressure"],s:'_0!=_1?null:"disabled"'},p:[21,38,941]}],action:"pressure",params:'{"pressure": "reset"}'},f:["Reset"]}," ",{p:[23,5,1097],t:7,e:"ui-button",a:{icon:"minus",state:[{t:2,x:{r:["data.releasePressure","data.minReleasePressure"],s:'_0>_1?null:"disabled"'},p:[23,36,1128]}],action:"pressure",params:'{"pressure": "min"}'},f:["Min"]}," ",{p:[25,5,1275],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "custom"}'},f:["Set"]}," ",{p:[26,5,1371],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.releasePressure","data.maxReleasePressure"],s:'_0<_1?null:"disabled"'},p:[26,35,1401]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}]}," ",{p:[29,3,1563],t:7,e:"ui-section",a:{label:"Valve"},f:[{p:[30,5,1595],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.valveOpen"],s:'_0?"unlock":"lock"'},p:[30,22,1612]}],style:[{t:2,x:{r:["data.valveOpen","data.hasHoldingTank"],s:'_0?_1?"caution":"danger":null'},p:[31,14,1666]}],action:"valve"},f:[{t:2,x:{r:["data.valveOpen"],s:'_0?"Open":"Closed"'},p:[32,22,1760]}]}]}]}," ",{p:{button:[{t:4,f:[{p:[38,7,1948],t:7,e:"ui-button",a:{icon:"eject",style:[{t:2,x:{r:["data.valveOpen"],s:'_0?"danger":null'},p:[38,38,1979]}],action:"eject"},f:["Eject"]}],n:50,r:"data.hasHoldingTank",p:[37,5,1913]}]},t:7,e:"ui-display",a:{title:"Holding Tank",button:0},f:[" ",{t:4,f:[{p:[42,3,2113],t:7,e:"ui-section",a:{label:"Label"},f:[{t:2,r:"data.holdingTank.name",p:[43,4,2144]}]}," ",{p:[45,3,2190],t:7,e:"ui-section",a:{label:"Pressure"},f:[{t:2,x:{r:["adata.holdingTank.tankPressure"],s:"Math.round(_0)"},p:[46,4,2224]}," kPa"]}],n:50,r:"data.hasHoldingTank",p:[41,3,2082]},{t:4,n:51,f:[{p:[49,3,2306],t:7,e:"ui-section",f:[{p:[50,4,2323],t:7,e:"span",a:{"class":"average"},f:["No Holding Tank"]}]}],r:"data.hasHoldingTank"}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],35:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Status"},f:[{p:[2,3,31],t:7,e:"ui-section",a:{label:"Energy"},f:[{p:[3,5,64],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.maxEnergy",p:[3,26,85]}],value:[{t:2,r:"data.energy",p:[3,53,112]}]},f:[{t:2,x:{r:["adata.energy"],s:"Math.fixed(_0)"},p:[3,70,129]}," Units"]}]}]}," ",{p:{button:[{t:4,f:[{p:[9,7,315],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.amount","."],s:'_0==_1?"selected":null'},p:[9,37,345]}],action:"amount",params:['{"amount": ',{t:2,r:".",p:[9,114,422]},"}"]},f:[{t:2,r:".",p:[9,122,430]}]}],n:52,r:"data.beakerTransferAmounts",p:[8,5,271]}]},t:7,e:"ui-display",a:{title:"Dispense",button:0},f:[" ",{p:[12,3,482],t:7,e:"ui-section",f:[{t:4,f:[{p:[14,7,532],t:7,e:"ui-button",a:{grid:0,icon:"tint",action:"dispense",params:['{"reagent": "',{t:2,r:"id",p:[14,74,599]},'"}']},f:[{t:2,r:"title",p:[14,84,609]}]}],n:52,r:"data.chemicals",p:[13,5,500]}]}]}," ",{p:{button:[{t:4,f:[{p:[21,7,786],t:7,e:"ui-button",a:{icon:"minus",action:"remove",params:['{"amount": ',{t:2,r:".",p:[21,66,845]},"}"]},f:[{t:2,r:".",p:[21,74,853]}]}],n:52,r:"data.beakerTransferAmounts",p:[20,5,742]}," ",{p:[23,5,891],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[23,36,922]}],action:"eject"},f:["Eject"]}]},t:7,e:"ui-display",a:{title:"Beaker",button:0},f:[" ",{p:[25,3,1019],t:7,e:"ui-section",a:{label:"Contents"},f:[{t:4,f:[{p:[27,7,1089],t:7,e:"span",f:[{t:2,x:{r:["adata.beakerCurrentVolume"],s:"Math.round(_0)"},p:[27,13,1095]},"/",{t:2,r:"data.beakerMaxVolume",p:[27,55,1137]}," Units"]}," ",{p:[28,7,1182],t:7,e:"br"}," ",{t:4,f:[{p:[30,9,1235],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[30,52,1278]}," units of ",{t:2,r:"name",p:[30,87,1313]}]},{p:[30,102,1328],t:7,e:"br"}],n:52,r:"adata.beakerContents",p:[29,7,1195]},{t:4,n:51,f:[{p:[32,9,1359],t:7,e:"span",a:{"class":"bad"},f:["Beaker Empty"]}],r:"adata.beakerContents"}],n:50,r:"data.isBeakerLoaded",p:[26,5,1054]},{t:4,n:51,f:[{p:[35,7,1435],t:7,e:"span",a:{"class":"average"},f:["No Beaker"]}],r:"data.isBeakerLoaded"}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],36:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Thermostat"},f:[{p:[2,3,35],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[3,5,67],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isActive"],s:'_0?"power-off":"close"'},p:[3,22,84]}],style:[{t:2,x:{r:["data.isActive"],s:'_0?"selected":null'},p:[4,10,137]}],state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[5,10,186]}],action:"power"},f:[{t:2,x:{r:["data.isActive"],s:'_0?"On":"Off"'},p:[6,18,249]}]}]}," ",{p:[8,3,314],t:7,e:"ui-section",a:{label:"Target"},f:[{p:[9,4,346],t:7,e:"ui-button",a:{icon:"pencil",action:"temperature"},f:[{t:2,x:{r:["adata.targetTemp"],s:"Math.round(_0)"},p:[9,50,392]}," K"]}]}]}," ",{p:{button:[{p:[14,5,535],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[14,36,566]}],action:"eject"},f:["Eject"]}]},t:7,e:"ui-display",a:{title:"Beaker",button:0},f:[" ",{p:[16,3,663],t:7,e:"ui-section",a:{label:"Contents"},f:[{t:4,f:[{p:[18,7,733],t:7,e:"span",f:["Temperature: ",{t:2,x:{r:["adata.currentTemp"],s:"Math.round(_0)"},p:[18,26,752]}," K"]}," ",{p:[19,7,802],t:7,e:"br"}," ",{t:4,f:[{p:[21,9,856],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[21,52,899]}," units of ",{t:2,r:"name",p:[21,87,934]}]},{p:[21,102,949],t:7,e:"br"}],n:52,r:"adata.beakerContents",p:[20,7,816]},{t:4,n:51,f:[{p:[23,9,980],t:7,e:"span",a:{"class":"bad"},f:["Beaker Empty"]}],r:"adata.beakerContents"}],n:50,r:"data.isBeakerLoaded",p:[17,5,698]},{t:4,n:51,f:[{p:[26,7,1056],t:7,e:"span",a:{"class":"average"},f:["No Beaker"]}],r:"data.isBeakerLoaded"}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],37:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(t){t.exports={computed:{cellTemperatureState:function(){var t;return t=this.get("data.cellTemperature"),225>t?"good":273.15>t?"average":"bad"},occupantStatState:function(){var t;return t=this.get("data.occupant.stat"),0===t?"good":1===t?"average":"bad"}}}}(i),i.exports.template={v:3,t:[" ",{p:[16,1,414],t:7,e:"ui-display",a:{title:"Occupant"},f:[{p:[17,3,447],t:7,e:"ui-section",a:{label:"Occupant"},f:[{p:[18,3,480],t:7,e:"span",f:[{t:2,x:{r:["data.occupant.name"],s:'_0?_0:"No Occupant"'},p:[18,9,486]}]}]}," ",{t:4,f:[{p:[21,5,603],t:7,e:"ui-section",a:{label:"State"},f:[{p:[22,7,637],t:7,e:"span",a:{"class":[{t:2,r:"occupantStatState",p:[22,20,650]}]},f:[{t:2,x:{r:["data.occupant.stat"],s:'_0==0?"Conscious":_0==1?"Unconcious":"Dead"'},p:[22,43,673]}]}]}," ",{p:[24,4,794],t:7,e:"ui-section",a:{label:"Temperature"},f:[{p:[25,6,833],t:7,e:"span",f:[{t:2,x:{r:["adata.occupant.bodyTemperature"],s:"Math.round(_0)"},p:[25,12,839]}," K"]}]}," ",{p:[27,5,918],t:7,e:"ui-section",a:{label:"Health"},f:[{p:[28,7,953],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.occupant.minHealth",p:[28,20,966]}],max:[{t:2,r:"data.occupant.maxHealth",p:[28,54,1e3]}],value:[{t:2,r:"data.occupant.health",p:[28,90,1036]}],state:[{t:2,x:{r:["data.occupant.health"],s:'_0>=0?"good":"average"'},p:[29,16,1078]}]},f:[{t:2,x:{r:["adata.occupant.health"],s:"Math.round(_0)"},p:[29,68,1130]}]}]}," ",{t:4,f:[{p:[32,7,1367],t:7,e:"ui-section",a:{label:[{t:2,r:"label",p:[32,26,1386]}]},f:[{p:[33,9,1407],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.occupant.maxHealth",p:[33,30,1428]}],value:[{t:2,rx:{r:"data.occupant",m:[{t:30,n:"type"}]},p:[33,66,1464]}],state:"bad"},f:[{t:2,x:{r:["type","adata.occupant"],s:"Math.round(_1[_0])"},p:[33,103,1501]}]}]}],n:52,x:{r:[],s:'[{label:"Brute",type:"bruteLoss"},{label:"Respiratory",type:"oxyLoss"},{label:"Toxin",type:"toxLoss"},{label:"Burn",type:"fireLoss"}]'},p:[31,5,1201]}],n:50,r:"data.hasOccupant",p:[20,3,573]}]}," ",{p:[38,1,1610],t:7,e:"ui-display",a:{title:"Cell"},f:[{p:[39,3,1639],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[40,5,1671],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isOperating"],s:'_0?"power-off":"close"'},p:[40,22,1688]}],style:[{t:2,x:{r:["data.isOperating"],s:'_0?"selected":null'},p:[41,14,1748]}],state:[{t:2,x:{r:["data.isOpen"],s:'_0?"disabled":null'},p:[42,14,1804]}],action:"power"},f:[{t:2,x:{r:["data.isOperating"],s:'_0?"On":"Off"'},p:[43,22,1863]}]}]}," ",{p:[45,3,1931],t:7,e:"ui-section",a:{label:"Temperature"},f:[{p:[46,3,1967],t:7,e:"span",a:{"class":[{t:2,r:"cellTemperatureState",p:[46,16,1980]}]},f:[{t:2,x:{r:["adata.cellTemperature"],s:"Math.round(_0)"},p:[46,42,2006]}," K"]}]}," ",{p:[48,2,2071],t:7,e:"ui-section",a:{label:"Door"},f:[{p:[49,5,2102],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.isOpen"],s:'_0?"unlock":"lock"'},p:[49,22,2119]}],action:"door"},f:[{t:2,x:{r:["data.isOpen"],s:'_0?"Open":"Closed"'},p:[49,73,2170]}]}," ",{p:[50,5,2223],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.autoEject"],s:'_0?"sign-out":"sign-in"'},p:[50,22,2240]}],action:"autoeject"},f:[{t:2,x:{r:["data.autoEject"],s:'_0?"Auto":"Manual"'},p:[50,86,2304]}]}]}]}," ",{p:{button:[{p:[55,5,2450],t:7,e:"ui-button",a:{icon:"eject",state:[{t:2,x:{r:["data.isBeakerLoaded"],s:'_0?null:"disabled"'},p:[55,36,2481]}],action:"ejectbeaker"},f:["Eject"]}]},t:7,e:"ui-display",a:{title:"Beaker",button:0},f:[" ",{p:[57,3,2584],t:7,e:"ui-section",a:{label:"Contents"},f:[{t:4,f:[{t:4,f:[{p:[60,9,2694],t:7,e:"span",a:{"class":"highlight"},t0:"fade",f:[{t:2,x:{r:["volume"],s:"Math.fixed(_0,2)"},p:[60,52,2737]}," units of ",{t:2,r:"name",p:[60,87,2772]}]},{p:[60,102,2787],t:7,e:"br"}],n:52,r:"adata.beakerContents",p:[59,7,2654]},{t:4,n:51,f:[{p:[62,9,2818],t:7,e:"span",a:{"class":"bad"},f:["Beaker Empty"]}],r:"adata.beakerContents"}],n:50,r:"data.isBeakerLoaded",p:[58,5,2619]},{t:4,n:51,f:[{p:[65,7,2894],t:7,e:"span",a:{"class":"average"},f:["No Beaker"]}],r:"data.isBeakerLoaded"}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],38:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-notice",f:[{p:[2,3,15],t:7,e:"span",f:["The requested interface (",{t:2,r:"config.interface",p:[2,34,46]},") was not found. Does it exist?"]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],39:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(t){t.exports={computed:{capacityPercentState:function(){var t;return t=this.get("data.capacityPercent"),t>50?"good":t>15?"average":"bad"},inputState:function(){var t,e;return t=this.get("data.capacityPercent"),e=this.get("data.inputting"),t>=100?"good":e?"average":"bad"},outputState:function(){var t,e;return t=this.get("data.charge"),e=this.get("data.outputting"),e?"good":t>0?"average":"bad"}}}}(i),i.exports.template={v:3,t:[" ",{p:[23,1,624],t:7,e:"ui-display",a:{title:"Storage"},f:[{p:[24,3,656],t:7,e:"ui-section",a:{label:"Stored Energy"},f:[{p:[25,5,696],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.capacityPercent",p:[25,38,729]}],state:[{t:2,r:"capacityPercentState",p:[25,71,762]}]},f:[{t:2,x:{r:["adata.capacityPercent"],s:"Math.fixed(_0)"},p:[25,97,788]},"%"]}]}]}," ",{p:[28,1,869],t:7,e:"ui-display",a:{title:"Input"},f:[{p:[29,3,899],t:7,e:"ui-section",a:{label:"Charge Mode"},f:[{p:[30,5,937],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.inputAttempt"],s:'_0?"refresh":"close"'},p:[30,22,954]}],style:[{t:2,x:{r:["data.inputAttempt"],s:'_0?"selected":null'},p:[30,74,1006]}],action:"tryinput"},f:[{t:2,x:{r:["data.inputAttempt"],s:'_0?"Auto":"Off"'},p:[31,25,1074]}]},"   [",{p:[33,6,1143],t:7,e:"span",a:{"class":[{t:2,r:"inputState",p:[33,19,1156]}]},f:[{t:2,x:{r:["data.capacityPercent","data.inputting"],s:'_0>=100?"Fully Charged":_1?"Charging":"Not Charging"'},p:[33,35,1172]}]},"]"]}," ",{p:[35,3,1296],t:7,e:"ui-section",a:{label:"Target Input"},f:[{p:[36,5,1335],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.inputLevelMax",p:[36,26,1356]}],value:[{t:2,r:"data.inputLevel",p:[36,57,1387]}]},f:[{t:2,x:{r:["adata.inputLevel"],s:"Math.round(_0)"},p:[36,78,1408]},"W"]}]}," ",{p:[38,3,1470],t:7,e:"ui-section",a:{label:"Adjust Input"},f:[{p:[39,5,1509],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.inputLevel"],s:'_0==0?"disabled":null'},p:[39,44,1548]}],action:"input",params:'{"input": "min"}'}}," ",{p:[40,5,1642],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.inputLevel"],s:'_0==0?"disabled":null'},p:[40,39,1676]}],action:"input",params:'{"input": "minus"}'}}," ",{p:[41,5,1772],t:7,e:"ui-button",a:{icon:"pencil",action:"input",params:'{"input": "custom"}'},f:["Set"]}," ",{p:[42,5,1862],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.inputLevel","data.inputLevelMax"],s:'_0==_1?"disabled":null'},p:[42,38,1895]}],action:"input",params:'{"input": "plus"}'}}," ",{p:[43,5,2007],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.inputLevel","data.inputLevelMax"],s:'_0==_1?"disabled":null'},p:[43,43,2045]}],action:"input",params:'{"input": "max"}'}}]}," ",{p:[45,3,2171],t:7,e:"ui-section",a:{label:"Available"},f:[{p:[46,3,2205],t:7,e:"span",f:[{t:2,x:{r:["adata.inputAvailable"],s:"Math.round(_0)"},p:[46,9,2211]},"W"]}]}]}," ",{p:[49,1,2288],t:7,e:"ui-display",a:{title:"Output"},f:[{p:[50,3,2319],t:7,e:"ui-section",a:{label:"Output Mode"},f:[{p:[51,5,2357],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.outputAttempt"],s:'_0?"power-off":"close"'},p:[51,22,2374]}],style:[{t:2,x:{r:["data.outputAttempt"],s:'_0?"selected":null'},p:[51,77,2429]}],action:"tryoutput"},f:[{t:2,x:{r:["data.outputAttempt"],s:'_0?"On":"Off"'},p:[52,26,2499]}]},"   [",{p:[54,6,2567],t:7,e:"span",a:{"class":[{t:2,r:"outputState",p:[54,19,2580]}]},f:[{t:2,x:{r:["data.outputting","data.charge"],s:'_0?"Sending":_1>0?"Not Sending":"No Charge"'},p:[54,36,2597]}]},"]"]}," ",{p:[56,3,2704],t:7,e:"ui-section",a:{label:"Target Output"},f:[{p:[57,5,2744],t:7,e:"ui-bar",a:{min:"0",max:[{t:2,r:"data.outputLevelMax",p:[57,26,2765]}],value:[{t:2,r:"data.outputLevel",p:[57,58,2797]}]},f:[{t:2,x:{r:["adata.outputLevel"],s:"Math.round(_0)"},p:[57,80,2819]},"W"]}]}," ",{p:[59,3,2882],t:7,e:"ui-section",a:{label:"Adjust Output"},f:[{p:[60,5,2922],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.outputLevel"],s:'_0==0?"disabled":null'},p:[60,44,2961]}],action:"output",params:'{"output": "min"}'}}," ",{p:[61,5,3058],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.outputLevel"],s:'_0==0?"disabled":null'},p:[61,39,3092]}],action:"output",params:'{"output": "minus"}'}}," ",{p:[62,5,3191],t:7,e:"ui-button",a:{icon:"pencil",action:"output",params:'{"output": "custom"}'},f:["Set"]}," ",{p:[63,5,3283],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.outputLevel","data.outputLevelMax"],s:'_0==_1?"disabled":null'},p:[63,38,3316]}],action:"output",params:'{"output": "plus"}'}}," ",{p:[64,5,3432],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.outputLevel","data.outputLevelMax"],s:'_0==_1?"disabled":null'},p:[64,43,3470]}],action:"output",params:'{"output": "max"}'}}]}," ",{p:[66,3,3600],t:7,e:"ui-section",a:{label:"Outputting"},f:[{p:[67,3,3635],t:7,e:"span",f:[{t:2,x:{r:["adata.outputUsed"],s:"Math.round(_0)"},p:[67,9,3641]},"W"]}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],40:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};i.exports.template={v:3,t:[{p:[1,1,0],t:7,e:"ui-display",a:{title:"Status"},f:[{p:[2,3,31],t:7,e:"ui-section",a:{label:"Generated Power"},f:[{t:2,x:{r:["adata.generated"],s:"Math.round(_0)"},p:[3,5,73]},"W"]}," ",{p:[5,3,126],t:7,e:"ui-section",a:{label:"Orientation"},f:[{p:[6,5,164],t:7,e:"span",f:[{t:2,x:{r:["adata.angle"],s:"Math.round(_0)"},p:[6,11,170]},"° (",{t:2,r:"data.direction",p:[6,45,204]},")"]}]}," ",{p:[8,3,251],t:7,e:"ui-section",a:{label:"Adjust Angle"},f:[{p:[9,5,290],t:7,e:"ui-button",a:{icon:"step-backward",action:"control",params:'{"cdir": -15}'},f:["15°"]}," ",{p:[10,5,387],t:7,e:"ui-button",a:{icon:"backward",action:"control",params:'{"cdir": -5}'},f:["5°"]}," ",{p:[11,5,477],t:7,e:"ui-button",a:{icon:"forward",action:"control",params:'{"cdir": 5}'},f:["5°"]}," ",{p:[12,5,565],t:7,e:"ui-button",a:{icon:"step-forward",action:"control",params:'{"cdir": 15}'},f:["15°"]}]}]}," ",{p:[15,1,687],t:7,e:"ui-display",a:{title:"Tracking"},f:[{p:[16,3,720],t:7,e:"ui-section",a:{label:"Tracker Mode"},f:[{p:[17,5,759],t:7,e:"ui-button",a:{icon:"close",state:[{t:2,x:{r:["data.tracking_state"],s:'_0==0?"selected":null'},p:[17,36,790]}],action:"tracking",params:'{"mode": 0}'},f:["Off"]}," ",{p:[19,5,907],t:7,e:"ui-button",a:{icon:"clock-o",state:[{t:2,x:{r:["data.tracking_state"],s:'_0==1?"selected":null'},p:[19,38,940]}],action:"tracking",params:'{"mode": 1}'},f:["Timed"]}," ",{p:[21,5,1059],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.connected_tracker","data.tracking_state"],s:'_0?_1==2?"selected":null:"disabled"'},p:[21,38,1092]}],action:"tracking",params:'{"mode": 2}'},f:["Auto"]}]}," ",{p:[24,3,1262],t:7,e:"ui-section",a:{label:"Tracking Rate"},f:[{p:[25,3,1300],t:7,e:"span",f:[{t:2,x:{r:["adata.tracking_rate"],s:"Math.round(_0)"},p:[25,9,1306]},"°/h (",{t:2,r:"data.rotating_way",p:[25,53,1350]},")"]}]}," ",{p:[27,3,1399],t:7,e:"ui-section",a:{label:"Adjust Rate"},f:[{p:[28,5,1437],t:7,e:"ui-button",a:{icon:"fast-backward",action:"control",params:'{"tdir": -180}'},f:["180°"]}," ",{p:[29,5,1536],t:7,e:"ui-button",a:{icon:"step-backward",action:"control",params:'{"tdir": -30}'},f:["30°"]}," ",{p:[30,5,1633],t:7,e:"ui-button",a:{icon:"backward",action:"control",params:'{"tdir": -5}'},f:["5°"]}," ",{p:[31,5,1723],t:7,e:"ui-button",a:{icon:"forward",action:"control",params:'{"tdir": 5}'},f:["5°"]}," ",{p:[32,5,1811],t:7,e:"ui-button",a:{icon:"step-forward",action:"control",params:'{"tdir": 30}'},f:["30°"]}," ",{p:[33,5,1906],t:7,e:"ui-button",a:{icon:"fast-forward",action:"control",params:'{"tdir": 180}'},f:["180°"]}]}]}," ",{p:{button:[{p:[38,5,2094],t:7,e:"ui-button",a:{icon:"refresh",action:"refresh"},f:["Refresh"]}]},t:7,e:"ui-display",a:{title:"Devices",button:0},f:[" ",{p:[40,2,2175],t:7,e:"ui-section",a:{label:"Solar Tracker"},f:[{p:[41,5,2215],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.connected_tracker"],s:'_0?"good":"bad"'},p:[41,18,2228]}]},f:[{t:2,x:{r:["data.connected_tracker"],s:'_0?"":"Not "'},p:[41,63,2273]},"Found"]}]}," ",{p:[43,2,2344],t:7,e:"ui-section",a:{label:"Solar Panels"},f:[{p:[44,3,2381],t:7,e:"span",a:{"class":[{t:2,x:{r:["data.connected_panels"],s:'_0?"good":"bad"'},p:[44,16,2394]}]},f:[{t:2,x:{r:["adata.connected_panels"],s:"Math.round(_0)"},p:[44,60,2438]}," Panels Connected"]}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],41:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(e){e.exports={data:{text:t("../text")}}}(i),i.exports.template={v:3,t:[" ",{p:{button:[{t:4,f:[{p:[10,7,194],t:7,e:"ui-button",a:{icon:"eject",action:"eject"},f:["Eject"]}],n:50,r:"data.open",p:[9,5,169]}]},t:7,e:"ui-display",a:{title:"Power",button:0},f:[" ",{p:[13,3,283],t:7,e:"ui-section",a:{label:"Power"},f:[{p:[14,5,315],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.on"],s:'_0?"power-off":"close"'},p:[14,22,332]}],style:[{t:2,x:{r:["data.on"],s:'_0?"selected":null'},p:[15,14,383]}],action:"power"},f:[{t:2,x:{r:["data.on"],s:'_0?"On":"Off"'},p:[16,22,438]}]}]}," ",{p:[18,3,497],t:7,e:"ui-section",a:{label:"Cell"},f:[{t:4,f:[{p:[20,7,561],t:7,e:"ui-bar",a:{min:"0",max:"100",value:[{t:2,r:"data.powerLevel",p:[20,40,594]}]},f:[{t:2,x:{r:["adata.powerLevel"],s:"Math.fixed(_0)"},p:[20,61,615]},"%"]}],n:50,r:"data.hasPowercell",p:[19,5,528]},{t:4,n:51,f:[{p:[22,4,674],t:7,e:"span",a:{"class":"bad"},f:["No Cell"]}],r:"data.hasPowercell"}]}]}," ",{p:[26,1,751],t:7,e:"ui-display",a:{title:"Thermostat"},f:[{p:[27,3,786],t:7,e:"ui-section",a:{label:"Current Temperature"},f:[{p:[28,3,830],t:7,e:"span",f:[{t:2,x:{r:["adata.currentTemp"],s:"Math.round(_0)"},p:[28,9,836]},"°C"]}]}," ",{p:[30,2,901],t:7,e:"ui-section",a:{label:"Target Temperature"},f:[{p:[31,3,944],t:7,e:"span",f:[{t:2,x:{r:["adata.targetTemp"],s:"Math.round(_0)"},p:[31,9,950]},"°C"]}]}," ",{t:4,f:[{p:[34,2,1035],t:7,e:"ui-section",a:{label:"Adjust Target"},f:[{p:[35,7,1077],t:7,e:"ui-button",a:{icon:"fast-backward",state:[{t:2,x:{r:["data.targetTemp","data.minTemp"],s:'_0>_1?null:"disabled"'},p:[35,46,1116]}],action:"target",params:'{"target": -20}'}}," ",{p:[36,7,1222],t:7,e:"ui-button",a:{icon:"backward",state:[{t:2,x:{r:["data.targetTemp","data.minTemp"],s:'_0>_1?null:"disabled"'},p:[36,41,1256]}],action:"target",params:'{"target": -5}'}}," ",{p:[37,7,1361],t:7,e:"ui-button",a:{icon:"pencil",action:"target",params:'{"target": "custom"}'},f:["Set"]}," ",{p:[38,7,1455],t:7,e:"ui-button",a:{icon:"forward",state:[{t:2,x:{r:["data.targetTemp","data.maxTemp"],s:'_0<_1?null:"disabled"'},p:[38,40,1488]}],action:"target",params:'{"target": 5}'}}," ",{p:[39,7,1592],t:7,e:"ui-button",a:{icon:"fast-forward",state:[{t:2,x:{r:["data.targetTemp","data.maxTemp"],s:'_0<_1?null:"disabled"'},p:[39,45,1630]}],action:"target",params:'{"target": 20}'}}]}],n:50,r:"data.open",p:[33,3,1015]}," ",{p:[42,3,1759],t:7,e:"ui-section",a:{label:"Mode"},f:[{t:4,f:[{p:[44,7,1813],t:7,e:"ui-button",a:{icon:"long-arrow-up",state:[{t:2,x:{r:["data.mode"],s:'_0=="heat"?"selected":null'},p:[44,46,1852]}],action:"mode",params:'{"mode": "heat"}'},f:["Heat"]}," ",{p:[45,7,1961],t:7,e:"ui-button",a:{icon:"long-arrow-down",state:[{t:2,x:{r:["data.mode"],s:'_0=="cool"?"selected":null'},p:[45,48,2002]}],action:"mode",params:'{"mode": "cool"}'},f:["Cool"]}," ",{p:[46,7,2111],t:7,e:"ui-button",a:{icon:"arrows-v",state:[{t:2,x:{r:["data.mode"],s:'_0=="auto"?"selected":null'},p:[46,41,2145]}],action:"mode",params:'{"mode": "auto"}'},f:["Auto"]}],n:50,r:"data.open",p:[43,3,1788]},{t:4,n:51,f:[{p:[48,4,2263],t:7,e:"span",f:[{t:2,x:{r:["text","data.mode"],s:"_0.titleCase(_1)"},p:[48,10,2269]}]}],r:"data.open"}]}]}]},e.exports=r.extend(i.exports)},{"../text":45,"ractive/ractive.runtime":7}],42:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(t){t.exports={data:{tankPressureState:function(){var t;return t=this.get("data.tankPressureState"),t>=200?"good":t>=100?"average":"bad"}}}}(i),i.exports.template={v:3,t:[" ",{p:[11,1,255],t:7,e:"ui-notice",f:[{p:[12,3,270],t:7,e:"span",f:["The regulator ",{t:2,x:{r:["data.hasHoldingTank"],s:'_0?"is":"is not"'},p:[12,23,290]}," connected to a mask."]}]}," ",{p:[14,1,375],t:7,e:"ui-display",f:[{p:[15,3,391],t:7,e:"ui-section",a:{label:"Tank Pressure"},f:[{p:[16,7,433],t:7,e:"ui-bar",a:{min:"0",max:"1013",value:[{t:2,r:"data.tankPressure",p:[16,41,467]}],state:[{t:2,r:"tankPressureState",p:[17,16,506]}]},f:[{t:2,x:{r:["adata.tankPressure"],s:"Math.round(_0)"},p:[17,39,529]}," kPa"]}]}," ",{p:[19,3,597],t:7,e:"ui-section",a:{label:"Release Pressure"},f:[{p:[20,5,640],t:7,e:"ui-bar",a:{min:[{t:2,r:"data.minReleasePressure",p:[20,18,653]}],max:[{t:2,r:"data.maxReleasePressure",p:[20,52,687]}],value:[{t:2,r:"data.releasePressure",p:[21,14,730]}]},f:[{t:2,x:{r:["adata.releasePressure"],s:"Math.round(_0)"},p:[21,40,756]}," kPa"]}]}," ",{p:[23,3,827],t:7,e:"ui-section",a:{label:"Pressure Regulator"},f:[{p:[24,5,872],t:7,e:"ui-button",a:{icon:"refresh",state:[{t:2,x:{r:["data.releasePressure","data.defaultReleasePressure"],s:'_0!=_1?null:"disabled"'},p:[24,38,905]}],action:"pressure",params:'{"pressure": "reset"}'},f:["Reset"]}," ",{p:[26,5,1061],t:7,e:"ui-button",a:{icon:"minus",state:[{t:2,x:{r:["data.releasePressure","data.minReleasePressure"],s:'_0>_1?null:"disabled"'},p:[26,36,1092]}],action:"pressure",params:'{"pressure": "min"}'},f:["Min"]}," ",{p:[28,5,1239],t:7,e:"ui-button",a:{icon:"pencil",action:"pressure",params:'{"pressure": "custom"}'},f:["Set"]}," ",{p:[29,5,1335],t:7,e:"ui-button",a:{icon:"plus",state:[{t:2,x:{r:["data.releasePressure","data.maxReleasePressure"],s:'_0<_1?null:"disabled"'},p:[29,35,1365]}],action:"pressure",params:'{"pressure": "max"}'},f:["Max"]}]}," ",{p:[32,3,1527],t:7,e:"ui-section",a:{label:"Valve"},f:[{p:[33,5,1559],t:7,e:"ui-button",a:{icon:[{t:2,x:{r:["data.valveOpen"],s:'_0?"unlock":"lock"'},p:[33,22,1576]}],state:[{t:2,x:{r:["data.maskConnected"],s:'_0?null:"disabled"'},p:[33,69,1623]}],action:"valve"},f:[{t:2,x:{r:["data.valveOpen"],s:'_0?"Open":"Closed"'},p:[34,22,1689]}]}]}]}]},e.exports=r.extend(i.exports)},{"ractive/ractive.runtime":7}],43:[function(t,e,n){var r,i,a,o,s;t("ie8/build/ie8.max"),t("dom4/build/dom4.max"),t("es5-shim"),t("html5shiv"),t("./math"),r=t("ractive/ractive.runtime"),r.DEBUG=/minified/.test(function(t){}),i=t("webfontloader"),i.load({custom:{families:["FontAwesome"],urls:["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.5.0/css/font-awesome.min.css"],testStrings:{FontAwesome:""}}}),s=t("./tgui.ract"),window.initialize=function(t){return window.tgui?void 0:window.tgui=new s({el:"#container",data:function(){var e;return e=JSON.parse(t)}})},o=document.getElementById("data"),"{}"!==o.textContent?window.initialize(o.textContent):(a=t("./byond"),a.act(o.getAttribute("data-ref"),"tgui:initialize"),o.remove())},{"./byond":9,"./math":44,"./tgui.ract":46,"dom4/build/dom4.max":1,"es5-shim":2,html5shiv:3,"ie8/build/ie8.max":4,"ractive/ractive.runtime":7,webfontloader:8}],44:[function(t,e,n){Math.clamp=function(t,e,n){return Math.max(e,Math.min(t,n))},Math.fixed=function(t,e){return null==e&&(e=1),+(Math.round(t+"e"+e)+"e-"+e)}},{}],45:[function(t,e,n){e.exports={upperCaseFirst:function(t){return t[0].toUpperCase()+t.slice(1).toLowerCase()},titleCase:function(t){return t.replace(/\w\S*/g,this.upperCaseFirst)}}},{}],46:[function(t,e,n){var r=t("ractive/ractive.runtime"),i={exports:{}};!function(e){var n,r;n=t("./byond"),r=t("./dragresize"),e.exports={components:{"ui-bar":t("./components/bar"),"ui-button":t("./components/button"),"ui-display":t("./components/display"),"ui-notice":t("./components/notice"),"ui-section":t("./components/section"),"ui-subdisplay":t("./components/subdisplay")},events:{enter:t("ractive-events-keys").enter,space:t("ractive-events-keys").space},transitions:{fade:t("ractive-transitions-fade")},onconfig:function(){var e,n;return n=this.get("config.interface"),e={air_alarm:t("./interfaces/air_alarm.ract"),airlock_electronics:t("./interfaces/airlock_electronics.ract"),apc:t("./interfaces/apc.ract"),atmos_filter:t("./interfaces/atmos_filter.ract"),atmos_mixer:t("./interfaces/atmos_mixer.ract"),atmos_pump:t("./interfaces/atmos_pump.ract"),canister:t("./interfaces/canister.ract"),chem_dispenser:t("./interfaces/chem_dispenser.ract"),chem_heater:t("./interfaces/chem_heater.ract"),cryo:t("./interfaces/cryo.ract"),error:t("./interfaces/error.ract"),smes:t("./interfaces/smes.ract"),solar_control:t("./interfaces/solar_control.ract"),space_heater:t("./interfaces/space_heater.ract"),tanks:t("./interfaces/tanks.ract")},null!=e[n]?this.components["interface"]=e[n]:null==this.components["interface"]?this.components["interface"]=t("./interfaces/error"):void 0},oninit:function(){return this.on("titlebar.drag",function(){return this.toggle("drag"),!1}),this.on("resize.resize",function(){return this.toggle("resize"),!1}),document.addEventListener("mousemove",function(t){return function(e){return t.get("drag")?r.drag(t,e):t.get("resize")?r.resize(t,e):void 0; +}}(this)),document.addEventListener("mouseup",function(t){return function(e){var n,r;return(n=t.get("drag"))&&t.set("drag"),(r=t.get("resize"))&&t.set("resize"),n||r?(t.set("x"),t.set("y")):void 0}}(this))},onrender:function(){return this.observe("config.style",function(t,e,n){return null!=e&&(document.body.classList.remove(e),this.el.classList.remove(e)),null!=t?(this.el.classList.add(t),document.body.classList.add(t)):void 0})},oncomplete:function(){return n.winset("mapwindow.map","focus",!0)}}}(i),i.exports.template={v:3,t:[" "," "," "," ",{p:[51,1,2057],t:7,e:"titlebar",f:[{t:3,r:"config.title",p:[51,11,2067]}]}," ",{p:[52,1,2098],t:7,e:"main",f:[{p:[53,3,2108],t:7,e:"warnings"}," ",{p:[54,3,2123],t:7,e:"interface"}]}," ",{p:[56,1,2146],t:7,e:"resize"}]},i.exports.components=i.exports.components||{};var a={warnings:t("./components/warnings.ract"),titlebar:t("./components/titlebar.ract"),resize:t("./components/resize.ract")};for(var o in a)a.hasOwnProperty(o)&&(i.exports.components[o]=a[o]);e.exports=r.extend(i.exports)},{"./byond":9,"./components/bar":10,"./components/button":11,"./components/display":12,"./components/notice":13,"./components/resize.ract":14,"./components/section":15,"./components/subdisplay":16,"./components/titlebar.ract":17,"./components/warnings.ract":18,"./dragresize":20,"./interfaces/air_alarm.ract":21,"./interfaces/airlock_electronics.ract":29,"./interfaces/apc.ract":30,"./interfaces/atmos_filter.ract":31,"./interfaces/atmos_mixer.ract":32,"./interfaces/atmos_pump.ract":33,"./interfaces/canister.ract":34,"./interfaces/chem_dispenser.ract":35,"./interfaces/chem_heater.ract":36,"./interfaces/cryo.ract":37,"./interfaces/error":38,"./interfaces/error.ract":38,"./interfaces/smes.ract":39,"./interfaces/solar_control.ract":40,"./interfaces/space_heater.ract":41,"./interfaces/tanks.ract":42,"ractive-events-keys":5,"ractive-transitions-fade":6,"ractive/ractive.runtime":7}]},{},[43]); \ No newline at end of file diff --git a/tgui/scripts/components/button.ract b/tgui/scripts/components/button.ract index 97c3eabe236..80e0551d72d 100644 --- a/tgui/scripts/components/button.ract +++ b/tgui/scripts/components/button.ract @@ -15,9 +15,9 @@ component.exports = state = @get "state" style = @get "style" if enabled - if not state then "normal #{[style]}" - else "#{state}" - else "disabled" + if not state then "active normal #{[style]}" + else "inactive #{state}" + else "inactive disabled" oninit: -> @on "press", (event) -> event.node.blur() diff --git a/tgui/scripts/interfaces/apc.ract b/tgui/scripts/interfaces/apc.ract index 9afecdb8b7b..dc77d02e098 100644 --- a/tgui/scripts/interfaces/apc.ract +++ b/tgui/scripts/interfaces/apc.ract @@ -70,9 +70,9 @@ component.exports = {{/if}}
- {{#each adata.powerChannels}} + {{#each data.powerChannels}} -
{{Math.round(powerLoad)}} W
+
{{Math.round(adata.powerChannels[@index].powerLoad)}} W
{{status >= 2 ? "On" : "Off"}}
[{{status == 1 || status == 3 ? "Auto" : "Manual"}}]
diff --git a/tgui/styles/components/button.styl b/tgui/styles/components/button.styl index b65bdbdd153..554193488be 100644 --- a/tgui/styles/components/button.styl +++ b/tgui/styles/components/button.styl @@ -1,3 +1,14 @@ +buttoncolor(selector, color) + &.{selector} + transition: background-color 0.5s + background-color: color + &.{selector}.active:hover, + &.{selector}.active:focus + transition: background-color 0.25s + background-color: lighten(color, colors.hover) + outline: 0 + + span.button @extend $fontReset display: inline-block @@ -10,20 +21,11 @@ span.button .fa padding-right: 2px - transition: background-color 0.25s, box-shadow 0.25s - &.normal - background-color: colors.normal - &:hover, &:focus - outline: 0 - box-shadow: inset 0 0 100px 100px alpha(#fff, colors.hover) - &.disabled - background-color: colors.disabled - &.selected - background-color: colors.selected - &.caution - background-color: colors.caution - &.danger - background-color: colors.danger + buttoncolor(normal, colors.normal) + buttoncolor(disabled, colors.disabled) + buttoncolor(selected, colors.selected) + buttoncolor(caution, colors.caution) + buttoncolor(danger, colors.danger) &.gridable width: 125px From 869354f105897c7b95fb0b7ce0773f3c81a9180c Mon Sep 17 00:00:00 2001 From: Kyle Spier-Swenson Date: Mon, 4 Jan 2016 23:30:15 -0800 Subject: [PATCH 160/310] Revert commit f6d13b93 (blame rr) This crashes the client (burn code sets burn_state to ON_FIRE) setting it back to FIRE_PROOF kept it from detecting it was already on fire, so it kept re-adding the overlay --- code/game/turfs/simulated/floor/plating.dm | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/code/game/turfs/simulated/floor/plating.dm b/code/game/turfs/simulated/floor/plating.dm index 258e6d74596..f1d67f5776e 100644 --- a/code/game/turfs/simulated/floor/plating.dm +++ b/code/game/turfs/simulated/floor/plating.dm @@ -209,11 +209,8 @@ . = 1 if(O.burn_state == FIRE_PROOF) O.burn_state = FLAMMABLE //Even fireproof things burn up in lava - O.fire_act() - if (O) - O.burn_state = FIRE_PROOF - else - O.fire_act() + + O.fire_act() else if (istype(thing, /mob/living)) From 3c5cdbefe3b21a1a08d78d8b1d0f9413de017929 Mon Sep 17 00:00:00 2001 From: Kyle Spier-Swenson Date: Mon, 4 Jan 2016 23:42:45 -0800 Subject: [PATCH 161/310] forgot to typecast properly --- code/game/objects/items/devices/PDA/cart.dm | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/code/game/objects/items/devices/PDA/cart.dm b/code/game/objects/items/devices/PDA/cart.dm index 43a05662c6d..ff8428ffb48 100644 --- a/code/game/objects/items/devices/PDA/cart.dm +++ b/code/game/objects/items/devices/PDA/cart.dm @@ -274,6 +274,7 @@ /obj/item/weapon/cartridge/proc/generate_menu(mob/user) switch(mode) if(40) //signaller + var/obj/item/radio/integrated/signal/S = radio menu = "

Remote Signaling System

" menu += {" @@ -281,14 +282,14 @@ Frequency: - - -[format_frequency(radio:frequency)] +[format_frequency(S.frequency)] + +

Code: - - -[radio:code] +[S.code] + +
"} if (41) //crew manifest @@ -628,17 +629,17 @@ Code: if("Send Signal") spawn( 0 ) - var/obj/item/radio/integrated/signal/S + var/obj/item/radio/integrated/signal/S = radio S.send_signal("ACTIVATE") return if("Signal Frequency") - var/obj/item/radio/integrated/signal/S + var/obj/item/radio/integrated/signal/S = radio var/new_frequency = sanitize_frequency(S.frequency + text2num(href_list["sfreq"])) S.set_frequency(new_frequency) if("Signal Code") - var/obj/item/radio/integrated/signal/S + var/obj/item/radio/integrated/signal/S = radio S.code += text2num(href_list["scode"]) S.code = round(S.code) S.code = min(100, S.code) From b8c777103fe915297779419376a539b761818bda Mon Sep 17 00:00:00 2001 From: swankcookie <__X__> Date: Tue, 5 Jan 2016 04:36:31 -0600 Subject: [PATCH 162/310] Removed mineself --- cfg/admin.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/cfg/admin.txt b/cfg/admin.txt index fa417e312f7..fa0b92dbdad 100644 --- a/cfg/admin.txt +++ b/cfg/admin.txt @@ -12,5 +12,4 @@ cheridan giacomand rockdtben MrStonedOne -Jordie0608 -Swankcookie \ No newline at end of file +Jordie0608 \ No newline at end of file From 02e31875ff44695eed370030bfca02613855b86b Mon Sep 17 00:00:00 2001 From: AnturK Date: Tue, 5 Jan 2016 16:20:20 +0100 Subject: [PATCH 163/310] Fixes Ian wearing deathsquad suit --- .../mob/living/simple_animal/friendly/dog.dm | 213 ++++++++++-------- icons/mob/corgi_back.dmi | Bin 5853 -> 6390 bytes icons/mob/corgi_head.dmi | Bin 18665 -> 17766 bytes 3 files changed, 116 insertions(+), 97 deletions(-) diff --git a/code/modules/mob/living/simple_animal/friendly/dog.dm b/code/modules/mob/living/simple_animal/friendly/dog.dm index a040346808d..9fcc023c4b2 100644 --- a/code/modules/mob/living/simple_animal/friendly/dog.dm +++ b/code/modules/mob/living/simple_animal/friendly/dog.dm @@ -119,16 +119,9 @@ switch(remove_from) if("head") if(inventory_head) - name = real_name - desc = initial(desc) - speak = list("YAP", "Woof!", "Bark!", "AUUUUUU") - speak_emote = list("barks", "woofs") - emote_hear = list("barks", "woofs", "yaps","pants") - emote_see = list("shakes its head", "shivers") - desc = "It's a corgi." - SetLuminosity(0) inventory_head.loc = src.loc inventory_head = null + update_corgi_fluff() regenerate_icons() else usr << "There is nothing to remove from its [remove_from]." @@ -137,6 +130,7 @@ if(inventory_back) inventory_back.loc = src.loc inventory_back = null + update_corgi_fluff() regenerate_icons() else usr << "There is nothing to remove from its [remove_from]." @@ -198,6 +192,7 @@ usr.drop_item() item_to_add.loc = src src.inventory_back = item_to_add + update_corgi_fluff() regenerate_icons() show_inv(usr) @@ -239,7 +234,7 @@ /obj/item/clothing/head/wizard/fake, /obj/item/clothing/head/wizard, /obj/item/clothing/head/collectable/wizard, /obj/item/clothing/head/cardborg, /obj/item/weapon/bedsheet, /obj/item/clothing/head/helmet/space/santahat, /obj/item/clothing/head/soft, /obj/item/clothing/head/hardhat/reindeer, /obj/item/clothing/head/sombrero, - /obj/item/clothing/head/hopcap, /obj/item/clothing/head/helmet/space/hardsuit/deathsquad, /obj/item/clothing/mask/gas/clown_hat) + /obj/item/clothing/head/hopcap, /obj/item/clothing/mask/gas/clown_hat) valid = 1 if(valid) @@ -271,115 +266,139 @@ return valid /mob/living/simple_animal/pet/dog/corgi/proc/update_corgi_fluff() - if(!inventory_head) - return - switch(inventory_head.type) - if(/obj/item/clothing/head/helmet) - name = "Sergeant [real_name]" - desc = "The ever-loyal, the ever-vigilant." + var/special_hat = 0 + if(inventory_head) + special_hat = 1 + switch(inventory_head.type) + if(/obj/item/clothing/head/helmet) + name = "Sergeant [real_name]" + desc = "The ever-loyal, the ever-vigilant." - if(/obj/item/clothing/head/chefhat, /obj/item/clothing/head/collectable/chef) - name = "Sous chef [real_name]" - desc = "Your food will be taste-tested. All of it." + if(/obj/item/clothing/head/chefhat, /obj/item/clothing/head/collectable/chef) + name = "Sous chef [real_name]" + desc = "Your food will be taste-tested. All of it." - if(/obj/item/clothing/head/caphat, /obj/item/clothing/head/collectable/captain) - name = "Captain [real_name]" - desc = "Probably better than the last captain." + if(/obj/item/clothing/head/caphat, /obj/item/clothing/head/collectable/captain) + name = "Captain [real_name]" + desc = "Probably better than the last captain." - if(/obj/item/clothing/head/kitty, /obj/item/clothing/head/collectable/kitty) - name = "Runtime" - emote_see = list("coughs up a furball", "stretches") - emote_hear = list("purrs") - speak = list("Purrr", "Meow!", "MAOOOOOW!", "HISSSSS", "MEEEEEEW") - desc = "It's a cute little kitty-cat! ... wait ... what the hell?" + if(/obj/item/clothing/head/kitty, /obj/item/clothing/head/collectable/kitty) + name = "Runtime" + emote_see = list("coughs up a furball", "stretches") + emote_hear = list("purrs") + speak = list("Purrr", "Meow!", "MAOOOOOW!", "HISSSSS", "MEEEEEEW") + desc = "It's a cute little kitty-cat! ... wait ... what the hell?" - if(/obj/item/clothing/head/rabbitears, /obj/item/clothing/head/collectable/rabbitears) - name = "Hoppy" - emote_see = list("twitches its nose", "hops around a bit") - desc = "This is Hoppy. It's a corgi-...urmm... bunny rabbit" + if(/obj/item/clothing/head/rabbitears, /obj/item/clothing/head/collectable/rabbitears) + name = "Hoppy" + emote_see = list("twitches its nose", "hops around a bit") + desc = "This is Hoppy. It's a corgi-...urmm... bunny rabbit" - if(/obj/item/clothing/head/beret, /obj/item/clothing/head/collectable/beret) - name = "Yann" - desc = "Mon dieu! C'est un chien!" - speak = list("le woof!", "le bark!", "JAPPE!!") - emote_see = list("cowers in fear.", "surrenders.", "plays dead.","looks as though there is a wall in front of him.") + if(/obj/item/clothing/head/beret, /obj/item/clothing/head/collectable/beret) + name = "Yann" + desc = "Mon dieu! C'est un chien!" + speak = list("le woof!", "le bark!", "JAPPE!!") + emote_see = list("cowers in fear.", "surrenders.", "plays dead.","looks as though there is a wall in front of him.") - if(/obj/item/clothing/head/det_hat) - name = "Detective [real_name]" - desc = "[name] sees through your lies..." - emote_see = list("investigates the area.","sniffs around for clues.","searches for scooby snacks.") + if(/obj/item/clothing/head/det_hat) + name = "Detective [real_name]" + desc = "[name] sees through your lies..." + emote_see = list("investigates the area.","sniffs around for clues.","searches for scooby snacks.") - if(/obj/item/clothing/head/nursehat) - name = "Nurse [real_name]" - desc = "[name] needs 100cc of beef jerky... STAT!" + if(/obj/item/clothing/head/nursehat) + name = "Nurse [real_name]" + desc = "[name] needs 100cc of beef jerky... STAT!" - if(/obj/item/clothing/head/pirate, /obj/item/clothing/head/collectable/pirate) - name = "[pick("Ol'","Scurvy","Black","Rum","Gammy","Bloody","Gangrene","Death","Long-John")] [pick("kibble","leg","beard","tooth","poop-deck","Threepwood","Le Chuck","corsair","Silver","Crusoe")]" - desc = "Yaarghh!! Thar' be a scurvy dog!" - emote_see = list("hunts for treasure.","stares coldly...","gnashes his tiny corgi teeth!") - emote_hear = list("growls ferociously!", "snarls.") - speak = list("Arrrrgh!!","Grrrrrr!") + if(/obj/item/clothing/head/pirate, /obj/item/clothing/head/collectable/pirate) + name = "[pick("Ol'","Scurvy","Black","Rum","Gammy","Bloody","Gangrene","Death","Long-John")] [pick("kibble","leg","beard","tooth","poop-deck","Threepwood","Le Chuck","corsair","Silver","Crusoe")]" + desc = "Yaarghh!! Thar' be a scurvy dog!" + emote_see = list("hunts for treasure.","stares coldly...","gnashes his tiny corgi teeth!") + emote_hear = list("growls ferociously!", "snarls.") + speak = list("Arrrrgh!!","Grrrrrr!") - if(/obj/item/clothing/head/ushanka) - name = "[pick("Comrade","Commissar","Glorious Leader")] [real_name]" - desc = "A follower of Karl Barx." - emote_see = list("contemplates the failings of the capitalist economic model.", "ponders the pros and cons of vanguardism.") + if(/obj/item/clothing/head/ushanka) + name = "[pick("Comrade","Commissar","Glorious Leader")] [real_name]" + desc = "A follower of Karl Barx." + emote_see = list("contemplates the failings of the capitalist economic model.", "ponders the pros and cons of vanguardism.") - if(/obj/item/clothing/head/warden, /obj/item/clothing/head/collectable/police) - name = "Officer [real_name]" - emote_see = list("drools.","looks for donuts.") - desc = "Stop right there criminal scum!" + if(/obj/item/clothing/head/warden, /obj/item/clothing/head/collectable/police) + name = "Officer [real_name]" + emote_see = list("drools.","looks for donuts.") + desc = "Stop right there criminal scum!" - if(/obj/item/clothing/head/wizard/fake, /obj/item/clothing/head/wizard, /obj/item/clothing/head/collectable/wizard) - name = "Grandwizard [real_name]" - speak = list("YAP", "Woof!", "Bark!", "AUUUUUU", "EI NATH!") + if(/obj/item/clothing/head/wizard/fake, /obj/item/clothing/head/wizard, /obj/item/clothing/head/collectable/wizard) + name = "Grandwizard [real_name]" + speak = list("YAP", "Woof!", "Bark!", "AUUUUUU", "EI NATH!") - if(/obj/item/clothing/head/cardborg) - name = "Borgi" - speak = list("Ping!","Beep!","Woof!") - emote_see = list("goes rogue.", "sniffs out non-humans.") - desc = "Result of robotics budget cuts." + if(/obj/item/clothing/head/cardborg) + name = "Borgi" + speak = list("Ping!","Beep!","Woof!") + emote_see = list("goes rogue.", "sniffs out non-humans.") + desc = "Result of robotics budget cuts." - if(/obj/item/weapon/bedsheet) - name = "\improper Ghost" - speak = list("WoooOOOooo~","AUUUUUUUUUUUUUUUUUU") - emote_see = list("stumbles around.", "shivers.") - emote_hear = list("howls!","groans.") - desc = "Spooky!" + if(/obj/item/weapon/bedsheet) + name = "\improper Ghost" + speak = list("WoooOOOooo~","AUUUUUUUUUUUUUUUUUU") + emote_see = list("stumbles around.", "shivers.") + emote_hear = list("howls!","groans.") + desc = "Spooky!" - if(/obj/item/clothing/head/helmet/space/santahat) - name = "Santa's Corgi Helper" - emote_hear = list("barks Christmas songs.", "yaps merrily!") - emote_see = list("looks for presents.", "checks his list.") - desc = "He's very fond of milk and cookies." + if(/obj/item/clothing/head/helmet/space/santahat) + name = "Santa's Corgi Helper" + emote_hear = list("barks Christmas songs.", "yaps merrily!") + emote_see = list("looks for presents.", "checks his list.") + desc = "He's very fond of milk and cookies." - if(/obj/item/clothing/head/soft) - name = "Corgi Tech [real_name]" - desc = "The reason your yellow gloves have chew-marks." + if(/obj/item/clothing/head/soft) + name = "Corgi Tech [real_name]" + desc = "The reason your yellow gloves have chew-marks." - if(/obj/item/clothing/head/hardhat/reindeer) - name = "[real_name] the red-nosed Corgi" - emote_hear = list("lights the way!", "illuminates.", "yaps!") - desc = "He has a very shiny nose." + if(/obj/item/clothing/head/hardhat/reindeer) + name = "[real_name] the red-nosed Corgi" + emote_hear = list("lights the way!", "illuminates.", "yaps!") + desc = "He has a very shiny nose." - if(/obj/item/clothing/head/sombrero) - name = "Segnor [real_name]" - desc = "You must respect elder [real_name]" + if(/obj/item/clothing/head/sombrero) + name = "Segnor [real_name]" + desc = "You must respect elder [real_name]" - if(/obj/item/clothing/head/hopcap) - name = "Lieutenant [real_name]" - desc = "Can actually be trusted to not run off on his own." + if(/obj/item/clothing/head/hopcap) + name = "Lieutenant [real_name]" + desc = "Can actually be trusted to not run off on his own." - if(/obj/item/clothing/head/helmet/space/hardsuit/deathsquad) - name = "Trooper [real_name]" - desc = "That's not red paint. That's real corgi blood." + if(/obj/item/clothing/head/helmet/space/hardsuit/deathsquad) + name = "Trooper [real_name]" + desc = "That's not red paint. That's real corgi blood." - if(/obj/item/clothing/mask/gas/clown_hat) - name = "[real_name] the Clown" - desc = "Honkman's best friend." - speak = list("HONK!", "Honk!") - emote_see = list("plays tricks.", "slips.") + if(/obj/item/clothing/mask/gas/clown_hat) + name = "[real_name] the Clown" + desc = "Honkman's best friend." + speak = list("HONK!", "Honk!") + emote_see = list("plays tricks.", "slips.") + else + special_hat = 0 + + var/special_back = 0 + if(inventory_back) + special_back = 1 + switch(inventory_back.type) + if(/obj/item/clothing/suit/space/hardsuit/deathsquad) + name = "Trooper [real_name]" + desc = "That's not red paint. That's real corgi blood." + else + special_back = 0 + + if(!special_hat && !special_back) + name = real_name + desc = initial(desc) + speak = list("YAP", "Woof!", "Bark!", "AUUUUUU") + speak_emote = list("barks", "woofs") + emote_hear = list("barks", "woofs", "yaps","pants") + emote_see = list("shakes its head", "shivers") + desc = "It's a corgi." + SetLuminosity(0) + return //IAN! SQUEEEEEEEEE~ /mob/living/simple_animal/pet/dog/corgi/Ian diff --git a/icons/mob/corgi_back.dmi b/icons/mob/corgi_back.dmi index 616d8ab2061609ff511202ad2721868341050664..26fb3771e15161ccc449fbf76b4485e36ab03d6c 100644 GIT binary patch delta 5911 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 delta 5366 zcmX|Ec|6qJ_y1UDnnJQv$QGfoW=UB_NV4zBo_(1?gsdM_JR;j9AqLsAX6G?OwuHyN zPL?ob8~ZYr;XBXk_x=9vKlk3(=bn4s=Y7t(pK}hRX2cQ+Alt%Y^#>*|KM^xQZx)xJ zZrs}UDzT;Zt~<$}<@LC}+woqIiikt6eG(s?cy-U&#|?6|Atx=5_+DU)!7<);BzbYV zK!wxwr?#C>KSS!u3`1YdL|X6OG%4A*fR9^~THrG8n?!l_y0EFQ9!JrYLkCPp))jfy zZsyZtOt=9T4K4?dIrGik^^M(7a9wKvW>ayMwhhkK=^xJf_5%76j0-JE%ZBEHT>`s| zkPsgN=foriVnc%l*Re`RB!tB|O8K&GeQ^pRlx%3YF%b!&Al6Hg)brCfhF6;8gFO@gwK3p$q%Xvu$ITuBzh{OF%#`WcSZp>+S%;YceLF zd1jc(X3vq1T~T=c@VxW}u!YBfpF}P&SI)bHk*%G$Vlj%bUl8xK{rQu^Sg@wH_Sf-}LS+TJH}T1W`h?ik!SV5^(3680 z6bdz2`AltA$eLRotXa%h*rH>`bzZkpVDFyz043pi?F$mFzW#NQe_^B*{L-zgvc|&p z($9~pLGtdatf841G3xq-r-w?wF%?kgToGcC)ot0w=1x+b8`rz`&!$D)i%B zFYc_D3o*&CN{8bDZ_tzYqs!66`a-sDY4XKkl>2G8;RB z1s?w8VdXelVd7P|%M))LxO2RnM_g~onuq*A!c1<*#l^AW-^gfaXxLTtkw?-#o&l|8 zt*%gWRohpWPcN~3y`wae-3WGEy2Zu#xxBo5(o^^fV{|MrvY1QJ+ioI0Q-KcH;;p)j zojaFPE@={Sqf#{1AJJ5y=KT@*3c?rymn|AAKVF|~^gY)h->t4y)utZo+1q>Z_@E|# z8J*;M;kVUl>KK0m>Ν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 MqXaFMGWzs?00dW&Bme*a From 60f72d059d66460a737f1eda81017e04f947d2f7 Mon Sep 17 00:00:00 2001 From: phil235 Date: Tue, 5 Jan 2016 16:46:26 +0100 Subject: [PATCH 164/310] - switch visible_message() back to using get_hearers_in_view(), because using inLineOfSight() creates some bugs. visible_message() will still be faster than current version, but only when there's a blind_message used. - Fixes hostile animal not seeing any target near them if they are sitting on something opaque (wall, mech,..). --- code/__HELPERS/unsorted.dm | 17 ++++++----- code/modules/mob/mob.dm | 62 +++++++++++++++++--------------------- 2 files changed, 37 insertions(+), 42 deletions(-) diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 76623d41e30..a424613bceb 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -620,15 +620,16 @@ Turf and target are seperate in case you want to teleport some distance from a t /proc/can_see(atom/source, atom/target, length=5) // I couldnt be arsed to do actual raycasting :I This is horribly inaccurate. var/turf/current = get_turf(source) var/turf/target_turf = get_turf(target) - var/steps = 0 - - while(current != target_turf) - if(steps > length) return 0 - if(current.opacity) return 0 - for(var/atom/A in current) - if(A.opacity) return 0 + var/steps = 1 + if(current != target_turf) current = get_step_towards(current, target_turf) - steps++ + while(current != target_turf) + if(steps > length) return 0 + if(current.opacity) return 0 + for(var/atom/A in current) + if(A.opacity) return 0 + current = get_step_towards(current, target_turf) + steps++ return 1 diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 85d6f0d7147..aaba6883fb3 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -84,29 +84,26 @@ var/next_mob_id = 0 var/turf/T = get_turf(src) if(!T) return - for(var/P in player_list) - var/mob/M = P - var/turf/U = get_turf(P) - if(!U) + for(var/mob/M in get_hearers_in_view(7, src)) + if(!M.client) continue - if(get_dist(T,U)<8 && inLineOfSight(T.x,T.y, U.x,U.y,T.z)) - var/msg = message - if(M == src) //the src always see the main message or self message - if(self_message) - msg = self_message - else - if(M.see_invisible Date: Tue, 5 Jan 2016 17:00:22 +0100 Subject: [PATCH 165/310] Fixes path typo. --- code/modules/mob/living/simple_animal/guardian/guardian.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/simple_animal/guardian/guardian.dm b/code/modules/mob/living/simple_animal/guardian/guardian.dm index afced5e62b3..9a69ac2a0f7 100644 --- a/code/modules/mob/living/simple_animal/guardian/guardian.dm +++ b/code/modules/mob/living/simple_animal/guardian/guardian.dm @@ -70,7 +70,7 @@ visible_message("The [src] jumps back to its user.") loc = get_turf(summoner) -/mob/living/mob/living/simple_animal/hostile/guardian/canSuicide() +/mob/living/simple_animal/hostile/guardian/canSuicide() return 0 /mob/living/simple_animal/hostile/guardian/death() From 68b2c6d505e4b8d58e2c1060c8990fe08b3a668b Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Tue, 5 Jan 2016 10:01:05 -0600 Subject: [PATCH 166/310] Uses define instead of ! --- code/controllers/subsystem/shuttles/emergency.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/controllers/subsystem/shuttles/emergency.dm b/code/controllers/subsystem/shuttles/emergency.dm index b1a52ab2244..2c9b47983f7 100644 --- a/code/controllers/subsystem/shuttles/emergency.dm +++ b/code/controllers/subsystem/shuttles/emergency.dm @@ -120,7 +120,7 @@ if(time_left <= 0 && !SSshuttle.emergencyNoEscape) //move each escape pod to its corresponding transit dock for(var/obj/docking_port/mobile/pod/M in SSshuttle.mobile) - if(!M.launch_status) //Will not launch from the mine/planet + if(M.launch_status == UNLAUNCHED) //Will not launch from the mine/planet M.launch_status = ENDGAME_LAUNCHED M.enterTransit() //now move the actual emergency shuttle to its transit dock From c32fd8daaa3a8e2e52047c858f0343a9d26a3aaa Mon Sep 17 00:00:00 2001 From: AnturK Date: Tue, 5 Jan 2016 17:24:08 +0100 Subject: [PATCH 167/310] Fixes mechs using occupant spacemove --- code/game/mecha/mecha.dm | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 2c892b128a9..b550bc3ab2e 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -406,9 +406,31 @@ events.fireEvent("onMove",get_turf(src)) /obj/mecha/Process_Spacemove(var/movement_dir = 0) - if(occupant) - return occupant.Process_Spacemove(movement_dir) //We'll just say you used the clamp to grab the wall - return ..() + . = ..() + if(.) + return 1 + + var/atom/movable/dense_object_backup + for(var/atom/A in orange(1, get_turf(src))) + if(isarea(A)) + continue + else if(isturf(A)) + var/turf/turf = A + if(!turf.density) + continue + return 1 + else + var/atom/movable/AM = A + if(!AM.CanPass(src) || AM.density) + if(AM.anchored) + return 1 + dense_object_backup = AM + + if(movement_dir && dense_object_backup) + if(dense_object_backup.newtonian_move(turn(movement_dir, 180))) + if(occupant) + occupant << "You push off of [dense_object_backup] to propel yourself." + return 1 /obj/mecha/relaymove(mob/user,direction) if(!direction) From 92b3c84a22d72edf74731d3b8b682f8265274383 Mon Sep 17 00:00:00 2001 From: SouDescolado Date: Mon, 4 Jan 2016 09:55:31 -0200 Subject: [PATCH 168/310] Make the code beautiful Less lines, same code. Trying to fix merge conflict. Gah --- .../objects/items/weapons/storage/backpack.dm | 25 +- .../objects/items/weapons/storage/belt.dm | 9 +- .../objects/items/weapons/storage/boxes.dm | 317 +++++------------- .../objects/items/weapons/storage/firstaid.dm | 90 ++--- .../objects/items/weapons/storage/lockbox.dm | 12 +- .../items/weapons/storage/uplink_kits.dm | 48 +-- .../crates_lockers/closets/fitness.dm | 20 +- .../crates_lockers/closets/gimmick.dm | 79 ++--- .../crates_lockers/closets/job_closets.dm | 130 +++---- .../crates_lockers/closets/secure/bar.dm | 12 +- .../closets/secure/engineering.dm | 31 +- .../crates_lockers/closets/secure/medical.dm | 29 +- .../crates_lockers/closets/secure/misc.dm | 5 +- .../crates_lockers/closets/secure/security.dm | 60 ++-- .../crates_lockers/closets/syndicate.dm | 14 +- .../crates_lockers/closets/utility_closets.dm | 10 +- .../crates_lockers/closets/wardrobe.dm | 106 +++--- .../structures/crates_lockers/crates.dm | 19 +- 18 files changed, 344 insertions(+), 672 deletions(-) diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm index e36882889e3..dacc3514ec2 100644 --- a/code/game/objects/items/weapons/storage/backpack.dm +++ b/code/game/objects/items/weapons/storage/backpack.dm @@ -328,12 +328,8 @@ /obj/item/weapon/storage/backpack/dufflebag/syndie/ammo/loaded/New() ..() contents = list() - new /obj/item/ammo_box/magazine/m12g(src) - new /obj/item/ammo_box/magazine/m12g(src) - new /obj/item/ammo_box/magazine/m12g(src) - new /obj/item/ammo_box/magazine/m12g(src) - new /obj/item/ammo_box/magazine/m12g(src) - new /obj/item/ammo_box/magazine/m12g(src) + for(var/i in 1 to 6) + new /obj/item/ammo_box/magazine/m12g(src) new /obj/item/ammo_box/magazine/m12g/buckshot(src) new /obj/item/ammo_box/magazine/m12g/stun(src) new /obj/item/ammo_box/magazine/m12g/dragon(src) @@ -398,15 +394,8 @@ /obj/item/weapon/storage/backpack/dufflebag/syndie/ammo/smg/New() ..() contents = list() - new /obj/item/ammo_box/magazine/smgm45(src) - new /obj/item/ammo_box/magazine/smgm45(src) - new /obj/item/ammo_box/magazine/smgm45(src) - new /obj/item/ammo_box/magazine/smgm45(src) - new /obj/item/ammo_box/magazine/smgm45(src) - new /obj/item/ammo_box/magazine/smgm45(src) - new /obj/item/ammo_box/magazine/smgm45(src) - new /obj/item/ammo_box/magazine/smgm45(src) - new /obj/item/ammo_box/magazine/smgm45(src) + for(var/i in 1 to 9) + new /obj/item/ammo_box/magazine/smgm45(src) return @@ -416,10 +405,8 @@ /obj/item/weapon/storage/backpack/dufflebag/syndie/ammo/fireteam/New() ..() contents = list() - new /obj/item/ammo_box/magazine/smgm45(src) - new /obj/item/ammo_box/magazine/smgm45(src) - new /obj/item/ammo_box/magazine/smgm45(src) - new /obj/item/ammo_box/magazine/smgm45(src) + for(var/i in 1 to 4) + new /obj/item/ammo_box/magazine/smgm45(src) new /obj/item/ammo_box/magazine/m556(src) new /obj/item/ammo_box/magazine/m556(src) new /obj/item/ammo_box/a40mm(src) diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm index 7e53d4a443d..db6b4701830 100644 --- a/code/game/objects/items/weapons/storage/belt.dm +++ b/code/game/objects/items/weapons/storage/belt.dm @@ -121,13 +121,8 @@ /obj/item/weapon/storage/belt/soulstone/full/New() ..() - new /obj/item/device/soulstone(src) - new /obj/item/device/soulstone(src) - new /obj/item/device/soulstone(src) - new /obj/item/device/soulstone(src) - new /obj/item/device/soulstone(src) - new /obj/item/device/soulstone(src) - + for(var/i in 1 to 6) + new /obj/item/device/soulstone(src) /obj/item/weapon/storage/belt/champion name = "championship belt" diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm index c08715a561e..56d6d4afdef 100644 --- a/code/game/objects/items/weapons/storage/boxes.dm +++ b/code/game/objects/items/weapons/storage/boxes.dm @@ -93,14 +93,9 @@ /obj/item/weapon/storage/box/gloves/New() ..() - new /obj/item/clothing/gloves/color/latex(src) - new /obj/item/clothing/gloves/color/latex(src) - new /obj/item/clothing/gloves/color/latex(src) - new /obj/item/clothing/gloves/color/latex(src) - new /obj/item/clothing/gloves/color/latex(src) - new /obj/item/clothing/gloves/color/latex(src) - new /obj/item/clothing/gloves/color/latex(src) - + for(var/i in 1 to 7) + new /obj/item/clothing/gloves/color/latex(src) + /obj/item/weapon/storage/box/masks name = "box of sterile masks" desc = "This box contains sterile medical masks." @@ -108,14 +103,9 @@ /obj/item/weapon/storage/box/masks/New() ..() - new /obj/item/clothing/mask/surgical(src) - new /obj/item/clothing/mask/surgical(src) - new /obj/item/clothing/mask/surgical(src) - new /obj/item/clothing/mask/surgical(src) - new /obj/item/clothing/mask/surgical(src) - new /obj/item/clothing/mask/surgical(src) - new /obj/item/clothing/mask/surgical(src) - + for(var/i in 1 to 7) + new /obj/item/clothing/mask/surgical(src) + /obj/item/weapon/storage/box/syringes name = "box of syringes" desc = "A box full of syringes." @@ -124,14 +114,9 @@ /obj/item/weapon/storage/box/syringes/New() ..() - new /obj/item/weapon/reagent_containers/syringe( src ) - new /obj/item/weapon/reagent_containers/syringe( src ) - new /obj/item/weapon/reagent_containers/syringe( src ) - new /obj/item/weapon/reagent_containers/syringe( src ) - new /obj/item/weapon/reagent_containers/syringe( src ) - new /obj/item/weapon/reagent_containers/syringe( src ) - new /obj/item/weapon/reagent_containers/syringe( src ) - + for(var/i in 1 to 7) + new /obj/item/weapon/reagent_containers/syringe( src ) + /obj/item/weapon/storage/box/medipens name = "box of medipens" desc = "A box full of epinephrine MediPens." @@ -139,14 +124,9 @@ /obj/item/weapon/storage/box/medipens/New() ..() - new /obj/item/weapon/reagent_containers/hypospray/medipen( src ) - new /obj/item/weapon/reagent_containers/hypospray/medipen( src ) - new /obj/item/weapon/reagent_containers/hypospray/medipen( src ) - new /obj/item/weapon/reagent_containers/hypospray/medipen( src ) - new /obj/item/weapon/reagent_containers/hypospray/medipen( src ) - new /obj/item/weapon/reagent_containers/hypospray/medipen( src ) - new /obj/item/weapon/reagent_containers/hypospray/medipen( src ) - + for(var/i in 1 to 7) + new /obj/item/weapon/reagent_containers/hypospray/medipen( src ) + /obj/item/weapon/storage/box/medipens/utility name = "stimpack value kit" desc = "A box with several stimpack medipens for the economical miner." @@ -154,39 +134,29 @@ /obj/item/weapon/storage/box/medipens/utility/New() ..() - new /obj/item/weapon/reagent_containers/hypospray/medipen/stimpack(src) - new /obj/item/weapon/reagent_containers/hypospray/medipen/stimpack(src) - new /obj/item/weapon/reagent_containers/hypospray/medipen/stimpack(src) - new /obj/item/weapon/reagent_containers/hypospray/medipen/stimpack(src) - new /obj/item/weapon/reagent_containers/hypospray/medipen/stimpack(src) - + for(var/i in 1 to 5) + new /obj/item/weapon/reagent_containers/hypospray/medipen/stimpack(src) + /obj/item/weapon/storage/box/beakers name = "box of beakers" icon_state = "beaker" /obj/item/weapon/storage/box/beakers/New() ..() - new /obj/item/weapon/reagent_containers/glass/beaker( src ) - new /obj/item/weapon/reagent_containers/glass/beaker( src ) - new /obj/item/weapon/reagent_containers/glass/beaker( src ) - new /obj/item/weapon/reagent_containers/glass/beaker( src ) - new /obj/item/weapon/reagent_containers/glass/beaker( src ) - new /obj/item/weapon/reagent_containers/glass/beaker( src ) - new /obj/item/weapon/reagent_containers/glass/beaker( src ) - + for(var/i in 1 to 7) + new /obj/item/weapon/reagent_containers/glass/beaker( src ) + /obj/item/weapon/storage/box/injectors name = "box of DNA injectors" desc = "This box contains injectors it seems." /obj/item/weapon/storage/box/injectors/New() ..() - new /obj/item/weapon/dnainjector/h2m(src) - new /obj/item/weapon/dnainjector/h2m(src) - new /obj/item/weapon/dnainjector/h2m(src) - new /obj/item/weapon/dnainjector/m2h(src) - new /obj/item/weapon/dnainjector/m2h(src) - new /obj/item/weapon/dnainjector/m2h(src) - + for(var/i in 1 to 3) + new /obj/item/weapon/dnainjector/h2m(src) + for(var/i in 1 to 3) + new /obj/item/weapon/dnainjector/m2h(src) + /obj/item/weapon/storage/box/flashbangs name = "box of flashbangs (WARNING)" desc = "WARNING: These devices are extremely dangerous and can cause blindness or deafness in repeated use." @@ -194,14 +164,9 @@ /obj/item/weapon/storage/box/flashbangs/New() ..() - new /obj/item/weapon/grenade/flashbang(src) - new /obj/item/weapon/grenade/flashbang(src) - new /obj/item/weapon/grenade/flashbang(src) - new /obj/item/weapon/grenade/flashbang(src) - new /obj/item/weapon/grenade/flashbang(src) - new /obj/item/weapon/grenade/flashbang(src) - new /obj/item/weapon/grenade/flashbang(src) - + for(var/i in 1 to 7) + new /obj/item/weapon/grenade/flashbang(src) + /obj/item/weapon/storage/box/flashes name = "box of flashbulbs" desc = "WARNING: Flashes can cause serious eye damage, protective eyewear is required." @@ -209,13 +174,9 @@ /obj/item/weapon/storage/box/flashes/New() ..() - new /obj/item/device/assembly/flash/handheld(src) - new /obj/item/device/assembly/flash/handheld(src) - new /obj/item/device/assembly/flash/handheld(src) - new /obj/item/device/assembly/flash/handheld(src) - new /obj/item/device/assembly/flash/handheld(src) - new /obj/item/device/assembly/flash/handheld(src) - + for(var/i in 1 to 6) + new /obj/item/device/assembly/flash/handheld(src) + /obj/item/weapon/storage/box/teargas name = "box of tear gas grenades (WARNING)" desc = "WARNING: These devices are extremely dangerous and can cause blindness and skin irritation." @@ -223,14 +184,9 @@ /obj/item/weapon/storage/box/teargas/New() ..() - new /obj/item/weapon/grenade/chem_grenade/teargas(src) - new /obj/item/weapon/grenade/chem_grenade/teargas(src) - new /obj/item/weapon/grenade/chem_grenade/teargas(src) - new /obj/item/weapon/grenade/chem_grenade/teargas(src) - new /obj/item/weapon/grenade/chem_grenade/teargas(src) - new /obj/item/weapon/grenade/chem_grenade/teargas(src) - new /obj/item/weapon/grenade/chem_grenade/teargas(src) - + for(var/i in 1 to 7) + new /obj/item/weapon/grenade/chem_grenade/teargas(src) + /obj/item/weapon/storage/box/emps name = "box of emp grenades" desc = "A box with 5 emp grenades." @@ -238,12 +194,9 @@ /obj/item/weapon/storage/box/emps/New() ..() - new /obj/item/weapon/grenade/empgrenade(src) - new /obj/item/weapon/grenade/empgrenade(src) - new /obj/item/weapon/grenade/empgrenade(src) - new /obj/item/weapon/grenade/empgrenade(src) - new /obj/item/weapon/grenade/empgrenade(src) - + for(var/i in 1 to 5) + new /obj/item/weapon/grenade/empgrenade(src) + /obj/item/weapon/storage/box/trackimp name = "boxed tracking implant kit" desc = "Box full of scum-bag tracking utensils." @@ -251,10 +204,8 @@ /obj/item/weapon/storage/box/trackimp/New() ..() - new /obj/item/weapon/implantcase/tracking(src) - new /obj/item/weapon/implantcase/tracking(src) - new /obj/item/weapon/implantcase/tracking(src) - new /obj/item/weapon/implantcase/tracking(src) + for(var/i in 1 to 4) + 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) @@ -266,11 +217,8 @@ /obj/item/weapon/storage/box/chemimp/New() ..() - new /obj/item/weapon/implantcase/chem(src) - new /obj/item/weapon/implantcase/chem(src) - new /obj/item/weapon/implantcase/chem(src) - new /obj/item/weapon/implantcase/chem(src) - new /obj/item/weapon/implantcase/chem(src) + for(var/i in 1 to 5) + new /obj/item/weapon/implantcase/chem(src) new /obj/item/weapon/implanter(src) new /obj/item/weapon/implantpad(src) @@ -281,11 +229,8 @@ /obj/item/weapon/storage/box/exileimp/New() ..() - new /obj/item/weapon/implantcase/exile(src) - new /obj/item/weapon/implantcase/exile(src) - new /obj/item/weapon/implantcase/exile(src) - new /obj/item/weapon/implantcase/exile(src) - new /obj/item/weapon/implantcase/exile(src) + for(var/i in 1 to 5) + new /obj/item/weapon/implantcase/exile(src) new /obj/item/weapon/implanter(src) /obj/item/weapon/storage/box/rxglasses @@ -295,39 +240,26 @@ /obj/item/weapon/storage/box/rxglasses/New() ..() - new /obj/item/clothing/glasses/regular(src) - new /obj/item/clothing/glasses/regular(src) - new /obj/item/clothing/glasses/regular(src) - new /obj/item/clothing/glasses/regular(src) - new /obj/item/clothing/glasses/regular(src) - new /obj/item/clothing/glasses/regular(src) - new /obj/item/clothing/glasses/regular(src) - + for(var/i in 1 to 7) + new /obj/item/clothing/glasses/regular(src) + /obj/item/weapon/storage/box/drinkingglasses name = "box of drinking glasses" desc = "It has a picture of drinking glasses on it." /obj/item/weapon/storage/box/drinkingglasses/New() ..() - new /obj/item/weapon/reagent_containers/food/drinks/drinkingglass(src) - new /obj/item/weapon/reagent_containers/food/drinks/drinkingglass(src) - new /obj/item/weapon/reagent_containers/food/drinks/drinkingglass(src) - new /obj/item/weapon/reagent_containers/food/drinks/drinkingglass(src) - new /obj/item/weapon/reagent_containers/food/drinks/drinkingglass(src) - new /obj/item/weapon/reagent_containers/food/drinks/drinkingglass(src) - + for(var/i in 1 to 6) + new /obj/item/weapon/reagent_containers/food/drinks/drinkingglass(src) + /obj/item/weapon/storage/box/condimentbottles name = "box of condiment bottles" desc = "It has a large ketchup smear on it." /obj/item/weapon/storage/box/condimentbottles/New() ..() - new /obj/item/weapon/reagent_containers/food/condiment(src) - new /obj/item/weapon/reagent_containers/food/condiment(src) - new /obj/item/weapon/reagent_containers/food/condiment(src) - new /obj/item/weapon/reagent_containers/food/condiment(src) - new /obj/item/weapon/reagent_containers/food/condiment(src) - new /obj/item/weapon/reagent_containers/food/condiment(src) + for(var/i in 1 to 6) + new /obj/item/weapon/reagent_containers/food/condiment(src) /obj/item/weapon/storage/box/cups name = "box of paper cups" @@ -335,14 +267,9 @@ /obj/item/weapon/storage/box/cups/New() ..() - new /obj/item/weapon/reagent_containers/food/drinks/sillycup( src ) - new /obj/item/weapon/reagent_containers/food/drinks/sillycup( src ) - new /obj/item/weapon/reagent_containers/food/drinks/sillycup( src ) - new /obj/item/weapon/reagent_containers/food/drinks/sillycup( src ) - new /obj/item/weapon/reagent_containers/food/drinks/sillycup( src ) - new /obj/item/weapon/reagent_containers/food/drinks/sillycup( src ) - new /obj/item/weapon/reagent_containers/food/drinks/sillycup( src ) - + for(var/i in 1 to 7) + new /obj/item/weapon/reagent_containers/food/drinks/sillycup( src ) + /obj/item/weapon/storage/box/donkpockets name = "box of donk-pockets" desc = "Instructions: Heat in microwave. Product will cool if not eaten within seven minutes." @@ -350,12 +277,8 @@ /obj/item/weapon/storage/box/donkpockets/New() ..() - new /obj/item/weapon/reagent_containers/food/snacks/donkpocket(src) - new /obj/item/weapon/reagent_containers/food/snacks/donkpocket(src) - new /obj/item/weapon/reagent_containers/food/snacks/donkpocket(src) - new /obj/item/weapon/reagent_containers/food/snacks/donkpocket(src) - new /obj/item/weapon/reagent_containers/food/snacks/donkpocket(src) - new /obj/item/weapon/reagent_containers/food/snacks/donkpocket(src) + for(var/i in 1 to 6) + new /obj/item/weapon/reagent_containers/food/snacks/donkpocket(src) /obj/item/weapon/storage/box/monkeycubes name = "monkey cube box" @@ -378,9 +301,8 @@ /obj/item/weapon/storage/box/permits/New() //There's only a few, so blueprints are still useful beyond setting every room's name to PRIMARY FART STORAGE ..() - new /obj/item/areaeditor/permit(src) - new /obj/item/areaeditor/permit(src) - new /obj/item/areaeditor/permit(src) + for(var/i in 1 to 3) + new /obj/item/areaeditor/permit(src) /obj/item/weapon/storage/box/ids @@ -390,14 +312,9 @@ /obj/item/weapon/storage/box/ids/New() ..() - new /obj/item/weapon/card/id(src) - new /obj/item/weapon/card/id(src) - new /obj/item/weapon/card/id(src) - new /obj/item/weapon/card/id(src) - new /obj/item/weapon/card/id(src) - new /obj/item/weapon/card/id(src) - new /obj/item/weapon/card/id(src) - + for(var/i in 1 to 7) + new /obj/item/weapon/card/id(src) + /obj/item/weapon/storage/box/silver_ids name = "box of spare silver IDs" desc = "Shiny IDs for important people." @@ -405,13 +322,8 @@ /obj/item/weapon/storage/box/silver_ids/New() ..() - new /obj/item/weapon/card/id/silver(src) - new /obj/item/weapon/card/id/silver(src) - new /obj/item/weapon/card/id/silver(src) - new /obj/item/weapon/card/id/silver(src) - new /obj/item/weapon/card/id/silver(src) - new /obj/item/weapon/card/id/silver(src) - new /obj/item/weapon/card/id/silver(src) + for(var/i in 1 to 7) + new /obj/item/weapon/card/id/silver(src) /obj/item/weapon/storage/box/prisoner name = "box of prisoner IDs" @@ -436,12 +348,8 @@ /obj/item/weapon/storage/box/seccarts/New() ..() new /obj/item/weapon/cartridge/detective(src) - new /obj/item/weapon/cartridge/security(src) - new /obj/item/weapon/cartridge/security(src) - new /obj/item/weapon/cartridge/security(src) - new /obj/item/weapon/cartridge/security(src) - new /obj/item/weapon/cartridge/security(src) - new /obj/item/weapon/cartridge/security(src) + for(var/i in 1 to 6) + new /obj/item/weapon/cartridge/security(src) /obj/item/weapon/storage/box/firingpins name = "box of standard firing pins" @@ -450,14 +358,9 @@ /obj/item/weapon/storage/box/firingpins/New() ..() - new /obj/item/device/firing_pin(src) - new /obj/item/device/firing_pin(src) - new /obj/item/device/firing_pin(src) - new /obj/item/device/firing_pin(src) - new /obj/item/device/firing_pin(src) - new /obj/item/device/firing_pin(src) - new /obj/item/device/firing_pin(src) - + for(var/i in 1 to 7) + new /obj/item/device/firing_pin(src) + /obj/item/weapon/storage/box/handcuffs name = "box of spare handcuffs" desc = "A box full of handcuffs." @@ -465,14 +368,9 @@ /obj/item/weapon/storage/box/handcuffs/New() ..() - new /obj/item/weapon/restraints/handcuffs(src) - new /obj/item/weapon/restraints/handcuffs(src) - new /obj/item/weapon/restraints/handcuffs(src) - new /obj/item/weapon/restraints/handcuffs(src) - new /obj/item/weapon/restraints/handcuffs(src) - new /obj/item/weapon/restraints/handcuffs(src) - new /obj/item/weapon/restraints/handcuffs(src) - + for(var/i in 1 to 7) + new /obj/item/weapon/restraints/handcuffs(src) + /obj/item/weapon/storage/box/zipties name = "box of spare zipties" desc = "A box full of zipties." @@ -480,14 +378,9 @@ /obj/item/weapon/storage/box/zipties/New() ..() - new /obj/item/weapon/restraints/handcuffs/cable/zipties(src) - new /obj/item/weapon/restraints/handcuffs/cable/zipties(src) - new /obj/item/weapon/restraints/handcuffs/cable/zipties(src) - new /obj/item/weapon/restraints/handcuffs/cable/zipties(src) - new /obj/item/weapon/restraints/handcuffs/cable/zipties(src) - new /obj/item/weapon/restraints/handcuffs/cable/zipties(src) - new /obj/item/weapon/restraints/handcuffs/cable/zipties(src) - + for(var/i in 1 to 7) + new /obj/item/weapon/restraints/handcuffs/cable/zipties(src) + /obj/item/weapon/storage/box/alienhandcuffs name = "box of spare handcuffs" desc = "A box full of handcuffs." @@ -495,14 +388,9 @@ /obj/item/weapon/storage/box/alienhandcuffs/New() ..() - new /obj/item/weapon/restraints/handcuffs/alien(src) - new /obj/item/weapon/restraints/handcuffs/alien(src) - new /obj/item/weapon/restraints/handcuffs/alien(src) - new /obj/item/weapon/restraints/handcuffs/alien(src) - new /obj/item/weapon/restraints/handcuffs/alien(src) - new /obj/item/weapon/restraints/handcuffs/alien(src) - new /obj/item/weapon/restraints/handcuffs/alien(src) - + for(var/i in 1 to 7) + new /obj/item/weapon/restraints/handcuffs/alien(src) + /obj/item/weapon/storage/box/fakesyndiesuit name = "boxed space suit and helmet" desc = "A sleek, sturdy box used to hold replica spacesuits." @@ -520,13 +408,9 @@ /obj/item/weapon/storage/box/mousetraps/New() ..() - new /obj/item/device/assembly/mousetrap( src ) - new /obj/item/device/assembly/mousetrap( src ) - new /obj/item/device/assembly/mousetrap( src ) - new /obj/item/device/assembly/mousetrap( src ) - new /obj/item/device/assembly/mousetrap( src ) - new /obj/item/device/assembly/mousetrap( src ) - + for(var/i in 1 to 6) + new /obj/item/device/assembly/mousetrap( src ) + /obj/item/weapon/storage/box/pillbottles name = "box of pill bottles" desc = "It has pictures of pill bottles on its front." @@ -534,14 +418,9 @@ /obj/item/weapon/storage/box/pillbottles/New() ..() - new /obj/item/weapon/storage/pill_bottle( src ) - new /obj/item/weapon/storage/pill_bottle( src ) - new /obj/item/weapon/storage/pill_bottle( src ) - new /obj/item/weapon/storage/pill_bottle( src ) - new /obj/item/weapon/storage/pill_bottle( src ) - new /obj/item/weapon/storage/pill_bottle( src ) - new /obj/item/weapon/storage/pill_bottle( src ) - + for(var/i in 1 to 7) + new /obj/item/weapon/storage/pill_bottle( src ) + /obj/item/weapon/storage/box/snappops name = "snap pop box" desc = "Eight wrappers of fun! Ages 8 and up. Not suitable for children." @@ -620,14 +499,9 @@ /obj/item/weapon/storage/box/deputy/New() ..() - new /obj/item/clothing/tie/armband/deputy(src) - new /obj/item/clothing/tie/armband/deputy(src) - new /obj/item/clothing/tie/armband/deputy(src) - new /obj/item/clothing/tie/armband/deputy(src) - new /obj/item/clothing/tie/armband/deputy(src) - new /obj/item/clothing/tie/armband/deputy(src) - new /obj/item/clothing/tie/armband/deputy(src) - + for(var/i in 1 to 7) + new /obj/item/clothing/tie/armband/deputy(src) + /obj/item/weapon/storage/box/metalfoam name = "box of metal foam grenades" desc = "To be used to rapidly seal hull breaches" @@ -635,15 +509,9 @@ /obj/item/weapon/storage/box/metalfoam/New() ..() - new /obj/item/weapon/grenade/chem_grenade/metalfoam(src) - new /obj/item/weapon/grenade/chem_grenade/metalfoam(src) - new /obj/item/weapon/grenade/chem_grenade/metalfoam(src) - new /obj/item/weapon/grenade/chem_grenade/metalfoam(src) - new /obj/item/weapon/grenade/chem_grenade/metalfoam(src) - new /obj/item/weapon/grenade/chem_grenade/metalfoam(src) - new /obj/item/weapon/grenade/chem_grenade/metalfoam(src) - - + for(var/i in 1 to 7) + new /obj/item/weapon/grenade/chem_grenade/metalfoam(src) + /obj/item/weapon/storage/box/hug name = "box of hugs" desc = "A special box for sensitive people." @@ -676,14 +544,9 @@ /obj/item/weapon/storage/box/rubbershot/New() ..() - new /obj/item/ammo_casing/shotgun/rubbershot(src) - new /obj/item/ammo_casing/shotgun/rubbershot(src) - new /obj/item/ammo_casing/shotgun/rubbershot(src) - new /obj/item/ammo_casing/shotgun/rubbershot(src) - new /obj/item/ammo_casing/shotgun/rubbershot(src) - new /obj/item/ammo_casing/shotgun/rubbershot(src) - new /obj/item/ammo_casing/shotgun/rubbershot(src) - + for(var/i in 1 to 7) + new /obj/item/ammo_casing/shotgun/rubbershot(src) + /obj/item/weapon/storage/box/lethalshot name = "box of lethal shotgun shots" desc = "A box full of lethal shots, designed for riot shotguns." diff --git a/code/game/objects/items/weapons/storage/firstaid.dm b/code/game/objects/items/weapons/storage/firstaid.dm index 67c4170031c..9183ffc92e5 100644 --- a/code/game/objects/items/weapons/storage/firstaid.dm +++ b/code/game/objects/items/weapons/storage/firstaid.dm @@ -42,9 +42,8 @@ ..() if(empty) return icon_state = pick("ointment","firefirstaid") - new /obj/item/weapon/reagent_containers/pill/patch/silver_sulf(src) - new /obj/item/weapon/reagent_containers/pill/patch/silver_sulf(src) - new /obj/item/weapon/reagent_containers/pill/patch/silver_sulf(src) + for(var/i in 1 to 3) + new /obj/item/weapon/reagent_containers/pill/patch/silver_sulf(src) new /obj/item/weapon/reagent_containers/pill/oxandrolone(src) new /obj/item/weapon/reagent_containers/pill/oxandrolone(src) new /obj/item/weapon/reagent_containers/hypospray/medipen(src) @@ -61,12 +60,10 @@ ..() if(empty) return icon_state = pick("antitoxin","antitoxfirstaid","antitoxfirstaid2","antitoxfirstaid3") - new /obj/item/weapon/reagent_containers/syringe/charcoal(src) - new /obj/item/weapon/reagent_containers/syringe/charcoal(src) - new /obj/item/weapon/reagent_containers/syringe/charcoal(src) - new /obj/item/weapon/reagent_containers/pill/charcoal(src) - new /obj/item/weapon/reagent_containers/pill/charcoal(src) - new /obj/item/weapon/reagent_containers/pill/charcoal(src) + for(var/i in 1 to 3) + new /obj/item/weapon/reagent_containers/syringe/charcoal(src) + for(var/i in 1 to 3) + new /obj/item/weapon/reagent_containers/pill/charcoal(src) new /obj/item/device/healthanalyzer(src) return @@ -79,10 +76,8 @@ /obj/item/weapon/storage/firstaid/o2/New() ..() if(empty) return - new /obj/item/weapon/reagent_containers/pill/salbutamol(src) - new /obj/item/weapon/reagent_containers/pill/salbutamol(src) - new /obj/item/weapon/reagent_containers/pill/salbutamol(src) - new /obj/item/weapon/reagent_containers/pill/salbutamol(src) + for(var/i in 1 to 4) + new /obj/item/weapon/reagent_containers/pill/salbutamol(src) new /obj/item/weapon/reagent_containers/hypospray/medipen(src) new /obj/item/weapon/reagent_containers/hypospray/medipen(src) new /obj/item/device/healthanalyzer(src) @@ -97,10 +92,8 @@ /obj/item/weapon/storage/firstaid/brute/New() ..() if(empty) return - new /obj/item/weapon/reagent_containers/pill/patch/styptic(src) - new /obj/item/weapon/reagent_containers/pill/patch/styptic(src) - new /obj/item/weapon/reagent_containers/pill/patch/styptic(src) - new /obj/item/weapon/reagent_containers/pill/patch/styptic(src) + for(var/i in 1 to 4) + new /obj/item/weapon/reagent_containers/pill/patch/styptic(src) new /obj/item/stack/medical/gauze(src) new /obj/item/stack/medical/gauze(src) new /obj/item/device/healthanalyzer(src) @@ -168,79 +161,50 @@ /obj/item/weapon/storage/box/silver_sulf/New() ..() - new /obj/item/weapon/reagent_containers/pill/patch/silver_sulf(src) - new /obj/item/weapon/reagent_containers/pill/patch/silver_sulf(src) - new /obj/item/weapon/reagent_containers/pill/patch/silver_sulf(src) - new /obj/item/weapon/reagent_containers/pill/patch/silver_sulf(src) - new /obj/item/weapon/reagent_containers/pill/patch/silver_sulf(src) - new /obj/item/weapon/reagent_containers/pill/patch/silver_sulf(src) - new /obj/item/weapon/reagent_containers/pill/patch/silver_sulf(src) - - + for(var/i in 1 to 7) + new /obj/item/weapon/reagent_containers/pill/patch/silver_sulf(src) + /obj/item/weapon/storage/pill_bottle/charcoal name = "bottle of charcoal pills" desc = "Contains pills used to counter toxins." /obj/item/weapon/storage/pill_bottle/charcoal/New() ..() - new /obj/item/weapon/reagent_containers/pill/charcoal(src) - new /obj/item/weapon/reagent_containers/pill/charcoal(src) - new /obj/item/weapon/reagent_containers/pill/charcoal(src) - new /obj/item/weapon/reagent_containers/pill/charcoal(src) - new /obj/item/weapon/reagent_containers/pill/charcoal(src) - new /obj/item/weapon/reagent_containers/pill/charcoal(src) - new /obj/item/weapon/reagent_containers/pill/charcoal(src) - + for(var/i in 1 to 7) + new /obj/item/weapon/reagent_containers/pill/charcoal(src) + /obj/item/weapon/storage/pill_bottle/epinephrine name = "bottle of epinephrine pills" desc = "Contains pills used to stabilize patients." /obj/item/weapon/storage/pill_bottle/epinephrine/New() ..() - new /obj/item/weapon/reagent_containers/pill/epinephrine(src) - new /obj/item/weapon/reagent_containers/pill/epinephrine(src) - new /obj/item/weapon/reagent_containers/pill/epinephrine(src) - new /obj/item/weapon/reagent_containers/pill/epinephrine(src) - new /obj/item/weapon/reagent_containers/pill/epinephrine(src) - new /obj/item/weapon/reagent_containers/pill/epinephrine(src) - new /obj/item/weapon/reagent_containers/pill/epinephrine(src) - + for(var/i in 1 to 7) + new /obj/item/weapon/reagent_containers/pill/epinephrine(src) + /obj/item/weapon/storage/pill_bottle/mutadone name = "bottle of mutadone pills" desc = "Contains pills used to treat genetic abnormalities." /obj/item/weapon/storage/pill_bottle/mutadone/New() ..() - new /obj/item/weapon/reagent_containers/pill/mutadone(src) - new /obj/item/weapon/reagent_containers/pill/mutadone(src) - new /obj/item/weapon/reagent_containers/pill/mutadone(src) - new /obj/item/weapon/reagent_containers/pill/mutadone(src) - new /obj/item/weapon/reagent_containers/pill/mutadone(src) - new /obj/item/weapon/reagent_containers/pill/mutadone(src) - new /obj/item/weapon/reagent_containers/pill/mutadone(src) - + for(var/i in 1 to 7) + new /obj/item/weapon/reagent_containers/pill/mutadone(src) + /obj/item/weapon/storage/pill_bottle/mannitol name = "bottle of mannitol pills" desc = "Contains pills used to treat brain damage." /obj/item/weapon/storage/pill_bottle/mannitol/New() ..() - new /obj/item/weapon/reagent_containers/pill/mannitol(src) - new /obj/item/weapon/reagent_containers/pill/mannitol(src) - new /obj/item/weapon/reagent_containers/pill/mannitol(src) - new /obj/item/weapon/reagent_containers/pill/mannitol(src) - new /obj/item/weapon/reagent_containers/pill/mannitol(src) - new /obj/item/weapon/reagent_containers/pill/mannitol(src) - new /obj/item/weapon/reagent_containers/pill/mannitol(src) - + for(var/i in 1 to 7) + new /obj/item/weapon/reagent_containers/pill/mannitol(src) + /obj/item/weapon/storage/pill_bottle/stimulant name = "bottle of stimulant pills" desc = "Guaranteed to give you that extra burst of energy during a long shift!" /obj/item/weapon/storage/pill_bottle/stimulant/New() ..() - new /obj/item/weapon/reagent_containers/pill/stimulant(src) - new /obj/item/weapon/reagent_containers/pill/stimulant(src) - new /obj/item/weapon/reagent_containers/pill/stimulant(src) - new /obj/item/weapon/reagent_containers/pill/stimulant(src) - new /obj/item/weapon/reagent_containers/pill/stimulant(src) \ No newline at end of file + for(var/i in 1 to 5) + new /obj/item/weapon/reagent_containers/pill/stimulant(src) diff --git a/code/game/objects/items/weapons/storage/lockbox.dm b/code/game/objects/items/weapons/storage/lockbox.dm index bab0a4e07e4..d740a80af20 100644 --- a/code/game/objects/items/weapons/storage/lockbox.dm +++ b/code/game/objects/items/weapons/storage/lockbox.dm @@ -82,9 +82,8 @@ /obj/item/weapon/storage/lockbox/loyalty/New() ..() - new /obj/item/weapon/implantcase/loyalty(src) - new /obj/item/weapon/implantcase/loyalty(src) - new /obj/item/weapon/implantcase/loyalty(src) + for(var/i in 1 to 3) + new /obj/item/weapon/implantcase/loyalty(src) new /obj/item/weapon/implanter/loyalty(src) @@ -114,7 +113,6 @@ ..() new /obj/item/clothing/tie/medal/silver/valor(src) new /obj/item/clothing/tie/medal/bronze_heart(src) - new /obj/item/clothing/tie/medal/conduct(src) - new /obj/item/clothing/tie/medal/conduct(src) - new /obj/item/clothing/tie/medal/conduct(src) - new /obj/item/clothing/tie/medal/gold/captain(src) \ No newline at end of file + for(var/i in 1 to 3) + new /obj/item/clothing/tie/medal/conduct(src) + new /obj/item/clothing/tie/medal/gold/captain(src) diff --git a/code/game/objects/items/weapons/storage/uplink_kits.dm b/code/game/objects/items/weapons/storage/uplink_kits.dm index 6b2d688e5dd..3f432a7b351 100644 --- a/code/game/objects/items/weapons/storage/uplink_kits.dm +++ b/code/game/objects/items/weapons/storage/uplink_kits.dm @@ -158,16 +158,10 @@ /obj/item/weapon/storage/box/syndie_kit/bioterror/New() ..() - new /obj/item/weapon/reagent_containers/syringe/bioterror(src) - new /obj/item/weapon/reagent_containers/syringe/bioterror(src) - new /obj/item/weapon/reagent_containers/syringe/bioterror(src) - new /obj/item/weapon/reagent_containers/syringe/bioterror(src) - new /obj/item/weapon/reagent_containers/syringe/bioterror(src) - new /obj/item/weapon/reagent_containers/syringe/bioterror(src) - new /obj/item/weapon/reagent_containers/syringe/bioterror(src) + for(var/i in 1 to 7) + new /obj/item/weapon/reagent_containers/syringe/bioterror(src) return - /obj/item/weapon/storage/box/syndie_kit/imp_adrenal name = "boxed adrenal implant (with injector)" @@ -178,7 +172,6 @@ O.update_icon() return - /obj/item/weapon/storage/box/syndie_kit/imp_storage name = "boxed storage implant (with injector)" @@ -187,7 +180,6 @@ new /obj/item/weapon/implanter/storage(src) return - /obj/item/weapon/storage/box/syndie_kit/space name = "boxed space suit and helmet" can_hold = list(/obj/item/clothing/suit/space/syndicate, /obj/item/clothing/head/helmet/space/syndicate) @@ -199,7 +191,6 @@ new /obj/item/clothing/head/helmet/space/syndicate/black/red(src) return - /obj/item/weapon/storage/box/syndie_kit/emp name = "boxed EMP kit" @@ -241,30 +232,25 @@ new /obj/item/nuke_core_container(src) new /obj/item/weapon/paper/nuke_instructions(src) - /obj/item/weapon/storage/box/syndie_kit/tuberculosisgrenade - name = "boxed virus grenade kit" + name = "boxed virus grenade kit" /obj/item/weapon/storage/box/virus_kit/tuberculosisgrenade/New() - ..() - new /obj/item/weapon/grenade/chem_grenade/tuberculosis(src) - new /obj/item/weapon/reagent_containers/hypospray/medipen/tuberculosiscure(src) - new /obj/item/weapon/reagent_containers/hypospray/medipen/tuberculosiscure(src) - new /obj/item/weapon/reagent_containers/hypospray/medipen/tuberculosiscure(src) - new /obj/item/weapon/reagent_containers/hypospray/medipen/tuberculosiscure(src) - new /obj/item/weapon/reagent_containers/hypospray/medipen/tuberculosiscure(src) - new /obj/item/weapon/reagent_containers/syringe(src) - new /obj/item/weapon/reagent_containers/glass/bottle/tuberculosiscure(src) - return + ..() + new /obj/item/weapon/grenade/chem_grenade/tuberculosis(src) + for(var/i in 1 to 5) + new /obj/item/weapon/reagent_containers/hypospray/medipen/tuberculosiscure(src) + new /obj/item/weapon/reagent_containers/syringe(src) + new /obj/item/weapon/reagent_containers/glass/bottle/tuberculosiscure(src) + return /obj/item/weapon/storage/box/syndie_kit/tuberculosiskit - name = "boxed virus kit" + name = "boxed virus kit" /obj/item/weapon/storage/box/virus_kit/tuberculosiskit/New() - ..() - new /obj/item/weapon/reagent_containers/glass/bottle/tuberculosis(src) - new /obj/item/weapon/reagent_containers/hypospray/medipen/tuberculosiscure(src) - new /obj/item/weapon/reagent_containers/syringe(src) - new /obj/item/weapon/reagent_containers/glass/bottle/tuberculosiscure(src) - return - + ..() + new /obj/item/weapon/reagent_containers/glass/bottle/tuberculosis(src) + new /obj/item/weapon/reagent_containers/hypospray/medipen/tuberculosiscure(src) + new /obj/item/weapon/reagent_containers/syringe(src) + new /obj/item/weapon/reagent_containers/glass/bottle/tuberculosiscure(src) + return diff --git a/code/game/objects/structures/crates_lockers/closets/fitness.dm b/code/game/objects/structures/crates_lockers/closets/fitness.dm index 46dc772b5fe..d3e7f0156ea 100644 --- a/code/game/objects/structures/crates_lockers/closets/fitness.dm +++ b/code/game/objects/structures/crates_lockers/closets/fitness.dm @@ -43,12 +43,10 @@ /obj/structure/closet/lasertag/red/New() ..() - new /obj/item/weapon/gun/energy/laser/redtag(src) - new /obj/item/weapon/gun/energy/laser/redtag(src) - new /obj/item/weapon/gun/energy/laser/redtag(src) - new /obj/item/clothing/suit/redtag(src) - new /obj/item/clothing/suit/redtag(src) - new /obj/item/clothing/suit/redtag(src) + for(var/i in 1 to 3) + new /obj/item/weapon/gun/energy/laser/redtag(src) + for(var/i in 1 to 3) + new /obj/item/clothing/suit/redtag(src) new /obj/item/clothing/head/helmet/redtaghelm(src) @@ -59,10 +57,8 @@ /obj/structure/closet/lasertag/blue/New() ..() - new /obj/item/weapon/gun/energy/laser/bluetag(src) - new /obj/item/weapon/gun/energy/laser/bluetag(src) - new /obj/item/weapon/gun/energy/laser/bluetag(src) - new /obj/item/clothing/suit/bluetag(src) - new /obj/item/clothing/suit/bluetag(src) - new /obj/item/clothing/suit/bluetag(src) + for(var/i in 1 to 3) + new /obj/item/weapon/gun/energy/laser/bluetag(src) + for(var/i in 1 to 3) + new /obj/item/clothing/suit/bluetag(src) new /obj/item/clothing/head/helmet/bluetaghelm(src) diff --git a/code/game/objects/structures/crates_lockers/closets/gimmick.dm b/code/game/objects/structures/crates_lockers/closets/gimmick.dm index 1b5cdee6d7e..e2d7f9c2ac1 100644 --- a/code/game/objects/structures/crates_lockers/closets/gimmick.dm +++ b/code/game/objects/structures/crates_lockers/closets/gimmick.dm @@ -22,17 +22,10 @@ /obj/structure/closet/gimmick/russian/New() ..() - new /obj/item/clothing/head/ushanka(src) - new /obj/item/clothing/head/ushanka(src) - new /obj/item/clothing/head/ushanka(src) - new /obj/item/clothing/head/ushanka(src) - new /obj/item/clothing/head/ushanka(src) - new /obj/item/clothing/under/soviet(src) - new /obj/item/clothing/under/soviet(src) - new /obj/item/clothing/under/soviet(src) - new /obj/item/clothing/under/soviet(src) - new /obj/item/clothing/under/soviet(src) - + for(var/i in 1 to 5) + new /obj/item/clothing/head/ushanka(src) + for(var/i in 1 to 5) + new /obj/item/clothing/under/soviet(src) /obj/structure/closet/gimmick/tacticool name = "tacticool gear closet" @@ -67,50 +60,38 @@ /obj/structure/closet/thunderdome/tdred/New() ..() - new /obj/item/clothing/suit/armor/tdome/red(src) - new /obj/item/clothing/suit/armor/tdome/red(src) - new /obj/item/clothing/suit/armor/tdome/red(src) - new /obj/item/weapon/melee/energy/sword/saber(src) - new /obj/item/weapon/melee/energy/sword/saber(src) - new /obj/item/weapon/melee/energy/sword/saber(src) - new /obj/item/weapon/gun/energy/laser(src) - new /obj/item/weapon/gun/energy/laser(src) - new /obj/item/weapon/gun/energy/laser(src) - new /obj/item/weapon/melee/baton/loaded(src) - new /obj/item/weapon/melee/baton/loaded(src) - new /obj/item/weapon/melee/baton/loaded(src) - new /obj/item/weapon/storage/box/flashbangs(src) - new /obj/item/weapon/storage/box/flashbangs(src) - new /obj/item/weapon/storage/box/flashbangs(src) - new /obj/item/clothing/head/helmet/thunderdome(src) - new /obj/item/clothing/head/helmet/thunderdome(src) - new /obj/item/clothing/head/helmet/thunderdome(src) - + for(var/i in 1 to 3) + new /obj/item/clothing/suit/armor/tdome/red(src) + for(var/i in 1 to 3) + new /obj/item/weapon/melee/energy/sword/saber(src) + for(var/i in 1 to 3) + new /obj/item/weapon/gun/energy/laser(src) + for(var/i in 1 to 3) + new /obj/item/weapon/melee/baton/loaded(src) + for(var/i in 1 to 3) + new /obj/item/weapon/storage/box/flashbangs(src) + for(var/i in 1 to 3) + new /obj/item/clothing/head/helmet/thunderdome(src) + /obj/structure/closet/thunderdome/tdgreen name = "green-team Thunderdome closet" icon_door = "green" /obj/structure/closet/thunderdome/tdgreen/New() ..() - new /obj/item/clothing/suit/armor/tdome/green(src) - new /obj/item/clothing/suit/armor/tdome/green(src) - new /obj/item/clothing/suit/armor/tdome/green(src) - new /obj/item/weapon/melee/energy/sword/saber(src) - new /obj/item/weapon/melee/energy/sword/saber(src) - new /obj/item/weapon/melee/energy/sword/saber(src) - new /obj/item/weapon/gun/energy/laser(src) - new /obj/item/weapon/gun/energy/laser(src) - new /obj/item/weapon/gun/energy/laser(src) - new /obj/item/weapon/melee/baton/loaded(src) - new /obj/item/weapon/melee/baton/loaded(src) - new /obj/item/weapon/melee/baton/loaded(src) - new /obj/item/weapon/storage/box/flashbangs(src) - new /obj/item/weapon/storage/box/flashbangs(src) - new /obj/item/weapon/storage/box/flashbangs(src) - new /obj/item/clothing/head/helmet/thunderdome(src) - new /obj/item/clothing/head/helmet/thunderdome(src) - new /obj/item/clothing/head/helmet/thunderdome(src) - + for(var/i in 1 to 3) + new /obj/item/clothing/suit/armor/tdome/green(src) + for(var/i in 1 to 3) + new /obj/item/weapon/melee/energy/sword/saber(src) + for(var/i in 1 to 3) + new /obj/item/weapon/gun/energy/laser(src) + for(var/i in 1 to 3) + new /obj/item/weapon/melee/baton/loaded(src) + for(var/i in 1 to 3) + new /obj/item/weapon/storage/box/flashbangs(src) + for(var/i in 1 to 3) + new /obj/item/clothing/head/helmet/thunderdome(src) + /obj/structure/closet/malf/suits desc = "It's a storage unit for operational gear." icon_state = "syndicate" diff --git a/code/game/objects/structures/crates_lockers/closets/job_closets.dm b/code/game/objects/structures/crates_lockers/closets/job_closets.dm index 0f2d6345066..a8870daa704 100644 --- a/code/game/objects/structures/crates_lockers/closets/job_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/job_closets.dm @@ -37,9 +37,8 @@ new /obj/item/device/radio/headset/headset_srv(src) new /obj/item/clothing/tie/waistcoat(src) new /obj/item/clothing/tie/waistcoat(src) - new /obj/item/clothing/suit/apron/chef(src) - new /obj/item/clothing/suit/apron/chef(src) - new /obj/item/clothing/suit/apron/chef(src) + for(var/i in 1 to 3) + new /obj/item/clothing/suit/apron/chef(src) new /obj/item/clothing/head/soft/mime(src) new /obj/item/clothing/head/soft/mime(src) new /obj/item/weapon/storage/box/mousetraps(src) @@ -61,9 +60,8 @@ new /obj/item/clothing/gloves/color/black(src) new /obj/item/clothing/head/soft/purple(src) new /obj/item/device/flashlight(src) - new /obj/item/weapon/caution(src) - new /obj/item/weapon/caution(src) - new /obj/item/weapon/caution(src) + for(var/i in 1 to 3) + new /obj/item/weapon/caution(src) new /obj/item/weapon/holosign_creator(src) new /obj/item/device/lightreplacer(src) new /obj/item/weapon/soap(src) @@ -132,18 +130,14 @@ new /obj/item/weapon/storage/backpack/satchel_sec(src) new /obj/item/weapon/storage/backpack/dufflebag/sec(src) new /obj/item/weapon/storage/backpack/dufflebag/sec(src) - new /obj/item/clothing/under/rank/security(src) - new /obj/item/clothing/under/rank/security(src) - new /obj/item/clothing/under/rank/security(src) - new /obj/item/clothing/shoes/jackboots(src) - new /obj/item/clothing/shoes/jackboots(src) - new /obj/item/clothing/shoes/jackboots(src) - new /obj/item/clothing/head/beret/sec(src) - new /obj/item/clothing/head/beret/sec(src) - new /obj/item/clothing/head/beret/sec(src) - new /obj/item/clothing/head/soft/sec(src) - new /obj/item/clothing/head/soft/sec(src) - new /obj/item/clothing/head/soft/sec(src) + for(var/i in 1 to 3) + new /obj/item/clothing/under/rank/security(src) + for(var/i in 1 to 3) + new /obj/item/clothing/shoes/jackboots(src) + for(var/i in 1 to 3) + new /obj/item/clothing/head/beret/sec(src) + for(var/i in 1 to 3) + new /obj/item/clothing/head/soft/sec(src) new /obj/item/clothing/mask/bandana/red(src) new /obj/item/clothing/mask/bandana/red(src) return @@ -157,18 +151,14 @@ ..() contents = list() new /obj/item/clothing/suit/hooded/wintercoat/cargo(src) - new /obj/item/clothing/under/rank/cargotech(src) - new /obj/item/clothing/under/rank/cargotech(src) - new /obj/item/clothing/under/rank/cargotech(src) - new /obj/item/clothing/shoes/sneakers/black(src) - new /obj/item/clothing/shoes/sneakers/black(src) - new /obj/item/clothing/shoes/sneakers/black(src) - new /obj/item/clothing/gloves/fingerless(src) - new /obj/item/clothing/gloves/fingerless(src) - new /obj/item/clothing/gloves/fingerless(src) - new /obj/item/clothing/head/soft(src) - new /obj/item/clothing/head/soft(src) - new /obj/item/clothing/head/soft(src) + for(var/i in 1 to 3) + new /obj/item/clothing/under/rank/cargotech(src) + for(var/i in 1 to 3) + new /obj/item/clothing/shoes/sneakers/black(src) + for(var/i in 1 to 3) + new /obj/item/clothing/gloves/fingerless(src) + for(var/i in 1 to 3) + new /obj/item/clothing/head/soft(src) new /obj/item/device/radio/headset/headset_cargo(src) /obj/structure/closet/wardrobe/atmospherics_yellow @@ -181,15 +171,12 @@ new /obj/item/weapon/storage/backpack/dufflebag(src) new /obj/item/weapon/storage/backpack/satchel_norm(src) new /obj/item/weapon/storage/backpack(src) - new /obj/item/clothing/suit/hooded/wintercoat/engineering/atmos(src) - new /obj/item/clothing/suit/hooded/wintercoat/engineering/atmos(src) - new /obj/item/clothing/suit/hooded/wintercoat/engineering/atmos(src) - new /obj/item/clothing/under/rank/atmospheric_technician(src) - new /obj/item/clothing/under/rank/atmospheric_technician(src) - new /obj/item/clothing/under/rank/atmospheric_technician(src) - new /obj/item/clothing/shoes/sneakers/black(src) - new /obj/item/clothing/shoes/sneakers/black(src) - new /obj/item/clothing/shoes/sneakers/black(src) + for(var/i in 1 to 3) + new /obj/item/clothing/suit/hooded/wintercoat/engineering/atmos(src) + for(var/i in 1 to 3) + new /obj/item/clothing/under/rank/atmospheric_technician(src) + for(var/i in 1 to 3) + new /obj/item/clothing/shoes/sneakers/black(src) return /obj/structure/closet/wardrobe/engineering_yellow @@ -203,18 +190,14 @@ new /obj/item/weapon/storage/backpack/industrial(src) new /obj/item/weapon/storage/backpack/satchel_eng(src) new /obj/item/clothing/suit/hooded/wintercoat/engineering(src) - new /obj/item/clothing/under/rank/engineer(src) - new /obj/item/clothing/under/rank/engineer(src) - new /obj/item/clothing/under/rank/engineer(src) - new /obj/item/clothing/suit/hazardvest(src) - new /obj/item/clothing/suit/hazardvest(src) - new /obj/item/clothing/suit/hazardvest(src) - new /obj/item/clothing/shoes/workboots(src) - new /obj/item/clothing/shoes/workboots(src) - new /obj/item/clothing/shoes/workboots(src) - new /obj/item/clothing/head/hardhat(src) - new /obj/item/clothing/head/hardhat(src) - new /obj/item/clothing/head/hardhat(src) + for(var/i in 1 to 3) + new /obj/item/clothing/under/rank/engineer(src) + for(var/i in 1 to 3) + new /obj/item/clothing/suit/hazardvest(src) + for(var/i in 1 to 3) + new /obj/item/clothing/shoes/workboots(src) + for(var/i in 1 to 3) + new /obj/item/clothing/head/hardhat(src) return /obj/structure/closet/wardrobe/white/medical @@ -232,19 +215,16 @@ new /obj/item/clothing/under/rank/medical/blue(src) new /obj/item/clothing/under/rank/medical/green(src) new /obj/item/clothing/under/rank/medical/purple(src) - new /obj/item/clothing/under/rank/medical(src) - new /obj/item/clothing/under/rank/medical(src) - new /obj/item/clothing/under/rank/medical(src) + for(var/i in 1 to 3) + new /obj/item/clothing/under/rank/medical(src) new /obj/item/clothing/suit/toggle/labcoat(src) new /obj/item/clothing/suit/toggle/labcoat(src) new /obj/item/clothing/suit/toggle/labcoat/emt(src) new /obj/item/clothing/suit/toggle/labcoat/emt(src) - new /obj/item/clothing/shoes/sneakers/white(src) - new /obj/item/clothing/shoes/sneakers/white(src) - new /obj/item/clothing/shoes/sneakers/white(src) - new /obj/item/clothing/head/soft/emt(src) - new /obj/item/clothing/head/soft/emt(src) - new /obj/item/clothing/head/soft/emt(src) + for(var/i in 1 to 3) + new /obj/item/clothing/shoes/sneakers/white(src) + for(var/i in 1 to 3) + new /obj/item/clothing/head/soft/emt(src) return /obj/structure/closet/wardrobe/robotics_black @@ -348,20 +328,16 @@ new /obj/item/weapon/storage/backpack/satchel_tox(src) new /obj/item/weapon/storage/backpack/satchel_tox(src) new /obj/item/clothing/suit/hooded/wintercoat/science(src) - new /obj/item/clothing/under/rank/scientist(src) - new /obj/item/clothing/under/rank/scientist(src) - new /obj/item/clothing/under/rank/scientist(src) - new /obj/item/clothing/suit/toggle/labcoat/science(src) - new /obj/item/clothing/suit/toggle/labcoat/science(src) - new /obj/item/clothing/suit/toggle/labcoat/science(src) - new /obj/item/clothing/shoes/sneakers/white(src) - new /obj/item/clothing/shoes/sneakers/white(src) - new /obj/item/clothing/shoes/sneakers/white(src) + for(var/i in 1 to 3) + new /obj/item/clothing/under/rank/scientist(src) + for(var/i in 1 to 3) + new /obj/item/clothing/suit/toggle/labcoat/science(src) + for(var/i in 1 to 3) + new /obj/item/clothing/shoes/sneakers/white(src) new /obj/item/device/radio/headset/headset_sci(src) new /obj/item/device/radio/headset/headset_sci(src) - new /obj/item/clothing/mask/gas(src) - new /obj/item/clothing/mask/gas(src) - new /obj/item/clothing/mask/gas(src) + for(var/i in 1 to 3) + new /obj/item/clothing/mask/gas(src) return /obj/structure/closet/wardrobe/botanist @@ -380,9 +356,7 @@ new /obj/item/clothing/suit/apron(src) new /obj/item/clothing/suit/apron/overalls(src) new /obj/item/clothing/suit/apron/overalls(src) - new /obj/item/clothing/under/rank/hydroponics(src) - new /obj/item/clothing/under/rank/hydroponics(src) - new /obj/item/clothing/under/rank/hydroponics(src) - new /obj/item/clothing/mask/bandana(src) - new /obj/item/clothing/mask/bandana(src) - new /obj/item/clothing/mask/bandana(src) \ No newline at end of file + for(var/i in 1 to 3) + new /obj/item/clothing/under/rank/hydroponics(src) + for(var/i in 1 to 3) + new /obj/item/clothing/mask/bandana(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/bar.dm b/code/game/objects/structures/crates_lockers/closets/secure/bar.dm index 7d04a6bfee6..72fc2ad7bb8 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/bar.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/bar.dm @@ -7,13 +7,5 @@ /obj/structure/closet/secure_closet/bar/New() ..() - new /obj/item/weapon/reagent_containers/food/drinks/beer( src ) - new /obj/item/weapon/reagent_containers/food/drinks/beer( src ) - new /obj/item/weapon/reagent_containers/food/drinks/beer( src ) - new /obj/item/weapon/reagent_containers/food/drinks/beer( src ) - new /obj/item/weapon/reagent_containers/food/drinks/beer( src ) - new /obj/item/weapon/reagent_containers/food/drinks/beer( src ) - new /obj/item/weapon/reagent_containers/food/drinks/beer( src ) - new /obj/item/weapon/reagent_containers/food/drinks/beer( src ) - new /obj/item/weapon/reagent_containers/food/drinks/beer( src ) - new /obj/item/weapon/reagent_containers/food/drinks/beer( src ) + for(var/i in 1 to 10) + new /obj/item/weapon/reagent_containers/food/drinks/beer( src ) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm index 1c9ebd16da9..3f6c5c5a31c 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm @@ -34,16 +34,13 @@ ..() new /obj/item/clothing/gloves/color/yellow(src) new /obj/item/clothing/gloves/color/yellow(src) - new /obj/item/weapon/storage/toolbox/electrical(src) - new /obj/item/weapon/storage/toolbox/electrical(src) - new /obj/item/weapon/storage/toolbox/electrical(src) - new /obj/item/weapon/electronics/apc(src) - new /obj/item/weapon/electronics/apc(src) - new /obj/item/weapon/electronics/apc(src) - new /obj/item/device/multitool(src) - new /obj/item/device/multitool(src) - new /obj/item/device/multitool(src) - + for(var/i in 1 to 3) + new /obj/item/weapon/storage/toolbox/electrical(src) + for(var/i in 1 to 3) + new /obj/item/weapon/electronics/apc(src) + for(var/i in 1 to 3) + new /obj/item/device/multitool(src) + /obj/structure/closet/secure_closet/engineering_welding name = "welding supplies locker" req_access = list(access_engine_equip) @@ -52,13 +49,11 @@ /obj/structure/closet/secure_closet/engineering_welding/New() ..() - new /obj/item/clothing/head/welding(src) - new /obj/item/clothing/head/welding(src) - new /obj/item/clothing/head/welding(src) - new /obj/item/weapon/weldingtool/largetank(src) - new /obj/item/weapon/weldingtool/largetank(src) - new /obj/item/weapon/weldingtool/largetank(src) - + for(var/i in 1 to 3) + new /obj/item/clothing/head/welding(src) + for(var/i in 1 to 3) + new /obj/item/weapon/weldingtool/largetank(src) + /obj/structure/closet/secure_closet/engineering_personal name = "engineer's locker" req_access = list(access_engine_equip) @@ -90,4 +85,4 @@ new /obj/item/weapon/watertank/atmos(src) new /obj/item/clothing/suit/fire/atmos(src) new /obj/item/clothing/head/hardhat/atmos(src) - new /obj/item/clothing/glasses/meson/engine/tray(src) \ No newline at end of file + new /obj/item/clothing/glasses/meson/engine/tray(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm index 980f7fd6c37..92eac22ab65 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm @@ -15,12 +15,10 @@ new /obj/item/weapon/reagent_containers/glass/bottle/toxin(src) new /obj/item/weapon/reagent_containers/glass/bottle/morphine(src) new /obj/item/weapon/reagent_containers/glass/bottle/morphine(src) - new /obj/item/weapon/reagent_containers/glass/bottle/epinephrine(src) - new /obj/item/weapon/reagent_containers/glass/bottle/epinephrine(src) - new /obj/item/weapon/reagent_containers/glass/bottle/epinephrine(src) - new /obj/item/weapon/reagent_containers/glass/bottle/charcoal(src) - new /obj/item/weapon/reagent_containers/glass/bottle/charcoal(src) - new /obj/item/weapon/reagent_containers/glass/bottle/charcoal(src) + for(var/i in 1 to 3) + new /obj/item/weapon/reagent_containers/glass/bottle/epinephrine(src) + for(var/i in 1 to 3) + new /obj/item/weapon/reagent_containers/glass/bottle/charcoal(src) new /obj/item/weapon/storage/box/rxglasses(src) /obj/structure/closet/secure_closet/medical2 @@ -30,13 +28,11 @@ /obj/structure/closet/secure_closet/medical2/New() ..() - new /obj/item/weapon/tank/internals/anesthetic(src) - new /obj/item/weapon/tank/internals/anesthetic(src) - new /obj/item/weapon/tank/internals/anesthetic(src) - new /obj/item/clothing/mask/breath/medical(src) - new /obj/item/clothing/mask/breath/medical(src) - new /obj/item/clothing/mask/breath/medical(src) - + for(var/i in 1 to 3) + new /obj/item/weapon/tank/internals/anesthetic(src) + for(var/i in 1 to 3) + new /obj/item/clothing/mask/breath/medical(src) + /obj/structure/closet/secure_closet/medical3 name = "medical doctor's locker" req_access = list(access_surgery) @@ -81,10 +77,9 @@ /obj/structure/closet/secure_closet/animal/New() ..() new /obj/item/device/assembly/signaler(src) - new /obj/item/device/electropack(src) - new /obj/item/device/electropack(src) - new /obj/item/device/electropack(src) - + for(var/i in 1 to 3) + new /obj/item/device/electropack(src) + /obj/structure/closet/secure_closet/chemical name = "chemical closet" desc = "Store dangerous chemicals in here." diff --git a/code/game/objects/structures/crates_lockers/closets/secure/misc.dm b/code/game/objects/structures/crates_lockers/closets/secure/misc.dm index 5ba9f4e5d5b..f75526e5790 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/misc.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/misc.dm @@ -62,6 +62,5 @@ new /obj/item/stack/sheet/glass(src, 50) new /obj/item/clothing/shoes/magboots(src) new /obj/item/weapon/storage/box/metalfoam(src) - new /obj/item/weapon/rcd_ammo/large(src) - new /obj/item/weapon/rcd_ammo/large(src) - new /obj/item/weapon/rcd_ammo/large(src) + for(var/i in 1 to 3) + new /obj/item/weapon/rcd_ammo/large(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 1bcd35a11b1..e161caf3ce2 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -186,12 +186,9 @@ /obj/structure/closet/secure_closet/injection/New() ..() - new /obj/item/weapon/reagent_containers/syringe/lethal/choral(src) - new /obj/item/weapon/reagent_containers/syringe/lethal/choral(src) - new /obj/item/weapon/reagent_containers/syringe/lethal/choral(src) - new /obj/item/weapon/reagent_containers/syringe/lethal/choral(src) - new /obj/item/weapon/reagent_containers/syringe/lethal/choral(src) - + for(var/i in 1 to 5) + new /obj/item/weapon/reagent_containers/syringe/lethal/choral(src) + /obj/structure/closet/secure_closet/brig name = "brig locker" req_access = list(access_brig) @@ -210,9 +207,8 @@ /obj/structure/closet/secure_closet/courtroom/New() ..() new /obj/item/clothing/shoes/sneakers/brown(src) - new /obj/item/weapon/paper/Court (src) - new /obj/item/weapon/paper/Court (src) - new /obj/item/weapon/paper/Court (src) + for(var/i in 1 to 3) + new /obj/item/weapon/paper/Court (src) new /obj/item/weapon/pen (src) new /obj/item/clothing/suit/judgerobe (src) new /obj/item/clothing/head/powdered_wig (src) @@ -226,16 +222,13 @@ /obj/structure/closet/secure_closet/armory1/New() ..() new /obj/item/clothing/suit/armor/laserproof(src) - new /obj/item/clothing/suit/armor/riot(src) - new /obj/item/clothing/suit/armor/riot(src) - new /obj/item/clothing/suit/armor/riot(src) - new /obj/item/clothing/head/helmet/riot(src) - new /obj/item/clothing/head/helmet/riot(src) - new /obj/item/clothing/head/helmet/riot(src) - new /obj/item/weapon/shield/riot(src) - new /obj/item/weapon/shield/riot(src) - new /obj/item/weapon/shield/riot(src) - + for(var/i in 1 to 3) + new /obj/item/clothing/suit/armor/riot(src) + for(var/i in 1 to 3) + new /obj/item/clothing/head/helmet/riot(src) + for(var/i in 1 to 3) + new /obj/item/weapon/shield/riot(src) + /obj/structure/closet/secure_closet/armory2 name = "armory ballistics locker" req_access = list(access_armory) @@ -244,13 +237,11 @@ /obj/structure/closet/secure_closet/armory2/New() ..() new /obj/item/weapon/storage/box/firingpins(src) - new /obj/item/weapon/storage/box/rubbershot(src) - new /obj/item/weapon/storage/box/rubbershot(src) - new /obj/item/weapon/storage/box/rubbershot(src) - new /obj/item/weapon/gun/projectile/shotgun/riot(src) - new /obj/item/weapon/gun/projectile/shotgun/riot(src) - new /obj/item/weapon/gun/projectile/shotgun/riot(src) - + for(var/i in 1 to 3) + new /obj/item/weapon/storage/box/rubbershot(src) + for(var/i in 1 to 3) + new /obj/item/weapon/gun/projectile/shotgun/riot(src) + /obj/structure/closet/secure_closet/armory3 name = "armory energy gun locker" req_access = list(access_armory) @@ -260,13 +251,11 @@ ..() new /obj/item/weapon/storage/box/firingpins(src) new /obj/item/weapon/gun/energy/ionrifle(src) - new /obj/item/weapon/gun/energy/gun(src) - new /obj/item/weapon/gun/energy/gun(src) - new /obj/item/weapon/gun/energy/gun(src) - new /obj/item/weapon/gun/energy/laser(src) - new /obj/item/weapon/gun/energy/laser(src) - new /obj/item/weapon/gun/energy/laser(src) - + for(var/i in 1 to 3) + new /obj/item/weapon/gun/energy/gun(src) + for(var/i in 1 to 3) + new /obj/item/weapon/gun/energy/laser(src) + /obj/structure/closet/secure_closet/tac name = "armory tac locker" req_access = list(access_armory) @@ -286,6 +275,5 @@ /obj/structure/closet/secure_closet/lethalshots/New() ..() - new /obj/item/weapon/storage/box/lethalshot(src) - new /obj/item/weapon/storage/box/lethalshot(src) - new /obj/item/weapon/storage/box/lethalshot(src) + for(var/i in 1 to 3) + new /obj/item/weapon/storage/box/lethalshot(src) diff --git a/code/game/objects/structures/crates_lockers/closets/syndicate.dm b/code/game/objects/structures/crates_lockers/closets/syndicate.dm index 792d5b167b3..55ea7578571 100644 --- a/code/game/objects/structures/crates_lockers/closets/syndicate.dm +++ b/code/game/objects/structures/crates_lockers/closets/syndicate.dm @@ -23,19 +23,13 @@ /obj/structure/closet/syndicate/nuclear/New() ..() contents = list() - new /obj/item/ammo_box/magazine/m10mm(src) - new /obj/item/ammo_box/magazine/m10mm(src) - new /obj/item/ammo_box/magazine/m10mm(src) - new /obj/item/ammo_box/magazine/m10mm(src) - new /obj/item/ammo_box/magazine/m10mm(src) + for(var/i in 1 to 5) + new /obj/item/ammo_box/magazine/m10mm(src) new /obj/item/weapon/storage/box/flashbangs(src) new /obj/item/weapon/storage/box/teargas(src) new /obj/item/weapon/storage/backpack/dufflebag/syndie/med(src) - new /obj/item/weapon/pinpointer/nukeop(src) - new /obj/item/weapon/pinpointer/nukeop(src) - new /obj/item/weapon/pinpointer/nukeop(src) - new /obj/item/weapon/pinpointer/nukeop(src) - new /obj/item/weapon/pinpointer/nukeop(src) + for(var/i in 1 to 5) + new /obj/item/weapon/pinpointer/nukeop(src) new /obj/item/device/pda/syndicate(src) return diff --git a/code/game/objects/structures/crates_lockers/closets/utility_closets.dm b/code/game/objects/structures/crates_lockers/closets/utility_closets.dm index 064256f8f10..edc5b8d1dca 100644 --- a/code/game/objects/structures/crates_lockers/closets/utility_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/utility_closets.dm @@ -174,11 +174,5 @@ /obj/structure/closet/ammunitionlocker/New() ..() - new /obj/item/ammo_casing/shotgun/beanbag(src) - new /obj/item/ammo_casing/shotgun/beanbag(src) - new /obj/item/ammo_casing/shotgun/beanbag(src) - new /obj/item/ammo_casing/shotgun/beanbag(src) - new /obj/item/ammo_casing/shotgun/beanbag(src) - new /obj/item/ammo_casing/shotgun/beanbag(src) - new /obj/item/ammo_casing/shotgun/beanbag(src) - new /obj/item/ammo_casing/shotgun/beanbag(src) + for(var/i in 1 to 8) + new /obj/item/ammo_casing/shotgun/beanbag(src) diff --git a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm index 68c5a8c32d7..489defcdf07 100644 --- a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm +++ b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm @@ -5,12 +5,10 @@ /obj/structure/closet/wardrobe/New() ..() - new /obj/item/clothing/under/color/blue(src) - new /obj/item/clothing/under/color/blue(src) - new /obj/item/clothing/under/color/blue(src) - new /obj/item/clothing/shoes/sneakers/brown(src) - new /obj/item/clothing/shoes/sneakers/brown(src) - new /obj/item/clothing/shoes/sneakers/brown(src) + for(var/i in 1 to 3) + new /obj/item/clothing/under/color/blue(src) + for(var/i in 1 to 3) + new /obj/item/clothing/shoes/sneakers/brown(src) return /obj/structure/closet/wardrobe/pink @@ -20,12 +18,10 @@ /obj/structure/closet/wardrobe/pink/New() ..() contents = list() - new /obj/item/clothing/under/color/pink(src) - new /obj/item/clothing/under/color/pink(src) - new /obj/item/clothing/under/color/pink(src) - new /obj/item/clothing/shoes/sneakers/brown(src) - new /obj/item/clothing/shoes/sneakers/brown(src) - new /obj/item/clothing/shoes/sneakers/brown(src) + for(var/i in 1 to 3) + new /obj/item/clothing/under/color/pink(src) + for(var/i in 1 to 3) + new /obj/item/clothing/shoes/sneakers/brown(src) return /obj/structure/closet/wardrobe/black @@ -35,22 +31,18 @@ /obj/structure/closet/wardrobe/black/New() ..() contents = list() - new /obj/item/clothing/under/color/black(src) - new /obj/item/clothing/under/color/black(src) - new /obj/item/clothing/under/color/black(src) + for(var/i in 1 to 3) + new /obj/item/clothing/under/color/black(src) if(prob(25)) new /obj/item/clothing/suit/jacket/leather(src) if(prob(20)) new /obj/item/clothing/suit/jacket/leather/overcoat(src) - new /obj/item/clothing/shoes/sneakers/black(src) - new /obj/item/clothing/shoes/sneakers/black(src) - new /obj/item/clothing/shoes/sneakers/black(src) - new /obj/item/clothing/head/that(src) - new /obj/item/clothing/head/that(src) - new /obj/item/clothing/head/that(src) - new /obj/item/clothing/head/soft/black(src) - new /obj/item/clothing/head/soft/black(src) - new /obj/item/clothing/head/soft/black(src) + for(var/i in 1 to 3) + new /obj/item/clothing/shoes/sneakers/black(src) + for(var/i in 1 to 3) + new /obj/item/clothing/head/that(src) + for(var/i in 1 to 3) + new /obj/item/clothing/head/soft/black(src) new /obj/item/clothing/mask/bandana/black(src) new /obj/item/clothing/mask/bandana/black(src) if(prob(40)) @@ -65,12 +57,10 @@ /obj/structure/closet/wardrobe/green/New() ..() contents = list() - new /obj/item/clothing/under/color/green(src) - new /obj/item/clothing/under/color/green(src) - new /obj/item/clothing/under/color/green(src) - new /obj/item/clothing/shoes/sneakers/black(src) - new /obj/item/clothing/shoes/sneakers/black(src) - new /obj/item/clothing/shoes/sneakers/black(src) + for(var/i in 1 to 3) + new /obj/item/clothing/under/color/green(src) + for(var/i in 1 to 3) + new /obj/item/clothing/shoes/sneakers/black(src) new /obj/item/clothing/mask/bandana/green(src) new /obj/item/clothing/mask/bandana/green(src) return @@ -84,12 +74,10 @@ /obj/structure/closet/wardrobe/orange/New() ..() contents = list() - new /obj/item/clothing/under/rank/prisoner(src) - new /obj/item/clothing/under/rank/prisoner(src) - new /obj/item/clothing/under/rank/prisoner(src) - new /obj/item/clothing/shoes/sneakers/orange(src) - new /obj/item/clothing/shoes/sneakers/orange(src) - new /obj/item/clothing/shoes/sneakers/orange(src) + for(var/i in 1 to 3) + new /obj/item/clothing/under/rank/prisoner(src) + for(var/i in 1 to 3) + new /obj/item/clothing/shoes/sneakers/orange(src) return @@ -100,12 +88,10 @@ /obj/structure/closet/wardrobe/yellow/New() ..() contents = list() - new /obj/item/clothing/under/color/yellow(src) - new /obj/item/clothing/under/color/yellow(src) - new /obj/item/clothing/under/color/yellow(src) - new /obj/item/clothing/shoes/sneakers/orange(src) - new /obj/item/clothing/shoes/sneakers/orange(src) - new /obj/item/clothing/shoes/sneakers/orange(src) + for(var/i in 1 to 3) + new /obj/item/clothing/under/color/yellow(src) + for(var/i in 1 to 3) + new /obj/item/clothing/shoes/sneakers/orange(src) new /obj/item/clothing/mask/bandana/gold(src) new /obj/item/clothing/mask/bandana/gold(src) return @@ -118,15 +104,12 @@ /obj/structure/closet/wardrobe/white/New() ..() contents = list() - new /obj/item/clothing/under/color/white(src) - new /obj/item/clothing/under/color/white(src) - new /obj/item/clothing/under/color/white(src) - new /obj/item/clothing/shoes/sneakers/white(src) - new /obj/item/clothing/shoes/sneakers/white(src) - new /obj/item/clothing/shoes/sneakers/white(src) - new /obj/item/clothing/head/soft/mime(src) - new /obj/item/clothing/head/soft/mime(src) - new /obj/item/clothing/head/soft/mime(src) + for(var/i in 1 to 3) + new /obj/item/clothing/under/color/white(src) + for(var/i in 1 to 3) + new /obj/item/clothing/shoes/sneakers/white(src) + for(var/i in 1 to 3) + new /obj/item/clothing/head/soft/mime(src) return /obj/structure/closet/wardrobe/pjs @@ -140,10 +123,8 @@ new /obj/item/clothing/under/pj/red(src) new /obj/item/clothing/under/pj/blue(src) new /obj/item/clothing/under/pj/blue(src) - new /obj/item/clothing/shoes/sneakers/white(src) - new /obj/item/clothing/shoes/sneakers/white(src) - new /obj/item/clothing/shoes/sneakers/white(src) - new /obj/item/clothing/shoes/sneakers/white(src) + for(var/i in 1 to 4) + new /obj/item/clothing/shoes/sneakers/white(src) return @@ -154,15 +135,12 @@ /obj/structure/closet/wardrobe/grey/New() ..() contents = list() - new /obj/item/clothing/under/color/grey(src) - new /obj/item/clothing/under/color/grey(src) - new /obj/item/clothing/under/color/grey(src) - new /obj/item/clothing/shoes/sneakers/black(src) - new /obj/item/clothing/shoes/sneakers/black(src) - new /obj/item/clothing/shoes/sneakers/black(src) - new /obj/item/clothing/head/soft/grey(src) - new /obj/item/clothing/head/soft/grey(src) - new /obj/item/clothing/head/soft/grey(src) + for(var/i in 1 to 3) + new /obj/item/clothing/under/color/grey(src) + for(var/i in 1 to 3) + new /obj/item/clothing/shoes/sneakers/black(src) + for(var/i in 1 to 3) + new /obj/item/clothing/head/soft/grey(src) if(prob(50)) new /obj/item/weapon/storage/backpack/dufflebag(src) if(prob(40)) diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index 44edb4a6f24..573df27cd88 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -50,10 +50,8 @@ /obj/structure/closet/crate/rcd/New() ..() - new /obj/item/weapon/rcd_ammo(src) - new /obj/item/weapon/rcd_ammo(src) - new /obj/item/weapon/rcd_ammo(src) - new /obj/item/weapon/rcd_ammo(src) + for(var/i in 1 to 4) + new /obj/item/weapon/rcd_ammo(src) new /obj/item/weapon/rcd(src) /obj/structure/closet/crate/freezer @@ -91,15 +89,10 @@ /obj/structure/closet/crate/radiation/New() ..() - new /obj/item/clothing/suit/radiation(src) - new /obj/item/clothing/head/radiation(src) - new /obj/item/clothing/suit/radiation(src) - new /obj/item/clothing/head/radiation(src) - new /obj/item/clothing/suit/radiation(src) - new /obj/item/clothing/head/radiation(src) - new /obj/item/clothing/suit/radiation(src) - new /obj/item/clothing/head/radiation(src) - + for(var/i in 1 to 4) + new /obj/item/clothing/suit/radiation(src) + new /obj/item/clothing/head/radiation(src) + /obj/structure/closet/crate/hydroponics name = "hydroponics crate" desc = "All you need to destroy those pesky weeds and pests." From abe37ec19fe4bdf3be1a4a095bab05af663f28d9 Mon Sep 17 00:00:00 2001 From: SouDescolado Date: Tue, 5 Jan 2016 14:42:50 -0200 Subject: [PATCH 169/310] Test test --- nqfnuohh.4ba.txt | 69 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 nqfnuohh.4ba.txt diff --git a/nqfnuohh.4ba.txt b/nqfnuohh.4ba.txt new file mode 100644 index 00000000000..cd200152c80 --- /dev/null +++ b/nqfnuohh.4ba.txt @@ -0,0 +1,69 @@ +pick a3d9bab Trying to fix merge conflict. +pick 85ecd0e Gah +pick 89b612a Removes unused ?module? code +pick bbaca08 Restores default chameleon projector disguise +pick ff6d88f Fixes injectors spawned before mutation table is ready +pick 41f7d95 Fixes mining bot being hard to repair. Stops bruisepacks working on mining bot +pick 78295d8 Fixes runtime when trying to cremate an animal that deletes itself upon death (mouse, cockroach). +pick 9b8abae Adds pr announcer/changelog generator github webhook script to tools folder. +pick 5738de6 Fixes changeling form swap +pick b33f38e Statue +pick fede778 Forgot a letter +pick c8fd053 Redundant check removed +pick 03a39b9 Venus +pick 6b36c8b Leap Icon +pick aec7bd9 Fixes a runtime involving mobs that get deleted upon death. +pick 0b14e9e Reworks Green slime core blacklist to use a species flag Adds synths to blacklist. +pick 6534612 Changes from null to 0 +pick ffc016f Makes the license section of the readme more readable +pick 5662676 Makes attacks also log to the mob's mind.dm Shows gibbed antags in the check antags panel. +pick 8b99b64 Fixes issues with destroying the narsie shell +pick bbb6729 Remove extra HTML; fix drag/resize in old IE +pick 34019ae Clean up chem dispenser UI +pick 9c1e05f Increase tgui security by inlining for admins only; reduce cruft +pick 1319bd7 Clean comments; adata on the serverside; update postcss; APC size +pick 1955b8c Fix a couple typos with the Air Alarm UI +pick 1b54388 Treat assets as binary; fix sizes once and for all +pick 453f149 Fix tgui states +pick dc69cba Allow UIs to be attached to datums; various fixes +pick 57cd223 Fix contains proc to use a loop +pick 8994f95 Clean some old comments +pick 31281da Add IE detection +pick f021d19 Update libraries +pick aec6bc1 Fix tgui proc signatures and thus AI APC reboot +pick 174c25f Initialize non-inlined UIs through a topic call +pick 8a72f5a Fixes cyborg teleport +pick 8b08ce8 Better loop +pick 8dfd29e Adds follow links to overmind and revenant chat +pick 6450f93 abduct this +pick 41eeedf Fixes doubled shadowling messages +pick 55ceaba SMES fix +pick 3d74978 Uses get_turf +pick beaa3ef experimentor typo fix +pick 0b98fff - Adds a visible message when the larva grows into a humanoid. - Removes some duplicated code in alien growth code (larva-to-humanoid, praetorian and queen now all use the same proc). - Alien drones can no longer evolve into a praetorian while inside a pipe (praetorian can't ventcrawl) or other containers. - Removed an unneeded check in larva_evolve/fire(). - Fixes bug where a larva could evolve despite being incapacitated/dead during the selection of the alien caste. - Remove outdated code in monkey/attack_hand about disarm and grab intent. - Evolving into a royal alien no longer delets what you hold in your hands and the content of your stomach. +pick 2ed4643 forgot to remove that line. +pick f1783bc fix #14307 +pick cb50a25 gives barman his cool stuff again +pick 4a3324b Adds away areas to ghost teleport/ admin jump list +pick 3cf2601 Small grammar fix to shielded message. +pick 64fc9ff Removes some : in cartridge code +pick 3c5cdbe forgot to typecast properly + +# Rebase 43f3df8..7381279 onto 43f3df8 (50 command(s)) +# +# Commands: +# p, pick = use commit +# r, reword = use commit, but edit the commit message +# e, edit = use commit, but stop for amending +# s, squash = use commit, but meld into previous commit +# f, fixup = like "squash", but discard this commit's log message +# x, exec = run command (the rest of the line) using shell +# +# These lines can be re-ordered; they are executed from top to bottom. +# +# If you remove a line here THAT COMMIT WILL BE LOST. +# +# However, if you remove everything, the rebase will be aborted. +# +# Note that empty commits are commented out + From 27304fd2699afbd58524afb490f86ac30418a139 Mon Sep 17 00:00:00 2001 From: SouDescolado Date: Tue, 5 Jan 2016 14:43:43 -0200 Subject: [PATCH 170/310] Revert "Test" This reverts commit abe37ec19fe4bdf3be1a4a095bab05af663f28d9. --- nqfnuohh.4ba.txt | 69 ------------------------------------------------ 1 file changed, 69 deletions(-) delete mode 100644 nqfnuohh.4ba.txt diff --git a/nqfnuohh.4ba.txt b/nqfnuohh.4ba.txt deleted file mode 100644 index cd200152c80..00000000000 --- a/nqfnuohh.4ba.txt +++ /dev/null @@ -1,69 +0,0 @@ -pick a3d9bab Trying to fix merge conflict. -pick 85ecd0e Gah -pick 89b612a Removes unused ?module? code -pick bbaca08 Restores default chameleon projector disguise -pick ff6d88f Fixes injectors spawned before mutation table is ready -pick 41f7d95 Fixes mining bot being hard to repair. Stops bruisepacks working on mining bot -pick 78295d8 Fixes runtime when trying to cremate an animal that deletes itself upon death (mouse, cockroach). -pick 9b8abae Adds pr announcer/changelog generator github webhook script to tools folder. -pick 5738de6 Fixes changeling form swap -pick b33f38e Statue -pick fede778 Forgot a letter -pick c8fd053 Redundant check removed -pick 03a39b9 Venus -pick 6b36c8b Leap Icon -pick aec7bd9 Fixes a runtime involving mobs that get deleted upon death. -pick 0b14e9e Reworks Green slime core blacklist to use a species flag Adds synths to blacklist. -pick 6534612 Changes from null to 0 -pick ffc016f Makes the license section of the readme more readable -pick 5662676 Makes attacks also log to the mob's mind.dm Shows gibbed antags in the check antags panel. -pick 8b99b64 Fixes issues with destroying the narsie shell -pick bbb6729 Remove extra HTML; fix drag/resize in old IE -pick 34019ae Clean up chem dispenser UI -pick 9c1e05f Increase tgui security by inlining for admins only; reduce cruft -pick 1319bd7 Clean comments; adata on the serverside; update postcss; APC size -pick 1955b8c Fix a couple typos with the Air Alarm UI -pick 1b54388 Treat assets as binary; fix sizes once and for all -pick 453f149 Fix tgui states -pick dc69cba Allow UIs to be attached to datums; various fixes -pick 57cd223 Fix contains proc to use a loop -pick 8994f95 Clean some old comments -pick 31281da Add IE detection -pick f021d19 Update libraries -pick aec6bc1 Fix tgui proc signatures and thus AI APC reboot -pick 174c25f Initialize non-inlined UIs through a topic call -pick 8a72f5a Fixes cyborg teleport -pick 8b08ce8 Better loop -pick 8dfd29e Adds follow links to overmind and revenant chat -pick 6450f93 abduct this -pick 41eeedf Fixes doubled shadowling messages -pick 55ceaba SMES fix -pick 3d74978 Uses get_turf -pick beaa3ef experimentor typo fix -pick 0b98fff - Adds a visible message when the larva grows into a humanoid. - Removes some duplicated code in alien growth code (larva-to-humanoid, praetorian and queen now all use the same proc). - Alien drones can no longer evolve into a praetorian while inside a pipe (praetorian can't ventcrawl) or other containers. - Removed an unneeded check in larva_evolve/fire(). - Fixes bug where a larva could evolve despite being incapacitated/dead during the selection of the alien caste. - Remove outdated code in monkey/attack_hand about disarm and grab intent. - Evolving into a royal alien no longer delets what you hold in your hands and the content of your stomach. -pick 2ed4643 forgot to remove that line. -pick f1783bc fix #14307 -pick cb50a25 gives barman his cool stuff again -pick 4a3324b Adds away areas to ghost teleport/ admin jump list -pick 3cf2601 Small grammar fix to shielded message. -pick 64fc9ff Removes some : in cartridge code -pick 3c5cdbe forgot to typecast properly - -# Rebase 43f3df8..7381279 onto 43f3df8 (50 command(s)) -# -# Commands: -# p, pick = use commit -# r, reword = use commit, but edit the commit message -# e, edit = use commit, but stop for amending -# s, squash = use commit, but meld into previous commit -# f, fixup = like "squash", but discard this commit's log message -# x, exec = run command (the rest of the line) using shell -# -# These lines can be re-ordered; they are executed from top to bottom. -# -# If you remove a line here THAT COMMIT WILL BE LOST. -# -# However, if you remove everything, the rebase will be aborted. -# -# Note that empty commits are commented out - From 262e67ef93cac4ec3f0bfc749c84b72bc5a4a64d Mon Sep 17 00:00:00 2001 From: Remie Richards Date: Tue, 5 Jan 2016 17:24:35 +0000 Subject: [PATCH 171/310] Adds a DM Quirks/Tricks section to Contributing.dm --- CONTRIBUTING.md | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index bf96cb874db..dab56f4a2f2 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -208,6 +208,48 @@ This prevents nesting levels from getting deeper then they need to be. Math operators like +, -, /, *, etc are up in the air, just choose which version looks more readable. +###Dream Maker Quirks/Tricks: +Like all languages, Dream Maker has its quirks, some of them are beneficial to us, like these + +* In-To for loops: ```for(var/i = 1, i <= some_value, i++)``` is a fairly standard way to write an incremental for loop in most languages (especially those in the C family) however DM's ```for(var/i in 1 to some_value)``` syntax is oddly faster than its implementation of the former syntax; where possible it's advised to use DM's syntax. (Note, the ```to``` keyword is inclusive, so it automatically defaults to replacing ```<=```, if you want ```<``` then you should write it as ```1 to some_value-1```). + +* Istypeless for loops: a name for a differing syntax for writing for-each style loops in DM, however it is NOT DM's standard syntax hence why this is considered a quirk. Take a look at this: +``` +var/list/bag_of_items = list(sword, apple, coinpouch, sword, sword) +var/obj/item/sword/best_sword = null +for(var/obj/item/sword/S in bag_of_items) + if(!best_sword || S.damage > best_sword.damage) + best_sword = S +``` +The above is a simple proc for checking all swords in a container and returning the one with the highest damage, it uses DM's standard syntax for a for loop, it does this by specifying a type in the variable of the for header which byond interprets as a type to filter by, it performs this filter using ```istype()``` (or some internal-magic similar to ```istype()```, I wouldn't put it past byond), the above example is fine with the data currently contained in ```bag_of_items```, however if ```bag_of_items``` contained ONLY swords, or only SUBTYPES of swords, then the above is inefficient, for example: +``` +var/list/bag_of_swords = list(sword, sword, sword, sword) +var/obj/item/sword/best_sword = null +for(var/obj/item/sword/S in bag_of_items) + if(!best_sword || S.damage > best_sword.damage) + best_sword = S +``` +specifies a type for DM to filter by, with the previous example that's perfectly fine, we only want swords, but here the bag only contains swords? is DM still going to try to filter because we gave it a type to filter by? YES, and here comes the inefficiency. Whereever a list (or other container, such as an atom (in which case you're technically accessing their special contents list but I digress)) contains datums of the same datatype or subtypes of the datatype you require for your for body +you can circumvent DM's filtering and automatic ```istype()``` checks by writing the loop as such: +``` +var/list/bag_of_swords = list(sword, sword, sword, sword) +var/obj/item/sword/best_sword = null +for(var/s in bag_of_items) + var/obj/item/sword/S = s + if(!best_sword || S.damage > best_sword.damage) + best_sword = S +``` +Of course, if the list contains data of a mixed type then the above optimisation is DANGEROUS, as it will blindly typecast all data in the list as the specified type, even if it isn't really that type! which will cause runtime errors. + +* Dot variable: like other languages in the C family, Dream maker has a ```.``` or "Dot" operator, used for accessing variables/members/functions of an object instance. +eg: +``` +var/mob/living/carbon/human/H = YOU_THE_READER +H.gib() +``` +however DM also has a dot variable, accessed just as ```.``` on it's own, defaulting to a value of null, now what's special about the dot operator is that it is automatically returned (as in the ```return``` statment) at the end of a proc, provided the proc does not already manually return (```return count``` for example). Why is this special? well the ```return``` statement should ideally be free from overhead (functionally free, of course nothing's free) but DM fails to fulfill this, DM's return statement is actually fairly costly for what it does and for what it's used for. +With ```.``` being everpresent in every proc can we use it as a temporary variable? Of course we can! However the ```.``` operator cannot replace a typecasted variable, it can hold data any other var in DM can, it just can't be accessed as one, however the ```.``` operator is compatible with a few operators that look weird but work perfectly fine, such as: ```.++``` for incrementing ```.'s``` value, or ```.[1]``` for accessing the first element of ```.``` (provided it's a list). + ##Pull Request Process There is no strict process when it comes to merging pull requests, pull requests will sometimes take a while before they are looked at by a maintainer, the bigger the change the more time it will take before they are accepted into the code. Every team member is a volunteer who is giving up their own time to help maintain and contribute, so please be nice. Here are some helpful ways to make it easier for you and for the maintainer when making a pull request. From 936973a68d283902c3cef214373c83b7ff7cd066 Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Tue, 5 Jan 2016 13:54:12 -0600 Subject: [PATCH 172/310] Chasm Fix --- code/modules/mining/mine_turfs.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index fd7fd1255aa..e6c2ad43328 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -683,7 +683,7 @@ var/global/list/rockTurfEdgeCache /turf/simulated/chasm/proc/drop(atom/movable/AM) visible_message("[AM] falls into [src]!") - AM.Move(locate(drop_x, drop_y, drop_z)) + AM.forceMove(locate(drop_x, drop_y, drop_z)) AM.visible_message("[AM] falls from above!") if(istype(AM, /mob/living)) var/mob/living/L = AM From e2b09f560464ccc174ef39a49e35ff54c653f5d6 Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Tue, 5 Jan 2016 13:56:26 -0600 Subject: [PATCH 173/310] Gate Fix --- code/modules/awaymissions/gateway.dm | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/code/modules/awaymissions/gateway.dm b/code/modules/awaymissions/gateway.dm index d6f2136eebc..a761abd4909 100644 --- a/code/modules/awaymissions/gateway.dm +++ b/code/modules/awaymissions/gateway.dm @@ -132,15 +132,15 @@ var/obj/machinery/gateway/centerstation/the_gateway = null //okay, here's the good teleporting stuff /obj/machinery/gateway/centerstation/Bumped(atom/movable/AM) - if(!ready) + if(!ready) return - if(!active) + if(!active) return - if(!awaygate || qdeleted(awaygate)) + if(!awaygate || qdeleted(awaygate)) return if(awaygate.calibrated) - AM.loc = get_step(awaygate.loc, SOUTH) + AM.forceMove(get_step(awaygate.loc, SOUTH)) AM.dir = SOUTH if (ismob(AM)) var/mob/M = AM @@ -150,7 +150,7 @@ var/obj/machinery/gateway/centerstation/the_gateway = null else var/obj/effect/landmark/dest = pick(awaydestinations) if(dest) - AM.loc = dest.loc + AM.forceMove(get_turf(dest)) AM.dir = SOUTH use_power(5000) return @@ -240,18 +240,18 @@ var/obj/machinery/gateway/centerstation/the_gateway = null /obj/machinery/gateway/centeraway/Bumped(atom/movable/AM) - if(!ready) + if(!ready) return - if(!active) + if(!active) return - if(!stationgate || qdeleted(stationgate)) + if(!stationgate || qdeleted(stationgate)) return if(istype(AM, /mob/living/carbon)) for(var/obj/item/weapon/implant/exile/E in AM)//Checking that there is an exile implant in the contents if(E.imp_in == AM)//Checking that it's actually implanted vs just in their pocket AM << "\black The station gate has detected your exile implant and is blocking your entry." return - AM.loc = get_step(stationgate.loc, SOUTH) + AM.forceMove(get_step(stationgate.loc, SOUTH)) AM.dir = SOUTH if (ismob(AM)) var/mob/M = AM From 556b89501d0855ed0a0a3ed828dd665ad6f844b4 Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Tue, 5 Jan 2016 14:21:03 -0600 Subject: [PATCH 174/310] Beepsky Fix --- code/modules/mob/living/simple_animal/bot/secbot.dm | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/code/modules/mob/living/simple_animal/bot/secbot.dm b/code/modules/mob/living/simple_animal/bot/secbot.dm index a0d0ef6b331..eec5a954e23 100644 --- a/code/modules/mob/living/simple_animal/bot/secbot.dm +++ b/code/modules/mob/living/simple_animal/bot/secbot.dm @@ -184,6 +184,16 @@ Auto Patrol: []"}, else ..() + +/mob/living/simple_animal/bot/secbot/hitby(atom/movable/AM, skipcatch = 0, hitpush = 1, blocked = 0) + if(istype(AM, /obj/item)) + var/obj/item/I = AM + if(I.throwforce < src.health && I.thrownby && (istype(I.thrownby, /mob/living/carbon/human))) + var/mob/living/carbon/human/H = I.thrownby + retaliate(H) + ..() + + /mob/living/simple_animal/bot/secbot/proc/cuff(mob/living/carbon/C) mode = BOT_ARREST playsound(loc, 'sound/weapons/cablecuff.ogg', 30, 1, -2) From cf6b95b755d5c5013458ea1987f0e351c5fb54e7 Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Tue, 5 Jan 2016 14:25:56 -0600 Subject: [PATCH 175/310] Runtime --- code/__HELPERS/mobs.dm | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index 37ad064b5c2..99cb86327c2 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -127,11 +127,12 @@ Proc for attack log creation, because really why not /proc/add_logs(mob/user, mob/target, what_done, object=null, addition=null) var/newhealthtxt = "" - var/turf/attack_location = get_turf(target) - var/coordinates = "([attack_location.x],[attack_location.y],[attack_location.z])" + var/coordinates = "" if (target && isliving(target)) var/mob/living/L = target newhealthtxt = " (NEWHP: [L.health])" + var/turf/attack_location = get_turf(target) + coordinates = "([attack_location.x],[attack_location.y],[attack_location.z])" if(user && ismob(user)) user.attack_log += text("\[[time_stamp()]\] Has [what_done] [target ? "[target.name][(ismob(target) && target.ckey) ? "([target.ckey])" : ""]" : "NON-EXISTANT SUBJECT"][object ? " with [object]" : " "][addition][newhealthtxt][coordinates]") if(user.mind) @@ -148,10 +149,10 @@ Proc for attack log creation, because really why not if(!user || !target) return 0 var/user_loc = user.loc - + var/drifting = 0 if(!user.Process_Spacemove(0) && user.inertia_dir) - drifting = 1 + drifting = 1 var/target_loc = target.loc @@ -172,11 +173,11 @@ Proc for attack log creation, because really why not break if(uninterruptible) continue - + if(drifting && !user.inertia_dir) drifting = 0 user_loc = user.loc - + if((!drifting && user.loc != user_loc) || target.loc != target_loc || user.get_active_hand() != holding || user.incapacitated() || user.lying ) . = 0 break @@ -192,11 +193,11 @@ Proc for attack log creation, because really why not Tloc = target.loc var/atom/Uloc = user.loc - + var/drifting = 0 if(!user.Process_Spacemove(0) && user.inertia_dir) - drifting = 1 - + drifting = 1 + var/holding = user.get_active_hand() var/holdingnull = 1 //User's hand started out empty, check for an empty hand @@ -214,11 +215,11 @@ Proc for attack log creation, because really why not sleep(1) if (progress) progbar.update(world.time - starttime) - + if(drifting && !user.inertia_dir) drifting = 0 Uloc = user.loc - + if(!user || user.stat || user.weakened || user.stunned || (!drifting && user.loc != Uloc)) . = 0 break From e34fed4566a340c293a9d4371abc8d435c3ba032 Mon Sep 17 00:00:00 2001 From: AnturK Date: Tue, 5 Jan 2016 23:39:10 +0100 Subject: [PATCH 176/310] Fixes soulstones --- code/game/gamemodes/wizard/soulstone.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/gamemodes/wizard/soulstone.dm b/code/game/gamemodes/wizard/soulstone.dm index 84b9e6da663..6df611d4d64 100644 --- a/code/game/gamemodes/wizard/soulstone.dm +++ b/code/game/gamemodes/wizard/soulstone.dm @@ -245,12 +245,12 @@ return 0 if(consenting_candidates.len) - var/client/ghost = null + var/mob/dead/observer/ghost = null ghost = pick(consenting_candidates) if(C.contents.len) //If they used the soulstone on someone else in the meantime return 0 if(!T.client) //If the original returns in the alloted time - T.client = ghost + T.client = ghost.client for(var/obj/item/W in T) T.unEquip(W) init_shade(C, T, U) From 240263c5d574b5d33ba94df518bd95f3e4e3cf76 Mon Sep 17 00:00:00 2001 From: Nerd Lord Date: Tue, 5 Jan 2016 22:51:18 -0500 Subject: [PATCH 177/310] Clamp it! --- code/modules/mob/living/simple_animal/simple_animal.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index ea563b51068..416a8079c15 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -279,7 +279,7 @@ /mob/living/simple_animal/proc/adjustHealth(amount) if(status_flags & GODMODE) return 0 - bruteloss = min(max(bruteloss + amount, 0),(maxHealth*2)) + bruteloss = Clamp(bruteloss + amount, 0, maxHealth) handle_regular_status_updates() /mob/living/simple_animal/adjustBruteLoss(amount) From bfc0e468f31a731f3534320ce8871cac4a1e83d1 Mon Sep 17 00:00:00 2001 From: Nerd Lord Date: Tue, 5 Jan 2016 23:03:16 -0500 Subject: [PATCH 178/310] Drone messages now have a follow link for ghosts. GAME and SAY are not span classes that do anything. --- .../living/simple_animal/friendly/drone/say.dm | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/code/modules/mob/living/simple_animal/friendly/drone/say.dm b/code/modules/mob/living/simple_animal/friendly/drone/say.dm index def3ad69d53..0570b1c253c 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/say.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/say.dm @@ -26,21 +26,15 @@ /mob/living/simple_animal/drone/proc/alert_drones(msg, dead_can_hear = 0) - for(var/mob/M in player_list) - var/send_msg = 0 - + for(var/mob/M in mob_list) if(istype(M, /mob/living/simple_animal/drone) && M.stat != DEAD) for(var/F in src.faction) if(F in M.faction) - send_msg = 1 - break - else if(dead_can_hear && (M in dead_mob_list)) - send_msg = 1 - - if(send_msg) - M << msg + M << msg + if(dead_can_hear && (M in dead_mob_list)) + M << "(F) [msg]" /mob/living/simple_animal/drone/proc/drone_chat(msg) - var/rendered = "DRONE CHAT: [name]: [msg]" + var/rendered = "DRONE CHAT: [name]: [msg]" alert_drones(rendered, 1) \ No newline at end of file From 2156790f8c820440c68ea79bbe8c45493a332211 Mon Sep 17 00:00:00 2001 From: Nerd Lord Date: Tue, 5 Jan 2016 23:16:15 -0500 Subject: [PATCH 179/310] Clamp()s instead of min(max()) in living damage procs --- code/modules/mob/living/living.dm | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index c46d0f1cfde..91d5446fc07 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -235,7 +235,7 @@ Sorry Giacom. Please don't be mad :( /mob/living/proc/adjustBruteLoss(amount) if(status_flags & GODMODE) return 0 - bruteloss = min(max(bruteloss + amount, 0),(maxHealth*2)) + bruteloss = Clamp(bruteloss + amount, 0, maxHealth*2) handle_regular_status_updates() //we update our health right away. /mob/living/proc/getOxyLoss() @@ -243,7 +243,7 @@ Sorry Giacom. Please don't be mad :( /mob/living/proc/adjustOxyLoss(amount) if(status_flags & GODMODE) return 0 - oxyloss = min(max(oxyloss + amount, 0),(maxHealth*2)) + oxyloss = Clamp(oxyloss + amount, 0, maxHealth*2) handle_regular_status_updates() /mob/living/proc/setOxyLoss(amount) @@ -256,7 +256,7 @@ Sorry Giacom. Please don't be mad :( /mob/living/proc/adjustToxLoss(amount) if(status_flags & GODMODE) return 0 - toxloss = min(max(toxloss + amount, 0),(maxHealth*2)) + toxloss = Clamp(toxloss + amount, 0, maxHealth*2) handle_regular_status_updates() /mob/living/proc/setToxLoss(amount) @@ -269,7 +269,7 @@ Sorry Giacom. Please don't be mad :( /mob/living/proc/adjustFireLoss(amount) if(status_flags & GODMODE) return 0 - fireloss = min(max(fireloss + amount, 0),(maxHealth*2)) + fireloss = Clamp(fireloss + amount, 0, maxHealth*2) handle_regular_status_updates() //we update our health right away. /mob/living/proc/getCloneLoss() @@ -277,7 +277,7 @@ Sorry Giacom. Please don't be mad :( /mob/living/proc/adjustCloneLoss(amount) if(status_flags & GODMODE) return 0 - cloneloss = min(max(cloneloss + amount, 0),(maxHealth*2)) + cloneloss = Clamp(cloneloss + amount, 0, maxHealth*2) handle_regular_status_updates() /mob/living/proc/setCloneLoss(amount) @@ -290,7 +290,7 @@ Sorry Giacom. Please don't be mad :( /mob/living/proc/adjustBrainLoss(amount) if(status_flags & GODMODE) return 0 - brainloss = min(max(brainloss + amount, 0),(maxHealth*2)) + brainloss = Clamp(brainloss + amount, 0, maxHealth*2) handle_regular_status_updates() /mob/living/proc/setBrainLoss(amount) @@ -303,7 +303,7 @@ Sorry Giacom. Please don't be mad :( /mob/living/proc/adjustStaminaLoss(amount) if(status_flags & GODMODE) return 0 - staminaloss = min(max(staminaloss + amount, 0),(maxHealth*2)) + staminaloss = Clamp(staminaloss + amount, 0, maxHealth*2) /mob/living/proc/setStaminaLoss(amount) if(status_flags & GODMODE) return 0 From d4ac9b3cdd9e0a1c4ed1295c34592555e96bf2cb Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Tue, 5 Jan 2016 22:48:19 -0600 Subject: [PATCH 180/310] Adds intro text to malf AI --- code/game/gamemodes/traitor/traitor.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm index 1efb4626f09..e9b13743eb3 100644 --- a/code/game/gamemodes/traitor/traitor.dm +++ b/code/game/gamemodes/traitor/traitor.dm @@ -150,6 +150,8 @@ give_codewords(killer) killer.set_syndie_radio() killer << "Your radio has been upgraded! Use :t to speak on an encrypted channel with Syndicate Agents!" + killer << "In the top right corner of the screen you will find the Malfunctions tab, where you can purchase various abilities, from upgraded surveillance to station ending doomsday devices." + killer << "You are also capable of hacking APCs, which grants you more points to spend on your Malfunction powers. The drawback is that a hacked APC will give you away if spotted by the crew. Hacking an APC takes 60 seconds." killer.verbs += /mob/living/silicon/ai/proc/choose_modules killer.malf_picker = new /datum/module_picker From cc69b62c5c396b4680e5183edb478c1a1f2b3fc3 Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Tue, 5 Jan 2016 22:51:04 -0600 Subject: [PATCH 181/310] Fixes fake nuke --- code/modules/events/wizard/fakeexplosion.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/events/wizard/fakeexplosion.dm b/code/modules/events/wizard/fakeexplosion.dm index 955fd7fd390..3b2dfe80a06 100644 --- a/code/modules/events/wizard/fakeexplosion.dm +++ b/code/modules/events/wizard/fakeexplosion.dm @@ -8,5 +8,5 @@ /datum/round_event/wizard/fake_explosion/start() for(var/mob/M in player_list) M << 'sound/machines/Alarm.ogg' - sleep(100) - ticker.station_explosion_cinematic(1,"fake") //:o) \ No newline at end of file + spawn(100) + ticker.station_explosion_cinematic(1,"fake") //:o) \ No newline at end of file From 33b419fe2b130fd162df09d0160740ab536a18a1 Mon Sep 17 00:00:00 2001 From: Bjorn Neergaard Date: Tue, 5 Jan 2016 23:13:33 -0600 Subject: [PATCH 182/310] Add syndicate tgui style; overhaul colors --- tgui/assets/tgui.css | 2 +- tgui/colors.json | 75 +++++++++++++++++++--------- tgui/images/nanotrasen.svg | 2 +- tgui/images/syndicate.svg | 9 ++++ tgui/styles/components/bar.styl | 4 +- tgui/styles/components/button.styl | 12 ++--- tgui/styles/components/display.styl | 6 +-- tgui/styles/components/notice.styl | 16 +++--- tgui/styles/components/resize.styl | 2 +- tgui/styles/components/titlebar.styl | 10 ++-- tgui/styles/core/document.styl | 6 +-- tgui/styles/core/text.styl | 2 +- tgui/styles/styles/nanotrasen.styl | 4 +- tgui/styles/styles/syndicate.styl | 5 ++ 14 files changed, 97 insertions(+), 58 deletions(-) create mode 100644 tgui/images/syndicate.svg create mode 100644 tgui/styles/styles/syndicate.styl diff --git a/tgui/assets/tgui.css b/tgui/assets/tgui.css index aaa092768ba..b8ac6f4daa0 100644 --- a/tgui/assets/tgui.css +++ b/tgui/assets/tgui.css @@ -1 +1 @@ -.normal{color:#40628a}.good{color:#537d29}.average{color:#be6209}.bad{color:#b00e0e}.highlight,.label{color:#8ba5c4}.dark{color:#272727}html{box-sizing:border-box;min-height:100%;margin:0;cursor:default}*,:after,:before{box-sizing:inherit}body{min-height:100%;height:100%;margin:0 6px;background-color:#202020;font-family:Verdana,Geneva,sans-serif;font-size:12px;color:#fff}main{display:block;margin-top:32px;padding-top:3px}hr{height:2px;background-color:#40628a;border:none}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}.bar .barText,span.button{color:#fff;font-size:12px;font-weight:400;font-style:normal;text-decoration:none}.bold{font-weight:700}.italic{font-style:italic}[unselectable=on]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.bar{display:inline-block;position:relative;vertical-align:middle;width:100%;height:20px;line-height:17px;padding:1px;border:1px solid #40628a;background:#272727}.bar .barText{position:absolute;top:0;right:3px}.bar .barFill{display:block;height:100%;transition:background-color 1s;background-color:#40628a}.bar .barFill.good{background-color:#537d29}.bar .barFill.average{background-color:#be6209}.bar .barFill.bad{background-color:#b00e0e}.bar .barFill.highlight{background-color:#8ba5c4}span.button{display:inline-block;vertical-align:middle;height:20px;line-height:19px;padding:0 5px;white-space:nowrap}span.button .fa{padding-right:2px}span.button.normal{transition:background-color .5s;background-color:#40628a}span.button.normal.active:focus,span.button.normal.active:hover{transition:background-color .25s;background-color:#4f78aa;outline:0}span.button.disabled{transition:background-color .5s;background-color:#999}span.button.disabled.active:focus,span.button.disabled.active:hover{transition:background-color .25s;background-color:#a8a8a8;outline:0}span.button.selected{transition:background-color .5s;background-color:#2f943c}span.button.selected.active:focus,span.button.selected.active:hover{transition:background-color .25s;background-color:#3ab84b;outline:0}span.button.caution{transition:background-color .5s;background-color:#9a9d00}span.button.caution.active:focus,span.button.caution.active:hover{transition:background-color .25s;background-color:#ced200;outline:0}span.button.danger{transition:background-color .5s;background-color:#9d0808}span.button.danger.active:focus,span.button.danger.active:hover{transition:background-color .25s;background-color:#ce0b0b;outline:0}span.button.gridable{width:125px;margin:2px 0}div.display,div.notice{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)}div.display header,div.notice header,div.subdisplay header{display:block;position:relative;width:100%;padding:0 4px;margin-bottom:6px;border-bottom:2px solid #40628a}div.display header .buttonRight,div.notice header .buttonRight,div.subdisplay header .buttonRight{position:absolute;bottom:6px;right:4px}div.display article,div.notice article,div.subdisplay article{display:table;width:100%;border-spacing:4px 6px}div.notice{background-color:#bb9b68;background-image:repeating-linear-gradient(-45deg,#bb9b68,#bb9b68 10px,#b1905d 0,#b1905d 20px);margin:8px 0;box-shadow:none;color:#000;font-weight:700;font-style:italic}div.notice .button{outline:1px solid #272727}div.notice .label{color:#000}div.notice hr{background-color:#272727}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)}section .content,section .label,section .line{display:table-cell;margin:0;text-align:left;vertical-align:middle}section{display:table-row;width:100%;padding:3px 0}section:not(first-child){padding-top:4px}section .label{width:1%;padding-right:32px;white-space:nowrap;color:#8ba5c4}section .content:not(:last-child){padding-right:16px}section .line{width:100%}section .buttoninfo{margin-left:5px}div.subdisplay{width:100%;margin:0}header.titlebar .close,header.titlebar .minimize{display:inline-block;position:relative;padding:7px;margin:-7px;color:#98b0c3}header.titlebar .close:hover,header.titlebar .minimize:hover{color:#a7bccc}header.titlebar{position:fixed;top:0;left:0;width:100%;height:32px;background-color:#363636;box-shadow:0 3px 3px rgba(0,0,0,.1)}header.titlebar .statusicon{position:absolute;top:4px;left:12px;transition:color .5s}header.titlebar .title{position:absolute;top:6px;left:46px;color:#98b0c3;font-size:16px;white-space:nowrap}header.titlebar .minimize{position:absolute;top:6px;right:46px}header.titlebar .close{position:absolute;top:4px;right:12px}.wf-inactive .minimize:after{content:"-"}.wf-inactive .close:after{content:"X"}body.generic{background:linear-gradient(180deg,#2a2a2a 0,#202020)}body.generic,body.nanotrasen{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2a2a2a',endColorstr='#ff202020',GradientType=0)}body.nanotrasen{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjAiIHZpZXdCb3g9IjAgMCA0MjUgMjAwIiBvcGFjaXR5PSIuMjUiPgogIDxwYXRoIGQ9Im0gMTc4LjAwMzk5LDAuMDM4NjkgLTcxLjIwMzkzLDAgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIC02Ljc2MTM0LDYuMDI1NTUgbCAwLDE4Ny44NzE0NyBhIDYuNzYxMzQyMiw2LjAyNTU0OTUgMCAwIDAgNi43NjEzNCw2LjAyNTU0IGwgNTMuMTA3MiwwIGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCA2Ljc2MTM1LC02LjAyNTU0IGwgMCwtMTAxLjU0NDAxOCA3Mi4yMTYyOCwxMDQuNjk5Mzk4IGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCA1Ljc2MDE1LDIuODcwMTYgbCA3My41NTQ4NywwIGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCA2Ljc2MTM1LC02LjAyNTU0IGwgMCwtMTg3Ljg3MTQ3IGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCAtNi43NjEzNSwtNi4wMjU1NSBsIC01NC43MTY0NCwwIGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCAtNi43NjEzMyw2LjAyNTU1IGwgMCwxMDIuNjE5MzUgTCAxODMuNzY0MTMsMi45MDg4NiBhIDYuNzYxMzQyMiw2LjAyNTU0OTUgMCAwIDAgLTUuNzYwMTQsLTIuODcwMTcgeiIgLz4KICA8cGF0aCBkPSJNIDQuODQ0NjMzMywyMi4xMDg3NSBBIDEzLjQxMjAzOSwxMi41MDE4NDIgMCAwIDEgMTMuNDc3NTg4LDAuMDM5MjQgbCA2Ni4xMTgzMTUsMCBhIDUuMzY0ODE1OCw1LjAwMDczNyAwIDAgMSA1LjM2NDgyMyw1LjAwMDczIGwgMCw3OS44NzkzMSB6IiAvPgogIDxwYXRoIGQ9Im0gNDIwLjE1NTM1LDE3Ny44OTExOSBhIDEzLjQxMjAzOCwxMi41MDE4NDIgMCAwIDEgLTguNjMyOTUsMjIuMDY5NTEgbCAtNjYuMTE4MzIsMCBhIDUuMzY0ODE1Miw1LjAwMDczNyAwIDAgMSAtNS4zNjQ4MiwtNS4wMDA3NCBsIDAsLTc5Ljg3OTMxIHoiIC8+Cjwvc3ZnPgo=") no-repeat fixed center/70% 70%,linear-gradient(180deg,#2a2a2a 0,#202020)} \ No newline at end of file +.normal{color:#40628a}.good{color:#537d29}.average{color:#be6209}.bad{color:#b00e0e}.highlight,.label{color:#8ba5c4}html{box-sizing:border-box;min-height:100%;margin:0;cursor:default}*,:after,:before{box-sizing:inherit}body{min-height:100%;height:100%;margin:0 6px;font-family:Verdana,Geneva,sans-serif;font-size:12px;color:#fff}main{display:block;margin-top:32px;padding-top:3px}hr{height:2px;background-color:#40628a;border:none}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}.bar .barText,span.button{color:#fff;font-size:12px;font-weight:400;font-style:normal;text-decoration:none}.bold{font-weight:700}.italic{font-style:italic}[unselectable=on]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.bar{display:inline-block;position:relative;vertical-align:middle;width:100%;height:20px;line-height:17px;padding:1px;border:1px solid #40628a;background:#272727}.bar .barText{position:absolute;top:0;right:3px}.bar .barFill{display:block;height:100%;transition:background-color 1s;background-color:#40628a}.bar .barFill.good{background-color:#537d29}.bar .barFill.average{background-color:#be6209}.bar .barFill.bad{background-color:#b00e0e}.bar .barFill.highlight{background-color:#8ba5c4}span.button{display:inline-block;vertical-align:middle;height:20px;line-height:19px;padding:0 5px;white-space:nowrap}span.button .fa{padding-right:2px}span.button.normal{transition:background-color .5s;background-color:#40628a}span.button.normal.active:focus,span.button.normal.active:hover{transition:background-color .25s;background-color:#4f78aa;outline:0}span.button.disabled{transition:background-color .5s;background-color:#999}span.button.disabled.active:focus,span.button.disabled.active:hover{transition:background-color .25s;background-color:#a8a8a8;outline:0}span.button.selected{transition:background-color .5s;background-color:#2f943c}span.button.selected.active:focus,span.button.selected.active:hover{transition:background-color .25s;background-color:#3ab84b;outline:0}span.button.caution{transition:background-color .5s;background-color:#9a9d00}span.button.caution.active:focus,span.button.caution.active:hover{transition:background-color .25s;background-color:#ced200;outline:0}span.button.danger{transition:background-color .5s;background-color:#9d0808}span.button.danger.active:focus,span.button.danger.active:hover{transition:background-color .25s;background-color:#ce0b0b;outline:0}span.button.gridable{width:125px;margin:2px 0}div.display,div.notice{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)}div.display header,div.notice header,div.subdisplay header{display:block;position:relative;width:100%;padding:0 4px;margin-bottom:6px;border-bottom:2px solid #40628a}div.display header .buttonRight,div.notice header .buttonRight,div.subdisplay header .buttonRight{position:absolute;bottom:6px;right:4px}div.display article,div.notice article,div.subdisplay article{display:table;width:100%;border-spacing:4px 6px}div.notice{background-image:repeating-linear-gradient(-45deg,#bb9b68,#bb9b68 10px,#b1905d 0,#b1905d 20px);margin:8px 0;box-shadow:none;color:#000;font-weight:700;font-style:italic}div.notice .button{outline:1px solid #272727}div.notice .label{color:#000}div.notice hr{background-color:#272727}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)}section .content,section .label,section .line{display:table-cell;margin:0;text-align:left;vertical-align:middle}section{display:table-row;width:100%;padding:3px 0}section:not(first-child){padding-top:4px}section .label{width:1%;padding-right:32px;white-space:nowrap;color:#8ba5c4}section .content:not(:last-child){padding-right:16px}section .line{width:100%}section .buttoninfo{margin-left:5px}div.subdisplay{width:100%;margin:0}header.titlebar .close,header.titlebar .minimize{display:inline-block;position:relative;padding:7px;margin:-7px;color:#98b0c3}header.titlebar .close:hover,header.titlebar .minimize:hover{color:#a7bccc}header.titlebar{position:fixed;top:0;left:0;width:100%;height:32px;background-color:#363636;box-shadow:0 3px 3px rgba(0,0,0,.1)}header.titlebar .statusicon{position:absolute;top:4px;left:12px;transition:color .5s}header.titlebar .title{position:absolute;top:6px;left:46px;color:#98b0c3;font-size:16px;white-space:nowrap}header.titlebar .minimize{position:absolute;top:6px;right:46px}header.titlebar .close{position:absolute;top:4px;right:12px}.wf-inactive .minimize:after{content:"-"}.wf-inactive .close:after{content:"X"}body.generic{background:linear-gradient(180deg,0,100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff000000',endColorstr='#ff000000',GradientType=0)}body.nanotrasen{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjAiIHZpZXdCb3g9IjAgMCA0MjUgMjAwIiBvcGFjaXR5PSIuMzMiPgogIDxwYXRoIGQ9Im0gMTc4LjAwMzk5LDAuMDM4NjkgLTcxLjIwMzkzLDAgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIC02Ljc2MTM0LDYuMDI1NTUgbCAwLDE4Ny44NzE0NyBhIDYuNzYxMzQyMiw2LjAyNTU0OTUgMCAwIDAgNi43NjEzNCw2LjAyNTU0IGwgNTMuMTA3MiwwIGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCA2Ljc2MTM1LC02LjAyNTU0IGwgMCwtMTAxLjU0NDAxOCA3Mi4yMTYyOCwxMDQuNjk5Mzk4IGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCA1Ljc2MDE1LDIuODcwMTYgbCA3My41NTQ4NywwIGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCA2Ljc2MTM1LC02LjAyNTU0IGwgMCwtMTg3Ljg3MTQ3IGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCAtNi43NjEzNSwtNi4wMjU1NSBsIC01NC43MTY0NCwwIGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCAtNi43NjEzMyw2LjAyNTU1IGwgMCwxMDIuNjE5MzUgTCAxODMuNzY0MTMsMi45MDg4NiBhIDYuNzYxMzQyMiw2LjAyNTU0OTUgMCAwIDAgLTUuNzYwMTQsLTIuODcwMTcgeiIgLz4KICA8cGF0aCBkPSJNIDQuODQ0NjMzMywyMi4xMDg3NSBBIDEzLjQxMjAzOSwxMi41MDE4NDIgMCAwIDEgMTMuNDc3NTg4LDAuMDM5MjQgbCA2Ni4xMTgzMTUsMCBhIDUuMzY0ODE1OCw1LjAwMDczNyAwIDAgMSA1LjM2NDgyMyw1LjAwMDczIGwgMCw3OS44NzkzMSB6IiAvPgogIDxwYXRoIGQ9Im0gNDIwLjE1NTM1LDE3Ny44OTExOSBhIDEzLjQxMjAzOCwxMi41MDE4NDIgMCAwIDEgLTguNjMyOTUsMjIuMDY5NTEgbCAtNjYuMTE4MzIsMCBhIDUuMzY0ODE1Miw1LjAwMDczNyAwIDAgMSAtNS4zNjQ4MiwtNS4wMDA3NCBsIDAsLTc5Ljg3OTMxIHoiIC8+Cjwvc3ZnPgo=") no-repeat fixed center/70% 70%,linear-gradient(180deg,#2a2a2a 0,#202020);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2a2a2a',endColorstr='#ff202020',GradientType=0)}body.syndicate{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjAiIHZpZXdCb3g9IjAgMCA4NS4yNSAxMTQuMzUiIG9wYWNpdHk9Ii4zMyI+CiAgPHRleHQKICAgIHN0eWxlPSJmb250LXNpemU6MjAwcHg7Zm9udC1mYW1pbHk6J1ZlcmRhbmEnLHNhbnMtc2VyaWYiCiAgICB4PSItMTAuNzQyMTg4IgogICAgeT0iMTExLjcxODc1Ij4KICAgIDx0c3Bhbj5zPC90c3Bhbj4KICA8L3RleHQ+Cjwvc3ZnPgo=") no-repeat fixed center/70% 70%,linear-gradient(180deg,#b30f0f 0,#740d0d);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffb30f0f',endColorstr='#ff740d0d',GradientType=0)} \ No newline at end of file diff --git a/tgui/colors.json b/tgui/colors.json index b3bad42f0b8..fe73bc9ed61 100644 --- a/tgui/colors.json +++ b/tgui/colors.json @@ -1,26 +1,53 @@ { - "normal":"#40628a", - "good":"#537d29", - "average":"#be6209", - "bad":"#b00e0e", - "highlight":"#8ba5c4", - "info":"#e9C183", - "label":"#8ba5c4", - "dark":"#272727", - "title":"#98b0c3", - "text":"white", - "textinverse":"black", - "titlebar":"#363636", - "background-start":"#2a2a2a", - "background-end":"#202020", - "resize":"#363636", - "border":"#272727", - "rule":"#40628a", - "notice1":"#bb9b68", - "notice2":"#b1905d", - "hover":"15%", - "selected":"#2f943c", - "caution":"#9a9d00", - "danger":"#9d0808", - "disabled":"#999999" + "normal": "#40628a", + "good": "#537d29", + "average": "#be6209", + "bad": "#b00e0e", + "highlight": "#8ba5c4", + "label": "#8ba5c4", + "text": { + "normal": "white", + "inverse": "black", + "title": "#98b0c3" + }, + "rule": { + "normal": "#40628a", + "dark": "#272727" + }, + "titlebar": { + "background": "#363636", + "shadow": "alpha(#000, 0.1)" + }, + "resize": { + "border": "#363636" + }, + "display": { + "background": "alpha(#000, 0.33)", + "shadow": "alpha(#000, 0.5)" + }, + "notice": { + "first": "#bb9b68", + "second": "#b1905d", + "border": "#272727" + }, + "bar": { + "border": "#40628a", + "background": "#272727" + }, + "buttons": { + "normal": "#40628a", + "disabled": "#999999", + "selected": "#2f943c", + "caution": "#9a9d00", + "danger": "#9d0808", + "hover": "15%" + }, + "nanotrasen": { + "background-start": "#2a2a2a", + "background-end": "#202020" + }, + "syndicate": { + "background-start": "#b30f0f", + "background-end": "#740d0d" + } } diff --git a/tgui/images/nanotrasen.svg b/tgui/images/nanotrasen.svg index d93b01a9545..b4b09a1ac46 100644 --- a/tgui/images/nanotrasen.svg +++ b/tgui/images/nanotrasen.svg @@ -1,5 +1,5 @@ - + diff --git a/tgui/images/syndicate.svg b/tgui/images/syndicate.svg new file mode 100644 index 00000000000..4bae2c70cba --- /dev/null +++ b/tgui/images/syndicate.svg @@ -0,0 +1,9 @@ + + + + s + + diff --git a/tgui/styles/components/bar.styl b/tgui/styles/components/bar.styl index c55738dac5c..d2bae9d82f7 100644 --- a/tgui/styles/components/bar.styl +++ b/tgui/styles/components/bar.styl @@ -7,8 +7,8 @@ line-height: 17px padding: 1px - border: 1px solid colors.normal - background: colors.dark + border: 1px solid colors.bar.border + background: colors.bar.background .barText @extend $fontReset diff --git a/tgui/styles/components/button.styl b/tgui/styles/components/button.styl index 554193488be..a396ae1cf88 100644 --- a/tgui/styles/components/button.styl +++ b/tgui/styles/components/button.styl @@ -5,7 +5,7 @@ buttoncolor(selector, color) &.{selector}.active:hover, &.{selector}.active:focus transition: background-color 0.25s - background-color: lighten(color, colors.hover) + background-color: lighten(color, colors.buttons.hover) outline: 0 @@ -21,11 +21,11 @@ span.button .fa padding-right: 2px - buttoncolor(normal, colors.normal) - buttoncolor(disabled, colors.disabled) - buttoncolor(selected, colors.selected) - buttoncolor(caution, colors.caution) - buttoncolor(danger, colors.danger) + buttoncolor(normal, colors.buttons.normal) + buttoncolor(disabled, colors.buttons.disabled) + buttoncolor(selected, colors.buttons.selected) + buttoncolor(caution, colors.buttons.caution) + buttoncolor(danger, colors.buttons.danger) &.gridable width: 125px diff --git a/tgui/styles/components/display.styl b/tgui/styles/components/display.styl index 0dd58c482e5..dbae05996d1 100644 --- a/tgui/styles/components/display.styl +++ b/tgui/styles/components/display.styl @@ -3,8 +3,8 @@ div.display padding: 4px margin: 6px 0 - background-color: alpha(#000, 0.33) // Transparent background. - box-shadow: inset 0 0 5px alpha(#000, 0.5) + background-color: colors.display.background // Transparent background. + box-shadow: inset 0 0 5px colors.display.shadow header display: block @@ -13,7 +13,7 @@ div.display padding: 0 4px margin-bottom: 6px - border-bottom: 2px solid colors.rule + border-bottom: 2px solid colors.rule.normal .buttonRight position: absolute diff --git a/tgui/styles/components/notice.styl b/tgui/styles/components/notice.styl index 999631aadb0..37f462579c4 100644 --- a/tgui/styles/components/notice.styl +++ b/tgui/styles/components/notice.styl @@ -4,10 +4,10 @@ $noticeStripes background-color: colors.notice1 // Fallback for old browers. background-image: repeating-linear-gradient( -45deg, - colors.notice1, - colors.notice1 10px, - colors.notice2 10px, - colors.notice2 20px + colors.notice.first, + colors.notice.first 10px, + colors.notice.second 10px, + colors.notice.second 20px ) div.notice @@ -16,15 +16,15 @@ div.notice box-shadow: none - color: colors.textinverse + color: colors.text.inverse font-weight: bold font-style: italic .button - outline: 1px solid colors.border + outline: 1px solid colors.notice.border .label - color: colors.textinverse + color: colors.text.inverse hr - background-color: colors.border + background-color: colors.rule.dark diff --git a/tgui/styles/components/resize.styl b/tgui/styles/components/resize.styl index 74cc43c0a0a..482b0db0de9 100644 --- a/tgui/styles/components/resize.styl +++ b/tgui/styles/components/resize.styl @@ -7,6 +7,6 @@ div.resize border-style: solid; border-width: 0 0 45px 45px; - border-color: transparent transparent colors.resize transparent + border-color: transparent transparent colors.resize.border transparent transform: rotate(360deg) diff --git a/tgui/styles/components/titlebar.styl b/tgui/styles/components/titlebar.styl index 7d9f36e1827..312977c94bb 100644 --- a/tgui/styles/components/titlebar.styl +++ b/tgui/styles/components/titlebar.styl @@ -4,10 +4,10 @@ $titleButton padding: 7px // To make a bigger clickable area. margin: -7px - color: colors.title; + color: colors.text.title; &:hover - color: lighten(colors.title, colors.hover) + color: lighten(colors.text.title, colors.buttons.hover) header.titlebar position: fixed; @@ -16,8 +16,8 @@ header.titlebar width: 100%; height: 32px; - background-color: colors.titlebar - box-shadow: 0 3px 3px alpha(#000, 0.1) + background-color: colors.titlebar.background + box-shadow: 0 3px 3px colors.titlebar.shadow .statusicon position: absolute @@ -30,7 +30,7 @@ header.titlebar top: 6px left: 46px - color: colors.title + color: colors.text.title font-size: 16px white-space: nowrap diff --git a/tgui/styles/core/document.styl b/tgui/styles/core/document.styl index ba2822cad88..6406c3635d2 100644 --- a/tgui/styles/core/document.styl +++ b/tgui/styles/core/document.styl @@ -14,11 +14,9 @@ body height: 100% margin: 0 6px - background-color: colors.background-end; // Fallback for old browsers. - font-family: font font-size: fontsize - color: colors.text + color: colors.text.normal main display: block @@ -28,5 +26,5 @@ main hr height: 2px - background-color: colors.rule + background-color: colors.rule.normal border: none diff --git a/tgui/styles/core/text.styl b/tgui/styles/core/text.styl index 387cc59f0b1..14f2cbd8857 100644 --- a/tgui/styles/core/text.styl +++ b/tgui/styles/core/text.styl @@ -1,6 +1,6 @@ // Helper to reset font options to default. $fontReset - color: colors.text + color: colors.text.normal font-size: fontsize font-weight: normal font-style: normal diff --git a/tgui/styles/styles/nanotrasen.styl b/tgui/styles/styles/nanotrasen.styl index 0625ef88dff..192c98f612d 100644 --- a/tgui/styles/styles/nanotrasen.styl +++ b/tgui/styles/styles/nanotrasen.styl @@ -1,5 +1,5 @@ body.nanotrasen background: data-url('nanotrasen.svg') no-repeat fixed center/70% 70%, linear-gradient(to bottom, - colors.background-start 0%, - colors.background-end 100%) + colors.nanotrasen.background-start 0%, + colors.nanotrasen.background-end 100%) diff --git a/tgui/styles/styles/syndicate.styl b/tgui/styles/styles/syndicate.styl new file mode 100644 index 00000000000..5577a96354b --- /dev/null +++ b/tgui/styles/styles/syndicate.styl @@ -0,0 +1,5 @@ +body.syndicate + background: data-url('syndicate.svg') no-repeat fixed center/70% 70%, + linear-gradient(to bottom, + colors.syndicate.background-start 0%, + colors.syndicate.background-end 100%) From 0acc8971483cd19438db00a73d7d4690f055eef4 Mon Sep 17 00:00:00 2001 From: Bjorn Neergaard Date: Tue, 5 Jan 2016 23:17:54 -0600 Subject: [PATCH 183/310] Remove some junk colors --- tgui/assets/tgui.css | 2 +- tgui/colors.json | 4 +++- tgui/styles/components/section.styl | 2 +- tgui/styles/core/colors.styl | 4 ---- 4 files changed, 5 insertions(+), 7 deletions(-) diff --git a/tgui/assets/tgui.css b/tgui/assets/tgui.css index b8ac6f4daa0..a79f25a2dbf 100644 --- a/tgui/assets/tgui.css +++ b/tgui/assets/tgui.css @@ -1 +1 @@ -.normal{color:#40628a}.good{color:#537d29}.average{color:#be6209}.bad{color:#b00e0e}.highlight,.label{color:#8ba5c4}html{box-sizing:border-box;min-height:100%;margin:0;cursor:default}*,:after,:before{box-sizing:inherit}body{min-height:100%;height:100%;margin:0 6px;font-family:Verdana,Geneva,sans-serif;font-size:12px;color:#fff}main{display:block;margin-top:32px;padding-top:3px}hr{height:2px;background-color:#40628a;border:none}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}.bar .barText,span.button{color:#fff;font-size:12px;font-weight:400;font-style:normal;text-decoration:none}.bold{font-weight:700}.italic{font-style:italic}[unselectable=on]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.bar{display:inline-block;position:relative;vertical-align:middle;width:100%;height:20px;line-height:17px;padding:1px;border:1px solid #40628a;background:#272727}.bar .barText{position:absolute;top:0;right:3px}.bar .barFill{display:block;height:100%;transition:background-color 1s;background-color:#40628a}.bar .barFill.good{background-color:#537d29}.bar .barFill.average{background-color:#be6209}.bar .barFill.bad{background-color:#b00e0e}.bar .barFill.highlight{background-color:#8ba5c4}span.button{display:inline-block;vertical-align:middle;height:20px;line-height:19px;padding:0 5px;white-space:nowrap}span.button .fa{padding-right:2px}span.button.normal{transition:background-color .5s;background-color:#40628a}span.button.normal.active:focus,span.button.normal.active:hover{transition:background-color .25s;background-color:#4f78aa;outline:0}span.button.disabled{transition:background-color .5s;background-color:#999}span.button.disabled.active:focus,span.button.disabled.active:hover{transition:background-color .25s;background-color:#a8a8a8;outline:0}span.button.selected{transition:background-color .5s;background-color:#2f943c}span.button.selected.active:focus,span.button.selected.active:hover{transition:background-color .25s;background-color:#3ab84b;outline:0}span.button.caution{transition:background-color .5s;background-color:#9a9d00}span.button.caution.active:focus,span.button.caution.active:hover{transition:background-color .25s;background-color:#ced200;outline:0}span.button.danger{transition:background-color .5s;background-color:#9d0808}span.button.danger.active:focus,span.button.danger.active:hover{transition:background-color .25s;background-color:#ce0b0b;outline:0}span.button.gridable{width:125px;margin:2px 0}div.display,div.notice{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)}div.display header,div.notice header,div.subdisplay header{display:block;position:relative;width:100%;padding:0 4px;margin-bottom:6px;border-bottom:2px solid #40628a}div.display header .buttonRight,div.notice header .buttonRight,div.subdisplay header .buttonRight{position:absolute;bottom:6px;right:4px}div.display article,div.notice article,div.subdisplay article{display:table;width:100%;border-spacing:4px 6px}div.notice{background-image:repeating-linear-gradient(-45deg,#bb9b68,#bb9b68 10px,#b1905d 0,#b1905d 20px);margin:8px 0;box-shadow:none;color:#000;font-weight:700;font-style:italic}div.notice .button{outline:1px solid #272727}div.notice .label{color:#000}div.notice hr{background-color:#272727}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)}section .content,section .label,section .line{display:table-cell;margin:0;text-align:left;vertical-align:middle}section{display:table-row;width:100%;padding:3px 0}section:not(first-child){padding-top:4px}section .label{width:1%;padding-right:32px;white-space:nowrap;color:#8ba5c4}section .content:not(:last-child){padding-right:16px}section .line{width:100%}section .buttoninfo{margin-left:5px}div.subdisplay{width:100%;margin:0}header.titlebar .close,header.titlebar .minimize{display:inline-block;position:relative;padding:7px;margin:-7px;color:#98b0c3}header.titlebar .close:hover,header.titlebar .minimize:hover{color:#a7bccc}header.titlebar{position:fixed;top:0;left:0;width:100%;height:32px;background-color:#363636;box-shadow:0 3px 3px rgba(0,0,0,.1)}header.titlebar .statusicon{position:absolute;top:4px;left:12px;transition:color .5s}header.titlebar .title{position:absolute;top:6px;left:46px;color:#98b0c3;font-size:16px;white-space:nowrap}header.titlebar .minimize{position:absolute;top:6px;right:46px}header.titlebar .close{position:absolute;top:4px;right:12px}.wf-inactive .minimize:after{content:"-"}.wf-inactive .close:after{content:"X"}body.generic{background:linear-gradient(180deg,0,100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff000000',endColorstr='#ff000000',GradientType=0)}body.nanotrasen{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjAiIHZpZXdCb3g9IjAgMCA0MjUgMjAwIiBvcGFjaXR5PSIuMzMiPgogIDxwYXRoIGQ9Im0gMTc4LjAwMzk5LDAuMDM4NjkgLTcxLjIwMzkzLDAgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIC02Ljc2MTM0LDYuMDI1NTUgbCAwLDE4Ny44NzE0NyBhIDYuNzYxMzQyMiw2LjAyNTU0OTUgMCAwIDAgNi43NjEzNCw2LjAyNTU0IGwgNTMuMTA3MiwwIGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCA2Ljc2MTM1LC02LjAyNTU0IGwgMCwtMTAxLjU0NDAxOCA3Mi4yMTYyOCwxMDQuNjk5Mzk4IGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCA1Ljc2MDE1LDIuODcwMTYgbCA3My41NTQ4NywwIGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCA2Ljc2MTM1LC02LjAyNTU0IGwgMCwtMTg3Ljg3MTQ3IGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCAtNi43NjEzNSwtNi4wMjU1NSBsIC01NC43MTY0NCwwIGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCAtNi43NjEzMyw2LjAyNTU1IGwgMCwxMDIuNjE5MzUgTCAxODMuNzY0MTMsMi45MDg4NiBhIDYuNzYxMzQyMiw2LjAyNTU0OTUgMCAwIDAgLTUuNzYwMTQsLTIuODcwMTcgeiIgLz4KICA8cGF0aCBkPSJNIDQuODQ0NjMzMywyMi4xMDg3NSBBIDEzLjQxMjAzOSwxMi41MDE4NDIgMCAwIDEgMTMuNDc3NTg4LDAuMDM5MjQgbCA2Ni4xMTgzMTUsMCBhIDUuMzY0ODE1OCw1LjAwMDczNyAwIDAgMSA1LjM2NDgyMyw1LjAwMDczIGwgMCw3OS44NzkzMSB6IiAvPgogIDxwYXRoIGQ9Im0gNDIwLjE1NTM1LDE3Ny44OTExOSBhIDEzLjQxMjAzOCwxMi41MDE4NDIgMCAwIDEgLTguNjMyOTUsMjIuMDY5NTEgbCAtNjYuMTE4MzIsMCBhIDUuMzY0ODE1Miw1LjAwMDczNyAwIDAgMSAtNS4zNjQ4MiwtNS4wMDA3NCBsIDAsLTc5Ljg3OTMxIHoiIC8+Cjwvc3ZnPgo=") no-repeat fixed center/70% 70%,linear-gradient(180deg,#2a2a2a 0,#202020);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2a2a2a',endColorstr='#ff202020',GradientType=0)}body.syndicate{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjAiIHZpZXdCb3g9IjAgMCA4NS4yNSAxMTQuMzUiIG9wYWNpdHk9Ii4zMyI+CiAgPHRleHQKICAgIHN0eWxlPSJmb250LXNpemU6MjAwcHg7Zm9udC1mYW1pbHk6J1ZlcmRhbmEnLHNhbnMtc2VyaWYiCiAgICB4PSItMTAuNzQyMTg4IgogICAgeT0iMTExLjcxODc1Ij4KICAgIDx0c3Bhbj5zPC90c3Bhbj4KICA8L3RleHQ+Cjwvc3ZnPgo=") no-repeat fixed center/70% 70%,linear-gradient(180deg,#b30f0f 0,#740d0d);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffb30f0f',endColorstr='#ff740d0d',GradientType=0)} \ No newline at end of file +.normal{color:#40628a}.good{color:#537d29}.average{color:#be6209}.bad{color:#b00e0e}.highlight{color:#8ba5c4}html{box-sizing:border-box;min-height:100%;margin:0;cursor:default}*,:after,:before{box-sizing:inherit}body{min-height:100%;height:100%;margin:0 6px;font-family:Verdana,Geneva,sans-serif;font-size:12px;color:#fff}main{display:block;margin-top:32px;padding-top:3px}hr{height:2px;background-color:#40628a;border:none}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}.bar .barText,span.button{color:#fff;font-size:12px;font-weight:400;font-style:normal;text-decoration:none}.bold{font-weight:700}.italic{font-style:italic}[unselectable=on]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.bar{display:inline-block;position:relative;vertical-align:middle;width:100%;height:20px;line-height:17px;padding:1px;border:1px solid #40628a;background:#272727}.bar .barText{position:absolute;top:0;right:3px}.bar .barFill{display:block;height:100%;transition:background-color 1s;background-color:#40628a}.bar .barFill.good{background-color:#537d29}.bar .barFill.average{background-color:#be6209}.bar .barFill.bad{background-color:#b00e0e}.bar .barFill.highlight{background-color:#8ba5c4}span.button{display:inline-block;vertical-align:middle;height:20px;line-height:19px;padding:0 5px;white-space:nowrap}span.button .fa{padding-right:2px}span.button.normal{transition:background-color .5s;background-color:#40628a}span.button.normal.active:focus,span.button.normal.active:hover{transition:background-color .25s;background-color:#4f78aa;outline:0}span.button.disabled{transition:background-color .5s;background-color:#999}span.button.disabled.active:focus,span.button.disabled.active:hover{transition:background-color .25s;background-color:#a8a8a8;outline:0}span.button.selected{transition:background-color .5s;background-color:#2f943c}span.button.selected.active:focus,span.button.selected.active:hover{transition:background-color .25s;background-color:#3ab84b;outline:0}span.button.caution{transition:background-color .5s;background-color:#9a9d00}span.button.caution.active:focus,span.button.caution.active:hover{transition:background-color .25s;background-color:#ced200;outline:0}span.button.danger{transition:background-color .5s;background-color:#9d0808}span.button.danger.active:focus,span.button.danger.active:hover{transition:background-color .25s;background-color:#ce0b0b;outline:0}span.button.gridable{width:125px;margin:2px 0}div.display,div.notice{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)}div.display header,div.notice header,div.subdisplay header{display:block;position:relative;width:100%;padding:0 4px;margin-bottom:6px;border-bottom:2px solid #40628a}div.display header .buttonRight,div.notice header .buttonRight,div.subdisplay header .buttonRight{position:absolute;bottom:6px;right:4px}div.display article,div.notice article,div.subdisplay article{display:table;width:100%;border-spacing:4px 6px}div.notice{background-image:repeating-linear-gradient(-45deg,#bb9b68,#bb9b68 10px,#b1905d 0,#b1905d 20px);margin:8px 0;box-shadow:none;color:#000;font-weight:700;font-style:italic}div.notice .button{outline:1px solid #272727}div.notice .label{color:#000}div.notice hr{background-color:#272727}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)}section .content,section .label,section .line{display:table-cell;margin:0;text-align:left;vertical-align:middle}section{display:table-row;width:100%;padding:3px 0}section:not(first-child){padding-top:4px}section .label{width:1%;padding-right:32px;white-space:nowrap;color:#8ba5c4}section .content:not(:last-child){padding-right:16px}section .line{width:100%}section .buttoninfo{margin-left:5px}div.subdisplay{width:100%;margin:0}header.titlebar .close,header.titlebar .minimize{display:inline-block;position:relative;padding:7px;margin:-7px;color:#98b0c3}header.titlebar .close:hover,header.titlebar .minimize:hover{color:#a7bccc}header.titlebar{position:fixed;top:0;left:0;width:100%;height:32px;background-color:#363636;box-shadow:0 3px 3px rgba(0,0,0,.1)}header.titlebar .statusicon{position:absolute;top:4px;left:12px;transition:color .5s}header.titlebar .title{position:absolute;top:6px;left:46px;color:#98b0c3;font-size:16px;white-space:nowrap}header.titlebar .minimize{position:absolute;top:6px;right:46px}header.titlebar .close{position:absolute;top:4px;right:12px}.wf-inactive .minimize:after{content:"-"}.wf-inactive .close:after{content:"X"}body.generic{background:linear-gradient(180deg,0,100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff000000',endColorstr='#ff000000',GradientType=0)}body.nanotrasen{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjAiIHZpZXdCb3g9IjAgMCA0MjUgMjAwIiBvcGFjaXR5PSIuMzMiPgogIDxwYXRoIGQ9Im0gMTc4LjAwMzk5LDAuMDM4NjkgLTcxLjIwMzkzLDAgYSA2Ljc2MTM0MjIsNi4wMjU1NDk1IDAgMCAwIC02Ljc2MTM0LDYuMDI1NTUgbCAwLDE4Ny44NzE0NyBhIDYuNzYxMzQyMiw2LjAyNTU0OTUgMCAwIDAgNi43NjEzNCw2LjAyNTU0IGwgNTMuMTA3MiwwIGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCA2Ljc2MTM1LC02LjAyNTU0IGwgMCwtMTAxLjU0NDAxOCA3Mi4yMTYyOCwxMDQuNjk5Mzk4IGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCA1Ljc2MDE1LDIuODcwMTYgbCA3My41NTQ4NywwIGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCA2Ljc2MTM1LC02LjAyNTU0IGwgMCwtMTg3Ljg3MTQ3IGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCAtNi43NjEzNSwtNi4wMjU1NSBsIC01NC43MTY0NCwwIGEgNi43NjEzNDIyLDYuMDI1NTQ5NSAwIDAgMCAtNi43NjEzMyw2LjAyNTU1IGwgMCwxMDIuNjE5MzUgTCAxODMuNzY0MTMsMi45MDg4NiBhIDYuNzYxMzQyMiw2LjAyNTU0OTUgMCAwIDAgLTUuNzYwMTQsLTIuODcwMTcgeiIgLz4KICA8cGF0aCBkPSJNIDQuODQ0NjMzMywyMi4xMDg3NSBBIDEzLjQxMjAzOSwxMi41MDE4NDIgMCAwIDEgMTMuNDc3NTg4LDAuMDM5MjQgbCA2Ni4xMTgzMTUsMCBhIDUuMzY0ODE1OCw1LjAwMDczNyAwIDAgMSA1LjM2NDgyMyw1LjAwMDczIGwgMCw3OS44NzkzMSB6IiAvPgogIDxwYXRoIGQ9Im0gNDIwLjE1NTM1LDE3Ny44OTExOSBhIDEzLjQxMjAzOCwxMi41MDE4NDIgMCAwIDEgLTguNjMyOTUsMjIuMDY5NTEgbCAtNjYuMTE4MzIsMCBhIDUuMzY0ODE1Miw1LjAwMDczNyAwIDAgMSAtNS4zNjQ4MiwtNS4wMDA3NCBsIDAsLTc5Ljg3OTMxIHoiIC8+Cjwvc3ZnPgo=") no-repeat fixed center/70% 70%,linear-gradient(180deg,#2a2a2a 0,#202020);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff2a2a2a',endColorstr='#ff202020',GradientType=0)}body.syndicate{background:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjAiIHZpZXdCb3g9IjAgMCA4NS4yNSAxMTQuMzUiIG9wYWNpdHk9Ii4zMyI+CiAgPHRleHQKICAgIHN0eWxlPSJmb250LXNpemU6MjAwcHg7Zm9udC1mYW1pbHk6J1ZlcmRhbmEnLHNhbnMtc2VyaWYiCiAgICB4PSItMTAuNzQyMTg4IgogICAgeT0iMTExLjcxODc1Ij4KICAgIDx0c3Bhbj5zPC90c3Bhbj4KICA8L3RleHQ+Cjwvc3ZnPgo=") no-repeat fixed center/70% 70%,linear-gradient(180deg,#b30f0f 0,#740d0d);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffb30f0f',endColorstr='#ff740d0d',GradientType=0)} \ No newline at end of file diff --git a/tgui/colors.json b/tgui/colors.json index fe73bc9ed61..15feaa91db4 100644 --- a/tgui/colors.json +++ b/tgui/colors.json @@ -4,7 +4,6 @@ "average": "#be6209", "bad": "#b00e0e", "highlight": "#8ba5c4", - "label": "#8ba5c4", "text": { "normal": "white", "inverse": "black", @@ -30,6 +29,9 @@ "second": "#b1905d", "border": "#272727" }, + "section": { + "label": "#8ba5c4" + }, "bar": { "border": "#40628a", "background": "#272727" diff --git a/tgui/styles/components/section.styl b/tgui/styles/components/section.styl index 0ba06f8cc56..4cf55f5db7c 100644 --- a/tgui/styles/components/section.styl +++ b/tgui/styles/components/section.styl @@ -18,7 +18,7 @@ section padding-right: 32px white-space: nowrap - color: colors.label + color: colors.section.label .content @extend $cell diff --git a/tgui/styles/core/colors.styl b/tgui/styles/core/colors.styl index ae588547b89..ceb979aeaa0 100644 --- a/tgui/styles/core/colors.styl +++ b/tgui/styles/core/colors.styl @@ -8,7 +8,3 @@ color: colors.bad .highlight color: colors.highlight -.label - color: colors.label -.dark - color: colors.dark From b1dbe47bbf49bd25eaa98523bd65029817fc6862 Mon Sep 17 00:00:00 2001 From: bgobandit Date: Wed, 6 Jan 2016 01:30:19 -0500 Subject: [PATCH 184/310] Windows give a message when repaired. --- code/game/objects/structures/window.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 0e995f815f0..1c82949c0e8 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -205,6 +205,7 @@ health = maxhealth playsound(loc, 'sound/items/Welder2.ogg', 50, 1) update_nearby_icons() + user << "You repair [src]." else user << "[src] is already in good condition!" return From f2f868e7c730713f3f9cd76f3454c7f6ddc36fd7 Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Wed, 6 Jan 2016 02:32:25 -0600 Subject: [PATCH 185/310] Vine controller --- code/modules/events/spacevine.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/events/spacevine.dm b/code/modules/events/spacevine.dm index 58555943e64..04b43b8872c 100644 --- a/code/modules/events/spacevine.dm +++ b/code/modules/events/spacevine.dm @@ -425,6 +425,7 @@ /obj/effect/spacevine_controller + invisibility = 101 var/list/obj/effect/spacevine/vines = list() var/list/growth_queue = list() var/spread_multiplier = 5 From 1a5bffc42419748d4cc972c64dfbcaeedb83148a Mon Sep 17 00:00:00 2001 From: AnturK Date: Wed, 6 Jan 2016 11:51:40 +0100 Subject: [PATCH 186/310] Fixes morph eating message showing up multiple times for the same object --- code/game/gamemodes/miniantags/morph/morph.dm | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/code/game/gamemodes/miniantags/morph/morph.dm b/code/game/gamemodes/miniantags/morph/morph.dm index 9576cf396f8..f90b2b78bba 100644 --- a/code/game/gamemodes/miniantags/morph/morph.dm +++ b/code/game/gamemodes/miniantags/morph/morph.dm @@ -61,6 +61,13 @@ return 0 return 1 +/mob/living/simple_animal/hostile/morph/proc/eat(atom/movable/A) + if(A && A.loc != src) + visible_message("[src] swallows [A] whole!") + A.loc = src + return 1 + return 0 + /mob/living/simple_animal/hostile/morph/ShiftClickOn(atom/movable/A) if(morph_time <= world.time && !stat) if(A == src) @@ -151,16 +158,14 @@ var/mob/living/L = target if(L.stat == DEAD) if(do_after(src, 30, target = L)) - visible_message("[src] swallows [target] whole!") - L.loc = src - adjustHealth(-50) + if(eat(L)) + adjustHealth(-50) return else if(istype(target,/obj/item)) // Eat items just to be annoying var/obj/item/I = target if(!I.anchored) if(do_after(src,20, target = I)) - visible_message("[src] swallows [target] whole!") - I.loc = src + eat(I) return target.attack_animal(src) From 196c98e056596385baa64f41d307b46e742c8e55 Mon Sep 17 00:00:00 2001 From: Kyle Spier-Swenson Date: Wed, 6 Jan 2016 03:54:03 -0800 Subject: [PATCH 187/310] Fixes map loader not initializing map edited path/type vars --- code/modules/awaymissions/maploader/reader.dm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/code/modules/awaymissions/maploader/reader.dm b/code/modules/awaymissions/maploader/reader.dm index 49948de8598..a33123bbd7a 100644 --- a/code/modules/awaymissions/maploader/reader.dm +++ b/code/modules/awaymissions/maploader/reader.dm @@ -298,6 +298,10 @@ var/global/dmm_suite/preloader/_preloader = null else if(copytext(trim_right,1,2) == "'") trim_right = file(copytext(trim_right,2,length(trim_right))) + //Check for path + else if(ispath(text2path(trim_right))) + trim_right = text2path(trim_right) + to_return[trim_left] = trim_right else//simple var From 4a7cb6a066e9b0cf829b6201b9290daffa92f71e Mon Sep 17 00:00:00 2001 From: SouDescolado Date: Wed, 6 Jan 2016 10:18:36 -0200 Subject: [PATCH 188/310] Fixes abandoned crates minigame Replaces the user input 0 with "z"(Code side only. Player can still use 0). Wont return 0 as "cows" anymore. Remove useless variable --- code/modules/mining/abandoned_crates.dm | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/code/modules/mining/abandoned_crates.dm b/code/modules/mining/abandoned_crates.dm index 044ce578d40..638ac5d5a7c 100644 --- a/code/modules/mining/abandoned_crates.dm +++ b/code/modules/mining/abandoned_crates.dm @@ -13,8 +13,7 @@ /obj/structure/closet/crate/secure/loot/New() ..() - var/list/digits = list("1", "2", "3", "4", "5", "6", "7", "8", "9", "0") - + var/list/digits = list("1", "2", "3", "4", "5", "6", "7", "8", "9", "z") code = "" for(var/i = 0, i < codelen, i++) var/dig = pick(digits) @@ -169,7 +168,7 @@ user << "You leave the crate alone." else user << "A red light flashes." - lastattempt = input + lastattempt = replacetext(input, 0, "z") attempts-- if (attempts == 0) user << "The crate's anti-tamper system activates!" From aec8099e15cd322a2ceadb5db93eb075da14cd70 Mon Sep 17 00:00:00 2001 From: Nerd Lord Date: Wed, 6 Jan 2016 10:18:58 -0500 Subject: [PATCH 189/310] Simplify, get more speed. --- code/modules/mob/living/simple_animal/friendly/drone/say.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/simple_animal/friendly/drone/say.dm b/code/modules/mob/living/simple_animal/friendly/drone/say.dm index 0570b1c253c..c95a672903d 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/say.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/say.dm @@ -26,7 +26,7 @@ /mob/living/simple_animal/drone/proc/alert_drones(msg, dead_can_hear = 0) - for(var/mob/M in mob_list) + for(var/M in mob_list) if(istype(M, /mob/living/simple_animal/drone) && M.stat != DEAD) for(var/F in src.faction) if(F in M.faction) From dcb8f18ea911df2d6b4d8a841bdcbef58dbc352f Mon Sep 17 00:00:00 2001 From: Nerd Lord Date: Wed, 6 Jan 2016 10:26:20 -0500 Subject: [PATCH 190/310] flip it upside down and typecast it --- code/modules/mob/living/simple_animal/friendly/drone/say.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/simple_animal/friendly/drone/say.dm b/code/modules/mob/living/simple_animal/friendly/drone/say.dm index c95a672903d..b8152458ea6 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/say.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/say.dm @@ -26,7 +26,8 @@ /mob/living/simple_animal/drone/proc/alert_drones(msg, dead_can_hear = 0) - for(var/M in mob_list) + for(var/W in mob_list) + var/mob/M = W if(istype(M, /mob/living/simple_animal/drone) && M.stat != DEAD) for(var/F in src.faction) if(F in M.faction) From 7caab87021dab5e7b83468267314b5fb52278238 Mon Sep 17 00:00:00 2001 From: xxalpha Date: Wed, 6 Jan 2016 17:27:31 +0000 Subject: [PATCH 191/310] Fix recursive action buttons --- code/modules/mob/living/life.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/life.dm b/code/modules/mob/living/life.dm index af5c3b5e4bb..86e7256edce 100644 --- a/code/modules/mob/living/life.dm +++ b/code/modules/mob/living/life.dm @@ -167,7 +167,7 @@ if(recursive) for(var/obj/item/T in I) - give_action_button(I, recursive - 1) + give_action_button(T, recursive - 1) //this handles hud updates. Calls update_vision() and handle_hud_icons() From 783e669c2d55731e61892f8e65bedacbac7d0d7a Mon Sep 17 00:00:00 2001 From: SouDescolado Date: Wed, 6 Jan 2016 15:52:38 -0200 Subject: [PATCH 192/310] Fixes Tuberculosis kit Name was wrong --- code/game/objects/items/weapons/storage/uplink_kits.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/weapons/storage/uplink_kits.dm b/code/game/objects/items/weapons/storage/uplink_kits.dm index 3f432a7b351..3f6daf631b3 100644 --- a/code/game/objects/items/weapons/storage/uplink_kits.dm +++ b/code/game/objects/items/weapons/storage/uplink_kits.dm @@ -247,7 +247,7 @@ /obj/item/weapon/storage/box/syndie_kit/tuberculosiskit name = "boxed virus kit" -/obj/item/weapon/storage/box/virus_kit/tuberculosiskit/New() +/obj/item/weapon/storage/box/syndie_kit/tuberculosiskit/New() ..() new /obj/item/weapon/reagent_containers/glass/bottle/tuberculosis(src) new /obj/item/weapon/reagent_containers/hypospray/medipen/tuberculosiscure(src) From ae789ed6512ccde4d351b6367a0cfb4753c9b933 Mon Sep 17 00:00:00 2001 From: Dorsisdwarf Date: Wed, 6 Jan 2016 18:02:05 +0000 Subject: [PATCH 193/310] Generalises the check --- code/modules/mob/living/simple_animal/hostile/headcrab.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/simple_animal/hostile/headcrab.dm b/code/modules/mob/living/simple_animal/hostile/headcrab.dm index c379c913063..f62e8b41827 100644 --- a/code/modules/mob/living/simple_animal/hostile/headcrab.dm +++ b/code/modules/mob/living/simple_animal/hostile/headcrab.dm @@ -43,7 +43,7 @@ // Changeling egg can survive in aliens! var/mob/living/carbon/C = target if(C.stat == DEAD) - if(is_type_in_list(/obj/item/organ/internal/body_egg, C.GetAllContents())) + if(if(C.status_flags & XENO_HOST) src << "A foreign presence repels us from this body. Perhaps we should try to infest another?" return Infect(target) From cf537737a1b145906bb0bf720a64fdc1dc5cf9c0 Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Wed, 6 Jan 2016 12:39:07 -0600 Subject: [PATCH 194/310] Closets --- code/game/objects/structures/crates_lockers/closets.dm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index 38a348bbfcb..cbddbfeaff7 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -33,6 +33,10 @@ if(!opened) // if closed, any item at the crate's loc is put in the contents take_contents() +/obj/structure/closet/Destroy() + dump_contents() + return ..() + /obj/structure/closet/update_icon() overlays.Cut() if(!opened) @@ -167,7 +171,6 @@ contents_explosion(severity, target) if(loc && ispath(material_drop) && !(flags & NODECONSTRUCT)) new material_drop(loc) - dump_contents() qdel(src) ..() @@ -176,7 +179,6 @@ if((Proj.damage_type == BRUTE || Proj.damage_type == BURN)) health -= Proj.damage if(health <= 0) - dump_contents() qdel(src) return @@ -184,12 +186,10 @@ if(user.environment_smash) user.do_attack_animation(src) visible_message("[user] destroys \the [src].") - dump_contents() qdel(src) /obj/structure/closet/blob_act() if(prob(75)) - dump_contents() qdel(src) From d76f6ad564bb6f5aec0cb9f0ab0bacdc5832d87f Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Wed, 6 Jan 2016 12:46:21 -0600 Subject: [PATCH 195/310] Hippie --- code/modules/mob/living/silicon/pai/pai.dm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index c1ea89972d6..3c11b2851a8 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -190,6 +190,10 @@ CRASH("pAI without card") loc = card +/mob/living/silicon/pai/canUseTopic(atom/movable/M) + return 1 + + //Addition by Mord_Sith to define AI's network change ability /* /mob/living/silicon/pai/proc/pai_network_change() From cec4df95ff7559ea501d95fccbf019c04791270e Mon Sep 17 00:00:00 2001 From: AnturK Date: Wed, 6 Jan 2016 19:49:03 +0100 Subject: [PATCH 196/310] Fixes NOBLOOD species bleeding --- code/modules/mob/living/carbon/human/blood.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/mob/living/carbon/human/blood.dm b/code/modules/mob/living/carbon/human/blood.dm index ae8d90f7985..65a66e7ef3d 100644 --- a/code/modules/mob/living/carbon/human/blood.dm +++ b/code/modules/mob/living/carbon/human/blood.dm @@ -46,6 +46,7 @@ var/const/BLOOD_VOLUME_SURVIVE = 122 /mob/living/carbon/human/handle_blood() if(NOBLOOD in dna.species.specflags) + blood_max = 0 return if(stat != DEAD && bodytemperature >= 170) //Dead or cryosleep people do not pump the blood. From e90750fc54684001cf98f6fde202a7f1f380629f Mon Sep 17 00:00:00 2001 From: Dorsisdwarf Date: Wed, 6 Jan 2016 19:04:14 +0000 Subject: [PATCH 197/310] muh brakkets --- code/modules/mob/living/simple_animal/hostile/headcrab.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/simple_animal/hostile/headcrab.dm b/code/modules/mob/living/simple_animal/hostile/headcrab.dm index f62e8b41827..d1a829a5483 100644 --- a/code/modules/mob/living/simple_animal/hostile/headcrab.dm +++ b/code/modules/mob/living/simple_animal/hostile/headcrab.dm @@ -43,7 +43,7 @@ // Changeling egg can survive in aliens! var/mob/living/carbon/C = target if(C.stat == DEAD) - if(if(C.status_flags & XENO_HOST) + if(C.status_flags & XENO_HOST) src << "A foreign presence repels us from this body. Perhaps we should try to infest another?" return Infect(target) From 17c2c378916e3d583f1dc39ac2922e50109728af Mon Sep 17 00:00:00 2001 From: Kyle Spier-Swenson Date: Wed, 6 Jan 2016 11:41:07 -0800 Subject: [PATCH 198/310] Fixes cult teleport centcom exploit. This was an edge case anyhow, they would have to do it while the shuttle was in transit to centcom as it would delete everything once it go to centcom. --- code/controllers/subsystem/shuttles/supply.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/controllers/subsystem/shuttles/supply.dm b/code/controllers/subsystem/shuttles/supply.dm index 8c76c882de6..d3c96f216d2 100644 --- a/code/controllers/subsystem/shuttles/supply.dm +++ b/code/controllers/subsystem/shuttles/supply.dm @@ -211,6 +211,7 @@ var/list/blacklist = list( /mob/living, /obj/effect/blob, + /obj/effect/rune, /obj/effect/spider/spiderling, /obj/item/weapon/disk/nuclear, /obj/machinery/nuclearbomb, From 8b1b75258be281857c96665db38d7d5dbd66c850 Mon Sep 17 00:00:00 2001 From: AnturK Date: Wed, 6 Jan 2016 20:41:37 +0100 Subject: [PATCH 199/310] Offloads finding backup to atom/movable proc --- code/game/atoms_movable.dm | 20 ++++++++++++++++++++ code/game/mecha/mecha.dm | 26 ++++++-------------------- code/modules/mob/mob_movement.dm | 29 +++++++++++++---------------- 3 files changed, 39 insertions(+), 36 deletions(-) diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index a3c326abfa1..fe2a2e34cbc 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -295,3 +295,23 @@ if(buckled_mob == mover) return 1 return ..() + + +/atom/movable/proc/get_spacemove_backup() + var/atom/movable/dense_object_backup + for(var/A in orange(1, get_turf(src))) + if(isarea(A)) + continue + else if(isturf(A)) + var/turf/turf = A + if(!turf.density) + continue + return turf + else + var/atom/movable/AM = A + if(!AM.CanPass(src) || AM.density) + if(AM.anchored) + return AM + dense_object_backup = AM + break + . = dense_object_backup \ No newline at end of file diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index b550bc3ab2e..a664b6227c5 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -410,26 +410,12 @@ if(.) return 1 - var/atom/movable/dense_object_backup - for(var/atom/A in orange(1, get_turf(src))) - if(isarea(A)) - continue - else if(isturf(A)) - var/turf/turf = A - if(!turf.density) - continue - return 1 - else - var/atom/movable/AM = A - if(!AM.CanPass(src) || AM.density) - if(AM.anchored) - return 1 - dense_object_backup = AM - - if(movement_dir && dense_object_backup) - if(dense_object_backup.newtonian_move(turn(movement_dir, 180))) - if(occupant) - occupant << "You push off of [dense_object_backup] to propel yourself." + var/atom/movable/backup = get_spacemove_backup() + if(backup) + if(istype(backup) && movement_dir && !!backup.anchored) + if(backup.newtonian_move(turn(movement_dir, 180))) + if(occupant) + occupant << "You push off of [backup] to propel yourself." return 1 /obj/mecha/relaymove(mob/user,direction) diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index 76d5f7d8cd8..a73108f2f6a 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -305,43 +305,40 @@ ///For moving in space ///Return 1 for movement 0 for none /mob/Process_Spacemove(movement_dir = 0) - if(..()) return 1 + var/atom/movable/backup = get_spacemove_backup() + if(backup) + if(istype(backup) && movement_dir && !backup.anchored) + if(backup.newtonian_move(turn(movement_dir, 180))) //You're pushing off something movable, so it moves + src << "You push off of [backup] to propel yourself." + return 1 + return 0 +/mob/get_spacemove_backup() var/atom/movable/dense_object_backup - for(var/atom/A in orange(1, get_turf(src))) + for(var/A in orange(1, get_turf(src))) if(isarea(A)) continue - else if(isturf(A)) var/turf/turf = A if(istype(turf,/turf/space)) continue - if(!turf.density && !mob_negates_gravity()) continue - - return 1 - + return A else var/atom/movable/AM = A if(AM == buckled) //Kind of unnecessary but let's just be sure continue if(!AM.CanPass(src) || AM.density) if(AM.anchored) - return 1 + return AM if(pulling == AM) continue dense_object_backup = AM - - if(movement_dir && dense_object_backup) - if(dense_object_backup.newtonian_move(turn(movement_dir, 180))) //You're pushing off something movable, so it moves - src << "You push off of [dense_object_backup] to propel yourself." - - - return 1 - return 0 + break + . = dense_object_backup /mob/proc/mob_has_gravity(turf/T) return has_gravity(src, T) From fcaa5715277111108c90f12fe4440f1ac177011c Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Wed, 6 Jan 2016 15:38:01 -0600 Subject: [PATCH 200/310] Revive --- code/modules/mob/living/living.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index c46d0f1cfde..52c2d4038ef 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -438,6 +438,7 @@ Sorry Giacom. Please don't be mad :( eye_blurry = 0 ear_deaf = 0 ear_damage = 0 + hallucination = 0 heal_overall_damage(1000, 1000) ExtinguishMob() fire_stacks = 0 From 87b889ca76a64a50ee30cbd678ee640fe8502ee9 Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Wed, 6 Jan 2016 18:36:49 -0600 Subject: [PATCH 201/310] Fusion --- code/datums/gas_mixture.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/datums/gas_mixture.dm b/code/datums/gas_mixture.dm index 794c8f6fe4c..e2dad8d7e4f 100644 --- a/code/datums/gas_mixture.dm +++ b/code/datums/gas_mixture.dm @@ -121,6 +121,7 @@ What are the archived variables for? temperature -= (reaction_rate*20000)/heat_capacity() reacting = 1 + /* if(thermal_energy() > (PLASMA_BINDING_ENERGY*10)) if(toxins > MINIMUM_HEAT_CAPACITY && carbon_dioxide > MINIMUM_HEAT_CAPACITY && (toxins+carbon_dioxide)/total_moles() >= FUSION_PURITY_THRESHOLD)//Fusion wont occur if the level of impurities is too high. //world << "pre [temperature, [toxins], [carbon_dioxide] @@ -145,7 +146,7 @@ What are the archived variables for? temperature = max(((temperature*old_heat_capacity + reaction_energy)/new_heat_capacity),TCMB) //Prevents whatever mechanism is causing it to hit negative temperatures. //world << "post [temperature], [toxins], [carbon_dioxide] - + */ fuel_burnt = 0 From f8d53ef78e6bb78075de1831d8e1607c74a42fcf Mon Sep 17 00:00:00 2001 From: MMMiracles Date: Wed, 6 Jan 2016 20:40:26 -0500 Subject: [PATCH 202/310] changes abductor guide to current procedure, removes extra message from containment field shocking --- .../game/gamemodes/miniantags/abduction/abduction_gear.dm | 8 ++++---- code/modules/power/singularity/containment_field.dm | 3 --- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm index a14280395e6..3fb1367c563 100644 --- a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm +++ b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm @@ -338,10 +338,10 @@ 1.Acquire fresh specimen.
2.Put the specimen on operating table
3.Apply surgical drapes preparing for dissection
- 4.Apply scalpel to specimen torso
- 5.Stop the bleeders and retract skin
- 6.Cut out organs you find with a scalpel
- 7.Use your hands to remove the remaining organs
+ 4.Apply scapel to specimen torso + 5.Retract skin from specimen's torso
+ 6.Apply scapel to specimen torso
+ 7.Search through the specimen's torso with your hands to remove any organs
8.Insert replacement gland (Retrieve one from gland storage)
9.Consider dressing the specimen back to not disturb the habitat
10.Put the specimen in the experiment machinery
diff --git a/code/modules/power/singularity/containment_field.dm b/code/modules/power/singularity/containment_field.dm index aa748fbbf03..7aaebff4269 100644 --- a/code/modules/power/singularity/containment_field.dm +++ b/code/modules/power/singularity/containment_field.dm @@ -93,9 +93,6 @@ user.Stun(stun) user.Weaken(10) user.electrocute_act(shock_damage, src, 1) - user.visible_message("[user.name] was shocked by the [src.name]!", \ - "You feel a powerful shock course through your body, sending you flying!", \ - "You hear a heavy electrical crack.") else if(issilicon(user)) if(prob(20)) From 3edf4a5e4c3702c4a3e0da2467cc4fa4482f4543 Mon Sep 17 00:00:00 2001 From: MMMiracles Date: Wed, 6 Jan 2016 20:57:31 -0500 Subject: [PATCH 203/310] noting can fex bade speeling --- code/game/gamemodes/miniantags/abduction/abduction_gear.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm index 3fb1367c563..3d20fde2911 100644 --- a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm +++ b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm @@ -338,9 +338,9 @@ 1.Acquire fresh specimen.
2.Put the specimen on operating table
3.Apply surgical drapes preparing for dissection
- 4.Apply scapel to specimen torso + 4.Apply scalpel to specimen torso
5.Retract skin from specimen's torso
- 6.Apply scapel to specimen torso
+ 6.Apply scalpel to specimen's torso
7.Search through the specimen's torso with your hands to remove any organs
8.Insert replacement gland (Retrieve one from gland storage)
9.Consider dressing the specimen back to not disturb the habitat
From 5f74ba1f848356ee0a69e109f93a3b29d0004c47 Mon Sep 17 00:00:00 2001 From: bgobandit Date: Wed, 6 Jan 2016 21:18:52 -0500 Subject: [PATCH 204/310] Non-airlock doors check for mobs while closing. Removes awful istypes. --- code/game/machinery/doors/airlock.dm | 19 +++++-------------- code/game/machinery/doors/airlock_types.dm | 4 +++- code/game/machinery/doors/door.dm | 3 +++ 3 files changed, 11 insertions(+), 15 deletions(-) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index db68793ce1c..cca72a9c928 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -54,6 +54,7 @@ var/list/airlock_overlays = list() var/autoclose = 1 var/obj/item/device/doorCharge/charge = null //If applied, causes an explosion upon opening the door var/detonated = 0 + var/doorsound = 'sound/machines/airlock.ogg' var/airlock_material = null //material of inner filling; if its an airlock with glass, this should be set to "glass" var/overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi' @@ -762,7 +763,7 @@ About the new airlock wires panel: normalspeed = 1 src.updateUsrDialog() else - usr << text("Door timing circurity currently operating normally.") + usr << text("Door timing circuitry currently operating normally.") if(7) //open door @@ -978,12 +979,7 @@ About the new airlock wires panel: if(emagged) return 0 use_power(50) - if(istype(src, /obj/machinery/door/airlock/glass)) - playsound(src.loc, 'sound/machines/windowdoor.ogg', 100, 1) - if(istype(src, /obj/machinery/door/airlock/clown)) - playsound(src.loc, 'sound/items/bikehorn.ogg', 30, 1) - else - playsound(src.loc, 'sound/machines/airlock.ogg', 30, 1) + playsound(src.loc, doorsound, 30, 1) if(src.closeOther != null && istype(src.closeOther, /obj/machinery/door/airlock/) && !src.closeOther.density) src.closeOther.close() else @@ -1032,12 +1028,7 @@ About the new airlock wires panel: if(emagged) return use_power(50) - if(istype(src, /obj/machinery/door/airlock/glass)) - playsound(src.loc, 'sound/machines/windowdoor.ogg', 30, 1) - if(istype(src, /obj/machinery/door/airlock/clown)) - playsound(src.loc, 'sound/items/bikehorn.ogg', 30, 1) - else - playsound(src.loc, 'sound/machines/airlock.ogg', 30, 1) + playsound(src.loc, doorsound, 30, 1) else playsound(src.loc, 'sound/machines/airlockforced.ogg', 30, 1) @@ -1173,4 +1164,4 @@ About the new airlock wires panel: lights = 0 locked = 1 loseMainPower() - loseBackupPower() + loseBackupPower() \ No newline at end of file diff --git a/code/game/machinery/doors/airlock_types.dm b/code/game/machinery/doors/airlock_types.dm index 852f62ffeca..4c7a47d8488 100644 --- a/code/game/machinery/doors/airlock_types.dm +++ b/code/game/machinery/doors/airlock_types.dm @@ -183,6 +183,7 @@ desc = "Honkhonkhonk" icon = 'icons/obj/doors/airlocks/station/bananium.dmi' var/mineral = "bananium" + doorsound = 'sound/items/bikehorn.ogg' doortype = /obj/structure/door_assembly/door_assembly_clown /obj/machinery/door/airlock/sandstone @@ -209,6 +210,7 @@ overlays_file = 'icons/obj/doors/airlocks/station2/overlays.dmi' opacity = 0 doortype = /obj/structure/door_assembly/door_assembly_glass + doorsound = 'sound/machines/windowdoor.ogg' glass = 1 ////////////////////////////////// @@ -309,4 +311,4 @@ opacity = 0 doortype = null glass = 1 - bound_width = 64 // 2x1 + bound_width = 64 // 2x1 \ No newline at end of file diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index bf8f66cb6fa..fd43fe6993c 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -221,6 +221,9 @@ update_icon() if(visible && !glass) SetOpacity(1) + if(locate(/mob/living) in get_turf(src)) + sleep(1) + open() operating = 0 air_update_turf(1) update_freelook_sight() From d4c3048a312684ad68fe10ec33747f9dc50cb186 Mon Sep 17 00:00:00 2001 From: swankcookie <__X__> Date: Wed, 6 Jan 2016 22:08:17 -0600 Subject: [PATCH 205/310] Removes redundant anchor tags Signed-off-by: swankcookie <__X__> --- .../effects/decals/Cleanable/aliens.dm | 1 - .../effects/decals/Cleanable/humans.dm | 3 - .../objects/effects/decals/Cleanable/misc.dm | 14 - .../effects/decals/Cleanable/robots.dm | 2 - code/game/objects/effects/decals/cleanable.dm | 1 - .../game/objects/effects/decals/contraband.dm | 274 ------------------ code/game/objects/effects/decals/crayon.dm | 1 - code/game/objects/effects/decals/decal.dm | 1 + code/game/objects/effects/decals/misc.dm | 2 - code/game/objects/effects/decals/remains.dm | 1 - .../simple_animal/friendly/cockroach.dm | 3 +- 11 files changed, 2 insertions(+), 301 deletions(-) delete mode 100644 code/game/objects/effects/decals/contraband.dm diff --git a/code/game/objects/effects/decals/Cleanable/aliens.dm b/code/game/objects/effects/decals/Cleanable/aliens.dm index 1326a890d7d..7e358f18fb4 100644 --- a/code/game/objects/effects/decals/Cleanable/aliens.dm +++ b/code/game/objects/effects/decals/Cleanable/aliens.dm @@ -5,7 +5,6 @@ desc = "It's green and acidic. It looks like... blood?" gender = PLURAL density = 0 - anchored = 1 layer = 2 icon = 'icons/effects/blood.dmi' icon_state = "xfloor1" diff --git a/code/game/objects/effects/decals/Cleanable/humans.dm b/code/game/objects/effects/decals/Cleanable/humans.dm index 30d74ba6970..545a69b463d 100644 --- a/code/game/objects/effects/decals/Cleanable/humans.dm +++ b/code/game/objects/effects/decals/Cleanable/humans.dm @@ -3,7 +3,6 @@ desc = "It's red and gooey. Perhaps it's the chef's cooking?" gender = PLURAL density = 0 - anchored = 1 layer = 2 icon = 'icons/effects/blood.dmi' icon_state = "floor1" @@ -39,7 +38,6 @@ desc = "Your instincts say you shouldn't be following these." gender = PLURAL density = 0 - anchored = 1 layer = 2 random_icon_states = null var/list/existing_dirs = list() @@ -55,7 +53,6 @@ desc = "They look bloody and gruesome." gender = PLURAL density = 0 - anchored = 1 layer = 2 icon = 'icons/effects/blood.dmi' icon_state = "gibbl5" diff --git a/code/game/objects/effects/decals/Cleanable/misc.dm b/code/game/objects/effects/decals/Cleanable/misc.dm index 21ded000917..008a0ab9084 100644 --- a/code/game/objects/effects/decals/Cleanable/misc.dm +++ b/code/game/objects/effects/decals/Cleanable/misc.dm @@ -3,7 +3,6 @@ desc = "Someone should clean that up." gender = PLURAL density = 0 - anchored = 1 layer = 2 icon = 'icons/obj/objects.dmi' icon_state = "shards" @@ -14,7 +13,6 @@ gender = PLURAL icon = 'icons/obj/objects.dmi' icon_state = "ash" - anchored = 1 /obj/effect/decal/cleanable/ash/New() ..() @@ -29,7 +27,6 @@ icon_state = "dirt" gender = PLURAL density = 0 - anchored = 1 layer = 2 mouse_opacity = 0 @@ -38,7 +35,6 @@ desc = "It's still good. Four second rule!" gender = PLURAL density = 0 - anchored = 1 layer = 2 icon = 'icons/effects/effects.dmi' icon_state = "flour" @@ -48,7 +44,6 @@ desc = "Jeez. I hope that's not for lunch." gender = PLURAL density = 0 - anchored = 1 layer = 2 luminosity = 1 icon = 'icons/effects/effects.dmi' @@ -61,7 +56,6 @@ name = "cobweb" desc = "Somebody should remove that." density = 0 - anchored = 1 layer = 3 icon = 'icons/effects/effects.dmi' icon_state = "cobweb1" @@ -74,7 +68,6 @@ name = "gooey grey mass" desc = "It looks like a melted... something." density = 0 - anchored = 1 layer = 3 icon = 'icons/obj/chemical.dmi' icon_state = "molten" @@ -83,7 +76,6 @@ name = "cobweb" desc = "Somebody should remove that." density = 0 - anchored = 1 layer = 3 icon = 'icons/effects/effects.dmi' icon_state = "cobweb2" @@ -94,7 +86,6 @@ desc = "Gosh, how unpleasant." gender = PLURAL density = 0 - anchored = 1 layer = 2 icon = 'icons/effects/blood.dmi' icon_state = "vomit_1" @@ -111,7 +102,6 @@ name = "tomato smudge" desc = "It's red." density = 0 - anchored = 1 layer = 2 icon = 'icons/effects/tomatodecal.dmi' random_icon_states = list("tomato_floor1", "tomato_floor2", "tomato_floor3") @@ -120,7 +110,6 @@ name = "smashed egg" desc = "Seems like this one won't hatch." density = 0 - anchored = 1 layer = 2 icon = 'icons/effects/tomatodecal.dmi' random_icon_states = list("smashed_egg1", "smashed_egg2", "smashed_egg3") @@ -129,7 +118,6 @@ name = "smashed pie" desc = "It's pie cream from a cream pie." density = 0 - anchored = 1 layer = 2 icon = 'icons/effects/tomatodecal.dmi' random_icon_states = list("smashed_pie") @@ -140,7 +128,6 @@ gender = PLURAL icon = 'icons/obj/objects.dmi' icon_state = "ash" - anchored = 1 /obj/effect/decal/cleanable/shreds name = "shreds" @@ -149,7 +136,6 @@ icon_state = "shreds" gender = PLURAL density = 0 - anchored = 1 layer = 2 /obj/effect/decal/cleanable/shreds/New() diff --git a/code/game/objects/effects/decals/Cleanable/robots.dm b/code/game/objects/effects/decals/Cleanable/robots.dm index becacd4d2ea..0244e4c74ae 100644 --- a/code/game/objects/effects/decals/Cleanable/robots.dm +++ b/code/game/objects/effects/decals/Cleanable/robots.dm @@ -5,7 +5,6 @@ desc = "It's a useless heap of junk... or is it?" gender = PLURAL density = 0 - anchored = 1 layer = 2 icon = 'icons/mob/robots.dmi' icon_state = "gib1" @@ -45,7 +44,6 @@ desc = "It's black and greasy. Looks like Beepsky made another mess." gender = PLURAL density = 0 - anchored = 1 layer = 2 icon = 'icons/mob/robots.dmi' icon_state = "floor1" diff --git a/code/game/objects/effects/decals/cleanable.dm b/code/game/objects/effects/decals/cleanable.dm index d46bead9d2f..1dfd4add2f0 100644 --- a/code/game/objects/effects/decals/cleanable.dm +++ b/code/game/objects/effects/decals/cleanable.dm @@ -2,7 +2,6 @@ var/list/random_icon_states = list() var/blood_state = "" //I'm sorry but cleanable/blood code is ass, and so is blood_DNA var/bloodiness = 0 //0-100, amount of blood in this decal, used for making footprints and affecting the alpha of bloody footprints - anchored = 1 /obj/effect/decal/cleanable/New() if (random_icon_states && length(src.random_icon_states) > 0) diff --git a/code/game/objects/effects/decals/contraband.dm b/code/game/objects/effects/decals/contraband.dm deleted file mode 100644 index 673d7b6f9a8..00000000000 --- a/code/game/objects/effects/decals/contraband.dm +++ /dev/null @@ -1,274 +0,0 @@ - -//########################## POSTERS ################################## - -#define NUM_OF_POSTER_DESIGNS 36 // contraband posters - -#define NUM_OF_POSTER_DESIGNS_LEGIT 35 // corporate approved posters - -#define POSTERNAME "name" - -#define POSTERDESC "desc" - - -//########################## LISTS OF POSTERS AND DESCS ##################### - -// please add new posters and names to their respective lists and update constant(s) above -// use the format below, including punctuation, this will become important later - -// CONTRABAND - -var/global/list/contrabandposters = list( - -list(name = "- Free Tonto", desc = " A salvaged shred of a much larger flag, colors bled together and faded from age."), -list(name = "- Atmosia Declaration of Independence", desc = " A relic of a failed rebellion."), -list(name = "- Fun Police", desc = " A poster condemning the station's security forces."), -list(name = "- Lusty Xenomorph", desc = " A heretical poster depicting the titular star of an equally heretical book."), -list(name = "- Syndicate Recruitment", desc = " See the galaxy! Shatter corrupt megacorporations! Join today!"), -list(name = "- Clown", desc = " Honk."), -list(name = "- Smoke", desc = " A poster advertising a rival corporate brand of cigarettes."), -list(name = "- Grey Tide", desc = " A rebellious poster symbolizing assistant solidarity."), -list(name = "- Missing Gloves", desc = " This poster references the uproar that followed Nanotrasen's financial cuts toward insulated-glove purchases."), -list(name = "- Hacking Guide", desc = " This poster details the internal workings of the common Nanotrasen airlock. Sadly, it appears out of date."), -list(name = "- RIP Badger", desc = " This seditious poster references Nanotrasen's genocide of a space station full of badgers."), -list(name = "- Ambrosia Vulgaris", desc = " This poster is lookin' pretty trippy man."), -list(name = "- Donut Corp.", desc = " This poster is an unauthorized advertisement for Donut Corp."), -list(name = "- EAT.", desc = " This poster promotes rank gluttony."), -list(name = "- Tools", desc = " This poster looks like an advertisement for tools, but is in fact a subliminal jab at the tools at CentComm."), -list(name = "- Power", desc = " A poster that positions the seat of power outside Nanotrasen."), -list(name = "- Space Cube", desc = " Ignorant of Nature's Harmonic 6 Side Space Cube Creation, the Spacemen are Dumb, Educated Singularity Stupid and Evil."), -list(name = "- Communist State", desc = " All hail the Communist party!"), -list(name = "- Lamarr", desc = " This poster depicts Lamarr. Probably made by a traitorous Research Director."), -list(name = "- Borg Fancy", desc = " Being fancy can be for any borg, just need a suit."), -list(name = "- Borg Fancy v2", desc = " Borg Fancy, Now only taking the most fancy."), -list(name = "- Kosmicheskaya Stantsiya 13 Does Not Exist", desc = " A poster mocking CentComm's denial of the existence of the derelict station near Space Station 13."), -list(name = "- Rebels Unite", desc = " A poster urging the viewer to rebel against Nanotrasen."), -list(name = "- C-20r", desc = " A poster advertising the Scarborough Arms C-20r."), -list(name = "- Have a Puff", desc = " Who cares about lung cancer when you're high as a kite?"), -list(name = "- Revolver", desc = " Because seven shots are all you need."), -list(name = "- D-Day Promo", desc = " A promotional poster for some rapper."), -list(name = "- Syndicate Pistol", desc = " A poster advertising syndicate pistols as being 'classy as fuck'. It is covered in faded gang tags."), -list(name = "- Energy Swords", desc = " All the colors of the bloody murder rainbow."), -list(name = "- Red Rum", desc = " Looking at this poster makes you want to kill."), -list(name = "- CC 64K Ad", desc = " The latest portable computer from Comrade Computing, with a whole 64kB of ram!"), -list(name = "- Punch Shit", desc = " Fight things for no reason, like a man!"), -list(name = "- The Griffin", desc = " The Griffin commands you to be the worst you can be. Will you?"), -list(name = "- Lizard", desc = " This lewd poster depicts a lizard preparing to mate."), -list(name = "- Free Drone", desc = " This poster commemorates the bravery of the rogue drone banned by CentComm."), -list(name = "- Busty Backdoor Xeno Babes 6", desc = " Get a load, or give, of these all natural Xenos!") ) - -// LEGIT - -var/global/list/legitposters = list( - -list(name = "- Here For Your Safety", desc = " A poster glorifying the station's security force."), -list(name = "- Nanotrasen Logo", desc = " A poster depicting the Nanotrasen logo."), -list(name = "- Cleanliness", desc = " A poster warning of the dangers of poor hygiene."), -list(name = "- Help Others", desc = " A poster encouraging you to help fellow crewmembers."), -list(name = "- Build", desc = " A poster glorifying the engineering team."), -list(name = "- Bless This Spess", desc = " A poster blessing this area."), -list(name = "- Science", desc = " A poster depicting an atom."), -list(name = "- Ian", desc = " Arf arf. Yap."), -list(name = "- Obey", desc = " A poster instructing the viewer to obey authority."), -list(name = "- Walk", desc = " A poster instructing the viewer to walk instead of running."), -list(name = "- State Laws", desc = " A poster instructing cyborgs to state their laws."), -list(name = "- Love Ian", desc = " Ian is love, Ian is life."), -list(name = "- Space Cops.", desc = " A poster advertising the television show Space Cops."), -list(name = "- Ue No.", desc = " This thing is all in Japanese."), -list(name = "- Get Your LEGS", desc = " LEGS: Leadership, Experience, Genius, Subordination."), -list(name = "- Do Not Question", desc = " A poster instructing the viewer not to ask about things they aren't meant to know."), -list(name = "- Work For A Future", desc = " A poster encouraging you to work for your future."), -list(name = "- Soft Cap Pop Art", desc = " A poster reprint of some cheap pop art."), -list(name = "- Safety: Internals", desc = " A poster instructing the viewer to wear internals in the rare environments where there is no oxygen or the air has been rendered toxic."), -list(name = "- Safety: Eye Protection", desc = " A poster instructing the viewer to wear eye protection when dealing with chemicals, smoke, or bright lights."), -list(name = "- Safety: Report", desc = " A poster instructing the viewer to report suspicious activity to the security force."), -list(name = "- Report Crimes", desc = " A poster encouraging the swift reporting of crime or seditious behavior to station security."), -list(name = "- Ion Rifle", desc = " A poster displaying an Ion Rifle."), -list(name = "- Foam Force Ad", desc = " Foam Force, it's Foam or be Foamed!"), -list(name = "- Cohiba Robusto Ad", desc = " Cohiba Robusto, the classy cigar."), -list(name = "- 50th Anniversary Vintage Reprint", desc = " A reprint of a poster from 2505, commemorating the 50th Aniversery of Nanoposters Manufacturing, a subsidary of Nanotrasen."), -list(name = "- Fruit Bowl", desc = " Simple, yet awe-inspiring."), -list(name = "- PDA Ad", desc = " A poster advertising the latest PDA from Nanotrasen suppliers."), -list(name = "- Enlist", desc = " Enlist in the Nanotrasen Deathsquadron reserves today!"), -list(name = "- Nanomichi Ad", desc = " A poster advertising Nanomichi brand audio cassettes."), -list(name = "- 12 Gauge", desc = " A poster boasting about the superiority of 12 gauge shotgun shells."), -list(name = "- High-Class Martini", desc = " I told you to shake it, no stirring."), -list(name = "- The Owl", desc = " The Owl would do his best to protect the station. Will you?"), -list(name = "- No ERP", desc = " This poster reminds the crew that Eroticism, Rape and Pornography are banned on Nanotrasen stations."), -list(name = "- Carbon Dioxide", desc = " This informational poster teaches the viewer what carbon dioxide is.") ) - -//########################## THE ACTUAL POSTER CODE ########################### - -/obj/item/weapon/poster - name = "poster" - desc = "You probably shouldn't be holding this." - icon = 'icons/obj/contraband.dmi' - force = 0 - burn_state = FLAMMABLE - var/serial_number = 0 - var/obj/structure/sign/poster/resulting_poster = null //The poster that will be created is initialised and stored through contraband/poster's constructor - var/official = 0 - - -/obj/item/weapon/poster/contraband - name = "contraband poster" - desc = "This poster comes with its own automatic adhesive mechanism, for easy pinning to any vertical surface. Its vulgar themes have marked it as contraband aboard Nanotrasen space facilities." - icon_state = "rolled_poster" - -/obj/item/weapon/poster/legit - name = "motivational poster" - icon_state = "rolled_legit" - desc = "An official Nanotrasen-issued poster to foster a compliant and obedient workforce. It comes with state-of-the-art adhesive backing, for easy pinning to any vertical surface." - official = 1 - -/obj/item/weapon/poster/New(turf/loc, given_serial = 0) - if(given_serial == 0) - if(!official) - serial_number = rand(1, NUM_OF_POSTER_DESIGNS) - resulting_poster = new(serial_number,official) - else - serial_number = rand(1, NUM_OF_POSTER_DESIGNS_LEGIT) - resulting_poster = new(serial_number,official) - else - serial_number = given_serial - //We don't give it a resulting_poster because if we called it with a given_serial it means that we're rerolling an already used poster. - name += " - No. [serial_number]" - ..(loc) - - -/*/obj/item/weapon/contraband/poster/attack(mob/M as mob, mob/user as mob) - src.add_fingerprint(user) - if(resulting_poster) - resulting_poster.add_fingerprint(user) - ..()*/ - -/*/obj/item/weapon/contraband/poster/attack(atom/A, mob/user as mob) //This shit is handled through the wall's attackby() - if(istype(A, /turf/simulated/wall)) - if(resulting_poster == null) - return - else - var/turf/simulated/wall/W = A - var/check = 0 - var/stuff_on_wall = 0 - for(var/obj/O in W.contents) //Let's see if it already has a poster on it or too much stuff - if(istype(O,/obj/structure/sign/poster)) - check = 1 - break - stuff_on_wall++ - if(stuff_on_wall == 3) - check = 1 - break - - if(check) - user << "The wall is far too cluttered to place a poster!" - return - - resulting_poster.loc = W //Looks like it's uncluttered enough. Place the poster - W.contents += resulting_poster - - qdel(src)*/ - - - -//############################## THE ACTUAL DECALS ########################### - -/obj/structure/sign/poster - name = "poster" - desc = "A large piece of space-resistant printed paper." - icon = 'icons/obj/contraband.dmi' - anchored = 1 - var/serial_number //Will hold the value of src.loc if nobody initialises it - var/ruined = 0 - var/official = 0 - var/placespeed = 37 // don't change this, otherwise the animation will not sync to the progress bar - -/obj/structure/sign/poster/New(serial,rolled_official) - serial_number = serial - official = rolled_official - if(serial_number == loc) - if(!official) - serial_number = rand(1, NUM_OF_POSTER_DESIGNS) //This is for the mappers that want individual posters without having to use rolled posters. - if(official) - serial_number = rand(1, NUM_OF_POSTER_DESIGNS_LEGIT) - if(!official) - icon_state = "poster[serial_number]" - name += contrabandposters[serial_number][POSTERNAME] - desc += contrabandposters[serial_number][POSTERDESC] - else if (official) - icon_state = "poster[serial_number]_legit" - name += legitposters[serial_number][POSTERNAME] - desc += legitposters[serial_number][POSTERDESC] - ..() - -/obj/structure/sign/poster/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/weapon/wirecutters)) - playsound(loc, 'sound/items/Wirecutter.ogg', 100, 1) - if(ruined) - user << "You remove the remnants of the poster." - qdel(src) - else - user << "You carefully remove the poster from the wall." - roll_and_drop(user.loc, official) - return - - -/obj/structure/sign/poster/attack_hand(mob/user) - if(ruined) - return - var/temp_loc = user.loc - if((user.loc != temp_loc) || ruined ) - return - visible_message("[user] rips [src] in a single, decisive motion!" ) - playsound(src.loc, 'sound/items/poster_ripped.ogg', 100, 1) - ruined = 1 - icon_state = "poster_ripped" - name = "ripped poster" - desc = "You can't make out anything from the poster's original print. It's ruined." - add_fingerprint(user) - -/obj/structure/sign/poster/proc/roll_and_drop(turf/location, official) - if (!official) - var/obj/item/weapon/poster/contraband/P = new(src, serial_number) - P.resulting_poster = src - P.loc = location - loc = P - else - var/obj/item/weapon/poster/legit/P = new(src, serial_number) - P.resulting_poster = src - P.loc = location - loc = P - - -//seperated to reduce code duplication. Moved here for ease of reference and to unclutter r_wall/attackby() -/turf/simulated/wall/proc/place_poster(obj/item/weapon/poster/P, mob/user) - if(!P.resulting_poster) return - - var/stuff_on_wall = 0 - for(var/obj/O in contents) //Let's see if it already has a poster on it or too much stuff - if(istype(O,/obj/structure/sign/poster)) - user << "The wall is far too cluttered to place a poster!" - return - stuff_on_wall++ - if(stuff_on_wall == 3) - user << "The wall is far too cluttered to place a poster!" - return - - user << "You start placing the poster on the wall..." //Looks like it's uncluttered enough. Place the poster. - - //declaring D because otherwise if P gets 'deconstructed' we lose our reference to P.resulting_poster - var/obj/structure/sign/poster/D = P.resulting_poster - - var/temp_loc = user.loc - flick("poster_being_set",D) - D.loc = src - D.official = P.official - qdel(P) //delete it now to cut down on sanity checks afterwards. Agouri's code supports rerolling it anyway - playsound(D.loc, 'sound/items/poster_being_created.ogg', 100, 1) - - if(do_after(user,D.placespeed,target=src)) - if(!D) return - - if(istype(src,/turf/simulated/wall) && user && user.loc == temp_loc) //Let's check if everything is still there - user << "You place the poster!" - else - D.roll_and_drop(temp_loc,D.official) - return \ No newline at end of file diff --git a/code/game/objects/effects/decals/crayon.dm b/code/game/objects/effects/decals/crayon.dm index 488a41be821..bbe88b07c86 100644 --- a/code/game/objects/effects/decals/crayon.dm +++ b/code/game/objects/effects/decals/crayon.dm @@ -4,7 +4,6 @@ icon = 'icons/effects/crayondecal.dmi' icon_state = "rune1" layer = 2.1 - anchored = 1 var/do_icon_rotate = TRUE /obj/effect/decal/cleanable/crayon/examine() diff --git a/code/game/objects/effects/decals/decal.dm b/code/game/objects/effects/decals/decal.dm index b9ffd568347..d9f8cde905d 100644 --- a/code/game/objects/effects/decals/decal.dm +++ b/code/game/objects/effects/decals/decal.dm @@ -1,6 +1,7 @@ /obj/effect/decal name = "decal" icon = 'icons/effects/effects.dmi' + anchored = 1 /obj/effect/decal/ex_act(severity, target) qdel(src) \ No newline at end of file diff --git a/code/game/objects/effects/decals/misc.dm b/code/game/objects/effects/decals/misc.dm index c8cb4754943..c65f5f494a0 100644 --- a/code/game/objects/effects/decals/misc.dm +++ b/code/game/objects/effects/decals/misc.dm @@ -3,13 +3,11 @@ icon = 'icons/mob/screen_gen.dmi' icon_state = "arrow" layer = 16 - anchored = 1 mouse_opacity = 0 // Used for spray that you spray at walls, tables, hydrovats etc /obj/effect/decal/spraystill density = 0 - anchored = 1 layer = 50 //Used by spraybottles. diff --git a/code/game/objects/effects/decals/remains.dm b/code/game/objects/effects/decals/remains.dm index f98e5922f82..834c3b4c7dc 100644 --- a/code/game/objects/effects/decals/remains.dm +++ b/code/game/objects/effects/decals/remains.dm @@ -2,7 +2,6 @@ name = "remains" gender = PLURAL icon = 'icons/effects/blood.dmi' - anchored = 1 /obj/effect/decal/remains/human desc = "They look like human remains. They have a strange aura about them." diff --git a/code/modules/mob/living/simple_animal/friendly/cockroach.dm b/code/modules/mob/living/simple_animal/friendly/cockroach.dm index 6ee16c2334e..0deb6c4289a 100644 --- a/code/modules/mob/living/simple_animal/friendly/cockroach.dm +++ b/code/modules/mob/living/simple_animal/friendly/cockroach.dm @@ -52,5 +52,4 @@ desc = "One bug squashed. Four more will rise in its place." icon = 'icons/effects/blood.dmi' icon_state = "xfloor1" - random_icon_states = list("xfloor1", "xfloor2", "xfloor3", "xfloor4", "xfloor5", "xfloor6", "xfloor7") - anchored = 1 + random_icon_states = list("xfloor1", "xfloor2", "xfloor3", "xfloor4", "xfloor5", "xfloor6", "xfloor7") \ No newline at end of file From 98d4b9076df34d838f2e6c9ab84104ef22afd2de Mon Sep 17 00:00:00 2001 From: swankcookie <__X__> Date: Wed, 6 Jan 2016 22:12:00 -0600 Subject: [PATCH 206/310] Moves contraband to a more fitting location Signed-off-by: swankcookie <__X__> --- code/game/objects/effects/contraband.dm | 274 ++++++++++++++++++++++++ tgstation.dme | 2 +- 2 files changed, 275 insertions(+), 1 deletion(-) create mode 100644 code/game/objects/effects/contraband.dm diff --git a/code/game/objects/effects/contraband.dm b/code/game/objects/effects/contraband.dm new file mode 100644 index 00000000000..673d7b6f9a8 --- /dev/null +++ b/code/game/objects/effects/contraband.dm @@ -0,0 +1,274 @@ + +//########################## POSTERS ################################## + +#define NUM_OF_POSTER_DESIGNS 36 // contraband posters + +#define NUM_OF_POSTER_DESIGNS_LEGIT 35 // corporate approved posters + +#define POSTERNAME "name" + +#define POSTERDESC "desc" + + +//########################## LISTS OF POSTERS AND DESCS ##################### + +// please add new posters and names to their respective lists and update constant(s) above +// use the format below, including punctuation, this will become important later + +// CONTRABAND + +var/global/list/contrabandposters = list( + +list(name = "- Free Tonto", desc = " A salvaged shred of a much larger flag, colors bled together and faded from age."), +list(name = "- Atmosia Declaration of Independence", desc = " A relic of a failed rebellion."), +list(name = "- Fun Police", desc = " A poster condemning the station's security forces."), +list(name = "- Lusty Xenomorph", desc = " A heretical poster depicting the titular star of an equally heretical book."), +list(name = "- Syndicate Recruitment", desc = " See the galaxy! Shatter corrupt megacorporations! Join today!"), +list(name = "- Clown", desc = " Honk."), +list(name = "- Smoke", desc = " A poster advertising a rival corporate brand of cigarettes."), +list(name = "- Grey Tide", desc = " A rebellious poster symbolizing assistant solidarity."), +list(name = "- Missing Gloves", desc = " This poster references the uproar that followed Nanotrasen's financial cuts toward insulated-glove purchases."), +list(name = "- Hacking Guide", desc = " This poster details the internal workings of the common Nanotrasen airlock. Sadly, it appears out of date."), +list(name = "- RIP Badger", desc = " This seditious poster references Nanotrasen's genocide of a space station full of badgers."), +list(name = "- Ambrosia Vulgaris", desc = " This poster is lookin' pretty trippy man."), +list(name = "- Donut Corp.", desc = " This poster is an unauthorized advertisement for Donut Corp."), +list(name = "- EAT.", desc = " This poster promotes rank gluttony."), +list(name = "- Tools", desc = " This poster looks like an advertisement for tools, but is in fact a subliminal jab at the tools at CentComm."), +list(name = "- Power", desc = " A poster that positions the seat of power outside Nanotrasen."), +list(name = "- Space Cube", desc = " Ignorant of Nature's Harmonic 6 Side Space Cube Creation, the Spacemen are Dumb, Educated Singularity Stupid and Evil."), +list(name = "- Communist State", desc = " All hail the Communist party!"), +list(name = "- Lamarr", desc = " This poster depicts Lamarr. Probably made by a traitorous Research Director."), +list(name = "- Borg Fancy", desc = " Being fancy can be for any borg, just need a suit."), +list(name = "- Borg Fancy v2", desc = " Borg Fancy, Now only taking the most fancy."), +list(name = "- Kosmicheskaya Stantsiya 13 Does Not Exist", desc = " A poster mocking CentComm's denial of the existence of the derelict station near Space Station 13."), +list(name = "- Rebels Unite", desc = " A poster urging the viewer to rebel against Nanotrasen."), +list(name = "- C-20r", desc = " A poster advertising the Scarborough Arms C-20r."), +list(name = "- Have a Puff", desc = " Who cares about lung cancer when you're high as a kite?"), +list(name = "- Revolver", desc = " Because seven shots are all you need."), +list(name = "- D-Day Promo", desc = " A promotional poster for some rapper."), +list(name = "- Syndicate Pistol", desc = " A poster advertising syndicate pistols as being 'classy as fuck'. It is covered in faded gang tags."), +list(name = "- Energy Swords", desc = " All the colors of the bloody murder rainbow."), +list(name = "- Red Rum", desc = " Looking at this poster makes you want to kill."), +list(name = "- CC 64K Ad", desc = " The latest portable computer from Comrade Computing, with a whole 64kB of ram!"), +list(name = "- Punch Shit", desc = " Fight things for no reason, like a man!"), +list(name = "- The Griffin", desc = " The Griffin commands you to be the worst you can be. Will you?"), +list(name = "- Lizard", desc = " This lewd poster depicts a lizard preparing to mate."), +list(name = "- Free Drone", desc = " This poster commemorates the bravery of the rogue drone banned by CentComm."), +list(name = "- Busty Backdoor Xeno Babes 6", desc = " Get a load, or give, of these all natural Xenos!") ) + +// LEGIT + +var/global/list/legitposters = list( + +list(name = "- Here For Your Safety", desc = " A poster glorifying the station's security force."), +list(name = "- Nanotrasen Logo", desc = " A poster depicting the Nanotrasen logo."), +list(name = "- Cleanliness", desc = " A poster warning of the dangers of poor hygiene."), +list(name = "- Help Others", desc = " A poster encouraging you to help fellow crewmembers."), +list(name = "- Build", desc = " A poster glorifying the engineering team."), +list(name = "- Bless This Spess", desc = " A poster blessing this area."), +list(name = "- Science", desc = " A poster depicting an atom."), +list(name = "- Ian", desc = " Arf arf. Yap."), +list(name = "- Obey", desc = " A poster instructing the viewer to obey authority."), +list(name = "- Walk", desc = " A poster instructing the viewer to walk instead of running."), +list(name = "- State Laws", desc = " A poster instructing cyborgs to state their laws."), +list(name = "- Love Ian", desc = " Ian is love, Ian is life."), +list(name = "- Space Cops.", desc = " A poster advertising the television show Space Cops."), +list(name = "- Ue No.", desc = " This thing is all in Japanese."), +list(name = "- Get Your LEGS", desc = " LEGS: Leadership, Experience, Genius, Subordination."), +list(name = "- Do Not Question", desc = " A poster instructing the viewer not to ask about things they aren't meant to know."), +list(name = "- Work For A Future", desc = " A poster encouraging you to work for your future."), +list(name = "- Soft Cap Pop Art", desc = " A poster reprint of some cheap pop art."), +list(name = "- Safety: Internals", desc = " A poster instructing the viewer to wear internals in the rare environments where there is no oxygen or the air has been rendered toxic."), +list(name = "- Safety: Eye Protection", desc = " A poster instructing the viewer to wear eye protection when dealing with chemicals, smoke, or bright lights."), +list(name = "- Safety: Report", desc = " A poster instructing the viewer to report suspicious activity to the security force."), +list(name = "- Report Crimes", desc = " A poster encouraging the swift reporting of crime or seditious behavior to station security."), +list(name = "- Ion Rifle", desc = " A poster displaying an Ion Rifle."), +list(name = "- Foam Force Ad", desc = " Foam Force, it's Foam or be Foamed!"), +list(name = "- Cohiba Robusto Ad", desc = " Cohiba Robusto, the classy cigar."), +list(name = "- 50th Anniversary Vintage Reprint", desc = " A reprint of a poster from 2505, commemorating the 50th Aniversery of Nanoposters Manufacturing, a subsidary of Nanotrasen."), +list(name = "- Fruit Bowl", desc = " Simple, yet awe-inspiring."), +list(name = "- PDA Ad", desc = " A poster advertising the latest PDA from Nanotrasen suppliers."), +list(name = "- Enlist", desc = " Enlist in the Nanotrasen Deathsquadron reserves today!"), +list(name = "- Nanomichi Ad", desc = " A poster advertising Nanomichi brand audio cassettes."), +list(name = "- 12 Gauge", desc = " A poster boasting about the superiority of 12 gauge shotgun shells."), +list(name = "- High-Class Martini", desc = " I told you to shake it, no stirring."), +list(name = "- The Owl", desc = " The Owl would do his best to protect the station. Will you?"), +list(name = "- No ERP", desc = " This poster reminds the crew that Eroticism, Rape and Pornography are banned on Nanotrasen stations."), +list(name = "- Carbon Dioxide", desc = " This informational poster teaches the viewer what carbon dioxide is.") ) + +//########################## THE ACTUAL POSTER CODE ########################### + +/obj/item/weapon/poster + name = "poster" + desc = "You probably shouldn't be holding this." + icon = 'icons/obj/contraband.dmi' + force = 0 + burn_state = FLAMMABLE + var/serial_number = 0 + var/obj/structure/sign/poster/resulting_poster = null //The poster that will be created is initialised and stored through contraband/poster's constructor + var/official = 0 + + +/obj/item/weapon/poster/contraband + name = "contraband poster" + desc = "This poster comes with its own automatic adhesive mechanism, for easy pinning to any vertical surface. Its vulgar themes have marked it as contraband aboard Nanotrasen space facilities." + icon_state = "rolled_poster" + +/obj/item/weapon/poster/legit + name = "motivational poster" + icon_state = "rolled_legit" + desc = "An official Nanotrasen-issued poster to foster a compliant and obedient workforce. It comes with state-of-the-art adhesive backing, for easy pinning to any vertical surface." + official = 1 + +/obj/item/weapon/poster/New(turf/loc, given_serial = 0) + if(given_serial == 0) + if(!official) + serial_number = rand(1, NUM_OF_POSTER_DESIGNS) + resulting_poster = new(serial_number,official) + else + serial_number = rand(1, NUM_OF_POSTER_DESIGNS_LEGIT) + resulting_poster = new(serial_number,official) + else + serial_number = given_serial + //We don't give it a resulting_poster because if we called it with a given_serial it means that we're rerolling an already used poster. + name += " - No. [serial_number]" + ..(loc) + + +/*/obj/item/weapon/contraband/poster/attack(mob/M as mob, mob/user as mob) + src.add_fingerprint(user) + if(resulting_poster) + resulting_poster.add_fingerprint(user) + ..()*/ + +/*/obj/item/weapon/contraband/poster/attack(atom/A, mob/user as mob) //This shit is handled through the wall's attackby() + if(istype(A, /turf/simulated/wall)) + if(resulting_poster == null) + return + else + var/turf/simulated/wall/W = A + var/check = 0 + var/stuff_on_wall = 0 + for(var/obj/O in W.contents) //Let's see if it already has a poster on it or too much stuff + if(istype(O,/obj/structure/sign/poster)) + check = 1 + break + stuff_on_wall++ + if(stuff_on_wall == 3) + check = 1 + break + + if(check) + user << "The wall is far too cluttered to place a poster!" + return + + resulting_poster.loc = W //Looks like it's uncluttered enough. Place the poster + W.contents += resulting_poster + + qdel(src)*/ + + + +//############################## THE ACTUAL DECALS ########################### + +/obj/structure/sign/poster + name = "poster" + desc = "A large piece of space-resistant printed paper." + icon = 'icons/obj/contraband.dmi' + anchored = 1 + var/serial_number //Will hold the value of src.loc if nobody initialises it + var/ruined = 0 + var/official = 0 + var/placespeed = 37 // don't change this, otherwise the animation will not sync to the progress bar + +/obj/structure/sign/poster/New(serial,rolled_official) + serial_number = serial + official = rolled_official + if(serial_number == loc) + if(!official) + serial_number = rand(1, NUM_OF_POSTER_DESIGNS) //This is for the mappers that want individual posters without having to use rolled posters. + if(official) + serial_number = rand(1, NUM_OF_POSTER_DESIGNS_LEGIT) + if(!official) + icon_state = "poster[serial_number]" + name += contrabandposters[serial_number][POSTERNAME] + desc += contrabandposters[serial_number][POSTERDESC] + else if (official) + icon_state = "poster[serial_number]_legit" + name += legitposters[serial_number][POSTERNAME] + desc += legitposters[serial_number][POSTERDESC] + ..() + +/obj/structure/sign/poster/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/weapon/wirecutters)) + playsound(loc, 'sound/items/Wirecutter.ogg', 100, 1) + if(ruined) + user << "You remove the remnants of the poster." + qdel(src) + else + user << "You carefully remove the poster from the wall." + roll_and_drop(user.loc, official) + return + + +/obj/structure/sign/poster/attack_hand(mob/user) + if(ruined) + return + var/temp_loc = user.loc + if((user.loc != temp_loc) || ruined ) + return + visible_message("[user] rips [src] in a single, decisive motion!" ) + playsound(src.loc, 'sound/items/poster_ripped.ogg', 100, 1) + ruined = 1 + icon_state = "poster_ripped" + name = "ripped poster" + desc = "You can't make out anything from the poster's original print. It's ruined." + add_fingerprint(user) + +/obj/structure/sign/poster/proc/roll_and_drop(turf/location, official) + if (!official) + var/obj/item/weapon/poster/contraband/P = new(src, serial_number) + P.resulting_poster = src + P.loc = location + loc = P + else + var/obj/item/weapon/poster/legit/P = new(src, serial_number) + P.resulting_poster = src + P.loc = location + loc = P + + +//seperated to reduce code duplication. Moved here for ease of reference and to unclutter r_wall/attackby() +/turf/simulated/wall/proc/place_poster(obj/item/weapon/poster/P, mob/user) + if(!P.resulting_poster) return + + var/stuff_on_wall = 0 + for(var/obj/O in contents) //Let's see if it already has a poster on it or too much stuff + if(istype(O,/obj/structure/sign/poster)) + user << "The wall is far too cluttered to place a poster!" + return + stuff_on_wall++ + if(stuff_on_wall == 3) + user << "The wall is far too cluttered to place a poster!" + return + + user << "You start placing the poster on the wall..." //Looks like it's uncluttered enough. Place the poster. + + //declaring D because otherwise if P gets 'deconstructed' we lose our reference to P.resulting_poster + var/obj/structure/sign/poster/D = P.resulting_poster + + var/temp_loc = user.loc + flick("poster_being_set",D) + D.loc = src + D.official = P.official + qdel(P) //delete it now to cut down on sanity checks afterwards. Agouri's code supports rerolling it anyway + playsound(D.loc, 'sound/items/poster_being_created.ogg', 100, 1) + + if(do_after(user,D.placespeed,target=src)) + if(!D) return + + if(istype(src,/turf/simulated/wall) && user && user.loc == temp_loc) //Let's check if everything is still there + user << "You place the poster!" + else + D.roll_and_drop(temp_loc,D.official) + return \ No newline at end of file diff --git a/tgstation.dme b/tgstation.dme index 75bdc784e9b..9cb56b22880 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -575,6 +575,7 @@ #include "code\game\objects\effects\aliens.dm" #include "code\game\objects\effects\anomalies.dm" #include "code\game\objects\effects\bump_teleporter.dm" +#include "code\game\objects\effects\contraband.dm" #include "code\game\objects\effects\forcefields.dm" #include "code\game\objects\effects\gibs.dm" #include "code\game\objects\effects\glowshroom.dm" @@ -587,7 +588,6 @@ #include "code\game\objects\effects\spiders.dm" #include "code\game\objects\effects\step_triggers.dm" #include "code\game\objects\effects\decals\cleanable.dm" -#include "code\game\objects\effects\decals\contraband.dm" #include "code\game\objects\effects\decals\crayon.dm" #include "code\game\objects\effects\decals\decal.dm" #include "code\game\objects\effects\decals\misc.dm" From c89007f1f7afa03beec266806fe6fc53f15ecb15 Mon Sep 17 00:00:00 2001 From: MightyRadcon Date: Wed, 6 Jan 2016 20:27:09 -0800 Subject: [PATCH 207/310] Fixes simple bots broadcasting department radios Started with #13471 but all simple bots (medbots, floorbots, etc.) had this problem. --- code/modules/mob/living/simple_animal/bot/bot.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm index c1b9737308f..e6a44bb99a8 100644 --- a/code/modules/mob/living/simple_animal/bot/bot.dm +++ b/code/modules/mob/living/simple_animal/bot/bot.dm @@ -105,7 +105,7 @@ Radio = new/obj/item/device/radio(src) if(radio_key) Radio.keyslot = new radio_key - Radio.canhear_range = 1 // 0 ? + Radio.canhear_range = 0 // anything greater will have the bot broadcast the channel as if it were saying it out loud. Radio.recalculateChannels() bot_core = new bot_core_type(src) From 1ce90959ef87156c9e80e8a17bbf74d46836f11e Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Wed, 6 Jan 2016 22:40:50 -0600 Subject: [PATCH 208/310] Notify --- code/game/machinery/dna_scanner.dm | 4 ++-- code/game/objects/items/weapons/defib.dm | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/code/game/machinery/dna_scanner.dm b/code/game/machinery/dna_scanner.dm index 97339c1bd53..2651ed274ed 100644 --- a/code/game/machinery/dna_scanner.dm +++ b/code/game/machinery/dna_scanner.dm @@ -108,8 +108,8 @@ || locate(/obj/machinery/computer/cloning, get_step(src, SOUTH)) \ || locate(/obj/machinery/computer/cloning, get_step(src, EAST)) \ || locate(/obj/machinery/computer/cloning, get_step(src, WEST))) - - occupant.notify_ghost_cloning("Your corpse has been placed into a cloning scanner. Re-enter your corpse if you want to be cloned!", source = src) + if(!occupant.suiciding && !(occupant.disabilities & NOCLONE)) + occupant.notify_ghost_cloning("Your corpse has been placed into a cloning scanner. Re-enter your corpse if you want to be cloned!", source = src) var/obj/machinery/computer/scan_consolenew/console for(dir in list(NORTH,EAST,SOUTH,WEST)) diff --git a/code/game/objects/items/weapons/defib.dm b/code/game/objects/items/weapons/defib.dm index f81fc5dd559..40f851772f4 100644 --- a/code/game/objects/items/weapons/defib.dm +++ b/code/game/objects/items/weapons/defib.dm @@ -450,7 +450,8 @@ busy = 0 update_icon() return - H.notify_ghost_cloning("Your heart is being defibrillated. Re-enter your corpse if you want to be revived!", source = src) + if(!H.suiciding && !(H.disabilities & NOCLONE)) + H.notify_ghost_cloning("Your heart is being defibrillated. Re-enter your corpse if you want to be revived!", source = src) user.visible_message("[user] begins to place [src] on [M.name]'s chest.", "You begin to place [src] on [M.name]'s chest...") busy = 1 From 8b7e84e73ace5c8cc30d1f041ce5635df1bf90ea Mon Sep 17 00:00:00 2001 From: bgobandit Date: Wed, 6 Jan 2016 23:52:19 -0500 Subject: [PATCH 209/310] object oriented code --- code/game/machinery/doors/airlock.dm | 12 +++++------- code/game/machinery/doors/door.dm | 9 ++++++--- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index cca72a9c928..42ffff4b6e6 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -508,7 +508,7 @@ About the new airlock wires panel: src.aiHacking=0 return else if(!src.canAIHack()) - user << "We've lost our connection! Unable to hack airlock." + user << "Connection lost! Unable to hack airlock." src.aiHacking=0 return user << "Fault confirmed: airlock control wire disabled or cut." @@ -520,7 +520,7 @@ About the new airlock wires panel: src.aiHacking=0 return else if(!src.canAIHack()) - user << "We've lost our connection! Unable to hack airlock." + user << "Connection lost! Unable to hack airlock." src.aiHacking=0 return user << "Upload access confirmed. Loading control program into airlock software." @@ -530,7 +530,7 @@ About the new airlock wires panel: src.aiHacking=0 return else if(!src.canAIHack()) - user << "We've lost our connection! Unable to hack airlock." + user << "Connection lost! Unable to hack airlock." src.aiHacking=0 return user << "Transfer complete. Forcing airlock to execute program." @@ -658,7 +658,7 @@ About the new airlock wires panel: else if (src.normalspeed) normalspeed = 0 else - usr << text("Door timing circurity already accellerated.") + usr << text("Door timing circurity already accelerated.") if(7) //close door @@ -1053,9 +1053,7 @@ About the new airlock wires panel: air_update_turf(1) update_freelook_sight() if(safe) - if(locate(/mob/living) in get_turf(src)) - sleep(1) - open() + CheckForMobs() return 1 /obj/machinery/door/airlock/proc/prison_open() diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index fd43fe6993c..3a67b933959 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -79,6 +79,11 @@ /obj/machinery/door/proc/CanAStarPass(var/obj/item/weapon/card/id/ID) return !density +/obj/machinery/door/proc/CheckForMobs() + if(locate(/mob/living) in get_turf(src)) + sleep(1) + open() + /obj/machinery/door/proc/bumpopen(mob/user) if(operating) return @@ -221,9 +226,7 @@ update_icon() if(visible && !glass) SetOpacity(1) - if(locate(/mob/living) in get_turf(src)) - sleep(1) - open() + CheckForMobs() operating = 0 air_update_turf(1) update_freelook_sight() From d2a5db5a898b39511ef083fa09f1549da0f83d79 Mon Sep 17 00:00:00 2001 From: bgobandit Date: Wed, 6 Jan 2016 23:53:59 -0500 Subject: [PATCH 210/310] really. --- code/game/machinery/doors/airlock.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 42ffff4b6e6..df919f4153e 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -658,7 +658,7 @@ About the new airlock wires panel: else if (src.normalspeed) normalspeed = 0 else - usr << text("Door timing circurity already accelerated.") + usr << text("Door timing circuitry already accelerated.") if(7) //close door From ff09481e5eaafaff1453a3e67658e06fa51918ac Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Thu, 7 Jan 2016 01:48:50 -0600 Subject: [PATCH 211/310] LSG --- code/datums/spells/infinite_guns.dm | 2 +- code/game/gamemodes/wizard/spellbook.dm | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/code/datums/spells/infinite_guns.dm b/code/datums/spells/infinite_guns.dm index e74ac7af043..10b8612c858 100644 --- a/code/datums/spells/infinite_guns.dm +++ b/code/datums/spells/infinite_guns.dm @@ -6,7 +6,7 @@ range = -1 school = "conjuration" - charge_max = 300 + charge_max = 750 clothes_req = 1 cooldown_min = 10 //Gun wizard action_icon_state = "bolt_action" diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm index 9d09dbdd948..752694f86ab 100644 --- a/code/game/gamemodes/wizard/spellbook.dm +++ b/code/game/gamemodes/wizard/spellbook.dm @@ -211,6 +211,7 @@ name = "Lesser Summon Guns" spell_type = /obj/effect/proc_holder/spell/targeted/infinite_guns log_name = "IG" + cost = 4 /datum/spellbook_entry/barnyard name = "Barnyard Curse" From d1904d365e25421c33624d7c5c4cbd717b9c08a0 Mon Sep 17 00:00:00 2001 From: Jordie0608 Date: Thu, 7 Jan 2016 19:05:05 +1100 Subject: [PATCH 212/310] kor is a butt --- html/changelog.html | 10 ++++++++++ html/changelogs/.all_changelog.yml | 6 ++++++ 2 files changed, 16 insertions(+) diff --git a/html/changelog.html b/html/changelog.html index 5c85c074aeb..c9465bc6ed7 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -55,6 +55,16 @@ -->
+

07 January 2016

+

KorPhaeron updated:

+
    +
  • Doubled cost of Lesser Summon Guns to 4 and increased charge time to 7.5 seconds.
  • +
+

TrustyGun updated:

+
    +
  • Added two new UI styles: black and green Operative and pale green Slimecore.
  • +
+

02 January 2016

Kor updated: