From d4c9f877cdef53a9e1bf856dbd8dcf4cffd7b509 Mon Sep 17 00:00:00 2001 From: DZD Date: Mon, 24 Aug 2015 20:35:25 -0400 Subject: [PATCH 01/16] Disables Challenge Map See title. --- _maps/map_files/RandomZLevels/fileList.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_maps/map_files/RandomZLevels/fileList.txt b/_maps/map_files/RandomZLevels/fileList.txt index 4b12cdc0fe4..104b4dac7e4 100644 --- a/_maps/map_files/RandomZLevels/fileList.txt +++ b/_maps/map_files/RandomZLevels/fileList.txt @@ -10,7 +10,7 @@ #_maps/map_files/RandomZLevels/academy.dmm _maps/map_files/RandomZLevels/beach.dmm #_maps/map_files/RandomZLevels/blackmarketpackers.dmm -_maps/map_files/RandomZLevels/challenge.dmm +#_maps/map_files/RandomZLevels/challenge.dmm #_maps/map_files/RandomZLevels/centcomAway.dmm #_maps/map_files/RandomZLevels/clownplanet.dmm #_maps/map_files/RandomZLevels/example.dmm From 110abbda595d35aa495600f22d9609f179573b5c Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Tue, 25 Aug 2015 21:24:09 -0400 Subject: [PATCH 02/16] R&D Lockbox Origintech --- code/game/objects/items/weapons/storage/lockbox.dm | 4 +++- code/modules/research/rdconsole.dm | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/code/game/objects/items/weapons/storage/lockbox.dm b/code/game/objects/items/weapons/storage/lockbox.dm index f9bbd9f0c69..0dd85c270ab 100644 --- a/code/game/objects/items/weapons/storage/lockbox.dm +++ b/code/game/objects/items/weapons/storage/lockbox.dm @@ -31,6 +31,7 @@ else src.icon_state = src.icon_closed user << "\red You unlock the [src.name]!" + origin_tech = null //wipe out any origin tech if it's unlocked in any way so you can't double-dip tech levels at R&D. return else user << "\red Access Denied" @@ -58,6 +59,7 @@ desc = "It appears to be broken." icon_state = src.icon_broken user << "You unlock \the [src]." + origin_tech = null //wipe out any origin tech if it's unlocked in any way so you can't double-dip tech levels at R&D. return /obj/item/weapon/storage/lockbox/loyalty @@ -89,7 +91,7 @@ item_state = "syringe_kit" w_class = 3 max_w_class = 2 - max_combined_w_class = 20 + max_combined_w_class = 20 storage_slots = 12 req_access = list(access_captain) icon_locked = "medalbox+l" diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index 7c67f22cf7b..dca34a6b9b6 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -442,6 +442,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, var/obj/item/weapon/storage/lockbox/L = new/obj/item/weapon/storage/lockbox(linked_lathe.loc) new_item.loc = L L.name += " ([new_item.name])" + L.origin_tech = new_item.origin_tech else new_item.loc = linked_lathe.loc linked_lathe.busy = 0 From 5d8df1e0025296eeca538cc840132cc5b8547cb0 Mon Sep 17 00:00:00 2001 From: KasparoVy Date: Tue, 25 Aug 2015 21:48:47 -0400 Subject: [PATCH 03/16] Fixes Vox Grey Jumpsuit Previously the only way you'd ever see the correct Vox grey jumpsuit sprite was if you were holding it in-game or looking at the sprite in vox/uniform.dmi. No longer! Now if a Vox player wears this jumpsuit it will look in the correct location for the sprite instead of giving them an ill-fitting human one. Fixes part of #1130. To fix the rest of that issue report, unfortunately-- as I'd not figured out then-- sprites for all the other colours of uniforms will need to be made and lines 51-54 copypasted to each jumpsuit code block that's added in. I'll rewrite #1130 accordingly and see if I can work out those sprites some other time. Before PR: AFTER PR: http://i.imgur.com/phSVZpK.png --- code/modules/clothing/under/color.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/modules/clothing/under/color.dm b/code/modules/clothing/under/color.dm index 28045dfc1ab..925d9f1f036 100644 --- a/code/modules/clothing/under/color.dm +++ b/code/modules/clothing/under/color.dm @@ -49,6 +49,9 @@ _color = "grey" flags = ONESIZEFITSALL species_fit = list("Vox") + sprite_sheets = list( + "Vox" = 'icons/mob/species/vox/uniform.dmi' + ) /obj/item/clothing/under/color/grey/greytide flags = ONESIZEFITSALL | NODROP From c1f7808d9e6dccd5f9e50742f98d5f5672b4e68c Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Tue, 25 Aug 2015 21:52:44 -0400 Subject: [PATCH 04/16] So Salty --- code/modules/reagents/reagent_containers/food/snacks.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm index 89f14c26358..0556eee6d18 100644 --- a/code/modules/reagents/reagent_containers/food/snacks.dm +++ b/code/modules/reagents/reagent_containers/food/snacks.dm @@ -366,6 +366,7 @@ New() ..() reagents.add_reagent("nutriment", 3) + reagents.add_reagent("sodiumchloride", 1) bitesize = 1 /obj/item/weapon/reagent_containers/food/snacks/cornchips @@ -1228,6 +1229,7 @@ New() ..() reagents.add_reagent("plantmatter", 6) + reagents.add_reagent("sodiumchloride", 1) /obj/item/weapon/reagent_containers/food/snacks/no_raisin name = "4no Raisins" From 52df4c6a33c9be8aa3caf6cf5e4458513cbd5f67 Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Tue, 25 Aug 2015 21:59:51 -0400 Subject: [PATCH 05/16] Fixes Max Research Levels --- code/modules/research/research.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/research/research.dm b/code/modules/research/research.dm index 274f02f27fc..5d33c5982f2 100644 --- a/code/modules/research/research.dm +++ b/code/modules/research/research.dm @@ -223,7 +223,7 @@ datum/tech/magnets name = "Electromagnetic Spectrum Research" desc = "Research into the electromagnetic spectrum. No clue how they actually work, though." id = "magnets" - max_level = 5 + max_level = 6 datum/tech/programming name = "Data Theory Research" From 27f75d7b383cc3d62784dc6c305f0e09ee52f7c1 Mon Sep 17 00:00:00 2001 From: Markolie Date: Thu, 27 Aug 2015 03:25:32 +0200 Subject: [PATCH 06/16] Fix ghosts triggering glass --- code/game/objects/items/weapons/shards.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/objects/items/weapons/shards.dm b/code/game/objects/items/weapons/shards.dm index d73281a46ed..dab7a54de78 100644 --- a/code/game/objects/items/weapons/shards.dm +++ b/code/game/objects/items/weapons/shards.dm @@ -55,8 +55,8 @@ ..() /obj/item/weapon/shard/Crossed(AM as mob|obj) - if(ismob(AM)) - var/mob/M = AM + if(isliving(AM)) + var/mob/living/M = AM M << "\red You step on \the [src]!" playsound(src.loc, 'sound/effects/glass_step.ogg', 50, 1) // not sure how to handle metal shards with sounds if(ishuman(M)) From 1589f54537901481d7555eb8866b61d6b8bca724 Mon Sep 17 00:00:00 2001 From: Markolie Date: Thu, 27 Aug 2015 03:31:02 +0200 Subject: [PATCH 07/16] Fix cargo scrolling issue --- code/game/supplyshuttle.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/code/game/supplyshuttle.dm b/code/game/supplyshuttle.dm index 8ce551d58be..7486ae70bf1 100644 --- a/code/game/supplyshuttle.dm +++ b/code/game/supplyshuttle.dm @@ -552,7 +552,6 @@ var/list/mechtoys = list( ui = new(user, src, ui_key, "supply_console.tmpl", name, COMP_SCREEN_WIDTH, COMP_SCREEN_HEIGHT) ui.set_initial_data(data) ui.open() - ui.set_auto_update(1) /obj/machinery/computer/supplycomp/proc/is_authorized(user) if(allowed(user)) From 01c919b5b07e6da8bd5b983878084bbf73a4a5c5 Mon Sep 17 00:00:00 2001 From: Markolie Date: Thu, 27 Aug 2015 04:05:18 +0200 Subject: [PATCH 08/16] Fix admins not seeing LOOC --- code/game/verbs/ooc.dm | 25 ++++--------------------- 1 file changed, 4 insertions(+), 21 deletions(-) diff --git a/code/game/verbs/ooc.dm b/code/game/verbs/ooc.dm index afbb84847f5..2d62be62449 100644 --- a/code/game/verbs/ooc.dm +++ b/code/game/verbs/ooc.dm @@ -40,7 +40,7 @@ var/global/normal_ooc_colour = "#002eb8" var/display_colour = normal_ooc_colour if(holder && !holder.fakekey) display_colour = "#0099cc" //light blue - if(holder.rights & R_MOD && !(holder.rights & R_ADMIN)) + if(check_rights(R_MOD,0) && !check_rights(R_ADMIN,0)) display_colour = "#184880" //dark blue else if(holder.rights & R_ADMIN) if(config.allow_admin_ooccolor) @@ -59,22 +59,6 @@ var/global/normal_ooc_colour = "#002eb8" display_name = holder.fakekey C << "OOC: [display_name]: [msg]" - /* - if(holder) - if(!holder.fakekey || C.holder) - if(holder.rights & R_ADMIN) - C << "OOC: [key][holder.fakekey ? "/([holder.fakekey])" : ""]: [msg]" - else if(holder.rights & R_MOD) - C << "OOC: [src.key][holder.fakekey ? "/([holder.fakekey])" : ""]: [msg]" - else - C << "OOC: [src.key]: [msg]" - - else - C << "OOC: [holder.fakekey ? holder.fakekey : src.key]: [msg]" - else - C << "OOC: [src.key]: [msg]" - */ - /proc/toggle_ooc() ooc_allowed = !( ooc_allowed ) if (ooc_allowed) @@ -92,7 +76,6 @@ var/global/normal_ooc_colour = "#002eb8" set category = "Server" normal_ooc_colour = newColor - /client/verb/looc(msg as text) set name = "LOOC" //Gave this shit a shorter name so you only have to time out "ooc" rather than "ooc message" to use it --NeoFite set desc = "Local OOC, seen only by those in view." @@ -110,7 +93,7 @@ var/global/normal_ooc_colour = "#002eb8" src << "\red You have LOOC muted." return - if(!(holder && holder.rights && (holder.rights & R_MOD))) + if(!check_rights(R_MOD,0)) if(!ooc_allowed) src << "\red LOOC is globally muted" return @@ -141,7 +124,7 @@ var/global/normal_ooc_colour = "#002eb8" if(!M.client) continue var/client/C = M.client - if(check_rights(R_MENTOR,0)) + if(check_rights(R_MOD,0)) continue //they are handled after that if(C.prefs.toggles & CHAT_LOOC) @@ -159,7 +142,7 @@ var/global/normal_ooc_colour = "#002eb8" display_name = "[S.name]/([S.key])" for(var/client/C in admins) - if(check_rights(R_MENTOR,0)) + if(check_rights(R_MOD,0)) if(C.prefs.toggles & CHAT_LOOC) var/prefix = "(R)LOOC" if (C.mob in heard) From 0e0cc0af50face859b8da7d77a970fc6390063cb Mon Sep 17 00:00:00 2001 From: Markolie Date: Thu, 27 Aug 2015 15:33:33 +0200 Subject: [PATCH 09/16] Ghost interaction update, voice changer fix, man up global confirmation --- code/game/machinery/atmoalter/canister.dm | 14 +- code/game/machinery/atmoalter/pump.dm | 2 +- code/game/machinery/atmoalter/scrubber.dm | 2 +- code/game/machinery/firealarm.dm | 52 +- code/game/machinery/newscaster.dm | 490 +++++++++--------- .../objects/items/devices/radio/intercom.dm | 8 +- .../game/objects/items/devices/radio/radio.dm | 9 +- code/modules/admin/admin_verbs.dm | 13 +- code/modules/mob/living/carbon/human/say.dm | 10 +- code/modules/nano/interaction/base.dm | 5 + 10 files changed, 293 insertions(+), 312 deletions(-) diff --git a/code/game/machinery/atmoalter/canister.dm b/code/game/machinery/atmoalter/canister.dm index 702f7512535..644420fc3c1 100644 --- a/code/game/machinery/atmoalter/canister.dm +++ b/code/game/machinery/atmoalter/canister.dm @@ -74,6 +74,7 @@ var/datum/canister_icons/canister_icon_container = new() var/temperature_resistance = 1000 + T0C volume = 1000 use_power = 0 + interact_offline = 1 var/release_log = "" var/busy = 0 var/update_flag = 0 @@ -424,16 +425,9 @@ update_flag possibledecals = new /list(3) /obj/machinery/portable_atmospherics/canister/Topic(href, href_list) - - //Do not use "if(..()) return" here, canisters will stop working in unpowered areas like space or on the derelict. // yeah but without SOME sort of Topic check any dick can mess with them via exploits as he pleases -walter0o - if (!istype(src.loc, /turf)) - return 0 - - if(!usr.canmove || usr.stat || usr.restrained() || !in_range(loc, usr)) // exploit protection -walter0o - usr << browse(null, "window=canister") - onclose(usr, "canister") - return - + if(..()) + return 1 + if (href_list["choice"] == "menu") menu = text2num(href_list["mode_target"]) diff --git a/code/game/machinery/atmoalter/pump.dm b/code/game/machinery/atmoalter/pump.dm index e9fb01b034c..23dca91dd51 100644 --- a/code/game/machinery/atmoalter/pump.dm +++ b/code/game/machinery/atmoalter/pump.dm @@ -99,7 +99,7 @@ src.add_hiddenprint(user) return src.attack_hand(user) -/obj/machinery/portable_atmospherics/pump/attack_ghost(var/mob/user) +/obj/machinery/portable_atmospherics/pump/attack_ghost(var/mob/user as mob) return src.attack_hand(user) /obj/machinery/portable_atmospherics/pump/attack_hand(var/mob/user as mob) diff --git a/code/game/machinery/atmoalter/scrubber.dm b/code/game/machinery/atmoalter/scrubber.dm index b6dabbdec32..5ab92bd3088 100644 --- a/code/game/machinery/atmoalter/scrubber.dm +++ b/code/game/machinery/atmoalter/scrubber.dm @@ -109,7 +109,7 @@ src.add_hiddenprint(user) return src.attack_hand(user) -/obj/machinery/portable_atmospherics/scrubber/attack_ghost(var/mob/user) +/obj/machinery/portable_atmospherics/scrubber/attack_ghost(var/mob/user as mob) return src.attack_hand(user) /obj/machinery/portable_atmospherics/scrubber/attack_hand(var/mob/user as mob) diff --git a/code/game/machinery/firealarm.dm b/code/game/machinery/firealarm.dm index 2c03a7a92e8..75acd99fb58 100644 --- a/code/game/machinery/firealarm.dm +++ b/code/game/machinery/firealarm.dm @@ -53,12 +53,15 @@ FIRE ALARM if(src.detecting) if(temperature > T0C+200) src.alarm() // added check of detector status here - return - + return + /obj/machinery/firealarm/attack_ai(mob/user as mob) src.add_hiddenprint(user) return src.attack_hand(user) +/obj/machinery/firealarm/attack_ghost(mob/user as mob) + return src.attack_hand(user) + /obj/machinery/firealarm/bullet_act(BLAH) return src.alarm() @@ -174,7 +177,7 @@ FIRE ALARM var/area/A = src.loc var/d1 var/d2 - if (istype(user, /mob/living/carbon/human) || istype(user, /mob/living/silicon)) + if (ishuman(user) || issilicon(user) || isobserver(user)) A = A.loc if (A.fire) @@ -208,34 +211,27 @@ FIRE ALARM return /obj/machinery/firealarm/Topic(href, href_list) - ..() - if (usr.stat || stat & (BROKEN|NOPOWER)) - return - + if(..()) + return 1 + if (buildstage != 2) - return + return 1 - if ((usr.contents.Find(src) || ((get_dist(src, usr) <= 1) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon))) - usr.set_machine(src) - if (href_list["reset"]) - src.reset() - else if (href_list["alarm"]) - src.alarm() - else if (href_list["time"]) - src.timing = text2num(href_list["time"]) - last_process = world.timeofday - processing_objects.Add(src) - else if (href_list["tp"]) - var/tp = text2num(href_list["tp"]) - src.time += tp - src.time = min(max(round(src.time), 0), 120) + if (href_list["reset"]) + src.reset() + else if (href_list["alarm"]) + src.alarm() + else if (href_list["time"]) + src.timing = text2num(href_list["time"]) + last_process = world.timeofday + processing_objects.Add(src) + else if (href_list["tp"]) + var/tp = text2num(href_list["tp"]) + src.time += tp + src.time = min(max(round(src.time), 0), 120) - src.updateUsrDialog() - - src.add_fingerprint(usr) - else - usr << browse(null, "window=firealarm") - return + src.updateUsrDialog() + src.add_fingerprint(usr) return /obj/machinery/firealarm/proc/reset() diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm index eef7223d15b..43d4363a997 100644 --- a/code/game/machinery/newscaster.dm +++ b/code/game/machinery/newscaster.dm @@ -183,9 +183,6 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co if(!src.ispowered || src.isbroken) return - if(!user.IsAdvancedToolUser()) - return 0 - if(istype(user, /mob/living/carbon/human) || istype(user,/mob/living/silicon) ) var/mob/living/human_or_robot_user = user var/dat @@ -444,273 +441,272 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co /obj/machinery/newscaster/Topic(href, href_list) if(..()) return 1 - if ((usr.contents.Find(src) || ((get_dist(src, usr) <= 1) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon))) - usr.set_machine(src) - if(href_list["set_channel_name"]) - src.channel_name = sanitizeSQL(strip_html_simple(input(usr, "Provide a Feed Channel Name", "Network Channel Handler", ""))) - while (findtext(src.channel_name," ") == 1) - src.channel_name = copytext(src.channel_name,2,lentext(src.channel_name)+1) - src.updateUsrDialog() - //src.update_icon() + + usr.set_machine(src) + if(href_list["set_channel_name"]) + src.channel_name = sanitizeSQL(strip_html_simple(input(usr, "Provide a Feed Channel Name", "Network Channel Handler", ""))) + while (findtext(src.channel_name," ") == 1) + src.channel_name = copytext(src.channel_name,2,lentext(src.channel_name)+1) + src.updateUsrDialog() + //src.update_icon() - else if(href_list["set_channel_lock"]) - src.c_locked = !src.c_locked - src.updateUsrDialog() - //src.update_icon() + else if(href_list["set_channel_lock"]) + src.c_locked = !src.c_locked + src.updateUsrDialog() + //src.update_icon() - else if(href_list["submit_new_channel"]) - //var/list/existing_channels = list() //OBSOLETE - var/list/existing_authors = list() - for(var/datum/feed_channel/FC in news_network.network_channels) - //existing_channels += FC.channel_name - if(FC.author == "\[REDACTED\]") - existing_authors += FC.backup_author - else - existing_authors +=FC.author - var/check = 0 + else if(href_list["submit_new_channel"]) + //var/list/existing_channels = list() //OBSOLETE + var/list/existing_authors = list() + for(var/datum/feed_channel/FC in news_network.network_channels) + //existing_channels += FC.channel_name + if(FC.author == "\[REDACTED\]") + existing_authors += FC.backup_author + else + existing_authors +=FC.author + var/check = 0 + for(var/datum/feed_channel/FC in news_network.network_channels) + if(FC.channel_name == src.channel_name) + check = 1 + break + if(src.channel_name == "" || src.channel_name == "\[REDACTED\]" || src.scanned_user == "Unknown" || check || (src.scanned_user in existing_authors) ) + src.screen=7 + else + var/choice = alert("Please confirm Feed channel creation","Network Channel Handler","Confirm","Cancel") + if(choice=="Confirm") + var/datum/feed_channel/newChannel = new /datum/feed_channel + newChannel.channel_name = src.channel_name + newChannel.author = src.scanned_user + newChannel.locked = c_locked + feedback_inc("newscaster_channels",1) + /*for(var/obj/machinery/newscaster/NEWSCASTER in allCasters) //Let's add the new channel in all casters. + NEWSCASTER.channel_list += newChannel*/ //Now that it is sane, get it into the list. -OBSOLETE + news_network.network_channels += newChannel //Adding channel to the global network + src.screen=5 + src.updateUsrDialog() + //src.update_icon() + + else if(href_list["set_channel_receiving"]) + //var/list/datum/feed_channel/available_channels = list() + var/list/available_channels = list() + for(var/datum/feed_channel/F in news_network.network_channels) + if( (!F.locked || F.author == scanned_user) && !F.censored) + available_channels += F.channel_name + src.channel_name = strip_html_simple(input(usr, "Choose receiving Feed Channel", "Network Channel Handler") in available_channels ) + src.updateUsrDialog() + + else if(href_list["set_new_message"]) + src.msg = strip_html(input(usr, "Write your feed story", "Network Channel Handler", "")) + while (findtext(src.msg," ") == 1) + src.msg = copytext(src.msg,2,lentext(src.msg)+1) + src.updateUsrDialog() + + else if(href_list["set_attachment"]) + AttachPhoto(usr) + src.updateUsrDialog() + + else if(href_list["submit_new_message"]) + if(src.msg =="" || src.msg=="\[REDACTED\]" || src.scanned_user == "Unknown" || src.channel_name == "" ) + src.screen=6 + else + var/datum/feed_message/newMsg = new /datum/feed_message + newMsg.author = src.scanned_user + newMsg.body = src.msg + if(photo) + newMsg.img = photo.img + feedback_inc("newscaster_stories",1) + var/announcement = "" for(var/datum/feed_channel/FC in news_network.network_channels) if(FC.channel_name == src.channel_name) - check = 1 + FC.messages += newMsg //Adding message to the network's appropriate feed_channel + announcement = FC.announce_news() break - if(src.channel_name == "" || src.channel_name == "\[REDACTED\]" || src.scanned_user == "Unknown" || check || (src.scanned_user in existing_authors) ) - src.screen=7 - else - var/choice = alert("Please confirm Feed channel creation","Network Channel Handler","Confirm","Cancel") - if(choice=="Confirm") - var/datum/feed_channel/newChannel = new /datum/feed_channel - newChannel.channel_name = src.channel_name - newChannel.author = src.scanned_user - newChannel.locked = c_locked - feedback_inc("newscaster_channels",1) - /*for(var/obj/machinery/newscaster/NEWSCASTER in allCasters) //Let's add the new channel in all casters. - NEWSCASTER.channel_list += newChannel*/ //Now that it is sane, get it into the list. -OBSOLETE - news_network.network_channels += newChannel //Adding channel to the global network - src.screen=5 - src.updateUsrDialog() - //src.update_icon() + src.screen=4 + for(var/obj/machinery/newscaster/NEWSCASTER in allCasters) + NEWSCASTER.newsAlert(announcement) - else if(href_list["set_channel_receiving"]) - //var/list/datum/feed_channel/available_channels = list() - var/list/available_channels = list() - for(var/datum/feed_channel/F in news_network.network_channels) - if( (!F.locked || F.author == scanned_user) && !F.censored) - available_channels += F.channel_name - src.channel_name = strip_html_simple(input(usr, "Choose receiving Feed Channel", "Network Channel Handler") in available_channels ) - src.updateUsrDialog() + src.updateUsrDialog() - else if(href_list["set_new_message"]) - src.msg = strip_html(input(usr, "Write your feed story", "Network Channel Handler", "")) - while (findtext(src.msg," ") == 1) - src.msg = copytext(src.msg,2,lentext(src.msg)+1) - src.updateUsrDialog() + else if(href_list["create_channel"]) + src.screen=2 + src.updateUsrDialog() - else if(href_list["set_attachment"]) - AttachPhoto(usr) - src.updateUsrDialog() + else if(href_list["create_feed_story"]) + src.screen=3 + src.updateUsrDialog() - else if(href_list["submit_new_message"]) - if(src.msg =="" || src.msg=="\[REDACTED\]" || src.scanned_user == "Unknown" || src.channel_name == "" ) - src.screen=6 - else - var/datum/feed_message/newMsg = new /datum/feed_message - newMsg.author = src.scanned_user - newMsg.body = src.msg - if(photo) - newMsg.img = photo.img - feedback_inc("newscaster_stories",1) - var/announcement = "" - for(var/datum/feed_channel/FC in news_network.network_channels) - if(FC.channel_name == src.channel_name) - FC.messages += newMsg //Adding message to the network's appropriate feed_channel - announcement = FC.announce_news() - break - src.screen=4 - for(var/obj/machinery/newscaster/NEWSCASTER in allCasters) - NEWSCASTER.newsAlert(announcement) + else if(href_list["menu_paper"]) + src.screen=8 + src.updateUsrDialog() + else if(href_list["print_paper"]) + if(!src.paper_remaining) + src.screen=21 + else + src.print_paper() + src.screen = 20 + src.updateUsrDialog() - src.updateUsrDialog() + else if(href_list["menu_censor_story"]) + src.screen=10 + src.updateUsrDialog() - else if(href_list["create_channel"]) - src.screen=2 - src.updateUsrDialog() + else if(href_list["menu_censor_channel"]) + src.screen=11 + src.updateUsrDialog() - else if(href_list["create_feed_story"]) - src.screen=3 - src.updateUsrDialog() + else if(href_list["menu_wanted"]) + var/already_wanted = 0 + if(news_network.wanted_issue) + already_wanted = 1 - else if(href_list["menu_paper"]) - src.screen=8 - src.updateUsrDialog() - else if(href_list["print_paper"]) - if(!src.paper_remaining) - src.screen=21 - else - src.print_paper() - src.screen = 20 - src.updateUsrDialog() + if(already_wanted) + src.channel_name = news_network.wanted_issue.author + src.msg = news_network.wanted_issue.body + src.screen = 14 + src.updateUsrDialog() - else if(href_list["menu_censor_story"]) - src.screen=10 - src.updateUsrDialog() + else if(href_list["set_wanted_name"]) + src.channel_name = strip_html(input(usr, "Provide the name of the Wanted person", "Network Security Handler", "")) + while (findtext(src.channel_name," ") == 1) + src.channel_name = copytext(src.channel_name,2,lentext(src.channel_name)+1) + src.updateUsrDialog() - else if(href_list["menu_censor_channel"]) - src.screen=11 - src.updateUsrDialog() + else if(href_list["set_wanted_desc"]) + src.msg = strip_html(input(usr, "Provide the a description of the Wanted person and any other details you deem important", "Network Security Handler", "")) + while (findtext(src.msg," ") == 1) + src.msg = copytext(src.msg,2,lentext(src.msg)+1) + src.updateUsrDialog() - else if(href_list["menu_wanted"]) - var/already_wanted = 0 - if(news_network.wanted_issue) - already_wanted = 1 - - if(already_wanted) - src.channel_name = news_network.wanted_issue.author - src.msg = news_network.wanted_issue.body - src.screen = 14 - src.updateUsrDialog() - - else if(href_list["set_wanted_name"]) - src.channel_name = strip_html(input(usr, "Provide the name of the Wanted person", "Network Security Handler", "")) - while (findtext(src.channel_name," ") == 1) - src.channel_name = copytext(src.channel_name,2,lentext(src.channel_name)+1) - src.updateUsrDialog() - - else if(href_list["set_wanted_desc"]) - src.msg = strip_html(input(usr, "Provide the a description of the Wanted person and any other details you deem important", "Network Security Handler", "")) - while (findtext(src.msg," ") == 1) - src.msg = copytext(src.msg,2,lentext(src.msg)+1) - src.updateUsrDialog() - - else if(href_list["submit_wanted"]) - var/input_param = text2num(href_list["submit_wanted"]) - if(src.msg == "" || src.channel_name == "" || src.scanned_user == "Unknown") - src.screen = 16 - else - var/choice = alert("Please confirm Wanted Issue [(input_param==1) ? ("creation.") : ("edit.")]","Network Security Handler","Confirm","Cancel") - if(choice=="Confirm") - if(input_param==1) //If input_param == 1 we're submitting a new wanted issue. At 2 we're just editing an existing one. See the else below - var/datum/feed_message/WANTED = new /datum/feed_message - WANTED.author = src.channel_name - WANTED.body = src.msg - WANTED.backup_author = src.scanned_user //I know, a bit wacky - if(photo) - WANTED.img = photo.img - news_network.wanted_issue = WANTED - for(var/obj/machinery/newscaster/NEWSCASTER in allCasters) - NEWSCASTER.newsAlert() - NEWSCASTER.update_icon() - src.screen = 15 - else - if(news_network.wanted_issue.is_admin_message) - alert("The wanted issue has been distributed by a Nanotrasen higherup. You cannot edit it.","Ok") - return - news_network.wanted_issue.author = src.channel_name - news_network.wanted_issue.body = src.msg - news_network.wanted_issue.backup_author = src.scanned_user - if(photo) - news_network.wanted_issue.img = photo.img - src.screen = 19 - - src.updateUsrDialog() - - else if(href_list["cancel_wanted"]) - if(news_network.wanted_issue.is_admin_message) - alert("The wanted issue has been distributed by a Nanotrasen higherup. You cannot take it down.","Ok") - return - var/choice = alert("Please confirm Wanted Issue removal","Network Security Handler","Confirm","Cancel") + else if(href_list["submit_wanted"]) + var/input_param = text2num(href_list["submit_wanted"]) + if(src.msg == "" || src.channel_name == "" || src.scanned_user == "Unknown") + src.screen = 16 + else + var/choice = alert("Please confirm Wanted Issue [(input_param==1) ? ("creation.") : ("edit.")]","Network Security Handler","Confirm","Cancel") if(choice=="Confirm") - news_network.wanted_issue = null - for(var/obj/machinery/newscaster/NEWSCASTER in allCasters) - NEWSCASTER.update_icon() - src.screen=17 - src.updateUsrDialog() + if(input_param==1) //If input_param == 1 we're submitting a new wanted issue. At 2 we're just editing an existing one. See the else below + var/datum/feed_message/WANTED = new /datum/feed_message + WANTED.author = src.channel_name + WANTED.body = src.msg + WANTED.backup_author = src.scanned_user //I know, a bit wacky + if(photo) + WANTED.img = photo.img + news_network.wanted_issue = WANTED + for(var/obj/machinery/newscaster/NEWSCASTER in allCasters) + NEWSCASTER.newsAlert() + NEWSCASTER.update_icon() + src.screen = 15 + else + if(news_network.wanted_issue.is_admin_message) + alert("The wanted issue has been distributed by a Nanotrasen higherup. You cannot edit it.","Ok") + return + news_network.wanted_issue.author = src.channel_name + news_network.wanted_issue.body = src.msg + news_network.wanted_issue.backup_author = src.scanned_user + if(photo) + news_network.wanted_issue.img = photo.img + src.screen = 19 - else if(href_list["view_wanted"]) - src.screen=18 - src.updateUsrDialog() - else if(href_list["censor_channel_author"]) - var/datum/feed_channel/FC = locate(href_list["censor_channel_author"]) - if(FC.is_admin_channel) - alert("This channel was created by a Nanotrasen Officer. You cannot censor it.","Ok") - return - if(FC.author != "\[REDACTED\]") - FC.backup_author = FC.author - FC.author = "\[REDACTED\]" - else - FC.author = FC.backup_author - src.updateUsrDialog() + src.updateUsrDialog() - else if(href_list["censor_channel_story_author"]) - var/datum/feed_message/MSG = locate(href_list["censor_channel_story_author"]) - if(MSG.is_admin_message) - alert("This message was created by a Nanotrasen Officer. You cannot censor its author.","Ok") - return - if(MSG.author != "\[REDACTED\]") - MSG.backup_author = MSG.author - MSG.author = "\[REDACTED\]" - else - MSG.author = MSG.backup_author - src.updateUsrDialog() + else if(href_list["cancel_wanted"]) + if(news_network.wanted_issue.is_admin_message) + alert("The wanted issue has been distributed by a Nanotrasen higherup. You cannot take it down.","Ok") + return + var/choice = alert("Please confirm Wanted Issue removal","Network Security Handler","Confirm","Cancel") + if(choice=="Confirm") + news_network.wanted_issue = null + for(var/obj/machinery/newscaster/NEWSCASTER in allCasters) + NEWSCASTER.update_icon() + src.screen=17 + src.updateUsrDialog() - else if(href_list["censor_channel_story_body"]) - var/datum/feed_message/MSG = locate(href_list["censor_channel_story_body"]) - if(MSG.is_admin_message) - alert("This channel was created by a Nanotrasen Officer. You cannot censor it.","Ok") - return - if(MSG.img != null) - MSG.backup_img = MSG.img - MSG.img = null - else - MSG.img = MSG.backup_img - if(MSG.body != "\[REDACTED\]") - MSG.backup_body = MSG.body - MSG.body = "\[REDACTED\]" - else - MSG.body = MSG.backup_body - src.updateUsrDialog() + else if(href_list["view_wanted"]) + src.screen=18 + src.updateUsrDialog() + else if(href_list["censor_channel_author"]) + var/datum/feed_channel/FC = locate(href_list["censor_channel_author"]) + if(FC.is_admin_channel) + alert("This channel was created by a Nanotrasen Officer. You cannot censor it.","Ok") + return + if(FC.author != "\[REDACTED\]") + FC.backup_author = FC.author + FC.author = "\[REDACTED\]" + else + FC.author = FC.backup_author + src.updateUsrDialog() - else if(href_list["pick_d_notice"]) - var/datum/feed_channel/FC = locate(href_list["pick_d_notice"]) - src.viewing_channel = FC - src.screen=13 - src.updateUsrDialog() + else if(href_list["censor_channel_story_author"]) + var/datum/feed_message/MSG = locate(href_list["censor_channel_story_author"]) + if(MSG.is_admin_message) + alert("This message was created by a Nanotrasen Officer. You cannot censor its author.","Ok") + return + if(MSG.author != "\[REDACTED\]") + MSG.backup_author = MSG.author + MSG.author = "\[REDACTED\]" + else + MSG.author = MSG.backup_author + src.updateUsrDialog() - else if(href_list["toggle_d_notice"]) - var/datum/feed_channel/FC = locate(href_list["toggle_d_notice"]) - if(FC.is_admin_channel) - alert("This channel was created by a Nanotrasen Officer. You cannot place a D-Notice upon it.","Ok") - return - FC.censored = !FC.censored - src.updateUsrDialog() + else if(href_list["censor_channel_story_body"]) + var/datum/feed_message/MSG = locate(href_list["censor_channel_story_body"]) + if(MSG.is_admin_message) + alert("This channel was created by a Nanotrasen Officer. You cannot censor it.","Ok") + return + if(MSG.img != null) + MSG.backup_img = MSG.img + MSG.img = null + else + MSG.img = MSG.backup_img + if(MSG.body != "\[REDACTED\]") + MSG.backup_body = MSG.body + MSG.body = "\[REDACTED\]" + else + MSG.body = MSG.backup_body + src.updateUsrDialog() - else if(href_list["view"]) - src.screen=1 - src.updateUsrDialog() + else if(href_list["pick_d_notice"]) + var/datum/feed_channel/FC = locate(href_list["pick_d_notice"]) + src.viewing_channel = FC + src.screen=13 + src.updateUsrDialog() - else if(href_list["setScreen"]) //Brings us to the main menu and resets all fields~ - src.screen = text2num(href_list["setScreen"]) - if (src.screen == 0) - src.scanned_user = "Unknown"; - msg = ""; - src.c_locked=0; - channel_name=""; - src.viewing_channel = null - src.updateUsrDialog() + else if(href_list["toggle_d_notice"]) + var/datum/feed_channel/FC = locate(href_list["toggle_d_notice"]) + if(FC.is_admin_channel) + alert("This channel was created by a Nanotrasen Officer. You cannot place a D-Notice upon it.","Ok") + return + FC.censored = !FC.censored + src.updateUsrDialog() - else if(href_list["show_channel"]) - var/datum/feed_channel/FC = locate(href_list["show_channel"]) - src.viewing_channel = FC - src.screen = 9 - src.updateUsrDialog() + else if(href_list["view"]) + src.screen=1 + src.updateUsrDialog() - else if(href_list["pick_censor_channel"]) - var/datum/feed_channel/FC = locate(href_list["pick_censor_channel"]) - src.viewing_channel = FC - src.screen = 12 - src.updateUsrDialog() + else if(href_list["setScreen"]) //Brings us to the main menu and resets all fields~ + src.screen = text2num(href_list["setScreen"]) + if (src.screen == 0) + src.scanned_user = "Unknown"; + msg = ""; + src.c_locked=0; + channel_name=""; + src.viewing_channel = null + src.updateUsrDialog() - else if(href_list["refresh"]) - src.updateUsrDialog() + else if(href_list["show_channel"]) + var/datum/feed_channel/FC = locate(href_list["show_channel"]) + src.viewing_channel = FC + src.screen = 9 + src.updateUsrDialog() + else if(href_list["pick_censor_channel"]) + var/datum/feed_channel/FC = locate(href_list["pick_censor_channel"]) + src.viewing_channel = FC + src.screen = 12 + src.updateUsrDialog() + + else if(href_list["refresh"]) + src.updateUsrDialog() /obj/machinery/newscaster/attackby(obj/item/I as obj, mob/living/user as mob, params) if(istype(I, /obj/item/weapon/wrench)) @@ -746,10 +742,6 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co user << "This does nothing." src.update_icon() -/obj/machinery/newscaster/attack_ai(mob/user as mob) - return src.attack_hand(user) //or maybe it'll have some special functions? No idea. - - /obj/machinery/newscaster/proc/AttachPhoto(mob/user as mob) if(photo) if(!issilicon(user)) @@ -794,11 +786,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co var/scribble="" var/scribble_page = null -/*obj/item/weapon/newspaper/attack_hand(mob/user as mob) - ..() - world << "derp"*/ - -obj/item/weapon/newspaper/attack_self(mob/user as mob) +/obj/item/weapon/newspaper/attack_self(mob/user as mob) if(ishuman(user)) var/mob/living/carbon/human/human_user = user var/dat diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm index 3cbcde23f4a..b6bb39bd32b 100644 --- a/code/game/objects/items/devices/radio/intercom.dm +++ b/code/game/objects/items/devices/radio/intercom.dm @@ -37,12 +37,16 @@ /obj/item/device/radio/intercom/attack_ai(mob/user as mob) add_hiddenprint(user) add_fingerprint(user) - spawn (0) + spawn(0) + attack_self(user) + +/obj/item/device/radio/intercom/attack_ghost(mob/user as mob) + spawn(0) attack_self(user) /obj/item/device/radio/intercom/attack_hand(mob/user as mob) add_fingerprint(user) - spawn (0) + spawn(0) attack_self(user) /obj/item/device/radio/intercom/receive_range(freq, level) diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index 62498009f0b..cf26aeca7c0 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -122,14 +122,9 @@ listening = !listening && !(wires.IsIndexCut(WIRE_RECEIVE) || wires.IsIndexCut(WIRE_SIGNAL)) /obj/item/device/radio/Topic(href, href_list) - //..() - if (usr.stat || !on) - return + if(..()) + return 1 - if (!(issilicon(usr) || (usr.contents.Find(src) || ( in_range(src, usr) && istype(loc, /turf) )))) - usr << browse(null, "window=radio") - return - usr.set_machine(src) if (href_list["track"]) var/mob/target = locate(href_list["track"]) var/mob/living/silicon/ai/A = locate(href_list["track2"]) diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 488eb2c50c5..b41dece52d7 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -846,10 +846,13 @@ var/list/admin_verbs_mentor = list( set category = "Admin" set name = "Man Up Global" set desc = "Tells everyone to man up and deal with it." + + var/confirm = alert("Are you sure you want to send the global message?", "Confirm Man Up Global", "Yes", "No") - for (var/mob/T as mob in mob_list) - T << "
Man up.
Deal with it.

