diff --git a/code/WorkInProgress/surgery.dm b/code/WorkInProgress/surgery.dm index caa01a69346..24f8ff7a28a 100644 --- a/code/WorkInProgress/surgery.dm +++ b/code/WorkInProgress/surgery.dm @@ -290,15 +290,15 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user) end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) user.visible_message("\blue [user] has removed [target]'s appendix with \the [tool].", \ "\blue You have removed [target]'s appendix with \the [tool].") - var/datum/disease/appendicitis/app = null + var/app = 0 for(var/datum/disease/appendicitis/appendicitis in target.viruses) - app = appendicitis + app = 1 appendicitis.cure() + target.resistances += appendicitis if (app) new /obj/item/weapon/reagent_containers/food/snacks/appendix/inflamed(get_turf(target)) else new /obj/item/weapon/reagent_containers/food/snacks/appendix(get_turf(target)) - target.resistances += app target.op_stage.appendix = 2 if (ishuman(user) && prob(40)) user:bloody_hands(target, 0) @@ -332,9 +332,8 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user) begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) var/datum/organ/external/affected = target.get_organ(target_zone) - if (affected.stage == 0) - user.visible_message("[user] starts patching the damaged vein in [target]'s [affected.display_name] with \the [tool]." , \ - "You start patching the damaged vein in [target]'s [affected.display_name] with \the [tool].") + user.visible_message("[user] starts patching the damaged vein in [target]'s [affected.display_name] with \the [tool]." , \ + "You start patching the damaged vein in [target]'s [affected.display_name] with \the [tool].") target.custom_pain("The pain in [affected.display_name] is unbearable!",1) end_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) @@ -1185,7 +1184,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user) max_duration = 90 can_use(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - return ..() && target.is_lung_ruptured() + return ..() && target.is_lung_ruptured() && target.ribcage_op_stage == 2 begin_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) user.visible_message("[user] starts mending the rupture in [target]'s lungs with \the [tool].", \ diff --git a/code/controllers/voting.dm b/code/controllers/voting.dm index 7619c540f1e..e90299ac587 100644 --- a/code/controllers/voting.dm +++ b/code/controllers/voting.dm @@ -2,13 +2,14 @@ var/datum/controller/vote/vote = new() datum/controller/vote var/initiator = null - var/started_timeofday = null + var/started_time = null var/time_remaining = 0 var/mode = null var/question = null var/list/choices = list() var/list/voted = list() var/list/voting = list() + var/list/current_votes = list() New() if(vote != src) @@ -18,28 +19,29 @@ datum/controller/vote proc/process() //called by master_controller if(mode) - time_remaining = started_timeofday + config.vote_period - if(world.timeofday < started_timeofday) - time_remaining -= 864000 - time_remaining = round((time_remaining - world.timeofday)/10) + // No more change mode votes after the game has started. + // 3 is GAME_STATE_PLAYING, but that #define is undefined for some reason + if(mode == "gamemode" && ticker.current_state >= 2) + world << "Voting aborted due to game start." + src.reset() + return + + // Calculate how much time is remaining by comparing current time, to time of vote start, + // plus vote duration + time_remaining = round((started_time + config.vote_period - world.time)/10) - var/i=1 if(time_remaining < 0) result() - while(i<=voting.len) - var/client/C = voting[i] + for(var/client/C in voting) if(C) C << browse(null,"window=vote;can_close=0") - i++ reset() else - while(i<=voting.len) - var/client/C = voting[i] + for(var/client/C in voting) if(C) C << browse(vote.interface(C),"window=vote;can_close=0") - i++ - else - voting.Cut(i,i+1) + + voting.Cut() proc/reset() initiator = null @@ -49,6 +51,7 @@ datum/controller/vote choices.Cut() voted.Cut() voting.Cut() + current_votes.Cut() proc/get_result() //get the highest number of votes @@ -111,6 +114,10 @@ datum/controller/vote restart = 1 else master_mode = . + if("crew_transfer") + if(. == "Initiate Crew Transfer") + init_shift_change(null, 1) + if(restart) world << "World restarting due to vote..." @@ -122,30 +129,39 @@ datum/controller/vote return . - proc/submit_vote(var/vote) + proc/submit_vote(var/ckey, var/vote) if(mode) if(config.vote_no_dead && usr.stat == DEAD && !usr.client.holder) return 0 - if(!(usr.ckey in voted)) - if(vote && 1<=vote && vote<=choices.len) - voted += usr.ckey - choices[choices[vote]]++ //check this - return vote + if(current_votes[ckey]) + choices[choices[current_votes[ckey]]]-- + if(vote && 1<=vote && vote<=choices.len) + voted += usr.ckey + choices[choices[vote]]++ //check this + current_votes[ckey] = vote + return vote return 0 proc/initiate_vote(var/vote_type, var/initiator_key) if(!mode) - if(started_timeofday != null) - var/next_allowed_timeofday = (started_timeofday + config.vote_delay) - if(world.timeofday < started_timeofday) - next_allowed_timeofday -= 864000 - if(next_allowed_timeofday > world.timeofday) + if(started_time != null) + var/next_allowed_time = (started_time + config.vote_delay) + if(next_allowed_time > world.time) return 0 reset() switch(vote_type) - if("restart") choices.Add("Restart Round","Continue Playing") - if("gamemode") choices.Add(config.votable_modes) + if("restart") + choices.Add("Restart Round","Continue Playing") + if("gamemode") + if(ticker.current_state >= 2) + return 0 + choices.Add(config.votable_modes) + if("crew_transfer") + if(ticker.current_state <= 2) + return 0 + question = "End the shift?" + choices.Add("Initiate Crew Transfer", "Continue The Round") if("custom") question = html_encode(input(usr,"What is the vote for?") as text|null) if(!question) return 0 @@ -156,7 +172,7 @@ datum/controller/vote else return 0 mode = vote_type initiator = initiator_key - started_timeofday = world.timeofday + started_time = world.time var/text = "[capitalize(mode)] vote started by [initiator]." log_vote(text) world << "[text]\nType vote to place your votes.\nYou have [config.vote_period/10] seconds to vote." @@ -179,10 +195,14 @@ datum/controller/vote if(question) . += "

Vote: '[question]'

" else . += "

Vote: [capitalize(mode)]

" . += "Time Left: [time_remaining] s

" if(admin) . += "(Cancel Vote) " @@ -193,6 +213,11 @@ datum/controller/vote . += "Restart" else . += "Restart (Disallowed)" + . += "
  • " + if(trialmin || config.allow_vote_restart) + . += "Crew Transfer" + else + . += "Crew Transfer (Disallowed)" if(trialmin) . += "\t([config.allow_vote_restart?"Allowed":"Disallowed"])" . += "
  • " @@ -235,11 +260,14 @@ datum/controller/vote if("gamemode") if(config.allow_vote_mode || usr.client.holder) initiate_vote("gamemode",usr.key) + if("crew_transfer") + if(config.allow_vote_restart || usr.client.holder) + initiate_vote("crew_transfer",usr.key) if("custom") if(usr.client.holder) initiate_vote("custom",usr.key) else - submit_vote(round(text2num(href_list["vote"]))) + submit_vote(usr.ckey, round(text2num(href_list["vote"]))) usr.vote() diff --git a/code/datums/datacore.dm b/code/datums/datacore.dm index 2522523e4d7..e07e6687ac5 100644 --- a/code/datums/datacore.dm +++ b/code/datums/datacore.dm @@ -28,7 +28,9 @@ /obj/effect/datacore/proc/manifest_inject(var/mob/living/carbon/human/H) if(H.mind && (H.mind.assigned_role != "MODE")) var/assignment - if(H.mind.assigned_role) + if(H.mind.role_alt_title) + assignment = H.mind.role_alt_title + else if(H.mind.assigned_role) assignment = H.mind.assigned_role else if(H.job) assignment = H.job diff --git a/code/datums/organs/organ_external.dm b/code/datums/organs/organ_external.dm index 80f6e3a1958..4a89aecf382 100644 --- a/code/datums/organs/organ_external.dm +++ b/code/datums/organs/organ_external.dm @@ -185,10 +185,12 @@ if(W.damage == 0 && W.created + 10 * 10 * 60 <= world.time) wounds -= W // let the GC handle the deletion of the wound - if(W.internal && !W.is_treated()) + if(W.internal && !W.is_treated() && owner.bodytemperature >= 170) // internal wounds get worse over time W.open_wound(0.1 * wound_update_accuracy) owner.vessel.remove_reagent("blood",0.07 * W.damage * wound_update_accuracy) + if(prob(1 * wound_update_accuracy)) + owner.custom_pain("You feel a stabbing pain in your [display_name]!",1) if(W.bandaged || W.salved) // slow healing @@ -446,7 +448,7 @@ // force the icon to rebuild owner.regenerate_icons() - proc/createwound(var/type = CUT, var/damage, var/internal = 0) + proc/createwound(var/type = CUT, var/damage) if(hasorgans(owner)) var/wound_type var/size = min( max( 1, damage/10 ) , 6) @@ -489,9 +491,11 @@ W = new wound_type(damage) // Possibly trigger an internal wound, too. - if(internal || (damage > 10 && prob(damage) && type != "BURN")) + var/local_damage = brute_dam + burn_dam + damage + if(damage > 10 && type != BURN && local_damage > 20 && prob(damage)) var/datum/wound/internal_bleeding/I = new (15) wounds += I + owner.custom_pain("You feel something rip in your [display_name]!", 1) // check whether we can add the wound to an existing wound for(var/datum/wound/other in wounds) diff --git a/code/game/events/EventProcs/space_ninja.dm b/code/game/events/EventProcs/space_ninja.dm index 8cc9a1f7c18..034e6ee9e3b 100644 --- a/code/game/events/EventProcs/space_ninja.dm +++ b/code/game/events/EventProcs/space_ninja.dm @@ -90,7 +90,7 @@ I decided to scrap round-specific objectives since keeping track of them would r When I already created about 4 new objectives, this doesn't seem terribly important or needed. */ -/var/global/toggle_space_ninja = 1//If ninjas can spawn or not. +/var/global/toggle_space_ninja = 0//If ninjas can spawn or not. /var/global/sent_ninja_to_station = 0//If a ninja is already on the station. /proc/space_ninja_arrival() diff --git a/code/game/gamemodes/gameticker.dm b/code/game/gamemodes/gameticker.dm index fbdc336282d..ecb8ea81dfd 100644 --- a/code/game/gamemodes/gameticker.dm +++ b/code/game/gamemodes/gameticker.dm @@ -52,7 +52,9 @@ var/global/datum/controller/gameticker/ticker world << "Welcome to the pre-game lobby!" world << "Please, setup your character and select ready. Game will start in [pregame_timeleft] seconds" while(current_state == GAME_STATE_PREGAME) - sleep(10) + for(var/i=0, i<10, i++) + sleep(1) + vote.process() if(going) pregame_timeleft-- diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm index 0fbebfdcbee..739a5e16871 100644 --- a/code/game/objects/items/weapons/storage/storage.dm +++ b/code/game/objects/items/weapons/storage/storage.dm @@ -289,6 +289,9 @@ W.dropped(user) user << "\red God damnit!" + if(istype(W, /obj/item/weapon/packageWrap) && !(src in user)) //prevents package wrap being put inside the backpack when the backpack is not being worn/held (hence being wrappable) + return + handle_item_insertion(W) return diff --git a/code/modules/customitems/item_defines.dm b/code/modules/customitems/item_defines.dm index 35f43aed2ae..6ee0502c886 100644 --- a/code/modules/customitems/item_defines.dm +++ b/code/modules/customitems/item_defines.dm @@ -61,6 +61,11 @@ icon_state = "paper" item_state = "paper" +/obj/item/fluff/maurice_bedford_1 + name = "Monogrammed Handkerchief" + desc = "A neatly folded handkerchief embroidered with a 'M'." + icon_state = "maurice_bedford_1" + ////////////////////////////////// ////////// Usable Items ////////// ////////////////////////////////// @@ -75,6 +80,12 @@ icon = 'custom_items.dmi' icon_state = "fancypen" +/obj/item/weapon/pen/fluff/fountainpen //paththegreat: Eli Stevens + name = "Engraved Fountain Pen" + desc = "An expensive looking pen with the initials E.S. engraved into the side." + icon = 'custom_items.dmi' + icon_state = "fountainpen" + /obj/item/fluff/victor_kaminsky_1 //chinsky: Victor Kaminski name = "golden detective's badge" desc = "NanoTrasen Security Department detective's badge, made from gold. Badge number is 564." @@ -137,6 +148,14 @@ icon_on = "gonzozippoon" icon_off = "gonzozippo" +/obj/item/weapon/lighter/zippo/fluff/naples_1 //naples: Russell Vierson + name = "Engraved zippo" + desc = "A intricately engraved Zippo lighter." + icon = 'custom_items.dmi' + icon_state = "engravedzippo" + icon_on = "engravedzippoon" + icon_off = "engravedzippo" + /obj/item/weapon/fluff/cado_keppel_1 //sparklysheep: Cado Keppel name = "purple comb" desc = "A pristine purple comb made from flexible plastic. It has a small K etched into its side." @@ -177,6 +196,21 @@ icon_state = "shinyflask" volume = 50 +/obj/item/weapon/reagent_containers/food/drinks/flask/fluff/lithiumflask //mcgulliver: Wox Derax + name = "Lithium Flask" + desc = "A flask with a Lithium Atom symbol on it." + icon = 'custom_items.dmi' + icon_state = "lithiumflask" + volume = 50 + +/obj/item/weapon/reagent_containers/glass/beaker/large/fluff/nashida_bishara_1 //rukral:Nashida Bisha'ra + name = "Nashida's Etched Beaker" + desc = "The message: 'Please do not be removing this beaker from the chemistry lab. If lost, return to Nashida Bisha'ra' can be seen etched into the side of this 100 unit beaker." + icon = 'icons/obj/chemical.dmi' + icon_state = "beakerlarge" + g_amt = 5000 + volume = 100 + /obj/item/weapon/storage/pill_bottle/fluff/listermedbottle //compactninja: Lister Black name = "Pill bottle (anti-depressants)" desc = "Contains pills used to deal with depression. They appear to be prescribed to Lister Black" @@ -272,7 +306,7 @@ icon = 'custom_items.dmi' icon_state = "odysseus_spec_id" -/obj/item/weapon/card/id/fluff/ian_colmid //Roaper: Ian Colm +/obj/item/weapon/card/id/fluff/ian_colm_1 //Roaper: Ian Colm name = "Technician" desc = "An old ID with the words 'Ian Colm's Technician ID' printed on it.." icon = 'custom_items.dmi' @@ -324,6 +358,12 @@ item_state = "bluegloves" color="blue" +/obj/item/clothing/gloves/fluff/chal_appara_1 //furlucis: Chal Appara + name = "Left Black Glove" + desc = "The left one of a pair of black gloves. Wonder where the other one went..." + icon = 'custom_items.dmi' + icon_state = "chal_appara_1" + //////////// Eye Wear //////////// /obj/item/clothing/glasses/meson/fluff/book_berner_1 //asanadas: Book Berner @@ -332,22 +372,19 @@ icon = 'custom_items.dmi' icon_state = "book_berner_1" -/obj/item/clothing/glasses/fluff/serithi_artalis_1 //serithi: Serithi Artalis - name = "extranet HUD" - desc = "A heads-up display with limited connectivity to the NanoTrasen Extranet, capable of displaying information from official NanoTrasen records." +/obj/item/clothing/glasses/fluff/uzenwa_sissra_1 //sparklysheep: Uzenwa Sissra + name = "Scanning Goggles" + desc = "A very oddly shaped pair of goggles with bits of wire poking out the sides. A soft humming sound emanates from it." icon = 'custom_items.dmi' - icon_state = "serithi_artalis_1" + icon_state = "uzenwa_sissra_1" + +/obj/item/clothing/glasses/welding/fluff/ian_colm_2 //roaper: Ian Colm + name = "Ian's Goggles" + desc = "A pair of goggles used in the application of welding." + icon = 'custom_items.dmi' + icon_state = "ian_colm_1" //////////// Hats //////////// -//Removed by request -/* -/obj/item/clothing/head/helmet/hardhat/fluff/greg_anderson_1 //deusdactyl: Greg Anderson - name = "old hard hat" - desc = "An old dented hard hat with the nametag \"Anderson\". It seems to be backwards." - icon_state = "hardhat0_dblue" //Already an in-game sprite - item_state = "hardhat0_dblue" - color = "dblue" -*/ /obj/item/clothing/head/secsoft/fluff/swatcap //deusdactyl: James Girard name = "\improper SWAT hat" @@ -379,12 +416,6 @@ icon = 'custom_items.dmi' icon_state = "taryn_kifer_1" -/obj/item/clothing/head/fluff/enos_adlai_1 //roaper: Enos Adlai - name = "comfy cap" - desc = "Because when you're the toughest Mother Hubbard on the station, nobody's criticizing your fashion sense." - icon = 'custom_items.dmi' - icon_state = "enos_adlai_1" - /obj/item/clothing/head/fluff/edvin_telephosphor_1 //foolamancer: Edvin Telephosphor name = "Edvin's Hat" desc = "A hat specially tailored for Skrellian anatomy. It has a yellow badge on the front, with a large red 'T' inscribed on it." @@ -493,25 +524,31 @@ //////////// Shoes //////////// -/obj/item/clothing/shoes/fluff/leatherboots //serithi: Serithi Artalis - name = "leather boots" - desc = "A pair of leather boots. Well-worn, but still kept in good condition. There is a small \"S\" scratched into the back of each boot." +/obj/item/clothing/shoes/magboots/fluff/susan_harris_1 //sniperyeti: Susan Harris + name = "Susan's Magboots" + desc = "A colorful pair of magboots with the name Susan Harris clearly written on the back." icon = 'custom_items.dmi' - icon_state = "leatherboots" - item_state = "jackboots" + icon_state = "atmosmagboots0" + verb/toggle() + set name = "Toggle Magboots" + set category = "Object" + set src in usr + if(src.magpulse) + src.flags &= ~NOSLIP + src.slowdown = SHOES_SLOWDOWN + src.magpulse = 0 + icon_state = "atmosmagboots0" + usr << "You disable the mag-pulse traction system." + else + src.flags |= NOSLIP + src.slowdown = 2 + src.magpulse = 1 + icon_state = "atmosmagboots1" + usr << "You enable the mag-pulse traction system." //////////// Sets //////////// -////// CDC //deusdactyl: Roger Wiles -//Removed by request. /* -/obj/item/clothing/under/rank/virologist/fluff/cdc_jumpsuit - name = "\improper CDC jumpsuit" - desc = "A modified standard-issue CDC jumpsuit made of a special fiber that gives special protection against biohazards. It has a biohazard symbol sewn into the back." - icon = 'custom_items.dmi' - icon_state = "cdc_jumpsuit" - color = "cdc_jumpsuit" - /obj/item/clothing/suit/labcoat/fluff/cdc_labcoat name = "\improper CDC labcoat" desc = "A standard-issue CDC labcoat that protects against minor chemical spills. It has the name \"Wiles\" sewn on to the breast pocket." diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index dadf5a4a8c5..fbdbbfbfb33 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -821,7 +821,7 @@ /mob/living/carbon/human/proc/morph() set name = "Morph" set category = "Superpower" - + if(stat!=CONSCIOUS) reset_view(0) remoteview_target = null @@ -972,7 +972,7 @@ gloves.germ_level += n else germ_level += n - + /mob/living/carbon/human/revive() for (var/datum/organ/external/O in organs) O.status &= ~ORGAN_BROKEN @@ -1002,7 +1002,7 @@ /mob/living/carbon/human/proc/rupture_lung() var/datum/organ/external/chest/E = get_organ("chest") - + if(E.ruptured_lungs == 0) src.custom_pain("You feel a stabbing pain in your chest!", 1) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index c4a5ab3fa35..0760863943f 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -130,7 +130,7 @@ proc/handle_blood() // take care of blood and blood loss - if(stat < 2) + if(stat < 2 && bodytemperature >= 170) var/blood_volume = round(vessel.get_reagent_amount("blood")) if(blood_volume < 560 && blood_volume) var/datum/reagent/blood/B = locate() in vessel.reagent_list //Grab some blood @@ -187,6 +187,10 @@ var/word = pick("dizzy","woosey","faint") src << "\red You feel extremely [word]" if(0 to 122) + // There currently is a strange bug here. If the mob is not below -100 health + // when death() is called, apparently they will be just fine, and this way it'll + // spam deathgasp. Adjusting toxloss ensures the mob will stay dead. + toxloss += 300 // just to be safe! death() @@ -528,7 +532,7 @@ if(!breath) if(isobj(loc)) var/obj/location_as_object = loc - breath = location_as_object.handle_internal_lifeform(src, BREATH_VOLUME) + breath = location_as_object.handle_internal_lifeform(src, BREATH_MOLES) else if(isturf(loc)) var/breath_moles = 0 /*if(environment.return_pressure() > ONE_ATMOSPHERE) @@ -539,6 +543,13 @@ breath_moles = environment.total_moles()*BREATH_PERCENTAGE breath = loc.remove_air(breath_moles) + + + if(!lung_ruptured) + if(!breath || breath.total_moles < BREATH_MOLES / 5 || breath.total_moles > BREATH_MOLES * 5) + if(prob(5)) + rupture_lung() + // Handle chem smoke effect -- Doohl var/block = 0 if(wear_mask) @@ -566,12 +577,6 @@ var/obj/location_as_object = loc location_as_object.handle_internal_lifeform(src, 0) - - if(!lung_ruptured && breath) - if(breath.total_moles < BREATH_MOLES / 5 || breath.total_moles > BREATH_MOLES * 5) - if(prob(5)) - rupture_lung() - handle_breath(breath) if(breath) diff --git a/code/modules/mob/living/silicon/robot/life.dm b/code/modules/mob/living/silicon/robot/life.dm index aa308f90835..24e0d87c13b 100644 --- a/code/modules/mob/living/silicon/robot/life.dm +++ b/code/modules/mob/living/silicon/robot/life.dm @@ -140,16 +140,16 @@ src.sight |= SEE_MOBS src.sight |= SEE_OBJS src.see_in_dark = 8 - src.see_invisible = SEE_INVISIBLE_LEVEL_TWO + src.see_invisible = SEE_INVISIBLE_MINIMUM else if (src.sight_mode & BORGMESON && src.sight_mode & BORGTHERM) src.sight |= SEE_TURFS src.sight |= SEE_MOBS src.see_in_dark = 8 - src.see_invisible = SEE_INVISIBLE_LEVEL_TWO + src.see_invisible = SEE_INVISIBLE_MINIMUM else if (src.sight_mode & BORGMESON) src.sight |= SEE_TURFS src.see_in_dark = 8 - src.see_invisible = SEE_INVISIBLE_LEVEL_TWO + src.see_invisible = SEE_INVISIBLE_MINIMUM else if (src.sight_mode & BORGTHERM) src.sight |= SEE_MOBS src.see_in_dark = 8 diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 0d8a504c0e3..370a32dc4ff 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -912,4 +912,4 @@ note dizziness decrements automatically in the mob's Life() proc. return "" /mob/proc/flash_weak_pain() - flick("weak_pain",pain) + flick("weak_pain",pain) \ No newline at end of file diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index 068851304c6..407be5f25c1 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -226,4 +226,4 @@ var/has_limbs = 1 //Whether this mob have any limbs he can move with var/can_stand = 1 //Whether this mob have ability to stand - var/immune_to_ssd = 0 + var/immune_to_ssd = 0 \ No newline at end of file diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index 76e4beb0ce6..b8fedc7e04f 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -155,6 +155,9 @@ else if(target != user && !user.restrained() && !user.stat && !user.weakened && !user.stunned && !user.paralysis) msg = "[user.name] stuffs [target.name] into the [src]!" user << "You stuff [target.name] into the [src]!" + log_attack("[user] ([user.ckey]) placed [target] ([target.ckey]) in a disposals unit.") + log_admin("ATTACK: [usr] ([user.ckey]) placed [target] ([target.ckey]) in a disposals unit.") + msg_admin_attack("ATTACK: [user] ([user.ckey]) placed [target] ([target.ckey]) in a disposals unit.") else return if (target.client) diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm index e1ee757c126..f1a5d661bc0 100755 --- a/code/modules/recycling/sortingmachinery.dm +++ b/code/modules/recycling/sortingmachinery.dm @@ -102,13 +102,22 @@ user.attack_log += text("\[[time_stamp()]\] Has used [src.name] on \ref[target]") - if (istype(target, /obj/item) && !(istype(target, /obj/item/weapon/storage))) + if (istype(target, /obj/item)) var/obj/item/O = target if (src.amount > 1) var/obj/item/smallDelivery/P = new /obj/item/smallDelivery(get_turf(O.loc)) //Aaannd wrap it up! if(!istype(O.loc, /turf)) if(user.client) user.client.screen -= O + P.w_class = O.w_class + if(P.w_class <= 1.0) + P.icon_state = "deliverycrate1" + else if (P.w_class <= 2.0) + P.icon_state = "deliverycrate2" + else if (P.w_class <= 3.0) + P.icon_state = "deliverycrate3" + else + P.icon_state = "deliverycrate4" P.wrapped = O O.loc = P P.add_fingerprint(usr) diff --git a/code/setup.dm b/code/setup.dm index f7935d741d5..0fe085d5a6b 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -19,9 +19,9 @@ #define MOLES_PLASMA_VISIBLE 0.7 //Moles in a standard cell after which plasma is visible #define MIN_PLASMA_DAMAGE 20 -#define BREATH_VOLUME 5 //liters in a normal breath +#define BREATH_VOLUME 0.5 //liters in a normal breath #define BREATH_MOLES (ONE_ATMOSPHERE * BREATH_VOLUME /(T20C*R_IDEAL_GAS_EQUATION)) -#define BREATH_PERCENTAGE BREATH_MOLES/MOLES_CELLSTANDARD +#define BREATH_PERCENTAGE BREATH_VOLUME/CELL_VOLUME //Amount of air to take a from a tile #define HUMAN_NEEDED_OXYGEN MOLES_CELLSTANDARD*BREATH_PERCENTAGE*0.16 //Amount of air needed before pass out/suffocation commences diff --git a/code/world.dm b/code/world.dm index 917ccc1d3cc..af1b8e32c02 100644 --- a/code/world.dm +++ b/code/world.dm @@ -147,6 +147,8 @@ Starting up. [time2text(world.timeofday, "hh:mm.ss")] if(revdata) s["revision"] = revdata.revision s["admins"] = admins + s["end"] = "end" + return list2params(s) diff --git a/config/custom_items.txt b/config/custom_items.txt index c5a4c37f99a..e2203141e65 100644 --- a/config/custom_items.txt +++ b/config/custom_items.txt @@ -18,6 +18,7 @@ fniff: Sarah Calvera: /obj/item/fluff/sarah_calvera_1 fniff: Angleo Wilkerson: /obj/item/fluff/angelo_wilkerson_1 foolamancer: Edvin Telephosphor: /obj/item/clothing/head/fluff/edvin_telephosphor_1 furohman: Fay Sullivan: /obj/item/weapon/lighter/zippo/fluff/fay_sullivan_1 +furlucis: Chal Appara: /obj/item/clothing/gloves/fluff/chal_appara_1 gvazdas: Sarah Carbrokes: /obj/item/fluff/sarah_carbrokes_1 jamini: Edwin Atweeke: /obj/item/clothing/suit/labcoat/fluff/burnt kirbyelder: John McKeever: /obj/item/paper/fluff/john_mckeever_1 @@ -26,23 +27,31 @@ lexusjjss: Lexus Langg: /obj/item/weapon/clipboard/fluff/smallnote, /obj/item/we lexusjjss: Zachary Tomlinson: /obj/item/weapon/clipboard/fluff/smallnote, /obj/item/weapon/reagent_containers/food/drinks/flask/fluff/shinyflask madmalicemccrea: Alice McCrea: /obj/item/clothing/head/welding/fluff/alice_mccrea_1 mangled: Li Matsuda: /obj/item/weapon/lighter/zippo/fluff/li_matsuda_1 +maximumbob: Maurice Bedford: /obj/item/fluff/maurice_bedford_1 +mcgulliver: Wox Derax: /obj/item/weapon/reagent_containers/food/drinks/flask/fluff/lithiumflask +misterbook: Smoke Perkins: /obj/item/clothing/mask/cigarette/pipe misterfox: Rashid Siraj: /obj/item/weapon/storage/bible/tajaran morrinn: Maye Day: /obj/item/weapon/storage/fluff/maye_daye_1 +naples: Russell Vierson: /obj/item/weapon/lighter/zippo/fluff/naples_1 nerezza: Asher Spock: /obj/item/weapon/reagent_containers/hypospray/fluff/asher_spock_1 nerezza: Asher Spock: /obj/item/weapon/card/id/fluff/asher_spock_2 orangebottle: Lillian Levett: /obj/item/weapon/pen/fluff/fancypen orangebottle: Lilliana Reade: /obj/item/weapon/pen/fluff/fancypen +paththegreat: Eli Stevens: /obj/item/weapon/pen/fluff/fountainpen phaux: Tian Krieger: /obj/item/clothing/under/fluff/tian_dress rawrtaicho: Riley Rohtin: /obj/item/weapon/lighter/zippo/fluff/riley_rohtin_1 -roaper: Enos Adlai: /obj/item/clothing/head/fluff/enos_adlai_1 +roaper: Ian Colm: /obj/item/weapon/card/id/fluff/ian_colm_1 +roaper: Ian Colm: /obj/item/clothing/glasses/welding/fluff/ian_colm_2 +rukral: Nashida Bisha'ra: /obj/item/weapon/reagent_containers/glass/beaker/large/fluff/nashida_bishara_1 searif: Yuki Matsuda: /obj/item/clothing/under/fluff/jumpsuitdown, /obj/item/clothing/head/welding/fluff/yuki_matsuda_1 searif: Ara Al-Jazari: /obj/item/clothing/under/rank/bartender/fluff/classy -serithi: Serithi Artalis: /obj/item/clothing/glasses/fluff/serithi_artalis_1, /obj/item/clothing/shoes/fluff/leatherboots sirribbit: /obj/item/weapon/clipboard/fluff/mcreary_journal sicktrigger: David Fanning: /obj/item/fluff/david_fanning_1 silentthunder: Val McNeil: /obj/item/fluff/val_mcneil_1 +sniperyeti: Susan Harris: /obj/item/clothing/shoes/magboots/fluff/susan_harris_1 spaceman96: Trenna Seber: /obj/item/weapon/pen/fluff/multi, /obj/item/clothing/suit/labcoat/fluff/pink sparklysheep: Cado Keppel: /obj/item/weapon/fluff/cado_keppel_1 +sparklysheep: Uzenwa Sissra: /obj/item/clothing/glasses/fluff/uzenwa_sissra_1 staghorn: Mara Kilpatrick: /obj/item/clothing/mask/mara_kilpatrick_1 tastyfish: Cindy Robertson: /obj/item/weapon/wrapping_paper thatoneguy: Hugo Cinderbatch: /obj/item/weapon/fluff/hugo_cinderbacth_1 @@ -53,5 +62,3 @@ tzefa: Wes Solari: /obj/item/fluff/wes_solari_1 vinceluk: Seth Sealis: /obj/item/clothing/suit/det_suit/fluff/graycoat whitellama: Ethan Way: /obj/item/fluff/ethan_way_1 whitewolf41: Jeremy Wolf: /obj/item/clothing/under/rank/security/fluff/jeremy_wolf_1 -roaper: Ian Colm: /obj/item/weapon/card/id/fluff/ian_colmid - diff --git a/html/changelog.html b/html/changelog.html index 34a0e782a7f..1c8f86afc98 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -56,6 +56,14 @@ Stuff which is in development and not yet visible to players or just code relate should be listed in the changelog upon commit though. Thanks. --> +
    +

    23.11.12

    +

    CIB updated:

    + +
    +

    14.11.12

    Chinsky updated:

    diff --git a/icons/mob/eyes.dmi b/icons/mob/eyes.dmi index 6ca6ae26303..1a5f94e5d5a 100644 Binary files a/icons/mob/eyes.dmi and b/icons/mob/eyes.dmi differ diff --git a/icons/mob/feet.dmi b/icons/mob/feet.dmi index b7b7b3fdf8b..e254e60ad90 100644 Binary files a/icons/mob/feet.dmi and b/icons/mob/feet.dmi differ diff --git a/icons/mob/hands.dmi b/icons/mob/hands.dmi index 76c6dec6e9e..3ffb14d0b01 100644 Binary files a/icons/mob/hands.dmi and b/icons/mob/hands.dmi differ diff --git a/icons/obj/custom_items.dmi b/icons/obj/custom_items.dmi index 68f2fb1bfc8..7ecb7dd33c7 100644 Binary files a/icons/obj/custom_items.dmi and b/icons/obj/custom_items.dmi differ diff --git a/maps/tgstation.2.0.9.1.dmm b/maps/tgstation.2.0.9.1.dmm index fa142092615..c6f444dd29b 100644 --- a/maps/tgstation.2.0.9.1.dmm +++ b/maps/tgstation.2.0.9.1.dmm @@ -1036,7 +1036,7 @@ "atV" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/storage/tech) "atW" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable,/turf/simulated/floor/plating,/area/storage/tech) "atX" = (/obj/effect/sign/securearea,/turf/simulated/wall/r_wall,/area/storage/tech) -"atY" = (/obj/machinery/door/airlock/highsecurity{name = "High Tech Storage"; req_access_txt = "19;23"},/turf/simulated/floor/plating,/area/storage/tech) +"atY" = (/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"; dir = 2},/area/shuttle/research/station) "atZ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable,/turf/simulated/floor/plating,/area/storage/tech) "aua" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/storage/tech) "aub" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plating,/area/maintenance/fpmaint) @@ -2630,7 +2630,7 @@ "aYD" = (/obj/machinery/door/firedoor/border_only{dir = 8},/turf/simulated/floor,/area/hallway/secondary/exit) "aYE" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/hallway/secondary/exit) "aYF" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/hallway/secondary/exit) -"aYG" = (/turf/space,/area/shuttle/research/station) +"aYG" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/research/station) "aYH" = (/turf/space,/area/shuttle/specops/station) "aYI" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/hallway/secondary/entry) "aYJ" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor,/area/hallway/secondary/entry) @@ -8441,7 +8441,7 @@ "dgq" = (/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/anomaly/outpost) "dgr" = (/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/anomaly/outpost) "dgs" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/atmospherics/pipe/simple{dir = 6},/turf/simulated/floor,/area/anomaly/outpost) -"dgt" = (/obj/machinery/door/airlock/maintenance{name = "Research Outpost Maintenance"; req_access_txt = "54"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/space,/area/anomaly/outpost) +"dgt" = (/obj/machinery/door/airlock/maintenance{name = "Research Outpost Maintenance"; req_access_txt = "54"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating,/area/anomaly/outpost) "dgu" = (/obj/item/weapon/storage/lightbox/bulbs,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plating,/area/anomaly/outpost) "dgv" = (/obj/machinery/power/smes,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/anomaly/outpost) "dgw" = (/obj/effect/alien/weeds,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned) @@ -8967,7 +8967,21 @@ "dqw" = (/obj/machinery/conveyor{dir = 8; id = "mining_internal"},/obj/machinery/mineral/output,/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/production) "dqx" = (/obj/machinery/mineral/stacking_machine,/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/production) "dqy" = (/obj/machinery/conveyor{tag = "icon-conveyor0 (SOUTHWEST)"; icon_state = "conveyor0"; dir = 10; id = "mining_internal"},/obj/machinery/mineral/input,/turf/simulated/floor{dir = 8; icon_state = "loadingarea"; tag = "loading"},/area/mine/production) - +"dqz" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/research/station) +"dqA" = (/obj/structure/window/reinforced,/obj/structure/closet/crate,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/research/station) +"dqB" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s6"; icon_state = "swall_s6"; dir = 2},/area/shuttle/research/station) +"dqC" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s10"; icon_state = "swall_s10"; dir = 2},/area/shuttle/research/station) +"dqD" = (/turf/simulated/shuttle/wall{tag = "icon-swall12"; icon_state = "swall12"; dir = 2},/area/shuttle/research/station) +"dqE" = (/obj/structure/shuttle/window,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/research/station) +"dqF" = (/obj/machinery/door/airlock/highsecurity{name = "High Tech Storage"; req_access_txt = "19"},/turf/simulated/floor/plating,/area/storage/tech) +"dqG" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s5"; icon_state = "swall_s5"; dir = 2},/area/shuttle/research/station) +"dqH" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/shuttle/floor,/area/shuttle/research/station) +"dqI" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s9"; icon_state = "swall_s9"; dir = 2},/area/shuttle/research/station) +"dqJ" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/ore_box,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/research/station) +"dqK" = (/obj/structure/shuttle/engine/propulsion/burst{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/research/station) +"dqL" = (/obj/machinery/computer/research_shuttle,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/research/station) +"dqM" = (/obj/structure/shuttle/engine/heater{tag = "icon-heater (WEST)"; icon_state = "heater"; dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/research/station) + (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -9071,7 +9085,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaraarbarcardaraarearfargaraapFapFapFarhariarjarkarlaqpaaaaaaajXaaaamIamIamIamIamIaafamraafamIamIamIamIamIaaaajlaaaaaaaaaaaaaaaaaaaaaaaaarmarmarnarmarmaaaaaaaafaafaagaagaagaroarparoanTarqarrarsaorartaruarvanVanUanZanZarwarxaryarzarAarBarCarDajUarEarFaqHarFapVaqJaqKapVapVarGapVapVapVarHapVapxarIarJarKarLarMarNaqUarOarPapzapzapzapzapzarQarRarSarTaaaaaaajmaaaaafaaaaafaafaaaaaaamkaaaaaaaafaaaaaaaafaaaajlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaraarUarVarWaraarUarVarWaraarXarYarZarZarZarZasaasbaoYaaaaaaajlaaaaafaaaaafaafaaaaaaascaaaaaaaafaaaaaaaafaaaajlaafaaaaaaaaaaaaaaaaaaaaaasdaseasfasgasdaaaaaaaafaafaagaagaagamvamvamvamvashasiasjasjaskasjasjasjaslasmasnasoasnaspasqasramSassairastapnasuaqHasvapVaswasxasyaszasAasAasBasCasAasDasEasFarJasGasHasIasJasKasLasMapzapzapzapzapzasMasNasOasPaaaaaaajmajmajlaaaaaaaafaaaaaaamkaaaaafaafaafaafajlajlajlaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaqmaraasQasRaqmaraasQasRaqmaqpasSaqpaqpaqpaqpaqpasTapGaaaaaaajlajlajlaaaaaaaafaaaasUasVasUaafaafaafaafajlajlajlaafaafaaaaaaaafaaaaaaaaaasWasXasYasZataaaaamvamvatbatcatdamvamvateatfatgathatiatiatiatjatiatiatkatlatiatiatmatnatnatoatpatqatranpatsaqEattatuaqHatvaqJatwatwatxatyatzatAatxatwatwatBatCatDasGasHasIasJasKatEatFapzapzapzapzapzatFatGasOasPaaaaaaaaaaaaaafaafaaaaafaaaaaaatHaaaaaaaafaaaaaaaafaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatIatJatJatJatKatLatJatJatMatNatOatPatPatPatPaqpatQapGaaaaafaafaaaaaaaaaaaaaafaaaatRatSatTaafaaaaafaaaaaaaaaaaaaaaaafaafaaaaafaafatUatVatWatXatYatXatZauaatUaubaucaucaucaucaucaucaudaueaufaugaugaugauhaugaugaugaugaugaugaugaugaugaugauiaujaukaulaumarEapVapVapVapVaunauoatwatxatzaupatzauqaurausautauuaqRauvauwauxauyauzauAauBapzapzapzapzapzauCauDauEauFaaaaaaaaaaaaaaaaafaaaaafaaaauGauHauGaaaaafaaaaaaaafaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatIatJatJatJatKatLatJatJatMatNatOatPatPatPatPaqpatQapGaaaaafaafaaaaaaaaaaaaaafaaaatRatSatTaafaaaaafaaaaaaaaaaaaaaaaafaafaaaaafaafatUatVatWatXdqFatXatZauaatUaubaucaucaucaucaucaucaudaueaufaugaugaugauhaugaugaugaugaugaugaugaugaugaugauiaujaukaulaumarEapVapVapVapVaunauoatwatxatzaupatzauqaurausautauuaqRauvauwauxauyauzauAauBapzapzapzapzapzauCauDauEauFaaaaaaaaaaaaaaaaafaaaaafaaaauGauHauGaaaaafaaaaaaaafaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauIauJatPauKauLatPatPauMauKatPauNauOauPauPauQaqpatQauRaafaafaaaaaaaaaaaaaaaaafauSauTauUauVauWaaaaafaaaaaaaaaaaaaqpaqpaqpaqpaqpaqpatUauXauYauZavaavbavcavdatUaveavfavfavfavfavfavfavfavgavhaugaviavjavkavlavmavnavoavpavqavravsavtaugavuamSavvairavwapnasuarFavxapVaqJavyavzausausavAavBavCavDavEasEavFavGavHavIavJavKavLavMavNapzapzapzapzapzavOapxapxapxaaaaaaaaaaaaaafaafaafaafaaaavPavQavRaaaaafaaaaaaaafaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaraatIavSatIavTatPatPavUatIavSatIavVauJauLavWaqpavXaqpaqpavYaqsaqsaqsaqsaqtaqpavZawaawbawcavZaqpaqpavYaqsawdaqpaqparlaweawfapFawgatUavaavaavaawhavaawiavaatUaveavfawjawkawlawmawjavfavganrawnawoawpawqawrawsawsawtawuawvawwawwawxawyavuamSawzairawAaqEaqFaqHaqHawBaqJawCawDavDawEawFawGawHawHawIawHapxawJawKawLawMawNawOapxawPapzapzapzapzapzawPapxaafaaaaaaaaaaaaaaaaafaafaaaaafawQawRawSawTawUaafaaaaaaaafaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafawVaqmawWarVawXawYawZaxaaxbawXarVaxcaxdaqmaxeaxfaqpaxgaxhaxhaxhaxhaxhaxhasbaxiaxjavZaxkaxlaxmavZaxnapFapFapFapFapFapFapFapFapFapFapFatUaxoavaaxpaxqaxraxsaxtatUaveavfawjaxuaxvaxwawjavfavgaxxaugaxyaxzaxAaxBawwaxCaxDaxEaxFawwawwaxGaxHavuamSaxIairawAapRarFaqHarFapVaswaxJawHawHawHawHawHawHaxKaxLaxMawHapxapxapxapxaxNapxapxawPapzapzapzapzapzawPapxaaaaaaaaaaaaaaeaaaaaaaaaaaaaafaxOaxPaxQaxRaxOaafaaaaaaaafaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -9094,11 +9108,11 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXavSarVavSatPaTAaPQaTBaTCaTDaTDaTDaTCaTEaTFaPOaTGaTHaTIaTJaTKaTKaTKaTLaTKaTMaTNaTOaTPaTQaTQaTRaNsaTSaTTaTUaTVaTWaTXaTYaTZaUaaUbaUcaUdaUeaUfaUfaUfaUgaMfaGdaGdaUhaUiaUjaUkaUlaUmaUnaUoaUpaUqaUraMkaMkaMkaMkaMkaMkaUsaUtaUuaUvaSZaUwaUxaMkaUmaUlaUyaUzaUiaLkaGdaGdaPfaKqaUAaQwaKqaKqaKqaQwaKqaNVaKqaJnaJnaKqaKqaUBaUCaUDaPoaPoaPoaUEaUFaUGaGwaUHaUIaOiaUJaUJaUKaUIaULaGAaUMaUNaTvaTwaFhaMQaPEaPEaPEaPEaPEaMRaUOaUPaUQaURaUSaUTaUSaUUaOwaafaafaaaaGLaGLaGLaGLaGLaGLaGLaGLaGLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaUVaUWaSkavTaUXaUYaUZaVaaUZaVbaTCaTCaVcaTDaPOaVdaVeaTIaTJaVfaVgaVhaViaTKaVjaVkaVlaLUaVmaVnaVoaVpaLUaVqaVraVsaVsaVsaVsaVtaVsaVuaVvaVwaVvaVvaVxaVvaVyaVuaGdaGdaVzaVAaVBaVBaVBaVBaVCaVDaVEaVDaVDaVFaVFaVFaVFaVFaVGaVHaVHaVIaVJaVKaVLaVKaVKaVKaVKaVKaQhaQhaLkaGdaVMaGqaVNaVOaVPaVQaKqaKqaKqaVRaVSaVTaKqaVUaVVaVWaGwaGwaGwaVXaVYaVYaVYaGwaGwaGwaVZaOiaOiaWaaWbaWcaWdaKzaGAaWeaUNaTvaLLaWfaOmaOnaPDaPEaPDaOmaOnaWgaFjaWhaOsaOsaOsaOsaWiaOwaaaaafaafaGLaGLaGLaGLaGLaGLaGLaGLaGLaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaafauIaWjatMatOaPQaWkaWkaWlaWmaWnaWlaWoaWkaPOaWpaWqaWraWsaWtaWtaWuaWvaWtaWwaVkaWxaLUaVmaVnaWyaWzaLUaVqaVraVsaWAaWBaWBaWBaWCaVuaWDaWEaWFaWGaVuaVuaVuaVuaGdaGdaUhaWHaWIaWJaWKaWLaWMaWNaWOaWPaVDaVFaWQaWRaWSaWTaWUaWVaWWaWXaVKaWYaWZaXaaXbaXcaXdaVKaXeaXeaHraGdaGdaGqaGqaGqaGqaGqaXfaPfaXfaXgaXhaGqaNSaGqaGqaGqaXiaXjaXkaXjaXjaXjaXjaXlaXjaXiaKzaXmaXmaXnaXoaXoaXoaXoaXiaXpaXqaXraXsaXtaXuaXuaXvaXuaXuaXuaXuaXwaXxaXyaOsaOsaOsaOsaXzaPIaMWaMWaShaGLaGLaGLaGLaGLaGLaGLaGLaGLaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawVaqmaXAaxTaSkaraaraaraaraaraaraaXBaXCaPQaPOaPOaPOaPOaPOaPOaPOaPOaPOaXDaNdaTIaTJaVfaXEaXFaXGaTKaXHaXIaXJaLUaVmaVnaXKaXLaLUaVqaVraVsaWBaXMaXMaWBaXMaVuaWDaXNaXOaXOaXPaXQaXRaVuaXSaGdaUhaXTaXUaXVaXWaXWaXWaXWaXXaXYaVDaVFaXZaYaaYbaYcaWQaYdaYeaYfaYgaYhaWZaYiaYjaYkaYlaVKaYmaYnaGcaYoaGdaYpaYqaTvaTvaYraTvaTvaTvaYraTvaYsaTvaTvaYtaTvaYuaTvaYvaTvaTvaTvaTvaTvaTvaYqaTvaTvaTvaTvaTvaTvaTvaTvaYwaYxaYyaYzaYAaYyaYyaYyaYBaYyaYyaYCaTvaYqaYDaOsaOsaOsaOsaOsaYEaQWaYFaQVaQWaGLaGLaGLaGLaGLaGLaGLaGLaGLaafaYGaYGaYGaYGaYGaYGaYGaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYHaYHaYHaYHaYHaYHaYHaYHaYHaYHaaaaafaYIawYauLaYJaYKaYLaYLaYLaYLaYLaYLaYMaYNaLRaSLaNdaTIaTJaTKaTKaYOaYPaTKaLUaLUaYQaLUaVmaYRaXKaYSaLUaVqaVraVsaYTaYUaWBaXMaYVaVuaYWaVuaYXaXOaXOaYYaYZaVuaGdaGdaZaaWHaZbaZcaXWaXWaZdaXWaXXaZeaVDaVFaZfaZgaZhaZhaZhaYdaZiaVFaZjaZkaWZaYiaZlaYhaZmaVKaXeaNQaZnaGdaGdaYpaYqaTvaTvaTvaTvaTvaTvaTvaTvaTvaTvaTvaZoaZpaZpaZqaZraTvaTvaTvaTvaTvaTvaYqaTvaTvaTvaTvaTvaTvaTvaTvaTvaZsaTvaYvaTvaTvaTvaTvaTvaTvaTvaZtaTvaYqaYDaOsaOsaOsaOsaOsaZuaSgaMWaMWaPJaGLaGLaGLaGLaGLaGLaGLaGLaGLaafaYGaYGaYGaYGaYGaYGaYGaafaZvagQagQaZvaafaZvagQagQaZvaafaZvagQagQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYHaYHaYHaYHaYHaYHaYHaYHaYHaYHaYHaSiaSjaSkavTaZwaZxaZyaZyaZzaZyaZyaZyaZAaLRaLRaLRaLRaZBaTJaVfaZCaZDaZEaTKaZFaZGaZHaLUaLUaLUaLUaZIaLUaVqaVraVsaZJaWBaXMaZKaZLaVuaWDaVuaZMaXOaXOaZNaZOaVuaZPaGdaZQaWHaZRaZSaZTaZUaZcaZcaZVaZWaVDaZXaZYaZZaZhbaaaZhaYababbacaZjbadbaeaYhaYhaYhbafbagaXebahbaibajaGdaYpaYqaTvaTvaTvaTvaTvaTvaTvaTvaTvaTvbakbalaTvaTvbambanaTvbakbaobapaTvaTvaYqbaqbarbarbarbarbarbarbasaTvaZsaTvaYvaTvbataTvbakaTvbauaTvbavaTvaYqaYDaOsaOsaOsaOsbawaXzbaxaafaaaaafaGLaGLaGLaGLaGLaGLaGLaGLaGLaafaYGaYGaYGaYGaYGaYGaYGaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaagQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYHaYHaYHaYHaYHaYHaYHaYHaYHaYHaYHavSarVavSatPbayaZybazbaAbaBbaBbaCbaDbaEbaFbaFbaFbaFbaGbaHbaIbaIbaJbaKbaIbaLbaLbaMbaLbaNbaOaRkbaPbaObaQbaRbaSbaTbaUbaUbaVbaWbaXbaYbaZbbaaXOaXOaZNbbbbbcaZPaGdbbdaWHaZcbbebbfbbgbbhaZcbbiaVDaVDaVFbbjbbkbblbbmbbnbbkbboaVFaZjbbpbbqbbrbbsbbtbbubbvbbwbbxbbyaGdbbzbbAbbBbbCbbCbbCbbCbbCbbDbbAbbEbbEbbAbbFbbGbbFbbFbbHbbIbbJbbJbbJbbJbbKbbJbbJbbLbbMbbNbbObbObbMbbNbbPbarbbQbarbbRbarbbSbbTbbUbbUbbUbarbbVbarbbWbbXbbYbbZbbZbcaaLNbcbbccaafaafaafaGLaGLaGLaGLaGLaGLaGLaGLaGLaafaYGaYGaYGaYGaYGaYGaYGaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaZvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYHaYHaYHaYHaYHaYHaYHaYHaYHaYHaYHaUVaUWaSkavTbcdaZybceaZybcfbcgaZyaZyaZyaNdbchaSKaSKbciaTKaVfbcjaXFbckaTKbclbcmaRsaRsbcnbcobcpbcqbcrbcsbctbcubcvbcwbcvbcxbcybczbcAbcBbcCaXOaXObcDbcEbcFaZPaGdbcGaWHbcHaZcbcIbcJaZcaZcbcKaVDaVDaVFbcLbcMbcNbcObcPbcQbcRaVFaZjbcSbcTbcUbcUbcVbcWaVKbcXbcXbcYaGdaGdbcZbdabdabdbbdbbdbbdbbdbbbAbdabdabbAbdcbddbdebbFbdfbdgbdhbdibdjbdkbdkbdlbdmbdnbdobdpbdpbdpbdpbdqbbTbdrbdsbdrbdtbdrbbTbbTbdubdvbbUbdwbdxbdybbUbbUbdzbdAbdBbdzbdzbdCbccaafaaaaafaGLaGLaGLaGLaGLaGLaGLaGLaGLaafaYGaYGaYGaYGaYGaYGaYGaafaafbdDbdDbdDbdDbdDbdDbdDbdDaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawVaqmaXAaxTaSkaraaraaraaraaraaraaXBaXCaPQaPOaPOaPOaPOaPOaPOaPOaPOaPOaXDaNdaTIaTJaVfaXEaXFaXGaTKaXHaXIaXJaLUaVmaVnaXKaXLaLUaVqaVraVsaWBaXMaXMaWBaXMaVuaWDaXNaXOaXOaXPaXQaXRaVuaXSaGdaUhaXTaXUaXVaXWaXWaXWaXWaXXaXYaVDaVFaXZaYaaYbaYcaWQaYdaYeaYfaYgaYhaWZaYiaYjaYkaYlaVKaYmaYnaGcaYoaGdaYpaYqaTvaTvaYraTvaTvaTvaYraTvaYsaTvaTvaYtaTvaYuaTvaYvaTvaTvaTvaTvaTvaTvaYqaTvaTvaTvaTvaTvaTvaTvaTvaYwaYxaYyaYzaYAaYyaYyaYyaYBaYyaYyaYCaTvaYqaYDaOsaOsaOsaOsaOsaYEaQWaYFaQVaQWaGLaGLaGLaGLaGLaGLaGLaGLaGLaafdqBdqDdqEdqDdqEdqDdqCaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYHaYHaYHaYHaYHaYHaYHaYHaYHaYHaaaaafaYIawYauLaYJaYKaYLaYLaYLaYLaYLaYLaYMaYNaLRaSLaNdaTIaTJaTKaTKaYOaYPaTKaLUaLUaYQaLUaVmaYRaXKaYSaLUaVqaVraVsaYTaYUaWBaXMaYVaVuaYWaVuaYXaXOaXOaYYaYZaVuaGdaGdaZaaWHaZbaZcaXWaXWaZdaXWaXXaZeaVDaVFaZfaZgaZhaZhaZhaYdaZiaVFaZjaZkaWZaYiaZlaYhaZmaVKaXeaNQaZnaGdaGdaYpaYqaTvaTvaTvaTvaTvaTvaTvaTvaTvaTvaTvaZoaZpaZpaZqaZraTvaTvaTvaTvaTvaTvaYqaTvaTvaTvaTvaTvaTvaTvaTvaTvaZsaTvaYvaTvaTvaTvaTvaTvaTvaTvaZtaTvaYqaYDaOsaOsaOsaOsaOsaZuaSgaMWaMWaPJaGLaGLaGLaGLaGLaGLaGLaGLaGLaafatYdqAdqzaYGdqzaYGatYaafaZvagQagQaZvaafaZvagQagQaZvaafaZvagQagQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYHaYHaYHaYHaYHaYHaYHaYHaYHaYHaYHaSiaSjaSkavTaZwaZxaZyaZyaZzaZyaZyaZyaZAaLRaLRaLRaLRaZBaTJaVfaZCaZDaZEaTKaZFaZGaZHaLUaLUaLUaLUaZIaLUaVqaVraVsaZJaWBaXMaZKaZLaVuaWDaVuaZMaXOaXOaZNaZOaVuaZPaGdaZQaWHaZRaZSaZTaZUaZcaZcaZVaZWaVDaZXaZYaZZaZhbaaaZhaYababbacaZjbadbaeaYhaYhaYhbafbagaXebahbaibajaGdaYpaYqaTvaTvaTvaTvaTvaTvaTvaTvaTvaTvbakbalaTvaTvbambanaTvbakbaobapaTvaTvaYqbaqbarbarbarbarbarbarbasaTvaZsaTvaYvaTvbataTvbakaTvbauaTvbavaTvaYqaYDaOsaOsaOsaOsbawaXzbaxaafaaaaafaGLaGLaGLaGLaGLaGLaGLaGLaGLaafdqKdqMdqzaYGdqzdqLdqEaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaagQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYHaYHaYHaYHaYHaYHaYHaYHaYHaYHaYHavSarVavSatPbayaZybazbaAbaBbaBbaCbaDbaEbaFbaFbaFbaFbaGbaHbaIbaIbaJbaKbaIbaLbaLbaMbaLbaNbaOaRkbaPbaObaQbaRbaSbaTbaUbaUbaVbaWbaXbaYbaZbbaaXOaXOaZNbbbbbcaZPaGdbbdaWHaZcbbebbfbbgbbhaZcbbiaVDaVDaVFbbjbbkbblbbmbbnbbkbboaVFaZjbbpbbqbbrbbsbbtbbubbvbbwbbxbbyaGdbbzbbAbbBbbCbbCbbCbbCbbCbbDbbAbbEbbEbbAbbFbbGbbFbbFbbHbbIbbJbbJbbJbbJbbKbbJbbJbbLbbMbbNbbObbObbMbbNbbPbarbbQbarbbRbarbbSbbTbbUbbUbbUbarbbVbarbbWbbXbbYbbZbbZbcaaLNbcbbccaafaafaafaGLaGLaGLaGLaGLaGLaGLaGLaGLaafatYdqJdqzaYGaYGaYGatYaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaZvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYHaYHaYHaYHaYHaYHaYHaYHaYHaYHaYHaUVaUWaSkavTbcdaZybceaZybcfbcgaZyaZyaZyaNdbchaSKaSKbciaTKaVfbcjaXFbckaTKbclbcmaRsaRsbcnbcobcpbcqbcrbcsbctbcubcvbcwbcvbcxbcybczbcAbcBbcCaXOaXObcDbcEbcFaZPaGdbcGaWHbcHaZcbcIbcJaZcaZcbcKaVDaVDaVFbcLbcMbcNbcObcPbcQbcRaVFaZjbcSbcTbcUbcUbcVbcWaVKbcXbcXbcYaGdaGdbcZbdabdabdbbdbbdbbdbbdbbbAbdabdabbAbdcbddbdebbFbdfbdgbdhbdibdjbdkbdkbdlbdmbdnbdobdpbdpbdpbdpbdqbbTbdrbdsbdrbdtbdrbbTbbTbdubdvbbUbdwbdxbdybbUbbUbdzbdAbdBbdzbdzbdCbccaafaaaaafaGLaGLaGLaGLaGLaGLaGLaGLaGLaafdqGdqDdqEdqHdqEdqDdqIaafaafbdDbdDbdDbdDbdDbdDbdDbdDaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYHaYHaYHaYHaYHaYHaYHaYHaYHaYHaaaaaaawXaWjatMbdEaZybceaZybdFbdGbdHbdIaZybdJaNdbdKaNdbdLaTKaTKaTKaTKaTKaTKbdMbdNbdOaNdbdPaVsbdQaVsbdRaVsaVsaVsaVsaVsbdSbdRaVsbdTbdUbdVbdWaXOaXOaZNbdXbbcaZPaGdaUhaWHbdYbdZbeabebbbhbecaZVaVDbedbeebefbegaWQbehaWQbeibejbekbelbembenbeobepbeqberaVKbesbcXbetbeubeubevbewbewbdbbexbdbbeybeybbAbdabezbbAbeAbeBbeCbbFbeDbeEbbJbeFbdkbeFbdkbeFbeGbdnbeHbdpbeIbdpbdpbeJbbTbeKbeLbeMbeNbeKbeObbTbePbeQbeRbeSbeTbeSbeUbbUbeVbeWbeXbeYbdzbdCbccaafaaaaafaGLaGLaGLaGLaGLaGLaGLaGLaGLaafbeZbfabfbbfcbfdbfebdDbdDbdDbdDbffbfgbfhbfibfjbfhbdDaafaaaaaaaZvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawVaqmaXAaxTaUWaPLaPLaPLaPLbfkavTatPatPaZybflbfmbfnbdHbfobfpbfqbfrbfrbfrbfrbfsbftbftbftbcsbcsbcsbfubfvbfvbfvbfwaVsbfxbfybfzbfAbfBbfCbfDbfCbfCbfEbfFbfGbfHbfIbfJbfKbfLbfMbaXbaXbfNbfObfPbfQbfRbfRbfRbfRbfRbfSbfTbfUbfQbekbekbekbekbfVbekbekbekbekbfWaYgbfXaVKaZjbfYaVKaVKbcXbcXbfZaGdaGdbgabgbbgbbgcbdbbdbbdbbgdbbAbdabdabbAbgebeBbgfbbFbggbeEbbJbeFbdkbeFbdkbeFbghbdnbgibgjbgkbgkbgkbgkbglbgmbgnbgobgpbgqbgrbglbgsbgtbgubgvbgwbeSbgxbbUbgybeWbgzbgAbdzbdCbccbccaafaafajmaGLaGLaGLaGLaGLaGLaGLajmaafbgBbgCbgCbgDbgCbfebgEbgFbgEbdDbgGbgHbgIbgIbgIbgIbdDaafaaaaaaagQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgJbgKarVavSatJatJatMatPatPaZybgLbgMbdHbgNaZyaZyaZyaLRbgObgPbgQbgRbgQbgQbgQbgRbgQaLRaLRaVsaVsaVsbgSaVsbgTbfCbgUbfCbfCbfCbgVbgWbgXbgXbgYbgZbhabhbbhbbhbbhcbhdbhebhfbhgbhhbhibhjbhkbhkbhlbhmbhnbhobhpbhobhqbhrbhsbhtbhubhvbhwbhtbhxbhrbhybhzbhAbhBbhCbhDbhEbhFbhFbhGbfZaGdaGdbhHbhIbhIbdbbhJbdabhKbdbbhLbdbbhMbbAbhNbhObhPbbFbhQbeEbbJbeFbdkbeFbdkbeFbeGbdnbhRbhSbhTbhUbdpbhVbhWbhXbhYbhYbhZbiabibbicbidbiebifbigbihbeSbiibbUbijbikbgzbilbimbdCbinbccaaaaafajmajmajmajmajmajmajmajmajmaafbiobgCbipbiqbgCbfebirbgEbisbdDbitbgHbiubivbgIbiwbdDaafaaaaaaagQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -10515,3 +10529,4 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa "} +