Move on.

" - T << 'sound/voice/ManUp1.ogg' + if(confirm == "Yes") + for (var/mob/T as mob in mob_list) + T << "
Man up.
Deal with it.

Move on.

" + T << 'sound/voice/ManUp1.ogg' - log_admin("[key_name(usr)] told everyone to man up and deal with it.") - message_admins("\blue [key_name_admin(usr)] told everyone to man up and deal with it.", 1) + log_admin("[key_name(usr)] told everyone to man up and deal with it.") + message_admins("\blue [key_name_admin(usr)] told everyone to man up and deal with it.", 1) diff --git a/code/modules/mob/living/carbon/human/say.dm b/code/modules/mob/living/carbon/human/say.dm index 0a38453c5fd..729ce6c8cae 100644 --- a/code/modules/mob/living/carbon/human/say.dm +++ b/code/modules/mob/living/carbon/human/say.dm @@ -27,7 +27,7 @@ return emote(copytext(message,2)) if(name != GetVoice()) - alt_name = "(as [get_id_name("Unknown")])" + alt_name = " (as [get_id_name("Unknown")])" //parse the radio code and consume it if (message_mode) @@ -214,17 +214,13 @@ continue var/obj/item/voice_changer/changer = locate() in gear if(changer && changer.active && changer.voice) - return changer + return changer.voice return 0 /mob/living/carbon/human/GetVoice() - - var/voice_sub var/has_changer = HasVoiceChanger() if(has_changer) - voice_sub = has_changer - if(voice_sub) - return voice_sub + return has_changer if(mind && mind.changeling && mind.changeling.mimicing) return mind.changeling.mimicing if(GetSpecialVoice()) diff --git a/code/modules/nano/interaction/base.dm b/code/modules/nano/interaction/base.dm index 85ac56eeedc..e70b4423705 100644 --- a/code/modules/nano/interaction/base.dm +++ b/code/modules/nano/interaction/base.dm @@ -17,6 +17,11 @@ else if (restrained() || lying || stat || stunned || weakened) return STATUS_UPDATE // update only (orange visibility) return STATUS_INTERACTIVE + +/mob/dead/observer/shared_nano_interaction() + if(check_rights(R_ADMIN, 0, src)) + return STATUS_INTERACTIVE // Admins are more equal + return STATUS_UPDATE // Ghosts can view updates /mob/living/silicon/ai/shared_nano_interaction() if(lacks_power()) From 3d970aba1f1e9643f1900cd58f218753c8c5c71c Mon Sep 17 00:00:00 2001 From: Markolie Date: Thu, 27 Aug 2015 15:54:04 +0200 Subject: [PATCH 10/16] Fixes invisible alien leap --- .../carbon/alien/humanoid/caste/hunter.dm | 1 + .../living/carbon/alien/humanoid/humanoid.dm | 21 +++++++++++++++++- .../carbon/alien/humanoid/update_icons.dm | 16 ++++++++----- code/modules/mob/living/living.dm | 3 ++- icons/mob/alienleap.dmi | Bin 3985 -> 4035 bytes 5 files changed, 34 insertions(+), 7 deletions(-) diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm index 018c37e4ad6..52fd9ad29fc 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm @@ -110,6 +110,7 @@ if(leaping) leaping = 0 + update_icons() update_canmove() diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm index 7d8ab9932df..b88004e4a2d 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm @@ -7,11 +7,14 @@ var/obj/item/weapon/r_store = null var/obj/item/weapon/l_store = null var/caste = "" + var/alt_icon = 'icons/mob/alienleap.dmi' //used to switch between the two alien icon files. var/next_attack = 0 var/pounce_cooldown = 0 var/pounce_cooldown_time = 30 update_icon = 1 var/leap_on_click = 0 + var/custom_pixel_x_offset = 0 //for admin fuckery. + var/custom_pixel_y_offset = 0 //This is fine right now, if we're adding organ specific damage this needs to be updated /mob/living/carbon/alien/humanoid/New() @@ -336,4 +339,20 @@ In all, this is a lot like the monkey code. /N /mob/living/carbon/alien/humanoid/canBeHandcuffed() - return 1 \ No newline at end of file + return 1 + +/mob/living/carbon/alien/humanoid/get_standard_pixel_y_offset(lying = 0) + if(leaping) + return -32 + else if(custom_pixel_y_offset) + return custom_pixel_y_offset + else + return initial(pixel_y) + +/mob/living/carbon/alien/humanoid/get_standard_pixel_x_offset(lying = 0) + if(leaping) + return -32 + else if(custom_pixel_x_offset) + return custom_pixel_x_offset + else + return initial(pixel_x) \ No newline at end of file diff --git a/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm b/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm index 4c24b06bbe0..740c3e5ce25 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/update_icons.dm @@ -41,14 +41,20 @@ icon_state = "alien[caste]_s" if(leaping) - icon = 'icons/mob/alienleap.dmi' + if(alt_icon == initial(alt_icon)) + var/old_icon = icon + icon = alt_icon + alt_icon = old_icon icon_state = "alien[caste]_leap" pixel_x = -32 pixel_y = -32 - else if(icon == 'icons/mob/alienleap.dmi' && pixel_x == -32 && pixel_y == -32) - icon = initial(icon)// ^ this looks odd, but in theory it will prevent the icon and pixel_xy from being reset unless it needs to be - pixel_x = initial(pixel_x) - pixel_y = initial(pixel_y) + else + if(alt_icon != initial(alt_icon)) + var/old_icon = icon + icon = alt_icon + alt_icon = old_icon + pixel_x = get_standard_pixel_x_offset(lying) + pixel_y = get_standard_pixel_y_offset(lying) /mob/living/carbon/alien/humanoid/regenerate_icons() ..() diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index fa834fa581b..416dc1626cd 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -936,4 +936,5 @@ return initial(pixel_y) /mob/living/proc/spawn_dust() - new /obj/effect/decal/cleanable/ash(loc) \ No newline at end of file + new /obj/effect/decal/cleanable/ash(loc) + \ No newline at end of file diff --git a/icons/mob/alienleap.dmi b/icons/mob/alienleap.dmi index 3adf4ff7597a816d781532c52435ca8324a7fca2..da092d4b9bdf2993bf1295efcd5614abc5da8b3b 100644 GIT binary patch delta 3665 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 Wy&5n$Ry_IYF&P_}->%bhj{6TNt9=Xr From a54be7c47b3b98a9949c9962d8a2acfd41fd4a31 Mon Sep 17 00:00:00 2001 From: Tigercat2000 Date: Thu, 27 Aug 2015 12:27:27 -0700 Subject: [PATCH 11/16] Centcomm Mods Moved the kitchen and dorms to be sticking out less Added escape bathrooms --- _maps/map_files/cyberiad/z2.dmm | 92 +++++++++++++----------- code/game/area/Space Station 13 areas.dm | 15 ++-- code/game/objects/structures/curtains.dm | 3 + 3 files changed, 63 insertions(+), 47 deletions(-) diff --git a/_maps/map_files/cyberiad/z2.dmm b/_maps/map_files/cyberiad/z2.dmm index 571e5e81d99..bb9eb22cba0 100644 --- a/_maps/map_files/cyberiad/z2.dmm +++ b/_maps/map_files/cyberiad/z2.dmm @@ -982,7 +982,7 @@ "sT" = (/obj/structure/closet/secure_closet/freezer/meat{req_access_txt = "102"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/control) "sU" = (/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/control) "sV" = (/obj/machinery/chem_master/condimaster{name = "CondiMaster Neo"; pixel_x = -5},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/control) -"sW" = (/obj/structure/sign/poster/legit{pixel_x = 32},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/centcom/control) +"sW" = (/obj/effect/spawner/window/reinforced,/turf/unsimulated/floor{name = "plating"},/area/centcom/living) "sX" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/shaker,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/control) "sY" = (/obj/structure/table,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/control) "sZ" = (/obj/machinery/door/airlock/centcom{name = "Freezer"; opacity = 1; req_access_txt = "102"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/control) @@ -1020,7 +1020,7 @@ "tF" = (/turf/unsimulated/floor{icon_state = "loadingarea"; dir = 8},/area/centcom/specops) "tG" = (/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops) "tH" = (/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/centcom/control) -"tI" = (/obj/machinery/door/airlock/centcom{name = "Living Quarters"; opacity = 1; req_access_txt = "102"},/turf/unsimulated/floor{icon_state = "delivery"},/area/centcom/control) +"tI" = (/obj/machinery/door/airlock/centcom{name = "Bathroom"; opacity = 1; req_access_txt = "0"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/specops) "tJ" = (/obj/mecha/combat/marauder/loaded,/turf/unsimulated/floor{icon_state = "delivery"; dir = 6},/area/centcom/specops) "tK" = (/turf/unsimulated/floor{dir = 4; heat_capacity = 1; icon_state = "warning"},/area/centcom/specops) "tL" = (/turf/unsimulated/floor{icon_state = "green"; dir = 9},/area/centcom/control) @@ -1034,9 +1034,9 @@ "tT" = (/obj/machinery/computer/pod/deathsquad,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom/specops) "tU" = (/obj/machinery/door/poddoor{icon_state = "pdoor1"; id_tag = "ASSAULT1"; name = "Launch Bay #1"; p_open = 0},/turf/unsimulated/floor{name = "plating"},/area/centcom/specops) "tV" = (/obj/machinery/mass_driver{dir = 8; drive_range = 50; id_tag = "ASSAULT1"; name = "gravpult"},/turf/unsimulated/floor{icon_state = "bot"},/area/centcom/specops) -"tW" = (/turf/unsimulated/floor{icon_state = "green"; dir = 8},/area/centcom/living) -"tX" = (/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/living) -"tY" = (/turf/unsimulated/floor{icon_state = "green"; dir = 4},/area/centcom/living) +"tW" = (/turf/unsimulated/wall,/area/centcom/bathroom) +"tX" = (/obj/machinery/door/airlock/centcom{name = "Unit 4"; opacity = 1; req_access_txt = "0"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) +"tY" = (/obj/structure/toilet{dir = 4},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) "tZ" = (/turf/unsimulated/floor{icon_state = "greencorner"; dir = 1},/area/centcom/control) "ua" = (/turf/unsimulated/floor{icon_state = "greencorner"; dir = 4},/area/centcom/control) "ub" = (/obj/machinery/door/poddoor{icon_state = "pdoor1"; id_tag = "ASSAULT0"; name = "Launch Bay #0"; p_open = 0},/turf/unsimulated/floor{name = "plating"},/area/centcom/specops) @@ -1080,7 +1080,7 @@ "uN" = (/obj/machinery/door/airlock/centcom{name = "Special Operations"; opacity = 1; req_access_txt = "109"},/turf/unsimulated/floor{icon_state = "delivery"},/area/centcom/specops) "uO" = (/obj/machinery/door/airlock/centcom{name = "Special Operations"; opacity = 1; req_access_txt = "109"},/turf/unsimulated/floor{icon_state = "delivery"},/area/centcom/control) "uP" = (/obj/machinery/door/airlock/centcom{name = "Bridge"; opacity = 1; req_access_txt = "113"},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) -"uQ" = (/turf/unsimulated/wall{desc = "The door appears to be locked tightly."; icon = 'icons/obj/doors/Doorhatchele.dmi'; icon_state = "door_closed"; name = "Administration Wing"},/area/centcom/control) +"uQ" = (/obj/structure/mirror{pixel_y = 32},/obj/structure/sink{pixel_y = 15},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) "uR" = (/obj/structure/table/reinforced,/obj/item/device/radio/intercom{broadcasting = 1; dir = 1; frequency = 1443; listening = 0; name = "Response Team Intercom"; pixel_y = 0},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "uS" = (/obj/structure/table/reinforced,/obj/effect/landmark{name = "nukecode"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "uT" = (/obj/structure/table/reinforced,/obj/item/weapon/paper,/obj/item/weapon/pen,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) @@ -1114,7 +1114,7 @@ "vv" = (/obj/machinery/computer/communications,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) "vw" = (/obj/machinery/computer/robotics,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) "vx" = (/obj/machinery/computer/crew,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) -"vy" = (/obj/machinery/door/airlock/centcom{name = "Bathroom"; opacity = 1; req_access_txt = "109"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/specops) +"vy" = (/obj/structure/sink{pixel_y = 15},/obj/structure/mirror{pixel_y = 32},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) "vz" = (/obj/structure/stool/bed/chair/office/dark{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops) "vA" = (/obj/machinery/door/poddoor/shutters{dir = 8; id_tag = "specopsoffice"; name = "Privacy Shutters"},/turf/unsimulated/wall/fakeglass,/area/centcom/specops) "vB" = (/obj/structure/table/woodentable{dir = 9},/obj/item/ashtray/glass{icon_state = "ashtray_half_gl"},/turf/unsimulated/floor{dir = 8; icon_state = "carpetside"},/area/centcom/specops) @@ -1797,6 +1797,15 @@ "IC" = (/obj/structure/table,/obj/machinery/door_control{desc = "A remote control switch for port-side blast doors."; icon_state = "doorctrl0"; id = "thunderdomehea"; name = "Ranged Gear"; pixel_x = 0; pixel_y = 5; req_access_txt = "104"},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome/tdomeadmin) "ID" = (/obj/structure/table,/obj/machinery/door_control{desc = "A remote control switch for port-side blast doors."; icon_state = "doorctrl0"; id = "thunderdomegen"; name = "General Equiptment"; pixel_x = 0; pixel_y = 5; req_access_txt = "104"},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome/tdomeadmin) "IE" = (/obj/structure/table,/obj/machinery/door_control{desc = "A remote control switch for port-side blast doors."; icon_state = "doorctrl0"; id = "thunderdomeaxe"; name = "Specialist Supply"; pixel_x = 0; pixel_y = 5; req_access_txt = "104"},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome/tdomeadmin) +"IF" = (/obj/machinery/shower{dir = 4; icon_state = "shower"; pixel_x = 5; tag = "icon-shower (EAST)"},/obj/structure/curtain/open/shower/centcom,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) +"IG" = (/obj/machinery/shower{dir = 8; icon_state = "shower"; pixel_x = -5; tag = "icon-shower (WEST)"},/obj/structure/curtain/open/shower/centcom,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) +"IH" = (/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) +"II" = (/obj/machinery/door/airlock/centcom{name = "Unit 3"; opacity = 1; req_access_txt = "0"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) +"IJ" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/structure/mirror{pixel_x = 32},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) +"IK" = (/obj/machinery/door/airlock/centcom{name = "Unit 2"; opacity = 1; req_access_txt = "0"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) +"IL" = (/obj/machinery/door/airlock/centcom{name = "Bathroom"; opacity = 1; req_access_txt = "0"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/evac) +"IM" = (/obj/machinery/door/airlock/centcom{name = "Unit 1"; opacity = 1; req_access_txt = "0"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom) +"IN" = (/obj/effect/spawner/window/reinforced,/turf/unsimulated/floor,/area/centcom/bathroom) (1,1,1) = {" aaabacadaeafagahaaaiajakalamanaoagafajacadahakaeamaiaoapaqarasatauavawaxayazaAaBaCaDaEaFaGaHaIaJaKawaxayazaAaBaCaDaEaFaLaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaMaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaOaPaPaPaPaPaQaPaPaPaPaPaQaPaPaPaPaPaQaPaPaPaPaPaQaPaPaPaPaPaQaPaPaPaPaPaQaPaPaPaPaPaR @@ -1913,47 +1922,47 @@ aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNspspspspspaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNspsqsrssspspspspspststststspspaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNspsusrsrsvswsxsyszsAsBsCsDsEspaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNspspspspspswsCsBsFsGsBsCsCsCspaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNstsCsCsCsCsCsCsCsCsCspaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNstsCsCsCsCsCsCsCswswspspspspspspspspspspaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNspspspspspsCsCsBsFsAsBsCsHsIspsJsKsLsMspsNsOsPspaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNspsqsrssspsQsCsBsFsRsBsCswswspsSsSsSsSspsTsUsVspaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNspsusrsrsvsCsCsCsCsCsCsCsCsWspsSsXsYsYspspsZspspaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNspspspspspspsptaspspspsCsCsCtbsStctcsSsSsSsStdspaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsptetftgspthtitititjspsCsCsCsCsSsSsSsStksSsStlspaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNtmtmtmtmtmtmtmtmaNaNaNaNaNaNsptntotptqtititititrspsCsCsCtbtssSsSsSttsSsStuspaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtvtwtxtytytztmaNaNaNaNaNaNspsptbtbspspsptbtbtbspsCsCsCsptbtbtbtbtbtbtbspspaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNtAtBtBtBtBtBtBtBtBtBtCtDtBtBtBtCtEtFtGtytytytmaNaNaNaNaNaNsptHtHtHtHtHtHtHtHtHspsptIspsptHtHtHtHtHtHtHspaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtvtJtKtytytytmaNaNaNaNaNaNspspspspspspspspspspsptLtMtNspspspspspspspspspaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNtAtBtBtBtBtBtBtBtBtBtOtDtBtBtBtOtPtFtGtytytytmaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsptQtRtSspaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtvtJtKtytytTtmaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNsptQtRtSspaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNtAtBtBtBtBtBtBtBtBtBtUtDtBtBtBtUtVtFtGtytytytmaNaNaNaNaNaNaNaNaNaNspspspspspspsptWtXtYspspspspspspspaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtvtJtKtytytytmaNaNaNaNaNaNaNaNaNaNsptLtMtMtMtMtMtZtRuatMtMtMtMtMtNspaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNtAtBtBtBtBtBtBtBtBtBubtDtBtBtBubucudtGtytytytmaNaNaNaNaNaNaNaNaNaNsptQtRtRtRtRtRtRtRtRtRtRtRtRtRtSspaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmueuftmtmtmtmtmtmtmtmtmtmtmaNsptQtRuguhuhuhuhuhuhuhuhuhuitRtSspaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNtmujukukulumunununtmuououououououpuqurtmaNsptQtRtStbtbtbtbtbtbtbtbtbtQtRtSspaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNspspspspspaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNspsqsrssspspspsptbstststspspspspspspspspspspspspspaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNspsusrsrsvswsxsyszsAsBsCsCswswspsJsKsLsMspsNsOsPspaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNspspspspspswsCsBsFsGsBsCsCsHsIspsSsSsSsSspsTsUsVspaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNstsCsCsCsCsCsCsCsCswswspsSsXsYsYspspsZspspaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNtmtmtmtmtmtmtmspaNaNaNstsCsCsCsCsCsCsCsCsCsCtbsStctcsSsSsSsStdspaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtvtwtxtytytzspspspspspsCsCsBsFsAsBsCsCsCsCsCsSsSsSsStksSsStlspaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNtAtBtBtBtBtBtBtBtBtBtCtDtBtBtBtCtEtFtGtytytyspsqsrssspsQsCsBsFsRsBsCsCsCsCtbtssSsSsSttsSsStuspaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtvtJtKtytytyspsusrsrsvsCsCsCsCsCsCsCsCsCsCsptbtbtbtbtbtbtbspspaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNtAtBtBtBtBtBtBtBtBtBtOtDtBtBtBtOtPtFtGtytytyspspspspspspsptaspspspspsCsCsEsptHtHtHtHtHtHtHspaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtvtJtKtytytTsptetftgspthtititititjspsCsCsDsptHtHtHtHtHtHtHspaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNtAtBtBtBtBtBtBtBtBtBtUtDtBtBtBtUtVtFtGtytytysptntotptqtitititititrsptbsvtbsptbtbsWsWsWtbtbspspspspspaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtvtJtKtytytyspsptbtbspspsptbtbtbtbsptQtRuatMtMtMtMtMtMtMtMtMtMtMtNspaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNtAtBtBtBtBtBtBtBtBtBubtDtBtBtBubucudtGtytytysptHtHtHtHtHtHtHtHtHtHsptQtRtRtRtRtRtRtRtRtRtRtRtRtRtSspaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmtmueuftmspspspspspspsptmtmtmtmsptQtRuguhuhuhuhuhuhuhuhuhuitRtSspaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNtmujukukulumunununtmuououououououpuqururursptQtRtStbtbtbtbtbtbtbtbtbtQtRtSspaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNusununununununununutuuuuuuuuuuuuuvtmtmtmtmsptQtRtStbuwuxuyuzuAuBuCtbtQtRtSspaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNusununununununununtmuDuEuEuEuEuEuFtmuGuGuGsptZtRuatbuHtRuIuJtRtRtRtbtZtRuaspaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNtmunununuKuKunununuLuMuMuMuMuMuMuMuNuMuMuMuOtRtRtRuPtRtRtRtRtRtRtRuPtRtRtRuQaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNtmununuRuSuTuUununtmtmuVuWuVtmtmuqtmuXuXuXspuitRugtbtRtRtRtRtRtRtRtbuitRugspaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNusununununununununtmuDuEuEuEuEuEuFtmuGuGuGsptZtRuatbuHtRuIuJtRtRtRtbtZtRtSspaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNtmunununuKuKunununuLuMuMuMuMuMuMuMuNuMuMuMuOtRtRtRuPtRtRtRtRtRtRtRuPtRtRtSspaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNtmununuRuSuTuUununtmtmuVuWuVtmtmuqtmuXuXuXspuitRugtbtRtRtRtRtRtRtRtbuitRtSspaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNtmtmuYtmtmunuZuUvavbvcvdunvevfvfvfvfvgtmurtmtmtmtmsptQtRtStbvhuxvivivivjvktbtQtRtSspaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNtmvlvmvntmununvcuUvouUununvpvfvqvrvsvftmtmtmtLtMtNsptQtRtSspspvtvuvvvwvxspsptQtRtSspaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNtmvmvmvmvyunununvzvzunununvAvfvBvCvDvEtmvFtMtZtRtRvGtRtRtSspsptbtbtbtbtbspsptQtRtSspaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNtmvmvmvmtIunununvzvzunununvAvfvBvCvDvEtmvFtMtZtRtRvGtRtRtSspsptbtbtbtbtbspsptQtRtSspaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNtmtmvHvmtmunvIunvJununununtmvfvKvLvMvNtmvOtRtRtRtStbtQtRuatMtMtMtMtMtMtMtMtMtZtRtSspaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNtmtmtmtmtmtmtmtmvPvPtmtmtmvQvRvSvTvftmvUtRtRtRvVtbtQtRtRtRtRtRtRtRtRtRtRtRtRtRtSspaNaNaNaNaNaNaNaNaNaNvWvXvYaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNvZwawbvZwctmwdwewfwgwhtmwiuhuhuhwjtbwkuhuhuhuhuhuitRuguhuhuhuhuhwlspaNaNaNaNaNaNaNaNaNvWwmwnwovYaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNwpwqwrwpwctmtmtmtmtmtmtmspspspspspspspspspspspspspwsspspspspspspspspaNaNaNaNaNaNaNaNvWwmwtwuwvwovYaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNwwwxwxwxwxwywywxwxwzaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNwAwBwCwDwEwFwAaNaNaNaNaNaNaNaNaNaNaNaNaNvXwGwHwIwHwJvXaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNwKwLwMwNwOwPwPwQwRwxwzaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNwAwSwTwUwTwVwAaNaNaNaNaNaNaNaNaNaNaNaNvWwmwWwIwIwIwXwovYaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNwKwLwYwPwPwPwPwPwPwZxatmaNaNaNaNaNaNaNaNaNaNaNaNaNaNwAxbxcwDxdwVwAaNaNaNaNaNaNaNaNaNaNaNaNxexfxgwIwIxhxiwIxeaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNwKwLxjxkxkxkxkxkxkwxxlaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNwAxmxnxoxnxnwAwAwAwAwAwAwAwAwAaNaNvWxpxqxpxpxpxrxpxsxpxqxpvYaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNxtxtxtaNxuxuxuaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNxvwxwxwxwxwxwxwxwxxlaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNwAwAxwxnxxxnwBwFxnxyxyxzxyxyxzwAaNaNxexAxBxCxDxAwIxCxDxAxBxCxeaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNxtxtxtaNxuxuxuaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNwTwBxExExExEwCwVwTxywAxnxnxnxnwAaNaNxexFwIxCxGxAwIxCxGxAwIxHxeaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNxtxtxtaNxuxuxuaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNwTxbxIxJwDxIxJwVwTxywAxKxKxKxKwAaNaNvXxAwIxCxGxAwIxCxGxAwIxCvXaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNxLxMxNxOxPxtxtxtaNxuxuxuxLxMxNxOxPaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNwTxbxIxJwDxIxJwVxnxywAwDwDwDxQxnxnxnxexAwIxCxRxAwIxCxRxAwIxCxeaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNxSxTxTxTxUxVxWxVxVxVxXxVxYxTxTxTxSaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNwwwxwxwxwxwywywxwxwzaNaNaNaNaNaNaNtWtYtXvyuQtWIFIHIGwAwBwCwDwEwFwAaNaNaNaNaNaNaNaNaNaNaNaNaNvXwGwHwIwHwJvXaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNwKwLwMwNwOwPwPwQwRwxwzaNaNaNaNaNaNtWtWtWIHIHIHIHIHIHwAwSwTwUwTwVwAaNaNaNaNaNaNaNaNaNaNaNaNvWwmwWwIwIwIwXwovYaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNwKwLwYwPwPwPwPwPwPwZxatmaNaNaNaNaNtWtYIIIHIHIHIHIHIHwAxbxcwDxdwVwAaNaNaNaNaNaNaNaNaNaNaNaNxexfxgwIwIxhxiwIxeaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNwKwLxjxkxkxkxkxkxkwxxlaNaNaNaNaNaNtWtWtWIHIJtWIFIHIGwAxmxnxoxnxnwAwAwAwAwAwAwAwAwAaNaNvWxpxqxpxpxpxrxpxsxpxqxpvYaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNxtxtxtaNxuxuxuaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNxvwxwxwxwxwxwxwxwxxlaNaNaNaNaNaNaNtWtYIKIHIJtWtWtWwAwAxwxnxxxnwBwFxnxyxyxzxyxyxzwAaNaNxexAxBxCxDxAwIxCxDxAxBxCxeaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNxtxtxtaNxuxuxuaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNtWtWtWIHIHIHIHIHILwBxExExExEwCwVwTxywAxnxnxnxnwAaNaNxexFwIxCxGxAwIxCxGxAwIxHxeaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNxtxtxtaNxuxuxuaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNtWtYIMIHIHIHIHIHILxbxIxJwDxIxJwVwTxywAxKxKxKxKwAaNaNvXxAwIxCxGxAwIxCxGxAwIxCvXaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNxLxMxNxOxPxtxtxtaNxuxuxuxLxMxNxOxPaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNtWtWtWINININININwAxbxIxJwDxIxJwVxnxywAwDwDwDxQxnxnxnxexAwIxCxRxAwIxCxRxAwIxCxeaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNxSxTxTxTxUxVxWxVxVxVxXxVxYxTxTxTxSaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNwTxbxIxJwDxIxJwVxZwTwAyawDwDybycydycyewIwIwIwIwIwIwIwIwIwIxCxeaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNxSyfyfygyhyiyjykylymynyiyoypyfyfxSaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNwTxbxIxJwDxIxJwVyqydyqwDwDwDyrxnxnxnxeyswIxCxDxAwIxCxDxAwIytxeaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNxSyfyfyuyvywyxywyyywyxywyzyuyfyfxSaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNwAxmyAyAyAyBwDwVxZwTwAyawDwDwDwAaNaNxDxAwIxCxGxAwIxCxGxAwIxCxDaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNyCypyfyDywyxyxyxyxyxyxyxywyDyfygyEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN @@ -2055,3 +2064,4 @@ aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN "} + diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/Space Station 13 areas.dm index 098ae32e538..68765df5447 100644 --- a/code/game/area/Space Station 13 areas.dm +++ b/code/game/area/Space Station 13 areas.dm @@ -54,7 +54,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station var/air_doors_activated = 0 var/tele_proof = 0 - + /*Adding a wizard area teleport list because motherfucking lag -- Urist*/ /*I am far too lazy to make it a proper list of areas so I'll just make it run the usual telepot routine at the start of the game*/ var/list/teleportlocs = list() @@ -71,7 +71,7 @@ var/list/teleportlocs = list() teleportlocs = sortAssoc(teleportlocs) return 1 - + var/list/ghostteleportlocs = list() /hook/startup/proc/process_ghost_teleport_locs() for(var/area/AR in world) @@ -119,7 +119,7 @@ var/list/ghostteleportlocs = list() power_equip = 0 power_environ = 0 ambientsounds = list('sound/ambience/ambispace.ogg','sound/music/title2.ogg','sound/music/space.ogg','sound/music/traitor.ogg') - + /area/space/atmosalert() return @@ -131,7 +131,7 @@ var/list/ghostteleportlocs = list() /area/space/readyalert() return - + /area/space/radiation_alert() return @@ -465,6 +465,9 @@ var/list/ghostteleportlocs = list() /area/centcom/holding name = "\improper Holding Facility" +/area/centcom/bathroom + name = "\improper Centcom Emergency Shuttle Bathrooms" + //SYNDICATES /area/syndicate_mothership @@ -1506,7 +1509,7 @@ var/list/ghostteleportlocs = list() /area/security/brig name = "\improper Brig" icon_state = "brig" - + /area/security/brig/prison_break() for(var/obj/structure/closet/secure_closet/brig/temp_closet in src) temp_closet.locked = 0 @@ -1522,7 +1525,7 @@ var/list/ghostteleportlocs = list() /area/security/prison name = "\improper Prison Wing" icon_state = "sec_prison" - + /area/security/prison/prison_break() for(var/obj/structure/closet/secure_closet/brig/temp_closet in src) temp_closet.locked = 0 diff --git a/code/game/objects/structures/curtains.dm b/code/game/objects/structures/curtains.dm index a7175857ef9..9d7bbc96e1b 100644 --- a/code/game/objects/structures/curtains.dm +++ b/code/game/objects/structures/curtains.dm @@ -55,5 +55,8 @@ /obj/structure/curtain/open/shower/security color = "#AA0000" +/obj/structure/curtain/open/shower/centcom + color = "#000066" + #undef SHOWER_OPEN_LAYER #undef SHOWER_CLOSED_LAYER \ No newline at end of file From f8e462b1eec68cddaa747926e3d347a8b4745bfa Mon Sep 17 00:00:00 2001 From: Markolie Date: Thu, 27 Aug 2015 23:59:47 +0200 Subject: [PATCH 12/16] Give engineering borgs magboots --- code/game/objects/items/robot/robot_upgrades.dm | 1 + code/modules/mob/living/silicon/robot/robot.dm | 15 ++++----------- .../mob/living/silicon/robot/robot_modules.dm | 1 - .../mob/living/silicon/robot/robot_movement.dm | 12 +++++++++++- 4 files changed, 16 insertions(+), 13 deletions(-) diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index b0d483137b7..048d85e5495 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -41,6 +41,7 @@ R.jetpackoverlay = 0 R.update_icons() R.update_headlamp() + R.magpulse = 0 R.add_language("Robot Talk", 1) return 1 diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index c55cd5a7bbf..15168dfbfc6 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -81,6 +81,7 @@ var/list/robot_verbs_default = list( var/lamp_recharging = 0 //Flag for if the lamp is on cooldown after being forcibly disabled. var/jetpackoverlay = 0 + var/magpulse = 0 var/obj/item/borg/sight/hud/sec/sechud = null var/obj/item/borg/sight/hud/med/healthhud = null @@ -229,21 +230,12 @@ var/list/robot_verbs_default = list( module_sprites["Bro"] = "Brobot" module_sprites["Rich"] = "maximillion" module_sprites["Default"] = "Service2" -/* - if("Clerical") - module = new /obj/item/weapon/robot_module/clerical(src) - module.channels = list("Service" = 1) - module_sprites["Waitress"] = "Service" - module_sprites["Kent"] = "toiletbot" - module_sprites["Bro"] = "Brobot" - module_sprites["Rich"] = "maximillion" - module_sprites["Default"] = "Service2" -*/ + if("Miner") module = new /obj/item/weapon/robot_module/miner(src) module.channels = list("Supply" = 1) if(camera && "Robots" in camera.network) - camera.network.Add("MINE") + camera.network.Add("Mining Outpost") module_sprites["Basic"] = "Miner_old" module_sprites["Advanced Droid"] = "droid-miner" module_sprites["Treadhead"] = "Miner" @@ -276,6 +268,7 @@ var/list/robot_verbs_default = list( module_sprites["Basic"] = "Engineering" module_sprites["Antique"] = "engineerrobot" module_sprites["Landmate"] = "landmate" + magpulse = 1 if("Janitor") module = new /obj/item/weapon/robot_module/janitor(src) diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index 4ff0c7f0425..035c199a521 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -226,7 +226,6 @@ fix_modules() - /obj/item/weapon/robot_module/janitor name = "janitorial robot module" diff --git a/code/modules/mob/living/silicon/robot/robot_movement.dm b/code/modules/mob/living/silicon/robot/robot_movement.dm index 37172cd045d..6f21dec6cb4 100644 --- a/code/modules/mob/living/silicon/robot/robot_movement.dm +++ b/code/modules/mob/living/silicon/robot/robot_movement.dm @@ -23,4 +23,14 @@ return tally+config.robot_delay /mob/living/silicon/robot/Move() - ..() \ No newline at end of file + ..() + +/mob/living/silicon/robot/mob_negates_gravity() + return magpulse + +/mob/living/silicon/robot/mob_has_gravity() + return ..() || mob_negates_gravity() + +/mob/living/silicon/robot/experience_pressure_difference(pressure_difference, direction) + if(!magpulse) + return ..() \ No newline at end of file From 2787c2fd46bc58f0a731f97bef50354c3c539055 Mon Sep 17 00:00:00 2001 From: Markolie Date: Fri, 28 Aug 2015 23:52:27 +0200 Subject: [PATCH 13/16] sortAtom improvements --- _maps/map_files/cyberiad/cyberiad.dmm | 2 +- code/_globalvars/lists/objects.dm | 3 +++ code/datums/cache/air_alarm.dm | 2 +- code/datums/cache/powermonitor.dm | 2 +- code/game/machinery/alarm.dm | 7 ++++--- code/game/machinery/computer/power.dm | 5 +++-- code/modules/admin/verbs/adminjump.dm | 2 +- code/modules/computer3/computers/message.dm | 2 +- code/modules/events/money_spam.dm | 2 +- code/modules/mob/living/silicon/pai/software_modules.dm | 2 +- code/modules/power/apc.dm | 3 +++ 11 files changed, 20 insertions(+), 12 deletions(-) diff --git a/_maps/map_files/cyberiad/cyberiad.dmm b/_maps/map_files/cyberiad/cyberiad.dmm index 1c0163e3b43..2e9f5797ef1 100644 --- a/_maps/map_files/cyberiad/cyberiad.dmm +++ b/_maps/map_files/cyberiad/cyberiad.dmm @@ -6110,7 +6110,7 @@ "cnz" = (/turf/simulated/wall/r_wall,/area/maintenance/asmaint) "cnA" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/turf/simulated/wall,/area/crew_quarters/sleep) "cnB" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/door_control{id = "atmos"; name = "Atmospherics Lockdown"; pixel_x = 24; pixel_y = 8; req_access_txt = "24"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/atmos/control) -"cnC" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/hologram/holopad,/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/turf/simulated/floor,/area/atmos/control) +"cnC" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/atmos/control) "cnD" = (/obj/structure/sign/biohazard,/turf/simulated/wall,/area/toxins/xenobiology) "cnE" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Xenobiology Research"; req_access_txt = "47"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) "cnF" = (/obj/structure/sign/securearea,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall,/area/toxins/xenobiology) diff --git a/code/_globalvars/lists/objects.dm b/code/_globalvars/lists/objects.dm index 690ac0e5c5b..2e748d40b7b 100644 --- a/code/_globalvars/lists/objects.dm +++ b/code/_globalvars/lists/objects.dm @@ -20,3 +20,6 @@ var/global/list/machines = list() var/global/list/processing_power_items = list() //items that ask to be called every cycle var/global/list/rcd_list = list() //list of Rapid Construction Devices. +var/global/list/apcs = list() +var/global/list/air_alarms = list() +var/global/list/power_monitors = list() \ No newline at end of file diff --git a/code/datums/cache/air_alarm.dm b/code/datums/cache/air_alarm.dm index 07caea0f3ad..83b2e8246e5 100644 --- a/code/datums/cache/air_alarm.dm +++ b/code/datums/cache/air_alarm.dm @@ -14,7 +14,7 @@ var/global/datum/repository/air_alarm/air_alarm_repository = new() if(ticker && ticker.current_state < GAME_STATE_PLAYING && istype(passed_alarm)) // Generating the list for the first time as the game hasn't started - no need to run through the machines list everything every time alarms[++alarms.len] = passed_alarm.get_nano_data_console() else - for(var/obj/machinery/alarm/alarm in sortAtom((monitored_alarms ? monitored_alarms : machines))) + for(var/obj/machinery/alarm/alarm in (monitored_alarms ? monitored_alarms : air_alarms)) if(!monitored_alarms && alarm.z != ZLEVEL_STATION && alarm.z != ZLEVEL_ASTEROID) continue alarms[++alarms.len] = alarm.get_nano_data_console() diff --git a/code/datums/cache/powermonitor.dm b/code/datums/cache/powermonitor.dm index a99b380a13d..e269ddc8afe 100644 --- a/code/datums/cache/powermonitor.dm +++ b/code/datums/cache/powermonitor.dm @@ -11,7 +11,7 @@ var/global/datum/repository/powermonitor/powermonitor_repository = new() if(!refresh) return cache_entry.data - for(var/obj/machinery/computer/monitor/pMon in machines) + for(var/obj/machinery/computer/monitor/pMon in power_monitors) if( !(pMon.stat & (NOPOWER|BROKEN)) ) pMonData[++pMonData.len] = list ("Name" = pMon.name, "ref" = "\ref[pMon]") diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm index f9f13d4f907..5d6c2ff7730 100644 --- a/code/game/machinery/alarm.dm +++ b/code/game/machinery/alarm.dm @@ -183,6 +183,9 @@ /obj/machinery/alarm/New(var/loc, var/dir, var/building = 0) ..() + air_alarms += src + air_alarms = sortAtom(air_alarms) + wires = new(src) if(building) @@ -202,11 +205,9 @@ first_run() /obj/machinery/alarm/Destroy() + air_alarms -= src if(radio_controller) radio_controller.remove_object(src, frequency) - - if (src in machines) // So the cache can properly update - removeAtProcessing() air_alarm_repository.update_cache(src) return ..() diff --git a/code/game/machinery/computer/power.dm b/code/game/machinery/computer/power.dm index 55cf68c3234..0676ca917c8 100644 --- a/code/game/machinery/computer/power.dm +++ b/code/game/machinery/computer/power.dm @@ -13,6 +13,8 @@ /obj/machinery/computer/monitor/New() ..() + power_monitors += src + sortAtom(power_monitors) power_monitor = new(src) powermonitor_repository.update_cache() @@ -21,8 +23,7 @@ powernet = find_powernet() /obj/machinery/computer/monitor/Destroy() - if (src in machines) // So the cache can properly update - removeAtProcessing() + power_monitors -= src powermonitor_repository.update_cache() return ..() diff --git a/code/modules/admin/verbs/adminjump.dm b/code/modules/admin/verbs/adminjump.dm index 99385ee5ff6..a9a07026a5d 100644 --- a/code/modules/admin/verbs/adminjump.dm +++ b/code/modules/admin/verbs/adminjump.dm @@ -131,7 +131,7 @@ usr.loc = M.loc feedback_add_details("admin_verb","GK") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! -/client/proc/sendmob(var/mob/M in sortmobs()) +/client/proc/sendmob(var/mob/M in mob_list) set category = "Admin" set name = "Send Mob" diff --git a/code/modules/computer3/computers/message.dm b/code/modules/computer3/computers/message.dm index 3eab3f59269..10870c9973e 100644 --- a/code/modules/computer3/computers/message.dm +++ b/code/modules/computer3/computers/message.dm @@ -371,7 +371,7 @@ if(!P.owner || P.toff || P.hidden) continue sendPDAs += P if(PDAs && PDAs.len > 0) - customrecepient = input(usr, "Select a PDA from the list.") as null|anything in sortAtom(sendPDAs) + customrecepient = input(usr, "Select a PDA from the list.") as null|anything in sendPDAs else customrecepient = null diff --git a/code/modules/events/money_spam.dm b/code/modules/events/money_spam.dm index 198b483ee10..2bafc9f3cc9 100644 --- a/code/modules/events/money_spam.dm +++ b/code/modules/events/money_spam.dm @@ -29,7 +29,7 @@ // /obj/machinery/message_server/proc/send_pda_message(var/recipient = "",var/sender = "",var/message = "") var/obj/item/device/pda/P var/list/viables = list() - for(var/obj/item/device/pda/check_pda in sortAtom(PDAs)) + for(var/obj/item/device/pda/check_pda in PDAs) if (!check_pda.owner||check_pda.toff||check_pda == src||check_pda.hidden) continue viables.Add(check_pda) diff --git a/code/modules/mob/living/silicon/pai/software_modules.dm b/code/modules/mob/living/silicon/pai/software_modules.dm index 9cba0094d4d..4e04e619c44 100644 --- a/code/modules/mob/living/silicon/pai/software_modules.dm +++ b/code/modules/mob/living/silicon/pai/software_modules.dm @@ -149,7 +149,7 @@ var/pdas[0] if(!user.pda.toff) - for(var/obj/item/device/pda/P in sortAtom(PDAs)) + for(var/obj/item/device/pda/P in PDAs) if(!P.owner || P.toff || P == user.pda || P.hidden) continue var/pda[0] pda["name"] = "[P]" diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 07c0ea13e8d..c2ee9dbf733 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -115,6 +115,8 @@ /obj/machinery/power/apc/New(turf/loc, var/ndir, var/building=0) ..() + apcs += src + sortAtom(apcs) wires = new(src) var/tmp/obj/item/weapon/stock_parts/cell/tmp_cell = new standard_max_charge = tmp_cell.maxcharge @@ -143,6 +145,7 @@ src.update() /obj/machinery/power/apc/Destroy() + apcs -= src if(malfai && operating) if (ticker.mode.config_tag == "malfunction") if (src.z == ZLEVEL_STATION) From 9839376ca0532b04ec190e5524183294126a7214 Mon Sep 17 00:00:00 2001 From: Markolie Date: Fri, 28 Aug 2015 23:56:52 +0200 Subject: [PATCH 14/16] Properly sortAtom the machines --- code/game/machinery/computer/power.dm | 2 +- code/modules/power/apc.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/machinery/computer/power.dm b/code/game/machinery/computer/power.dm index 0676ca917c8..855b5f7cbb6 100644 --- a/code/game/machinery/computer/power.dm +++ b/code/game/machinery/computer/power.dm @@ -14,7 +14,7 @@ /obj/machinery/computer/monitor/New() ..() power_monitors += src - sortAtom(power_monitors) + power_monitors = sortAtom(power_monitors) power_monitor = new(src) powermonitor_repository.update_cache() diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index c2ee9dbf733..32379a466d6 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -116,7 +116,7 @@ /obj/machinery/power/apc/New(turf/loc, var/ndir, var/building=0) ..() apcs += src - sortAtom(apcs) + apcs = sortAtom(apcs) wires = new(src) var/tmp/obj/item/weapon/stock_parts/cell/tmp_cell = new standard_max_charge = tmp_cell.maxcharge From 7e06a35c3b3a2d42581b1e5b6ceba03b1ac661ae Mon Sep 17 00:00:00 2001 From: Markolie Date: Sat, 29 Aug 2015 00:21:29 +0200 Subject: [PATCH 15/16] Get rid of laggy construct Bump code --- .../mob/living/simple_animal/constructs.dm | 34 ------------------- 1 file changed, 34 deletions(-) diff --git a/code/modules/mob/living/simple_animal/constructs.dm b/code/modules/mob/living/simple_animal/constructs.dm index e099f8b3e4d..be304fc4cd8 100644 --- a/code/modules/mob/living/simple_animal/constructs.dm +++ b/code/modules/mob/living/simple_animal/constructs.dm @@ -62,40 +62,6 @@ usr << msg return -/mob/living/simple_animal/construct/Bump(atom/movable/AM as mob|obj, yes) - spawn( 0 ) - if ((!( yes ) || now_pushing)) - return - now_pushing = 1 - if(ismob(AM)) - var/mob/tmob = AM - if(istype(tmob, /mob/living/carbon/human) && (FAT in tmob.mutations)) - if(prob(5)) - src << "\red You fail to push [tmob]'s fat ass out of the way." - now_pushing = 0 - return - if(!(tmob.status_flags & CANPUSH)) - now_pushing = 0 - return - - tmob.LAssailant = src - now_pushing = 0 - ..() - if (!( istype(AM, /atom/movable) )) - return - if (!( now_pushing )) - now_pushing = 1 - if (!( AM.anchored )) - var/t = get_dir(src, AM) - if (istype(AM, /obj/structure/window/full)) - for(var/obj/structure/window/win in get_step(AM,t)) - now_pushing = 0 - return - step(AM, t) - now_pushing = null - return - return - /mob/living/simple_animal/construct/attack_animal(mob/living/simple_animal/M as mob) if(istype(M, /mob/living/simple_animal/construct/builder)) health += 5 From 67f1b00291c94d16c23cfc97c80a12dad7b8be8b Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Sat, 29 Aug 2015 18:22:29 -0400 Subject: [PATCH 16/16] Transit Tube Update --- _maps/map_files/cyberiad/cyberiad.dmm | 17 ++++++++++------- .../structures/transit_tubes/station.dm | 7 +++---- .../structures/transit_tubes/transit_tube.dm | 9 +++++++-- icons/obj/pipes/transit_tube.dmi | Bin 9791 -> 10656 bytes 4 files changed, 20 insertions(+), 13 deletions(-) diff --git a/_maps/map_files/cyberiad/cyberiad.dmm b/_maps/map_files/cyberiad/cyberiad.dmm index be9784bef69..678e2ca9a95 100644 --- a/_maps/map_files/cyberiad/cyberiad.dmm +++ b/_maps/map_files/cyberiad/cyberiad.dmm @@ -6685,9 +6685,12 @@ "cyC" = (/obj/structure/closet/secure_closet/personal/patient,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{tag = "icon-whitebluefull"; icon_state = "whitebluefull"},/area/medical/virology) "cyD" = (/obj/machinery/door/airlock/maintenance{name = "Security Maintenance"; req_access_txt = "1"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2) "cyE" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/obj/machinery/light{dir = 1; on = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) +"cyF" = (/turf/simulated/floor{icon_state = "dark"},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/structure/transit_tube{icon_state = "Block"},/turf/simulated/floor{tag = "icon-siding8 (NORTH)"; icon_state = "siding8"; dir = 1},/area/engine/engineering) +"cyG" = (/turf/simulated/floor{icon_state = "dark"},/obj/structure/transit_tube/station{dir = 8; icon_state = "closed"},/obj/structure/transit_tube_pod,/turf/simulated/floor{tag = "icon-siding8 (NORTH)"; icon_state = "siding8"; dir = 1},/area/engine/engineering) "cyH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/light{dir = 1; on = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cyI" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/medical,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/machinery/camera{c_tag = "Virology Isolation 3"; dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "white"},/area/medical/virology) "cyJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall/r_wall,/area/medical/virology) +"cyK" = (/obj/structure/transit_tube{icon_state = "E-W-Pass"},/turf/space,/area/space) "cyL" = (/obj/structure/table/reinforced,/obj/machinery/door_control{id = "xenobio3"; name = "Containment Blast Doors"; pixel_x = 0; pixel_y = 4; req_access_txt = "55"},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/toxins/xenobiology) "cyM" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) "cyN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology) @@ -6705,10 +6708,12 @@ "cyZ" = (/turf/simulated/floor/plating/airless,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plating/airless/catwalk{tag = "icon-catwalk2"; icon_state = "catwalk2"},/area/solar/port) "cza" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/solar{id = "portsolar"; name = "Port Solar Array"},/turf/simulated/floor/airless{icon_state = "solarpanel"},/area/solar/port) "czb" = (/obj/structure/lattice,/obj/structure/lattice,/turf/space,/area/space) +"czc" = (/obj/structure/transit_tube/station{icon_state = "closed"; dir = 4},/turf/simulated/floor{tag = "icon-brown (EAST)"; icon_state = "brown"; dir = 4},/area/aisat/entrance) "czd" = (/turf/simulated/floor/plating,/area/assembly/assembly_line) "cze" = (/obj/effect/landmark{name = "blobstart"},/turf/simulated/floor{icon_state = "floorgrime"},/area/assembly/assembly_line) "czf" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "floorgrime"},/area/assembly/assembly_line) "czg" = (/obj/item/weapon/paper,/turf/simulated/floor{icon_state = "floorgrime"},/area/assembly/assembly_line) +"czh" = (/obj/machinery/light,/obj/machinery/status_display{pixel_x = 0; pixel_y = -32},/obj/structure/transit_tube{dir = 1; icon_state = "Block"},/turf/simulated/floor{tag = "icon-brown (EAST)"; icon_state = "brown"; dir = 4},/area/aisat/entrance) "czi" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/hallway/primary/aft) "czj" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/hallway/primary/aft) "czk" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/light_switch{pixel_x = -23; pixel_y = 7},/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/tank/emergency_oxygen/engi,/obj/item/clothing/suit/storage/hazardvest,/obj/item/clothing/suit/storage/hazardvest,/obj/item/weapon/tank/emergency_oxygen/engi,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas{pixel_x = -3; pixel_y = -3},/turf/simulated/floor,/area/engine/break_room) @@ -7641,7 +7646,6 @@ "cUN" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/engine/engineering) "cUO" = (/obj/machinery/camera{c_tag = "Mini Satellite Access"; dir = 4; network = list("SS13","MiniSat")},/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/turf/simulated/floor{dir = 9; icon_state = "blue"},/area/engine/engineering) "cUP" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/engine/engineering) -"cUQ" = (/turf/simulated/floor{icon_state = "dark"},/obj/structure/transit_tube/station{dir = 8; icon_state = "closed"},/obj/structure/transit_tube_pod,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{tag = "icon-siding8 (NORTH)"; icon_state = "siding8"; dir = 1},/area/engine/engineering) "cUS" = (/turf/space,/area/syndicate_station/southeast) "cUT" = (/obj/structure/grille,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating/airless,/area/engine/engineering) "cUU" = (/obj/machinery/power/emitter{anchored = 1; dir = 4; state = 2},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/camera/emp_proof{c_tag = "Engineering Singularity West"; dir = 4; network = list("Singularity","SS13")},/turf/simulated/floor/plating/airless,/area/engine/engineering) @@ -7696,7 +7700,6 @@ "cVX" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/hatch{name = "MiniSat Teleporter Room"; req_access_txt = "17;75"},/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/aisat/entrance) "cVY" = (/obj/machinery/bluespace_beacon,/obj/effect/decal/warning_stripes/east,/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/aisat/entrance) "cVZ" = (/obj/machinery/teleport/station,/turf/simulated/floor/plating,/area/aisat/entrance) -"cWa" = (/obj/machinery/light,/obj/structure/transit_tube/station{icon_state = "closed"; dir = 4},/obj/machinery/status_display{pixel_x = 0; pixel_y = -32},/turf/simulated/floor{tag = "icon-brown (EAST)"; icon_state = "brown"; dir = 4},/area/aisat/entrance) "cWb" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/aisat/entrance) "cWc" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{dir = 8; id_tag = "teledoor"; name = "AI Satellite Teleport Access"},/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/aisat/entrance) "cWd" = (/obj/machinery/door_control{desc = "A remote control-switch for the engineering security doors."; id = "teledoor"; name = "AI Satellite Teleport Shutters Control"; pixel_x = 0; pixel_y = -25; req_access_txt = "17;75"},/obj/effect/decal/warning_stripes/east,/obj/machinery/camera{c_tag = "Mini Satellite Teleporter"; dir = 1; network = list("SS13","MiniSat")},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor{dir = 5; icon_state = "dark"; tag = "icon-vault (NORTHEAST)"},/area/aisat/entrance) @@ -8195,12 +8198,12 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacRzcRzcRzcRzcRzcRzcRzcRzcRzcRzcRzcRzcRzcRzcRzcRzcRzcRzcRzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaacaabaacaacaabaabaabaczaczcEEcEEcUCcTwaaaaaaaabaaaaaaaabcUDcUEaacaabaaaaaaaabaaaaaacTwcUFcEEcEEcNbcEEcCDcUwcUGcUwcCDcUycUHcUycCDcUAcUIcUAcCDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacTGcTGcTGcTGcTGcTGcTGcTGcTGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacRzcRzcRzcRzcRzcRzcRzcRzcRzcRzcRzcRzcRzcRzcRzcRzcRzcRzcRzcRzcRzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaabaabaaaaaaaabaabaczcEEcEEcTvcTwaaaaaaaabaaacUJaabaacaacaacaabaabcTMaabaaaaaacTwcTvcEEcEEcNbcEEcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDcCDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacTGcTGcTGcTGcTGcTGcTGcTGcTGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacRzcRzcRzcRzcRzcRzcRzcRzcRzcRzcRzcRzcRzcRzcRzcRzcRzcRzcRzcRzcRzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabcEEcUjcUkcTwaaaaaaaabaaaaaaaabaabaabaabaabaaaaaaaabaaaaaacTwcUhcUicEEcUlcEEcEEcEEcEEcEEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacTGcTGcTGcTGcTGcTGcTGcTGcTGaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUKcUKcUKcUKcUKcUKcUKcUKcUKaaaaaaaaacRzcRzcRzcRzaaaaaacRzcRzcRzcRzcRzcRzcRzaaaaaacRzcRzcRzcRzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaabcEEcTZcTwcULaaaaaacUMaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaaaacTwcTwcTZcEEcNbcUNcUOcUPcUQbQYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacTGcTGcTGcTGcTGcTGcTGcTGcTGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUScUScUScUScUScUScUScUScUSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUKcUKcUKcUKcUKcUKcUKcUKcUKaaaaaaaaaaaaaaaaaaaaaaaaaaacRzcRzcRzcRzcRzcRzcRzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcEEcUTcUUcTwaabaabaabcTMaaaaaacTMaaaaaaaaaaaacTMaabcUVaabcTwcUWcUXcEEcNbcUYcUZcGTcVabQYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacTGcTGcTGcTGcTGcTGcTGcTGcTGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUScUScUScUScUScUScUScUScUSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUKcUKcUKcUKcUKcUKcUKcUKcUKaaaaaaaaacRzcRzcRzcRzaaaaaacRzcRzcRzcRzcRzcRzcRzaaaaaacRzcRzcRzcRzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaabcEEcTZcTwcULaaaaaacUMaaaaaaaaaaabaaaaaaaaaaaaaaaaabaaaaaacTwcTwcTZcEEcNbcUNcUOcUPcyFbQYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacTGcTGcTGcTGcTGcTGcTGcTGcTGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUScUScUScUScUScUScUScUScUSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUKcUKcUKcUKcUKcUKcUKcUKcUKaaaaaaaaaaaaaaaaaaaaaaaaaaacRzcRzcRzcRzcRzcRzcRzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcEEcUTcUUcTwaabaabaabcTMaaaaaacTMaaaaaaaaaaaacTMaabcUVaabcTwcUWcUXcEEcNbcUYcUZcGTcyGbQYaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacTGcTGcTGcTGcTGcTGcTGcTGcTGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUScUScUScUScUScUScUScUScUSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUKcUKcUKcUKcUKcUKcUKcUKcUKaaaaaaaaaaaaaaaaaaaaaaaaaaacRzcRzcRzcRzcRzcRzcRzaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEEcVccVdcVeaaaaaaaabaabaabaabaabaabaabaabaabaabaabaaaaaacVfcVdcVgcEEcNbcEEcVhcVicVabNzaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacTGcTGcTGcTGcTGcTGcTGcTGcTGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUScUScUScUScUScUScUScUScUSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUKcUKcUKcUKcUKcUKcUKcUKcUKaaaaaaaaaaaaaaaaaaaaaaaaaaacRzcRzcRzcRzcRzcRzcRzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNVcEEcKVcTccVeaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaabaaaaaacVfcTbcKVcEEcEEcNbcEEcEEcEEbQZcEEaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacTGcTGcTGcTGcTGcTGcTGcTGcTGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUScUScUScUScUScUScUScUScUSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUKcUKcUKcUKcUKcUKcUKcUKcUKaaaaaaaaaaaaaaaaaaaaaaaaaaacRzcRzcRzcRzcRzcRzcRzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaacEEcEEcTccSGcSGcSGcSGcSGcSGcSGcSGcSGcSGcSGcSGcSGcTbcEEcEEcEEcEEcUlcEEaaaaabcVlcVmaabaaaaaaaaaaabaaaaaaaaaaabaaaaaaaaaaabaaaaaaaaaaabaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacTGcTGcTGcTGcTGcTGcTGcTGcTGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUScUScUScUScUScUScUScUScUSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUKcUKcUKcUKcUKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacRzcRzcRzcRzcRzcRzcRzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaacEEcEEcEEcEEcEEcEEcEEcEEcEEcEEcEEcEEcEEcEEcEEcEEcEEaaacEEcEEcVncEEaabaabcVocVpcVqcVrcVrcVrcVqcVrcVrcVrcVqcVrcVrcVrcVqcVrcVrcVscVtaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacTGcTGcTGcTGcTGcTGcTGcTGcTGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUScUScUScUScUSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUKcUKcUKcUKcUKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacRzcRzcRzcRzcRzcRzcRzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaacEEcEEcEEcEEcEEcEEcEEcEEcEEcEEcEEcEEcEEcEEcEEcEEcEEaaacEEcEEcVncEEaabaabcVocVpcVqcVrcyKcVrcVqcVrcyKcVrcVqcVrcyKcVrcVqcVrcyKcVscVtaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacTGcTGcTGcTGcTGcTGcTGcTGcTGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUScUScUScUScUSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUKcUKcUKcUKcUKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacRzcRzcRzcRzcRzaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEEcEEcVucEEcEEcEEcEEaaaaabaaaaaaaaaaabaaaaaaaaaaabaaaaaaaaaaabaaaaaacVocVvcVmaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacTGcTGcTGcTGcTGcTGcTGcTGcTGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUScUScUScUScUSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUKcUKcUKcUKcUKcUKcUKcUKcUKcUKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEEcNbcNbcVwcVxcVxcVyaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabaabcVzcVvcVtaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacTGcTGcTGcTGcTGcTGcTGcTGcTGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUScUScUScUScUScUScUScUScUScUSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUKcUKcUKcUKcUKcUKcUKcUKcUKcUKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEEcUlcNbcVAcVBcVCcVDaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaacVocVvcVmaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacTGcTGcTGcTGcTGcTGcTGcTGcTGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUScUScUScUScUScUScUScUScUScUSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -8208,8 +8211,8 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacNVcEEcEEcEEcEEcEEcEEaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaabcVzcVIaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUScUScUScUScUScUScUScUScUScUScUScUScUScUSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaabcVJbRacVJbRcbRccVNcVNcVNcVNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUScUScUScUScUScUScUScUScUScUScUScUScUScUSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabcVJcVOcVPcVQcVRcVScVTcVUcVNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUScUScUScUScUScUScUScUScUScUScUScUScUScUSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaabcVJcVOcVVcVWcVWcVXcVYcVZcVNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUScUScUScUScUScUScUScUScUScUScUScUScUScUScUScUScUSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaabcVJcWacWbcVWcVWcWccWdcWecVNaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUScUScUScUScUScUScUScUScUScUScUScUScUScUScUScUScUSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaabcVJczccVVcVWcVWcVXcVYcVZcVNaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUScUScUScUScUScUScUScUScUScUScUScUScUScUScUScUScUSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaabcVJczhcWbcVWcVWcWccWdcWecVNaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUScUScUScUScUScUScUScUScUScUScUScUScUScUScUScUScUSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabaabaabcVJcVJcWfcVWcVWcVNcWgcVNcVNaaaaaaaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUScUScUScUScUScUScUScUScUScUScUScUScUScUScUScUScUSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaoMaoMaaaaabaaabRccWicVWcVWcWjcWkbRcaabaabaabaoMaoMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUScUScUScUScUScUScUScUScUScUScUScUScUScUScUScUScUSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKcUKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaczaczcWlcWlaczaczaaabRccWncWocWpcWqcWrbRcaaaaczaczcWlcWlaczaczaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacUScUScUScUScUScUScUScUScUScUScUScUScUScUScUScUScUSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/code/game/objects/structures/transit_tubes/station.dm b/code/game/objects/structures/transit_tubes/station.dm index b103179d58b..303f5bd041b 100644 --- a/code/game/objects/structures/transit_tubes/station.dm +++ b/code/game/objects/structures/transit_tubes/station.dm @@ -6,11 +6,10 @@ name = "station tube station" icon = 'icons/obj/pipes/transit_tube_station.dmi' icon_state = "closed" - exit_delay = 2 - enter_delay = 3 + exit_delay = 1 + enter_delay = 2 var/pod_moving = 0 - var/automatic_launch_time = 100 - var/cooldown_delay = 200 + var/cooldown_delay = 50 var/launch_cooldown = 0 var/reverse_launch = 0 diff --git a/code/game/objects/structures/transit_tubes/transit_tube.dm b/code/game/objects/structures/transit_tubes/transit_tube.dm index 707dbb015df..5a0b7df79a3 100644 --- a/code/game/objects/structures/transit_tubes/transit_tube.dm +++ b/code/game/objects/structures/transit_tubes/transit_tube.dm @@ -10,8 +10,8 @@ layer = 3.1 anchored = 1.0 var/list/tube_dirs = null - var/exit_delay = 2 - var/enter_delay = 1 + var/exit_delay = 1 + var/enter_delay = 0 // alldirs in global.dm is the same list of directions, but since // the specific order matters to get a usable icon_state, it is @@ -20,6 +20,11 @@ var/global/list/tube_dir_list = list(NORTH, SOUTH, EAST, WEST, NORTHEAST, NORTHWEST, SOUTHEAST, SOUTHWEST) +/obj/structure/transit_tube/CanPass(atom/movable/mover, turf/target) + if(istype(mover) && mover.checkpass(PASSGLASS)) + return 1 + return !density + // When destroyed by explosions, properly handle contents. obj/structure/transit_tube/ex_act(severity) switch(severity) diff --git a/icons/obj/pipes/transit_tube.dmi b/icons/obj/pipes/transit_tube.dmi index 45b2abc3c3efe0aa6dcd7924c99095df6377a408..517a3b238cd67caaf72a67da7ae95973c71f7244 100644 GIT binary patch literal 10656 zcmY*<2Q*w!*Y?HeWe5?yClZ7NA?heWg6J)X7Ck!A!VE!31QETC=%Pim=%O=3?`8BJ zWpoDL^}gS~{{LSKcig$_oO|}!``OQa&iYZ8iz>Bf2%o)ip@{V-Ko%Dj(^ObkQH^=+f8c_9@-&KzFg>0+z%hNmxWPfM# z$N$!gYA-U|>`A!g@xSa=BAvD4R_1JBXM!@fw{Rzjr+miPgRvjSSAsWufy|H zOiZ@MSh2>qV}Ji~WMrg^w|7`j5Z?Cg?i)`}y}egCAKQWmq1nngAJWrVws&?GeMR1D zHjc0(JWpDc35(8|EWb89l*vAF=ib8jKgMUt$)x9ytC-m2YDK=?uW8St7Z~^L53Kr?{%-B!~miY zIWrh%^z$VVKrI^meJYL_=P8axG?X^euj2bT!It7t=iAS$e+6cm5T>~H5!XlKrk#KP zQb_wA+Nw4d7i@lYhOnB}R?Li#hn6;7ovU)%8r-=bAo@GK&tw^mm5`8lDlXpQAy^|R zCRsnD+5t_im5*s{MS*XK862eY^z;NqL=Lwmx7#ytAk7hRaqPYa!w_8H@c4LfejZR6 zzeSG>x1|TKN#N#ycX5H6z4G(>GH!}sUU8!r)zkY3un9kY%-+7_N<)Hg+>l~=_``)u zXs^$oklZ^?6b3M{uw)wWaWF(!SXyRpz_TVNUzxvqr^`bd-lNKK1o`*xpNElBSS~|d zZSDN1B{8p%jC@84K|T12ZqCjEpW8W(Pfk*XPKh}=Ia}J=f+0FK_(-Yuic87p@8XIx zr0+aEGj({(;qLCLCwBZ6;MKv++qHU-SD^&PsmV!MrO-t z*+jh;A(K79pmQftQi84q2djXhg9SQ5Ebh~^)VQzx{Ho@>;1N<;(kUn2@NQ?OCId$p zFzh=e9wBN2qov+^AJ@$xf}4EaSA-FRcLay5v_cl*{(7$amt}-!@yW zV){+a*q%XkO1OV|O4r%hDf5JHtUM@sT1#W{7a=5~Su{*ZNojp+s};0#q`jrtY}AIO zTSIB7`X?!8d{tG|=M260Z6+DQxFieY8i=sa&`@v8GO^RD+nam>#nH>(NvH@Z9}EP% zZ?dt$tEaD@Q&Pf@9bI-Iu(6YvXbML>5lh|J+-%w0v>zanlvxLzwakEQ2@el-kdl(V zO~lAb*VSh6m?m6dDJ6xe&50_!eQ$eGNW9N|%mcM%LLAx}rkHh~Hasyg@vBKkSFfU+ zEdpW69`y|`c#}eJ6-DNI;N|Jb({a6@qk;lm^mKlqm3?)rL7m^!B=7NHxlMm;A7f!* z;Sh=@1#L@YtGNlO6h$a05r(D9I|0H(o2Sc|m3Nt(=At>nV{IAS`Opsm_sPQZqxV5f=E^StV_i!=AbwEe)q zFA4P`_S$LNDXjT9tDI`u#|%dhjUQj;gyi${^S$M6>StM+OiWDPzq+Txz9$+p12)HU8pbp#Q^EH*@*MSq9iSTbX=3e$ zvYVg_t+DKv8`V>*U$hFEc5NPNjcZ{SP6N~<#3f&FbgUhK z$OLB0cHh6jLC1Ly`Cf_L`U9p_61E=GS?@dW!uqb%-?NNm)@7Y zwtJIORz*ecq`0u86_>|v5?gxbHmwk3+#0nVKUJ7SzqNZLEdWI+4t&wfhHp6+;Al96 zGj=#DU8#^X)c&-Dykt<=EWFC?1RTaXx)&BypEBJOZT+-=p+;sI%Np2c1;`w+gi1dh z#o4`(Tf)*Ky~UG^r6naH#VH1Z-7mgGCvVAyM_R9-`_>-t<`kZ%jG{d7e*20x(M92b zpr2$btbDNZ(h)1;Sb|&GomqE=T|8};QDpgA7{0<4w+xwz5o3!N|yWnE*%H#aT*PjZ(U;5hm#;8(2 z1@G=>LrAi(=J7G;S;2L-e8Dbw9|DxcoZ61NQ^_ma6H|5;ZT z?(+1@&6+{d06t~yvnDFqsho4GXxWCX!Ql01x}!WebL(RBgwFlosf+}5DW5l1Ap{li zUl7i3jUP9)#q!b z*u^`wCAjpr4yx9?9$!XYpuhR~_%gbbz`B1`Xjo6++4i0K?d>g4wy!+ms@6keXKkEI zKlnLGlP#VdtR-8mln#0w$+7n?E3L1uXHZ&IZu#MUO*Z+{wjKPf>(!O;(LKwptDsQm z1HTqkpO-5(W;PeUtEEayN6!~m>b_r7I;cfWy&@{yzvyPJl@hNl{?+mpb!t~-2c|n$ zH}9vdWK~hCS_Pe$)axYj$KV309LSh~TJF$LcMuQ5$8SyXQ^sV;xQ90Wl@g}p9N-{l zYkIKc+Ggu1$IVu11Xl~?lON~Kb-8u#s=)eVTc(;#hTt^eNaM!I@6wU3GIn&q6;>|E zZoO7U{NU2TD`Yw=%Sh%)Be(l5%M)Coj_aPejt(ikdlJ(SV8$V4OQIz{KAsEssvq5N z#veB&?zNLTROfP1hUatq?#FMAihX2N0H&N8w79;Rxwy}MPaH0_C^g|pRkkZ-+$(hf z;J5FQ{YxK@P2@vXBSjvYKKH(!rm|mhFSfSV)%&ggp|pCxj{104;XdE!d4ICosi65R zM=OwN&aCIuHTj1kP8}{&gyLjL>=(2y-HH+z-fnO&uRGs0!aBqpmfpm`HI5m11VCaM zo5+=RdxK7`ld5*78AKvEaFqL>=NGN*dl*SVK(9n4jO)M&BF^Gzn+H&S0t zq5}o;9!$Invmn=eOyGNfOieXoPn(M;eDIOVpO4Hsg~-<#fqE3f`W=LCjwh9FEI=xw zTnt39oLaS(7agaBnh$^RsV3<2!h+N;hd*W~r=y+x%P`EF{o_qmnGarO z4VpcAvh^~shwY?Ocp}j+{3Krlw9vRX9UJ9IB1^mts%}tf;kz^i6)gP(a%IbdN)HIy;At6m#A10mGT!`xhV(qVZL{ zp|4Ss;&JA6o!UX|=cR+=>c?qu236MWv2~CkXGLx#I8ca~HVXi72|d3ojC8or@h z%AKZ%x)m>n4Z8Ox^>!YAzg8&5d4h*>`Z`-3_MKI&O+ET~@O?_%h(T4eS&+gWjF(Ry zESK|})W}5y#Mw<=;{13+n}sC;*-(Xz{^ zqn|%3toMTxa34XhCPkK02Afg_Cv|N_08tB93Mka|t)t^U$Y=&_b$BrY7&SqeB*!TW z%U{ljVbp@+8I@B}k+I+T;e)a#Bfr@&+s|a*cy>5&=Kld1sEjIY_1G9K{gB0cta-|z z)G*!6!+Z%SZ}52|lLjoA+GbNTotQ(<_$ZQF!&8D*)$6XepBdZmOFrVI$c4LQiNlT;bdZFE_>}N`olQguv|#8 z_Yh+9NJ4`5t9maPgeAvD;Za2){{uMsMFf zDSO&W!b<82qEURE)Lq)Ov8k!W%4Zx|m9nytA1j!(UOr^WXDHtmOmqT-goJJZGvDmU zd~R}?_A-YCIeEsYX3|PhuDD}J&|8I8jK-%Ph)xIP$Up6*qeI*PZ~}Rkva4>Z$Gix8 zd*xC7`d_dpQ}`>ckfLZn_pRQZoj1^fC< zOfMTbFb;q~icWgK{l`|G#MGpC>&xFrhDR<{SH)e(q$JHJs-@ednq97G4!L4N(_DmU zN%jEf4-^01FUQ0y-z9PWNzDo{lUF`&n|xkM=;sVzRtY-et~=&B>P##(&24Pve^L!}P{0Nq zj&?;n?zH$VuT>kL(IR*0_@8`G4B5RI*)9^NesPW4)2vXUdw|XO%<~oIetL(q=eA-o zqI6r`i#edGV{k_FHX98|!7sr9j7V`CGYgBo6F%4J%cy?@$w@4YnppHq^Z0zU@OR!l1b>{b>IIwS z&?6(wobg+qI^k2uu7jn6&RIWrnGR3jO6MBgv;(Pr&D>WPp@%dF-J8zg45_?9F&?r- zSc=JYocsLI$$nPK$$?gvmsPMq9@rHsp0%0io!f=MCG-B0yH!~Xf4-vh8Fqvyu|tCs z`NZ$c+35Vj5z!I_Kjf6ap1yykKe2s=b7&?rLi&69bk-qRlO(28kc2fUn zH2P~FZ~b`ss_ppLbI~3)Bn|?cLEt17&#~OT^$_|Dfk7U!@yh}xHNX1Y5T7%{+IjUIF0bIz$VY;L7747TXH;Qa-4R#-B5EC2 zREsD63+GPV>yf`R07d6*-;Hl(k0dO)VL1Mx?z?mNXEU_!e}{I#{d$OZHHlmgU^RU# zCwhSQ8(0jjSfZG?`+3D&0nsUe+NQ(^{_O3C-v4NVqrsk4esED|hX@#wQSd>?^i@3U zwyCjKAjF4)ZvJ8ki!KdFAV_dB1QcuimB zt8qjVJtmY+2RTO5`DP)BraLIbbPy86lj6&GG)Ey;MU-E?;f4jgpu@=j&CxO%nd;j+ zpzi&9z)0C{X!6tTS9vc#dub~clFX;=iIM+phe&#V!mk0Xtg9>h9SmkbP?=H=^D8rG zySjqwHV$gPl=I=7?uMG-wgp%Re`fY-{>za-T^%)!R^xP$>)Lt*3rz2u=z%V9KLc07 z;ROhaZQiI=&Bk!xp$qJ@{p6oZI$^qBixf}E3-F7)F6_@!93cc7-;CcvM9$70u7$b? z!CDvNc#TH1pK(xGrP7jw$dsupxX{t`Tw0yXGY{gxuIQH%U=jh^YVWhKfJk$#>}S8a zoq*xnCLHbWTK|uNI*V^{}U1jf9LMSUm*|Rd2`D0ziKl5qc^_!7k`Dfwfm0(QDZJeEZK4{I_~i!T0uJUq{(gwR;J(%WDa+*)RWGddoaM$N&@Zb?)q?A>DSKr1 z9fCzw8wxb882t4GAniXcU!7grA%q+^Um3O__s>I%_Lko6H@q*)FY|a9{e1!}zIRa9 zcz4hNjw_UymUjDRH4X#ydUd?yW6hDCv9dMQ!%4DQkpeJs|g`O{VM8BX#8*$&3{jJrEY%A(|Z(gNMiy0)X& zvwrEciDX;oJ}f2V?QudoI=KRNbu#V%?0Xw0xko8xffA->i2?@|C@W^JUOng1l2^GE zp|}qUJ)l?y3O%-;G@HquMOf(Hj}_IsPd4Ye^>Dk|ukPn2?$`8sQd`|?!X-S^#l;1E zhH}eo(Ii$G6=`VccK;)VA?)hv#Eq(YP{oAv^c5&WElZ`6&<<^UU>cet$an)P6-}U~ zr^$g|%)*w^r_59SDE({!j`G6I6Ji%HH>*7#Zk)0xV|e*;*-Gz4>!I~`kV2uUt=`hH zNkvI-SqH;W)uc^%fv%RCzJR&dL!1clJSgWS)F+trVI9 zS$L#+HmD=#yRZP_v&NPa7J%PjGZFMzC=?neI}A$C8>xi74usue4W%NnRs5L1&47Lq zm~O0?fWgf$!>#rOyAKGgVF82t0~>(}?= zlz*p`){K?_(H_;`Tyf>JO1LKh3$}*Nv%{Km~eD<2M9LPIQHtm7ko~-EDmd8hWp-gx=XR+r~qek?b+J@iw7Q6+}2h( zJ^H4;7tU&Wb@&hlAX!`9UPwrs6sOUK1vCEPfi=lpL24}M_)kRUW4F?Hkmdn++Vr9AZYwpe;6+@gLTl}AChzXmh3H!6?hHk zyRufV&Tr&$Xa}L-wpm_jDHPmY@_-+uFaM|?au#}2K6zxYSX#4&ZuCM7s-HoGPBv%p zQXA7ANF#HI5J#i>w?DfuFf|I9J`v6esjSi2d>kPJs`^vtVwvn&836>?-2uf<)SaDzaLHX# zE$Cc|e8VeQZ}78=8sHQa=`_p2tV>O?Q&+No;BNPcM0E%v6RGpx!nMFq8gIqSd&56& zR}?1w)H{t8ke)UTlQ8FD;R2bGkBEY8j@EuG^7^Jk)t3B>wJx$-pcPwVyz#TwYn}Qr zYgTZ8zHt(1tNV0Wf%Z0QygxN2Btw1t^i0>9(Uvh)Q#xqpzXudiJNvqgXzVG^3Emz* z4DhRhu?xHiGHgjAXaDSyOKGID56VbxlJpD|BmROY%mzL71L3<#8uNlq2`B)T-XAN# za{f<&pIpP~{!vdPK^K%w3D2kmQGRTb$Qp1*jcJpqSooCiku&pH=#wv*ZIkh~D$);{ z`$fL?zv82PazOtDO2!w1M4{GtdNTPjTisFpvb!(62~1W91NzQI-ym`^c=<%Ip{y8! z@|aM^K*5>$HBnwup@)N4SJI37zpbV5;$ut{8b{|)Wmw<+rNZ@0-D`NO+9l%@vH%PC zyg0|&Kg~1cx*o;7t@D z3Xg4KS!J}JwicTlEP=WXedffi&uP)+t#v*9rFTuQJa`{Q^LChqIwaa?TUIZ|IC!Vot;Ys!?ynY!)H{79yoJ6 zJazPgqeRA8G}1m@P*PM(R&GSw-o9iU z!^cRx%mX7sv2Y#zlV2kMFlqiqdf0x)G;y&Ju~l5n;MTk(a_fUemx|Vs_-`CCD#68H zrR{f4uhii=@B8(UO~}U^l9H*R!jdbW5wZhCjxS{2UWjTCu(WRYdZLLI1YNiJ2^^tYC^UtYWzC5 z<_h+T{^FwfZD|3D%#2lATl?GXi@QJ3#ID%G+S8PR0;{a|!2G`?`dOPkF!*1BipX%s zTiEw3Sl^{T`8;yn(&QVQSm!;?*@*MX0V_9Tf%9xe8!!j1Kl_+OU)ge9rrf>}R7R1n zz+sPAN&a*4_BF3o=WK)6xxaVaL^K@KoyO5<#K-d~==%C~KV}Vvb9xPY1>cYhvM^lF zb;+G75^zll5X&a^s|-DpqqN4s!hp0H_gM1vh-`$=;teb>?B(@bTmMUF9&57wh@ATu zw6u0|Tl}0A)yWQGcPb+AA}N>+YXhKrqE7Whu3#~xO@wBw&4Jk0zH0KDXou77 z@_sHr*$H3b7&X>3F*m1%Jy0@X`7$GPx)?5yT`G-$;ibN-yE+j-6udzFG0obAADvy$ z7t`}GU)q(_rBVhr$&7}ffJo5J<-u%xI5KjS@tALi+Nlh_V(df*m29)uyrVBs?NAtY;HzAeN{J_dV);wGy-Ot4KAIs`P0ai9F7TYFB^&Ew zv~@--d#V!Wjuc!95$YEmLU!69{qMc{)PX(gM_g(BJeD#Wr~LlHhNd!JwWnh=#1%ygz--1@y_dGroEcWe!oTTV2#Hvp5Ut{i)n zl{EpN3%ju97gcNGozGqN7*!<;%%U zVz8ORD%W@iJjm}%;4dzh8n_ve7k2B@&1nP2*`O`WO_M{J!Iue9<3Hhd1ojwyG%>#a z`}y+MkwEftx)(FNyV8iFW39iZqeR9D0$tv+nPIPU%gfDWvPrAH_#*c`z@kjt9o4T_ zaAb@XJ69_+5LW(XORQs~hvBuAQle>RqwONO^88*p}b3H z@;r~!nvhEE54YhlwfH${Z(cL`2L*egAbG5O$R+7i?{d=n5oC%j?m0aOnX;r=9(j6h{$mu zo^qn%^47#T^f6R0_1le8nF!Z*ZkHS2kL-=E?b`H0#*zZZ7yx~W#@?cZUnx@Sh6*OY zn^$D{gl0|h{RKXa(N_^46<_I_QD3|M6wb*X;7MNiRZ6IHx_`U=Xv|2t8bvs^am0^# zlEbmQ+tGL(WBSnkU8neYjCts?Lb2;=J>-a4^KjK!>0PNpn2%cD!O`JOAc^vx-9Aj` zOkT+Ix|lyb^ACx<`iG&4cm5~$&goiW25rAqt3m#eRH)zX`DF_E2sPEiOy&!#Etm(` zZ^W&hP8oN^YcEIa6e15QaUI@pzov|=YgPaZ+$%}YA@8yiA)*tqjQ}1n@E!@g5CS2n zM`h@XA3B!loGo+eZ9Os}`&zBv969^^T$J<1WGCQZg6rG9DS^P^>w!OiaKIj;8{y=E zLIdqwdeY;qn9f7~NT`lb`LJ9#5=;Yihf3gN##aaAsU_Q2Z_ibUTB24iq;H# z1JSP(1g%c+%6cZ9qjm%R?Vx-t6YlpPutS8c{17$#d9itLB4l0ljA8aa$bWd)bXdFR ze09#6O+Ixii88pFH8xub*h@j{?4I>G2N2%f7~g#s!V0_pA_{&ny_unJz0zhs+%P}~y!=+KC!oHh!J-UL))Dt>a6Hh7V^Md1VcSA5+(c0Y&+#gN@B6aL0 zb8Mx(t*Dbov1l|&1sA+kOVz3HrxYdTTSeC;BKl0?@9V;((0&!ITlf5jfGhSee3F47 z+X;esA(%f3<$PP1?@6XU_An4Trr3H6z&o?5Yq5HPyHd>q17AxqcoiZHRfI&8&7=@= zHW?L8TL8z9K^Bi_V2Fr8CLsPJWmG5gexbzdK5H*7{vLHa29I)L7etB|PP?+} z{qq3ZY<#ysq$SZ6rI&WCCL|i*qZEVtY5%`1Jh6EBm=QA~XEJ zb^=?w;BB|VLjO{#(_#>gh)xu(1?_Ph)9Fd-OYeVr*t`VcL)Om zyvzUIT5qkHxogdwd+xb+f8YN0x6g!YX(*Bq(hvdwK%%T9rvo05;5&l=5BxObv@`(^ zJ>I(dZgSS|EnV$h-0Yp50Kh9HDo%o^otG?heMOIM*LP|1yS%GX7=uh`KUVf`M##f0 zlqYAMGU{nSm{0np-6q?*M$cKQ-+F!IXgnSLb0Y`IE^me#;yO^^Lk+(Ybt)!Ix$KiufnX;{Al6yO2E(Jk`%cB|rP#%?f{|);I8V9Ch9huZH@m3) z(dO1hj@nLv)hfK;|neulpWdD(g=>+0lp;82+R)+4&qW43q_3lH>XLI{Xw6wH# z3The}k0m4|Hum-u^z^9O7kNd+#K;Ll$OuD*M@Fy=zG49hD!7V@ikyjk;7eFsTrOX? zy{!%F-`QDtZEaXm67?hVgzpq*d-E?IClG3+iiV`7(i)R9Jk5XBvO|yIV!#I|r}9x{Lni+Wu>H|)7q8hU+WHcCnEUvw5E1tDhhB8$`osWP zl!8NvJWFiDbR-ymFpH(=z;dpo|Vq1 z>gw{tfPkMK(2SVVQ}+9P?Ou#7~-$RiF3_Q5iZ~iA)`c- z6qp#?L6Z9uig|VKY)GAwOhjzOOj5v%we(F*U-=s@BbK9{mo+y>#W09Ju&k}trT-MQ zuuMet_2TmK@O08_QZO*bJz(YlfAZCXdTBx)gvNJxW)$RJ&n7Oy-L>VF9@8}ps zEjb{2dsHWZ^0<3?Ub0t^_>HN#*IXo<1y9}OZNi%%SScytP7!&J2LePPHho|TUPSc$ z8gWBI15Gi4b|OQ={ko_4G~^ZHIN|{{b?m=?{|-26C#aZ;?shM_JeZxGH9y{Igws8r zm5l`cQnSOseNYHQZg0pc5$-l0kOkQ5m@HXV*M;8 zDtd6Vs#-QhV@89lPDnTh<9TFcWHGVDabtmv2DW&c0Wy?2JI@2-W)*0~XI@QphAVtr zYP(X}(V_MJg00yc-5YP3Y^dQHFhd;4yv+WFnelI9+$`)ubv3$6Nl1^OzA(P`*mFL8ExVx~DCQLvp zM7XO!Mz`|omnXelf7DmQ%Xu5!zMLdqo3uOeKa%YbyRB%IfAkP{g=BEM7MI3gU391&Z=T3rG#Yakre9rM z(RAnrrKhfR4=7~X`}qHU65fA~l)?jY;(G+IXM9Dk^qb7Y6;afT54z8L9I^$+ds@)} zhHoU71XfG6HG!x{I_YD=&+KNNA-A>)WFqg`4yI_MjqM=N@=NS-WCIv70qsvnq0kW! zJr2z@CYmS<1Ok<){?~^1_sSNKH%lb_PFvjmuHna&nwKM05>k@sdb!FGzbys?S>6kZ zDxw}y5_VtmHd}|J`LHBQKq}SFRFbe?l$aU?L2@1#wMoGW+tXWs~KYUXslrG{0u`|e-Bx&Rqw!z6VGwT zlpuWXZc?M?a;>7GyI;JoB(xEY^{`_4I|itom>kCdtgNg~x{eRP+7nDAgF8-jcl;%O zfp?g8v5}!5oE@Cy)N>9}_YD5z7E7s2YA{mcFx3uEp4k5WudLJ;7l+(WQC#2Nkvqj9 zZrOBh#IlnU6cvOgp?x@LQih(i*N|6PP}&b)%)S9AXO}__#bR$hwdZlarIwCRh{Y>t zU3~_mSHFAXB|JJlF7Fgdy9`Zv(9H$IPVWQ!*Ce?8TnZo~XCZ@V(R8m{4igpzij${C zdekFhzivxMM88@^^{jF}`I&oRG~VY5xm_k%3Z7s^b%^cg$%O=nEP*sa?W{Yn4Lp=Sj@TR7xr9rg-p2|NzKM&?=!)og649%1K z5oPh|0VhlDn9^W~5~Ej#G=7tul9LE=3c|e-#AQy&4D4)cLZbkFRM--u54ciU7kJiZCCm5bk%mj_A;fg}AgEG;ls&f=kA5(q@c?J#v|>FtiC8xMTf1`I zdG2>=ie%AoY0DaDp5N#`p;>`Q9@A5oTN0UEXdP=7@FA zmctt#pQo+U?Wp~y>IZJ8hop;+%F9fTD`QOo7xdBU_oD}6Ff+-PNZrBj>xK!i*a4kC zq8t~al^-rE?(tiBGNhFPIt{MwA4ItO_`qz{_X=WP?s`{1a}Pu4B0#g+sKW=>eEpU2 zHON7Ym6btSoN~)_Er*B7FwRSo1gb?B{U~KV{n+S5FS^$oq;m}P1A33|bypBGJLTjw zWoi+CiqPT~iQ#<2OAZZ9Q_pHT(v`-M^c(sPSHr;g5YE43FD)~k-;9iquZ?bYz5Q%K zGt%|TswUk0raEQ;Wpg31wx8Q0f`OpOJOoMl+dpELW-e&o z>UiIfxzTV4mG zZdherKfeu;;pcG0Bl-;U86#^UtZZ)|j0WZot>& z=K90y8f8rbhLxL3+*8HjZ>d;nHk^@>3-J+Dj7RRh3w2$ifddz%Ba=i^W2jGm1;lI# z8x!od!ZfWa*X`Cv7Z;f&TU=fT4G_%=!Cg#fp3kxk+S5=6Z8GKQY(CsfBH zXdLB|fA&d%H&v~~&v!Af_ntuP0BN~5d#k+FyvL9Dpo`q{xXsGlIZNrAV{gbC(wcdu zTxaqZu#}JKEU^UIOmAqi6OawzZ~yIpLaB14lH0gJF3LaAe)bBh!18`2h5+n0s%-T} z7tZPMrs_ifY)$Z6YMwz2 zmD>;bN}7YW4}M$3a*(ZEE%CnDTx(0LHRfie2;WH1>mORkxn`D}4e)((apo%OLpYDO zAkQ@jwn0wCr93ZrkTk;Guf0gm_D%E3zlQ6TWBiA|ucrbXAn9*F#@Z!u)+}D+N zKcr4m7e-~^@$>UjJTsUxG&5UJiU_a_b^KFX@=Ogxp>LHhP13J7agq}jlzcJtUV$|1 zh~$*&&X?wBTz=y_44_JI^YpwG!`b?D3L7W-PwwOAks5N|4@+ySVWat-GWF?kb3>D_ z2dGf#!sYA&dfnU&pvKYICTGga45!uLcV(58kkkQ*Q0++XReDf4Kjh#@@NH>`>(@Ab zQh_2GcnXZuyes)xicWCcza=Hbc5|%Zg$by(GrsC|_>$fhae?@_ z{8GR1NN_RnYBN;kwgL5Ytq;jxT)+-qJad-j2yb5u(iz2?UZu~a;}ulQsStHsV=H*h z7>5e)Or*;5xYVNvk9>uRRe<9SZKHB9$YEj$>j(e%0lV6hB=P-hSDI7uhFO(hT9 z)$yMn7(l$0Gbqk7*hcYOI&_Hon|SG<(Y~hxf0QWZVq?j}w;ypSK6@kHt7O|c!gq=y z!1)VIt>H~3+^p@b`M|BT7j119D#(XBqnSqDobC$}Q?+BStk;^Lh0^zF7z6`tP0h}NAU7kdAi&XKw2_n0UN?JM|(kA#Xl z=;`P-oN(E2)MIvW4U-sJ{#)T_Dqi*Skb!{zep?{cPK7)3lY0j-6)EqGu%xpMNQOyi z4zUmVu8nh*-h3e%e*7qIZcCG(7xHuX2IY zhU|RioPO3+fSBbTURn7eBUjHI(g&0^)+dd|jrJ!kHTT9aVfK5Bn-Y$WH|Xiq4vwg( z-i0^PwfIusn5bTNQE|W360jAf^Pr>pd3L$o=5Sd#4yihZcsXJCBDdRP(xmjRSNk&7 z$Gg+je+q$Cfi&euu!k^Ldq8q^Mf)0|BhFCU&+d$zT2m7CCvCRtw%Ng=F~^*|a=#bZ zDM`QCoAvG`IwIo1YN=UEWTWAcEm%UTpnpaZ~PPEUg(=W2ZlFsKl&Wg7~|3DGvvK*N6MmfEyEi_i7xy%@m z*X((-*Q?TdGNud~M|X$e=6rG&Mq$;nW&O9^=I4JLVk=!d)V!ev_oE+nL(Op@S*A$V zppZtbt%fut3o{RN_NcVDD23fgGumjp<`A+$GIPB$IH0^)ZpOLbzfo0gtd|f#{7Ie8A|^R2>vv-|2CedpCWTK%JiBaeRlw87e!&y&`0Y?H5#IMB>ZRjr^zT+a)e znV!}*X$L(9(3BFCYtiB~cXlp)jM~Y+pV<ppSI1E2Hf*y(iL9>8W|^?BpNR z8&+QB#1#Wpm+m2FF<5XSn)*Hni=2c!8-;e4Jt*ub8^^}SaS2ziD?AVQr*UEM)Wgal zUYCA*=dX-NEU)KE3HxL8E{*M~Kk7{D{7C1>C1gx5P9DSB$UKuL&I|XN#xZ23>$X6_ zY5V=P!SYa_>)#Pn1!9<;Y5rRW>i4p7;;KI*W8TlEwZv1OfX8}2LNI^_vQhdCt4q(& zzGzchpA+hJ0~@)=NofE+2D2qlm4HI^VTh53JCwD&o;d!{iP_bz;0jr|@5n~=DTO<~nGpMLtV0Rmsbu8?6B4Z44L%0 zErG~N*E%z)Mvs=Il>7Gq%TC_3n9(P2xMn*o$YF?&9G^mnYD;Gb@L&;Lg?mb1*XQBk z(OvEGOa6@rEPxTs95^_{1g6kBG`3U{&nbHLspYpc)q|ej5wr~TkhIQ!UYq}@>sXuA zc(RnX7pP!}VKnuReZW+)4|3UXu#TrD`Dx0b3TK=Vh|dgJaZn< zxz0f#3=4kL^rzL@2aqX@A8n9NPMJ!*eu@GB&y%@eA&C!9!E$+q?Q}9Z03BAj!}oV? z-q(3jr@>z8vP#7oSwD_etCK6ZK3M|(XO1jN4OfbdK{Gg;q*SKVatmt zcPu5%5!|Z6o94rSpUut9#9Hi&pN#sU860N8X8&xzv)DU1IJ^bLqeatGc0dudsaR{m zUi=1~MqB3M|2M;*sr<;8gcKDOane-swxAcK`#d4F{LFZj=Ajp(Ei*EiH0tUr)*i~g zB5g7;6|Km-*4q!5Bw{3KZGyp}pE7a-KJ-%OMt&IJB`Ms-M&k~yds6foEk|>ijzAkK z9-DP30oo&o^up86 zZ7*b|($W|}r+TjEr3vogg2<-eiqUG~@a_M z^mkD5xY-7P5#!meIrL?mJ$QT}zO)S#BAxI4Kye>2=CzCjEp@G%8z8`vf|JT9Q;UBP zn~r)SGevQNUU7(~b#Racy>2(njH95nF3+siL^PJb9{xi5l|5;oea&kS@7vYu8bCkE#@+qpGlGv5)s@OYWHp^Uxoy;So6pJTBnFsJTg@0F z8eeLsm}p6lx(r2x(M0+YMC%-96`#ybd8fNHApM`-I(E_z+@q9q)E$@vRV_u>K@AJ+ zv+!z^*E*ItOLBEpFp3i$oN<0QZEKFk>cEh}XU(qWYT<@V6i#@J7|dhzUH#uK#(VV0 zXOm(tCA$Fp628Y$37V3Wgs*LF6=O78_(1ktG7ghk#UF@)(jJ~fbwdFxa29o_c>r9l z^pt$;l@gA!RKn$I=giClfv-PX!9Av(zvoh+j5{Z1XUibn0|hNYxUi9!qLJ|lq*Zw9 zTG|chL@+C%ah{yf%tPo}Qy)pD=Mo^UPA6Y}a-pGX;nx!ss0^vT-C>I22b}@8zIQ%u zy4Lo~-{yb_W;W@m^cl#w;O{gVVj_r}m|Di7iHps$PqF!(SUYa=IPM{|N=uw?Tm?jHv~Am#A5mYgea5K8vr zs)zIs_U7Otk=6D6%}r^p`!AkLf_F0M(l|;RG9dK1w8)G|=>MjY^b^U$0HAc);d}a- zMr}1T9RXqLB&svZ$Bqbqidhx$FVZqn&rI7!qC^Ymx;rGln`+U_TH_X@dU0rVl zyVI{r+EdBpIU%zvDb9H4SNo?ajAp87>1eD6*p;y95|=Xh`y`BC5qCd@WN3ny611VU zqfIf84EhUhPh_{YrtjU+g%4xSY0e-AJTL&e2KFeIGswHWo`ku;rGzXdZ%HkJg|B<)-YSvx>IfM+YNdXb|SwLuCiiUguC|M-hq2ZRk8%Pr*n+?F8hT24qzuAH4x>{rDvpWdNTj&wio zgsfAfSBB{)90}afkG`AtI13EhM)_{SIYY>mnGO!W-<>4k&k__|`md1e`W{jFQq(MBe{0Mtad$O?imt7tb97BQx#_oU&wwylorOmT$ zBRhhmd`y(DWMMlRrDbM#E(9+;vpYEUgs|NK09^Ll{{rCSNnG7*ru(C==9h2o#+@jh zcxq^0bLVolsww@6as70p>TwlQzkP%3o0^5d_s^=VYsk4|uwl*2*Vh-P?3F&i!fx_& zl61k^YC$1zt5}Yt$n4!5a7_(R#0ez6_|g;1HUOMc0rTze$4E8?e%vUBy$wnKyDhu04yDAq zV60dMkZ=v{PAuQ}7hlw5;;spi&v(dCyvsL_8sYbl4E}!qOuRK-Y$5(IdwO_K-1znk z1;rbM@wA-F{0E0r^XzFW;`+UbAt~s|pA`7o%!1?HI(VuT0!45cgaFBmtPZ(jSRE zv4oT?T*zvDI6RJabRv~a-8 zGg>?Rj_{sliw>(-9!h<0ORN}9w0C1fq}#Y&KxtJJE6?KiTFdlRKHby zzWKrT6n#nk#E4~JZv;#_VucGcFWHN$*2|mThmPUkJhNw?dLh91cxk~IW=jtVl2)H* z)}NTYdkOfh*Y57aecu`nXHg7{hJ3RG_iOC5F>{nC;wnx(3Y~|!oE;+d$)A5jrDUbZ zj+1!zJAbsLU3qEB~ym6X`zZ7%Y&Y{{d)U)6|EQ(|4;pbi&s+#6n~O i2=WY7;I!8ZFaXaO3Yb*>Edl=#1}MvG$d$;L2mTNJ7