Merge branch 'bleeding-edge-freeze' of https://github.com/Baystation12/Baystation12 into bs12_with_tgport

Conflicts:
	baystation12.dme
	code/defines/procs/global_lists.dm
	code/game/gamemodes/events.dm
	code/game/gamemodes/events/space_ninja.dm
	code/game/mecha/working/ripley.dm
	code/modules/mob/living/carbon/human/human_attackalien.dm
	code/modules/mob/living/carbon/human/life.dm
	code/modules/mob/new_player/preferences.dm
	icons/mob/items_lefthand.dmi
	icons/mob/items_righthand.dmi
	icons/mob/mask.dmi

Signed-off-by: Cael_Aislinn <cael_aislinn@yahoo.com.au>
This commit is contained in:
Cael_Aislinn
2012-12-29 13:06:03 +10:00
81 changed files with 8088 additions and 446 deletions

View File

@@ -38,6 +38,7 @@
#define FILE_DIR "sound/AI" #define FILE_DIR "sound/AI"
#define FILE_DIR "sound/ambience" #define FILE_DIR "sound/ambience"
#define FILE_DIR "sound/effects" #define FILE_DIR "sound/effects"
#define FILE_DIR "sound/effects/wind"
#define FILE_DIR "sound/hallucinations" #define FILE_DIR "sound/hallucinations"
#define FILE_DIR "sound/items" #define FILE_DIR "sound/items"
#define FILE_DIR "sound/machines" #define FILE_DIR "sound/machines"
@@ -188,7 +189,7 @@
#include "code\defines\procs\captain_announce.dm" #include "code\defines\procs\captain_announce.dm"
#include "code\defines\procs\command_alert.dm" #include "code\defines\procs\command_alert.dm"
#include "code\defines\procs\dbcore.dm" #include "code\defines\procs\dbcore.dm"
#include "code\defines\procs\statistics.dm" #include "code\defines\procs\sd_Alert.dm"
#include "code\game\asteroid.dm" #include "code\game\asteroid.dm"
#include "code\game\atoms.dm" #include "code\game\atoms.dm"
#include "code\game\atoms_movable.dm" #include "code\game\atoms_movable.dm"
@@ -428,6 +429,7 @@
#include "code\game\objects\weapons.dm" #include "code\game\objects\weapons.dm"
#include "code\game\objects\closets\walllocker.dm" #include "code\game\objects\closets\walllocker.dm"
#include "code\game\objects\effects\aliens.dm" #include "code\game\objects\effects\aliens.dm"
#include "code\game\objects\effects\barsign.dm"
#include "code\game\objects\effects\biomass_rift.dm" #include "code\game\objects\effects\biomass_rift.dm"
#include "code\game\objects\effects\bump_teleporter.dm" #include "code\game\objects\effects\bump_teleporter.dm"
#include "code\game\objects\effects\effect_system.dm" #include "code\game\objects\effects\effect_system.dm"

View File

@@ -88,6 +88,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
/datum/surgery_step/generic/cut_open /datum/surgery_step/generic/cut_open
required_tool = /obj/item/weapon/scalpel required_tool = /obj/item/weapon/scalpel
allowed_tools = list(/obj/item/weapon/shard, /obj/item/weapon/kitchenknife)
min_duration = 90 min_duration = 90
max_duration = 110 max_duration = 110
@@ -116,9 +117,12 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
user.visible_message("\red [user]'s hand slips, slicing open [target]'s [affected.display_name] in a wrong spot with \the [tool]!", \ user.visible_message("\red [user]'s hand slips, slicing open [target]'s [affected.display_name] in a wrong spot with \the [tool]!", \
"\red Your hand slips, slicing open [target]'s [affected.display_name] in a wrong spot with \the [tool]!") "\red Your hand slips, slicing open [target]'s [affected.display_name] in a wrong spot with \the [tool]!")
affected.createwound(CUT, 10) affected.createwound(CUT, 10)
if (ishuman(user))
user:bloody_hands(target, 0)
/datum/surgery_step/generic/clamp_bleeders /datum/surgery_step/generic/clamp_bleeders
required_tool = /obj/item/weapon/hemostat required_tool = /obj/item/weapon/hemostat
allowed_tools = list(/obj/item/weapon/cable_coil, /obj/item/weapon/mousetrap)
min_duration = 40 min_duration = 40
max_duration = 60 max_duration = 60
@@ -145,9 +149,12 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
user.visible_message("\red [user]'s hand slips, tearing blood vessals and causing massive bleeding in [target]'s [affected.display_name] with the \[tool]!", \ user.visible_message("\red [user]'s hand slips, tearing blood vessals and causing massive bleeding in [target]'s [affected.display_name] with the \[tool]!", \
"\red Your hand slips, tearing blood vessels and causing massive bleeding in [target]'s [affected.display_name] with \the [tool]!",) "\red Your hand slips, tearing blood vessels and causing massive bleeding in [target]'s [affected.display_name] with \the [tool]!",)
affected.createwound(CUT, 10) affected.createwound(CUT, 10)
if (ishuman(user))
user:bloody_hands(target, 0)
/datum/surgery_step/generic/retract_skin /datum/surgery_step/generic/retract_skin
required_tool = /obj/item/weapon/retractor required_tool = /obj/item/weapon/retractor
allowed_tools = list(/obj/item/weapon/kitchen/utensil/fork)
min_duration = 30 min_duration = 30
max_duration = 40 max_duration = 40
@@ -181,6 +188,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
user.visible_message(msg, self_msg) user.visible_message(msg, self_msg)
affected.open = 2 affected.open = 2
spread_germs_to_organ(affected, user) spread_germs_to_organ(affected, user)
if (prob(40)) user:bloody_hands(target, 0)
fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/datum/organ/external/affected = target.get_organ(target_zone) var/datum/organ/external/affected = target.get_organ(target_zone)
@@ -197,6 +205,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
/datum/surgery_step/generic/cauterize /datum/surgery_step/generic/cauterize
required_tool = /obj/item/weapon/cautery required_tool = /obj/item/weapon/cautery
allowed_tools = list(/obj/item/weapon/weldingtool, /obj/item/clothing/mask/cigarette, /obj/item/weapon/lighter)
min_duration = 70 min_duration = 70
max_duration = 100 max_duration = 100
@@ -242,6 +251,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
/datum/surgery_step/appendectomy/cut_appendix /datum/surgery_step/appendectomy/cut_appendix
required_tool = /obj/item/weapon/scalpel required_tool = /obj/item/weapon/scalpel
allowed_tools = list(/obj/item/weapon/shard, /obj/item/weapon/kitchenknife)
min_duration = 70 min_duration = 70
max_duration = 90 max_duration = 90
@@ -258,15 +268,19 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
user.visible_message("\blue [user] has separated [target]'s appendix with \the [tool]." , \ user.visible_message("\blue [user] has separated [target]'s appendix with \the [tool]." , \
"\blue You have separated [target]'s appendix with \the [tool].") "\blue You have separated [target]'s appendix with \the [tool].")
target.op_stage.appendix = 1 target.op_stage.appendix = 1
if (ishuman(user) && prob(40)) user:bloody_hands(target, 0)
fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/datum/organ/external/groin = target.get_organ("groin") var/datum/organ/external/groin = target.get_organ("groin")
user.visible_message("\red [user]'s hand slips, slicing an artery inside [target]'s abdomen with \the [tool]!", \ user.visible_message("\red [user]'s hand slips, slicing an artery inside [target]'s abdomen with \the [tool]!", \
"\red Your hand slips, slicing an artery inside [target]'s abdomen with \the [tool]!") "\red Your hand slips, slicing an artery inside [target]'s abdomen with \the [tool]!")
groin.createwound(CUT, 50) groin.createwound(CUT, 50, 1)
if (ishuman(user))
user:bloody_body(target)
/datum/surgery_step/appendectomy/remove_appendix /datum/surgery_step/appendectomy/remove_appendix
required_tool = /obj/item/weapon/hemostat required_tool = /obj/item/weapon/hemostat
allowed_tools = list(/obj/item/weapon/wirecutters)
min_duration = 60 min_duration = 60
max_duration = 80 max_duration = 80
@@ -292,6 +306,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
else else
new /obj/item/weapon/reagent_containers/food/snacks/appendix(get_turf(target)) new /obj/item/weapon/reagent_containers/food/snacks/appendix(get_turf(target))
target.op_stage.appendix = 2 target.op_stage.appendix = 2
if (ishuman(user) && prob(40)) user:bloody_hands(target, 0)
fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/datum/organ/external/affected = target.get_organ(target_zone) var/datum/organ/external/affected = target.get_organ(target_zone)
@@ -307,6 +322,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
/datum/surgery_step/fix_vein /datum/surgery_step/fix_vein
required_tool = /obj/item/weapon/FixOVein required_tool = /obj/item/weapon/FixOVein
allowed_tools = list(/obj/item/weapon/cable_coil)
min_duration = 70 min_duration = 70
max_duration = 90 max_duration = 90
@@ -335,6 +351,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
for(var/datum/wound/W in affected.wounds) if(W.internal) for(var/datum/wound/W in affected.wounds) if(W.internal)
affected.wounds -= W affected.wounds -= W
affected.update_damages() affected.update_damages()
if (ishuman(user) && prob(40)) user:bloody_hands(target, 0)
fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/datum/organ/external/affected = target.get_organ(target_zone) var/datum/organ/external/affected = target.get_organ(target_zone)
@@ -349,6 +366,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
/datum/surgery_step/glue_bone /datum/surgery_step/glue_bone
required_tool = /obj/item/weapon/bonegel required_tool = /obj/item/weapon/bonegel
allowed_tools = list(/obj/item/weapon/screwdriver)
min_duration = 50 min_duration = 50
max_duration = 60 max_duration = 60
@@ -370,6 +388,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
"\blue You apply some [tool] to [target]'s bone in [affected.display_name] with \the [tool].") "\blue You apply some [tool] to [target]'s bone in [affected.display_name] with \the [tool].")
affected.stage = 1 affected.stage = 1
spread_germs_to_organ(affected, user) spread_germs_to_organ(affected, user)
if (ishuman(user) && prob(80)) user:bloody_hands(target, 0)
fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/datum/organ/external/affected = target.get_organ(target_zone) var/datum/organ/external/affected = target.get_organ(target_zone)
@@ -378,6 +397,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
/datum/surgery_step/set_bone /datum/surgery_step/set_bone
required_tool = /obj/item/weapon/bonesetter required_tool = /obj/item/weapon/bonesetter
allowed_tools = list(/obj/item/weapon/wrench)
min_duration = 60 min_duration = 60
max_duration = 70 max_duration = 70
@@ -413,6 +433,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
/datum/surgery_step/mend_skull /datum/surgery_step/mend_skull
required_tool = /obj/item/weapon/bonesetter required_tool = /obj/item/weapon/bonesetter
allowed_tools = list(/obj/item/weapon/wrench)
min_duration = 60 min_duration = 60
max_duration = 70 max_duration = 70
@@ -442,6 +463,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
/datum/surgery_step/finish_bone /datum/surgery_step/finish_bone
required_tool = /obj/item/weapon/bonegel required_tool = /obj/item/weapon/bonegel
allowed_tools = list(/obj/item/weapon/screwdriver)
min_duration = 50 min_duration = 50
max_duration = 60 max_duration = 60
@@ -464,6 +486,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
affected.stage = 0 affected.stage = 0
affected.perma_injury = 0 affected.perma_injury = 0
spread_germs_to_organ(affected, user) spread_germs_to_organ(affected, user)
if (ishuman(user) && prob(80)) user:bloody_hands(target, 0)
fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/datum/organ/external/affected = target.get_organ(target_zone) var/datum/organ/external/affected = target.get_organ(target_zone)
@@ -485,6 +508,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
/datum/surgery_step/eye/cut_open /datum/surgery_step/eye/cut_open
required_tool = /obj/item/weapon/scalpel required_tool = /obj/item/weapon/scalpel
allowed_tools = list(/obj/item/weapon/shard, /obj/item/weapon/kitchenknife)
min_duration = 90 min_duration = 90
max_duration = 110 max_duration = 110
@@ -509,6 +533,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
/datum/surgery_step/eye/lift_eyes /datum/surgery_step/eye/lift_eyes
required_tool = /obj/item/weapon/retractor required_tool = /obj/item/weapon/retractor
allowed_tools = list(/obj/item/weapon/kitchen/utensil/fork)
min_duration = 30 min_duration = 30
max_duration = 40 max_duration = 40
@@ -533,6 +558,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
/datum/surgery_step/eye/mend_eyes /datum/surgery_step/eye/mend_eyes
required_tool = /obj/item/weapon/hemostat required_tool = /obj/item/weapon/hemostat
allowed_tools = list(/obj/item/weapon/cable_coil, /obj/item/weapon/mousetrap)
min_duration = 80 min_duration = 80
max_duration = 100 max_duration = 100
@@ -557,6 +583,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
/datum/surgery_step/eye/cauterize /datum/surgery_step/eye/cauterize
required_tool = /obj/item/weapon/cautery required_tool = /obj/item/weapon/cautery
allowed_tools = list(/obj/item/weapon/weldingtool, /obj/item/clothing/mask/cigarette, /obj/item/weapon/lighter)
min_duration = 70 min_duration = 70
max_duration = 100 max_duration = 100
@@ -598,6 +625,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
/datum/surgery_step/generic/cut_face /datum/surgery_step/generic/cut_face
required_tool = /obj/item/weapon/scalpel required_tool = /obj/item/weapon/scalpel
allowed_tools = list(/obj/item/weapon/shard, /obj/item/weapon/kitchenknife)
min_duration = 90 min_duration = 90
max_duration = 110 max_duration = 110
@@ -623,6 +651,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
/datum/surgery_step/face/mend_vocal /datum/surgery_step/face/mend_vocal
required_tool = /obj/item/weapon/hemostat required_tool = /obj/item/weapon/hemostat
allowed_tools = list(/obj/item/weapon/cable_coil, /obj/item/weapon/mousetrap)
min_duration = 70 min_duration = 70
max_duration = 90 max_duration = 90
@@ -643,9 +672,13 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
user.visible_message("\red [user]'s hand slips, clamping [target]'s trachea shut for a moment with \the [tool]!", \ user.visible_message("\red [user]'s hand slips, clamping [target]'s trachea shut for a moment with \the [tool]!", \
"\red Your hand slips, clamping [user]'s trachea shut for a moment with \the [tool]!") "\red Your hand slips, clamping [user]'s trachea shut for a moment with \the [tool]!")
target.losebreath += 10 target.losebreath += 10
if (ishuman(user))
user:bloody_body(target)
user:bloody_hands(target, 0)
/datum/surgery_step/face/fix_face /datum/surgery_step/face/fix_face
required_tool = /obj/item/weapon/retractor required_tool = /obj/item/weapon/retractor
allowed_tools = list(/obj/item/weapon/kitchen/utensil/fork)
min_duration = 80 min_duration = 80
max_duration = 100 max_duration = 100
@@ -670,6 +703,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
/datum/surgery_step/face/cauterize /datum/surgery_step/face/cauterize
required_tool = /obj/item/weapon/cautery required_tool = /obj/item/weapon/cautery
allowed_tools = list(/obj/item/weapon/weldingtool, /obj/item/clothing/mask/cigarette, /obj/item/weapon/lighter)
min_duration = 70 min_duration = 70
max_duration = 100 max_duration = 100
@@ -731,6 +765,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
/datum/surgery_step/brain/cut_brain /datum/surgery_step/brain/cut_brain
required_tool = /obj/item/weapon/scalpel required_tool = /obj/item/weapon/scalpel
allowed_tools = list(/obj/item/weapon/shard, /obj/item/weapon/kitchenknife)
min_duration = 80 min_duration = 80
max_duration = 100 max_duration = 100
@@ -750,7 +785,10 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
user.visible_message("\red [user]'s hand slips, cutting a vein in [target]'s brain with \the [tool]!", \ user.visible_message("\red [user]'s hand slips, cutting a vein in [target]'s brain with \the [tool]!", \
"\red Your hand slips, cutting a vein in [target]'s brain with \the [tool]!") "\red Your hand slips, cutting a vein in [target]'s brain with \the [tool]!")
target.apply_damage(50, BRUTE, "head") target.apply_damage(50, BRUTE, "head", 1)
if (ishuman(user))
user:bloody_body(target)
user:bloody_hands(target, 0)
/datum/surgery_step/brain/saw_spine /datum/surgery_step/brain/saw_spine
required_tool = /obj/item/weapon/circular_saw required_tool = /obj/item/weapon/circular_saw
@@ -785,7 +823,10 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
user.visible_message("\red [user]'s hand slips, cutting a vein in [target]'s brain with \the [tool]!", \ user.visible_message("\red [user]'s hand slips, cutting a vein in [target]'s brain with \the [tool]!", \
"\red Your hand slips, cutting a vein in [target]'s brain with \the [tool]!") "\red Your hand slips, cutting a vein in [target]'s brain with \the [tool]!")
target.apply_damage(30, BRUTE, "head") target.apply_damage(30, BRUTE, "head", 1)
if (ishuman(user))
user:bloody_body(target)
user:bloody_hands(target, 0)
////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////
@@ -798,6 +839,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
/datum/surgery_step/metroid/cut_flesh /datum/surgery_step/metroid/cut_flesh
required_tool = /obj/item/weapon/scalpel required_tool = /obj/item/weapon/scalpel
allowed_tools = list(/obj/item/weapon/shard, /obj/item/weapon/kitchenknife)
min_duration = 30 min_duration = 30
max_duration = 50 max_duration = 50
@@ -820,6 +862,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
/datum/surgery_step/metroid/cut_innards /datum/surgery_step/metroid/cut_innards
required_tool = /obj/item/weapon/scalpel required_tool = /obj/item/weapon/scalpel
allowed_tools = list(/obj/item/weapon/shard, /obj/item/weapon/kitchenknife)
min_duration = 30 min_duration = 30
max_duration = 50 max_duration = 50
@@ -887,6 +930,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
/datum/surgery_step/limb/cut /datum/surgery_step/limb/cut
required_tool = /obj/item/weapon/scalpel required_tool = /obj/item/weapon/scalpel
allowed_tools = list(/obj/item/weapon/shard, /obj/item/weapon/kitchenknife)
min_duration = 80 min_duration = 80
max_duration = 100 max_duration = 100
@@ -913,6 +957,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
/datum/surgery_step/limb/mend /datum/surgery_step/limb/mend
required_tool = /obj/item/weapon/retractor required_tool = /obj/item/weapon/retractor
allowed_tools = list(/obj/item/weapon/kitchen/utensil/fork)
min_duration = 80 min_duration = 80
max_duration = 100 max_duration = 100
@@ -943,6 +988,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
/datum/surgery_step/limb/prepare /datum/surgery_step/limb/prepare
required_tool = /obj/item/weapon/cautery required_tool = /obj/item/weapon/cautery
allowed_tools = list(/obj/item/weapon/weldingtool, /obj/item/clothing/mask/cigarette, /obj/item/weapon/lighter)
min_duration = 60 min_duration = 60
max_duration = 70 max_duration = 70
@@ -1045,6 +1091,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
/datum/surgery_step/ribcage/retract_ribcage /datum/surgery_step/ribcage/retract_ribcage
required_tool = /obj/item/weapon/retractor required_tool = /obj/item/weapon/retractor
allowed_tools = list(/obj/item/weapon/crowbar)
min_duration = 30 min_duration = 30
max_duration = 40 max_duration = 40
@@ -1069,6 +1116,9 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
var/datum/organ/external/affected = target.get_organ(target_zone) var/datum/organ/external/affected = target.get_organ(target_zone)
affected.fracture() affected.fracture()
if (ishuman(user))
user:bloody_hands(target, 0)
fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/msg = "\red [user]'s hand slips, breaking [target]'s ribcage!" var/msg = "\red [user]'s hand slips, breaking [target]'s ribcage!"
var/self_msg = "\red Your hand slips, breaking [target]'s ribcage!" var/self_msg = "\red Your hand slips, breaking [target]'s ribcage!"
@@ -1078,6 +1128,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
/datum/surgery_step/ribcage/close_ribcage /datum/surgery_step/ribcage/close_ribcage
required_tool = /obj/item/weapon/retractor required_tool = /obj/item/weapon/retractor
allowed_tools = list(/obj/item/weapon/crowbar)
min_duration = 20 min_duration = 20
max_duration = 40 max_duration = 40
@@ -1151,8 +1202,11 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
for(var/datum/disease/alien_embryo in target.viruses) for(var/datum/disease/alien_embryo in target.viruses)
alien_embryo.cure() alien_embryo.cure()
if (ishuman(user)) user:bloody_hands(target, 0)
/datum/surgery_step/ribcage/fix_lungs /datum/surgery_step/ribcage/fix_lungs
required_tool = /obj/item/weapon/scalpel required_tool = /obj/item/weapon/scalpel
allowed_tools = list(/obj/item/weapon/shard, /obj/item/weapon/kitchenknife)
min_duration = 70 min_duration = 70
max_duration = 90 max_duration = 90
@@ -1170,10 +1224,14 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
user.visible_message("\blue [user] mends the rupture in [target]'s lungs with \the [tool].", \ user.visible_message("\blue [user] mends the rupture in [target]'s lungs with \the [tool].", \
"\blue You mend the rupture in [target]'s lungs with \the [tool]." ) "\blue You mend the rupture in [target]'s lungs with \the [tool]." )
affected.ruptured_lungs = 0 affected.ruptured_lungs = 0
if (ishuman(user) && prob(80)) user:bloody_hands(target, 0)
fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool) fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
var/datum/organ/external/chest/affected = target.get_organ("chest") var/datum/organ/external/chest/affected = target.get_organ("chest")
user.visible_message("\red [user]'s hand slips, slicing an artery inside [target]'s chest with \the [tool]!", \ user.visible_message("\red [user]'s hand slips, slicing an artery inside [target]'s chest with \the [tool]!", \
"\red Your hand slips, slicing an artery inside [target]'s chest with \the [tool]!") "\red Your hand slips, slicing an artery inside [target]'s chest with \the [tool]!")
affected.createwound(CUT, 20) affected.createwound(CUT, 20)
if (ishuman(user))
user:bloody_hands(target, 0)
user:bloody_body(target)

View File

@@ -235,7 +235,6 @@ proc/airborne_can_reach(turf/source, turf/target)
if(prob(1)) if(prob(1))
majormutate() majormutate()
if(mob.reagents.has_reagent("spaceacillin")) if(mob.reagents.has_reagent("spaceacillin"))
mob.reagents.remove_reagent("spaceacillin",0.3)
return return
if(mob.reagents.has_reagent("virusfood")) if(mob.reagents.has_reagent("virusfood"))
mob.reagents.remove_reagent("virusfood",0.1) mob.reagents.remove_reagent("virusfood",0.1)
@@ -599,4 +598,4 @@ proc/airborne_can_reach(turf/source, turf/target)
getrandomeffect_greater() getrandomeffect_greater()
/proc/dprob(var/p) /proc/dprob(var/p)
return(prob(sqrt(p)) && prob(sqrt(p))) return(prob(sqrt(p)) && prob(sqrt(p)))

View File

@@ -133,15 +133,16 @@ proc/Airflow(zone/A, zone/B)
else else
connected_turfs |= C.B connected_turfs |= C.B
//Get lists of things that can be thrown across the room for each zone. //Get lists of things that can be thrown across the room for each zone (assumes air is moving from zone B to zone A)
var/list/pplz = B.movables() var/list/air_sucked = B.movables()
var/list/otherpplz = A.movables() var/list/air_repelled = A.movables()
if(n < 0) if(n < 0)
var/list/temporary_pplz = pplz //air is moving from zone A to zone B
pplz = otherpplz var/list/temporary_pplz = air_sucked
otherpplz = temporary_pplz air_sucked = air_repelled
air_repelled = temporary_pplz
for(var/atom/movable/M in pplz) for(var/atom/movable/M in air_sucked)
if(M.last_airflow > world.time - vsc.airflow_delay) continue if(M.last_airflow > world.time - vsc.airflow_delay) continue
@@ -166,7 +167,7 @@ proc/Airflow(zone/A, zone/B)
spawn M.GotoAirflowDest(abs(n)/5) spawn M.GotoAirflowDest(abs(n)/5)
//Do it again for the stuff in the other zone, making it fly away. //Do it again for the stuff in the other zone, making it fly away.
for(var/atom/movable/M in otherpplz) for(var/atom/movable/M in air_repelled)
if(M.last_airflow > world.time - vsc.airflow_delay) continue if(M.last_airflow > world.time - vsc.airflow_delay) continue
@@ -240,12 +241,15 @@ atom/movable
if(airflow_dest == loc) if(airflow_dest == loc)
step_away(src,loc) step_away(src,loc)
if(ismob(src)) if(ismob(src))
if(src:nodamage) return if(src:nodamage)
return
if(istype(src, /mob/living/carbon/human)) if(istype(src, /mob/living/carbon/human))
if(istype(src, /mob/living/carbon/human)) if(src:buckled)
if(src:buckled) return return
if(src:shoes) if(src:shoes)
if(src:shoes.type == /obj/item/clothing/shoes/magboots && src:shoes.flags & NOSLIP) return if(src:shoes.type == /obj/item/clothing/shoes/magboots)
if(src:shoes.flags & NOSLIP)
return
src << "\red You are sucked away by airflow!" src << "\red You are sucked away by airflow!"
var/airflow_falloff = 9 - ul_FalloffAmount(airflow_dest) //It's a fast falloff calc. Very useful. var/airflow_falloff = 9 - ul_FalloffAmount(airflow_dest) //It's a fast falloff calc. Very useful.
if(airflow_falloff < 1) if(airflow_falloff < 1)
@@ -266,9 +270,15 @@ atom/movable
airflow_speed -= vsc.airflow_speed_decay airflow_speed -= vsc.airflow_speed_decay
if(airflow_speed > 7) if(airflow_speed > 7)
if(airflow_time++ >= airflow_speed - 7) if(airflow_time++ >= airflow_speed - 7)
if(od)
density = 0
sleep(1 * tick_multiplier) sleep(1 * tick_multiplier)
else else
if(od)
density = 0
sleep(max(1,10-(airflow_speed+3)) * tick_multiplier) sleep(max(1,10-(airflow_speed+3)) * tick_multiplier)
if(od)
density = 1
if ((!( src.airflow_dest ) || src.loc == src.airflow_dest)) if ((!( src.airflow_dest ) || src.loc == src.airflow_dest))
src.airflow_dest = locate(min(max(src.x + xo, 1), world.maxx), min(max(src.y + yo, 1), world.maxy), src.z) src.airflow_dest = locate(min(max(src.x + xo, 1), world.maxx), min(max(src.y + yo, 1), world.maxy), src.z)
if ((src.x == 1 || src.x == world.maxx || src.y == 1 || src.y == world.maxy)) if ((src.x == 1 || src.x == world.maxx || src.y == 1 || src.y == world.maxy))
@@ -276,7 +286,8 @@ atom/movable
if(!istype(loc, /turf)) if(!istype(loc, /turf))
return return
step_towards(src, src.airflow_dest) step_towards(src, src.airflow_dest)
if(ismob(src) && src:client) src:client:move_delay = world.time + vsc.airflow_mob_slowdown if(ismob(src) && src:client)
src:client:move_delay = world.time + vsc.airflow_mob_slowdown
airflow_dest = null airflow_dest = null
airflow_speed = 0 airflow_speed = 0
airflow_time = 0 airflow_time = 0
@@ -295,12 +306,15 @@ atom/movable
if(airflow_dest == loc) if(airflow_dest == loc)
step_away(src,loc) step_away(src,loc)
if(ismob(src)) if(ismob(src))
if(src:nodamage) return if(src:nodamage)
return
if(istype(src, /mob/living/carbon/human)) if(istype(src, /mob/living/carbon/human))
if(istype(src, /mob/living/carbon/human)) if(src:buckled)
if(src:buckled) return return
if(src:shoes) if(src:shoes)
if(src:shoes.type == /obj/item/clothing/shoes/magboots && src:shoes.flags & NOSLIP) return if(src:shoes.type == /obj/item/clothing/shoes/magboots)
if(src:shoes.flags & NOSLIP)
return
src << "\red You are pushed away by airflow!" src << "\red You are pushed away by airflow!"
var/airflow_falloff = 9 - ul_FalloffAmount(airflow_dest) //It's a fast falloff calc. Very useful. var/airflow_falloff = 9 - ul_FalloffAmount(airflow_dest) //It's a fast falloff calc. Very useful.
if(airflow_falloff < 1) if(airflow_falloff < 1)
@@ -331,7 +345,8 @@ atom/movable
if(!istype(loc, /turf)) if(!istype(loc, /turf))
return return
step_towards(src, src.airflow_dest) step_towards(src, src.airflow_dest)
if(ismob(src) && src:client) src:client:move_delay = world.time + vsc.airflow_mob_slowdown if(ismob(src) && src:client)
src:client:move_delay = world.time + vsc.airflow_mob_slowdown
airflow_dest = null airflow_dest = null
airflow_speed = 0 airflow_speed = 0
airflow_time = 0 airflow_time = 0

View File

@@ -16,6 +16,9 @@ zone
last_update = 0 last_update = 0
progress = "nothing" progress = "nothing"
// To make sure you're not spammed to death by airflow sound effects
tmp/playsound_cooldown = 0
//CREATION AND DELETION //CREATION AND DELETION
New(turf/start) New(turf/start)
. = ..() . = ..()
@@ -33,7 +36,7 @@ zone
if(!istype(T,/turf/simulated)) if(!istype(T,/turf/simulated))
AddTurf(T) AddTurf(T)
//Generate the gas_mixture for use in this zone by using the average of the gases //Generate the gas_mixture for use in txhis zone by using the average of the gases
//defined at startup. //defined at startup.
air = new air = new
var/members = contents.len var/members = contents.len
@@ -161,6 +164,16 @@ zone/proc/process()
RemoveTurf(T) RemoveTurf(T)
if(unsimulated_tiles) if(unsimulated_tiles)
var/moved_air = ShareSpace(air,unsimulated_tiles) var/moved_air = ShareSpace(air,unsimulated_tiles)
// Only play a sound effect every once in a while
if(playsound_cooldown <= world.time)
// Play a nice sound effect at one of the bordering turfs
playsound_cooldown = world.time + rand(30, 70)
var/turf/random_border = pick(contents)
play_wind_sound(random_border, abs(moved_air))
if(moved_air > vsc.airflow_lightest_pressure) if(moved_air > vsc.airflow_lightest_pressure)
AirflowSpace(src) AirflowSpace(src)
@@ -239,7 +252,17 @@ zone/proc/process()
for(var/zone/Z in connected_zones) for(var/zone/Z in connected_zones)
if(air && Z.air) if(air && Z.air)
//Ensure we're not doing pointless calculations on equilibrium zones. //Ensure we're not doing pointless calculations on equilibrium zones.
if(abs(air.total_moles() - Z.air.total_moles()) > 0.1 || abs(air.temperature - Z.air.temperature) > 0.1) var/moles_delta = abs(air.total_moles() - Z.air.total_moles())
if(moles_delta > 0.1)
// Only play a sound effect every once in a while
if(playsound_cooldown <= world.time)
// Play a nice sound effect at one of the bordering turfs
playsound_cooldown = world.time + rand(30, 70)
var/turf/random_border = pick(contents)
play_wind_sound(random_border, abs(moles_delta))
if(moles_delta > 0.1 || abs(air.temperature - Z.air.temperature) > 0.1)
if(abs(Z.air.return_pressure() - air.return_pressure()) > vsc.airflow_lightest_pressure) if(abs(Z.air.return_pressure() - air.return_pressure()) > vsc.airflow_lightest_pressure)
Airflow(src,Z) Airflow(src,Z)
ShareRatio( air , Z.air , connected_zones[Z] ) ShareRatio( air , Z.air , connected_zones[Z] )
@@ -255,7 +278,7 @@ var/list/sharing_lookup_table = list(0.06, 0.11, 0.15, 0.18, 0.20, 0.21)
proc/ShareRatio(datum/gas_mixture/A, datum/gas_mixture/B, connecting_tiles) proc/ShareRatio(datum/gas_mixture/A, datum/gas_mixture/B, connecting_tiles)
//Shares a specific ratio of gas between mixtures using simple weighted averages. //Shares a specific ratio of gas between mixtures using simple weighted averages.
var var
ratio = 0.21 ratio = 0.50
size = max(1,A.group_multiplier) size = max(1,A.group_multiplier)
share_size = max(1,B.group_multiplier) share_size = max(1,B.group_multiplier)
@@ -281,9 +304,6 @@ proc/ShareRatio(datum/gas_mixture/A, datum/gas_mixture/B, connecting_tiles)
temp_avg = (A.temperature * full_heat_capacity + B.temperature * s_full_heat_capacity) / (full_heat_capacity + s_full_heat_capacity) temp_avg = (A.temperature * full_heat_capacity + B.temperature * s_full_heat_capacity) / (full_heat_capacity + s_full_heat_capacity)
if(sharing_lookup_table.len >= connecting_tiles) //6 or more interconnecting tiles will max at 42% of air moved per tick.
ratio = sharing_lookup_table[connecting_tiles]
A.oxygen = max(0, (A.oxygen - oxy_avg) * (1-ratio) + oxy_avg ) A.oxygen = max(0, (A.oxygen - oxy_avg) * (1-ratio) + oxy_avg )
A.nitrogen = max(0, (A.nitrogen - nit_avg) * (1-ratio) + nit_avg ) A.nitrogen = max(0, (A.nitrogen - nit_avg) * (1-ratio) + nit_avg )
A.carbon_dioxide = max(0, (A.carbon_dioxide - co2_avg) * (1-ratio) + co2_avg ) A.carbon_dioxide = max(0, (A.carbon_dioxide - co2_avg) * (1-ratio) + co2_avg )
@@ -338,37 +358,34 @@ proc/ShareSpace(datum/gas_mixture/A, list/unsimulated_tiles)
unsim_temperature += T.temperature/unsimulated_tiles.len unsim_temperature += T.temperature/unsimulated_tiles.len
var var
ratio = 0.21 // Depressurize very, very fast(it's fine since many rooms are internally multiple zones)
ratio = 0.50
old_pressure = A.return_pressure() old_pressure = A.return_pressure()
size = max(1,A.group_multiplier) size = max(1,A.group_multiplier)
share_size = max(1,unsimulated_tiles.len) share_size = max(1,unsimulated_tiles.len)
full_oxy = A.oxygen * size //full_oxy = A.oxygen * size
full_nitro = A.nitrogen * size //full_nitro = A.nitrogen * size
full_co2 = A.carbon_dioxide * size //full_co2 = A.carbon_dioxide * size
full_plasma = A.toxins * size //full_plasma = A.toxins * size
full_heat_capacity = A.heat_capacity() * size //full_heat_capacity = A.heat_capacity() * size
oxy_avg = (full_oxy + unsim_oxygen) / (size + share_size) oxy_avg = unsim_oxygen//(full_oxy + unsim_oxygen) / (size + share_size)
nit_avg = (full_nitro + unsim_nitrogen) / (size + share_size) nit_avg = unsim_nitrogen//(full_nitro + unsim_nitrogen) / (size + share_size)
co2_avg = (full_co2 + unsim_co2) / (size + share_size) co2_avg = unsim_co2//(full_co2 + unsim_co2) / (size + share_size)
plasma_avg = (full_plasma + unsim_plasma) / (size + share_size) plasma_avg = unsim_plasma//(full_plasma + unsim_plasma) / (size + share_size)
temp_avg = (A.temperature * full_heat_capacity + unsim_temperature * unsim_heat_capacity) / (full_heat_capacity + unsim_heat_capacity)
if(sharing_lookup_table.len >= unsimulated_tiles.len) //6 or more interconnecting tiles will max at 42% of air moved per tick.
ratio = sharing_lookup_table[unsimulated_tiles.len]
ratio *= 2
A.oxygen = max(0, (A.oxygen - oxy_avg) * (1-ratio) + oxy_avg ) A.oxygen = max(0, (A.oxygen - oxy_avg) * (1-ratio) + oxy_avg )
A.nitrogen = max(0, (A.nitrogen - nit_avg) * (1-ratio) + nit_avg ) A.nitrogen = max(0, (A.nitrogen - nit_avg) * (1-ratio) + nit_avg )
A.carbon_dioxide = max(0, (A.carbon_dioxide - co2_avg) * (1-ratio) + co2_avg ) A.carbon_dioxide = max(0, (A.carbon_dioxide - co2_avg) * (1-ratio) + co2_avg )
A.toxins = max(0, (A.toxins - plasma_avg) * (1-ratio) + plasma_avg ) A.toxins = max(0, (A.toxins - plasma_avg) * (1-ratio) + plasma_avg )
A.temperature = max(TCMB, (A.temperature - temp_avg) * (1-ratio) + temp_avg ) // EXPERIMENTAL: Disable space being cold
//A.temperature = max(TCMB, (A.temperature - temp_avg) * (1-ratio) + temp_avg )
for(var/datum/gas/G in A.trace_gases) for(var/datum/gas/G in A.trace_gases)
var/G_avg = (G.moles*size + 0) / (size+share_size) var/G_avg = (G.moles*size + 0) / (size+share_size)
@@ -458,6 +475,21 @@ zone/proc/Rebuild()
if(istype(T) && T.zone && S.CanPass(null, T, 0, 0)) if(istype(T) && T.zone && S.CanPass(null, T, 0, 0))
T.zone.AddTurf(S) T.zone.AddTurf(S)
proc/play_wind_sound(var/turf/random_border, var/n)
if(random_border)
var/windsound = 'sound/effects/wind/wind_2_1.ogg'
switch(n)
if(0 to 30)
windsound = pick('sound/effects/wind/wind_2_1.ogg', 'sound/effects/wind/wind_2_2.ogg')
if(31 to 40)
windsound = pick('sound/effects/wind/wind_3_1.ogg')
if(41 to 60)
windsound = pick('sound/effects/wind/wind_4_1.ogg', 'sound/effects/wind/wind_4_2.ogg')
if(61 to 1000000)
windsound = pick('sound/effects/wind/wind_5_1.ogg')
playsound(random_border, windsound, 50, 1, 1)
//UNUSED //UNUSED
/* /*
zone/proc/connected_zones() zone/proc/connected_zones()
@@ -474,4 +506,4 @@ zone/proc/connected_zones()
.[Z]++ .[Z]++
else else
. += Z . += Z
.[Z] = 1*/ .[Z] = 1*/

View File

@@ -288,6 +288,13 @@ datum/shuttle_controller
if(1) if(1)
// Just before it leaves, close the damn doors!
if(timeleft == 2 || timeleft == 1)
var/area/start_location = locate(/area/shuttle/escape/station)
for(var/obj/machinery/door/D in start_location)
spawn(0)
D.close()
if(timeleft>0) if(timeleft>0)
return 0 return 0

View File

@@ -16,6 +16,7 @@
var/access = null var/access = null
var/hidden = 0 var/hidden = 0
var/contraband = 0 var/contraband = 0
var/group
/datum/supply_packs/New() /datum/supply_packs/New()
manifest += "<ul>" manifest += "<ul>"
@@ -100,7 +101,9 @@
/obj/item/weapon/reagent_containers/food/drinks/beer, /obj/item/weapon/reagent_containers/food/drinks/beer,
/obj/item/weapon/reagent_containers/food/drinks/beer, /obj/item/weapon/reagent_containers/food/drinks/beer,
/obj/item/weapon/reagent_containers/food/drinks/beer, /obj/item/weapon/reagent_containers/food/drinks/beer,
/obj/item/weapon/reagent_containers/food/drinks/beer) /obj/item/weapon/reagent_containers/food/drinks/beer,
/obj/item/weapon/cigpacket/dromedaryco,
/obj/item/weapon/lipstick/random)
cost = 20 cost = 20
containertype = /obj/structure/closet/crate containertype = /obj/structure/closet/crate
containername = "Party equipment" containername = "Party equipment"
@@ -604,14 +607,85 @@
manifest += "Contains any [num_contained] of:" manifest += "Contains any [num_contained] of:"
..() ..()
/datum/supply_packs/artscrafts
name = "Arts and Crafts supplies"
contains = list("/obj/item/weapon/storage/crayonbox",
"/obj/item/weapon/camera_test",
"/obj/item/weapon/camera_film",
"/obj/item/weapon/camera_film",
"/obj/item/weapon/storage/photo_album",
"/obj/item/weapon/packageWrap",
"/obj/item/weapon/reagent_containers/glass/paint/red",
"/obj/item/weapon/reagent_containers/glass/paint/green",
"/obj/item/weapon/reagent_containers/glass/paint/blue",
"/obj/item/weapon/reagent_containers/glass/paint/yellow",
"/obj/item/weapon/reagent_containers/glass/paint/violet",
"/obj/item/weapon/reagent_containers/glass/paint/black",
"/obj/item/weapon/reagent_containers/glass/paint/white",
"/obj/item/weapon/reagent_containers/glass/paint/remover",
"/obj/item/weapon/wrapping_paper",
"/obj/item/weapon/wrapping_paper",
"/obj/item/weapon/wrapping_paper",
"/obj/item/weapon/contraband/poster")
cost = 5
containertype = "/obj/structure/closet/crate"
containername = "Arts and Crafts crate"
/datum/supply_packs/randomised/contraband /datum/supply_packs/randomised/contraband
num_contained = 5 num_contained = 5
contains = list(/obj/item/weapon/contraband/poster, contains = list("/obj/item/seeds/bloodtomatoseed",
/obj/item/weapon/cigpacket/dromedaryco, "/obj/item/weapon/storage/pill_bottle/zoom",
/obj/item/weapon/lipstick/random) "/obj/item/weapon/storage/pill_bottle/happy",
"/obj/item/weapon/reagent_containers/food/drinks/bottle/absinthe")
name = "Contraband crate" name = "Contraband crate"
cost = 30 cost = 30
containertype = /obj/structure/closet/crate containertype = /obj/structure/closet/crate
containername = "Contraband crate" containername = "Unlabeled crate"
contraband = 1 contraband = 1
/datum/supply_packs/boxes
name = "Empty Box supplies"
contains = list("/obj/item/weapon/storage/box",
"/obj/item/weapon/storage/box",
"/obj/item/weapon/storage/box",
"/obj/item/weapon/storage/box",
"/obj/item/weapon/storage/box",
"/obj/item/weapon/storage/box",
"/obj/item/weapon/storage/box",
"/obj/item/weapon/storage/box",
"/obj/item/weapon/storage/box",
"/obj/item/weapon/storage/box",)
cost = 5
containertype = "/obj/structure/closet/crate"
containername = "Empty Box crate"
/datum/supply_packs/surgery
name = "Surgery crate"
contains = list("/obj/item/weapon/cautery",
"/obj/item/weapon/surgicaldrill",
"/obj/item/clothing/mask/breath/medical",
"/obj/item/weapon/tank/anesthetic",
"/obj/item/weapon/FixOVein",
"/obj/item/weapon/hemostat",
"/obj/item/weapon/scalpel",
"/obj/item/weapon/surgical_tool/bonegel",
"/obj/item/weapon/retractor",
"/obj/item/weapon/surgical_tool/bonesetter",
"/obj/item/weapon/circular_saw")
cost = 25
containertype = "/obj/structure/closet/crate/secure"
containername = "Surgery crate"
access = access_medical
group = "Medical / Science"
/datum/supply_packs/sterile
name = "Sterile equipment crate"
contains = list("/obj/item/clothing/under/rank/medical/green",
"/obj/item/clothing/under/rank/medical/green",
"/obj/item/weapon/storage/stma_kit",
"/obj/item/weapon/storage/lglo_kit")
cost = 10
containertype = "/obj/structure/closet/crate"
containername = "Sterile equipment crate"
group = "Medical / Science"

View File

@@ -60,6 +60,7 @@
var/list/civ = new() var/list/civ = new()
var/list/bot = new() var/list/bot = new()
var/list/misc = new() var/list/misc = new()
var/list/isactive = new()
var/dat = {" var/dat = {"
<head><style> <head><style>
@@ -71,7 +72,7 @@
.manifest tr.alt td {[monochrome?"border-top-width: 2px":"background-color: #DEF"]} .manifest tr.alt td {[monochrome?"border-top-width: 2px":"background-color: #DEF"]}
</style></head> </style></head>
<table class="manifest"> <table class="manifest">
<tr class='head'><th>Name</th><th>Rank</th></tr> <tr class='head'><th>Name</th><th>Rank</th><th>Activity</th></tr>
"} "}
var/even = 0 var/even = 0
@@ -81,6 +82,17 @@
var/rank = t.fields["rank"] var/rank = t.fields["rank"]
var/real_rank = t.fields["real_rank"] var/real_rank = t.fields["real_rank"]
var/active = 0
for(var/mob/M in player_list) if(M.name == name)
// For dead ones, have a chance to get their status wrong
if(M.stat == 2)
active = M.x % 2 // Should be good enough, avoids their status flipping constantly
break
else if(M.client && M.client.inactivity <= 10 * 60 * 10)
active = 1
break
isactive[name] = active ? "Active" : "SSD"
//world << "[name]: [rank]" //world << "[name]: [rank]"
if(real_rank in command_positions) if(real_rank in command_positions)
@@ -108,46 +120,46 @@
misc[name] = rank misc[name] = rank
if(heads.len > 0) if(heads.len > 0)
dat += "<tr><th colspan=2>Heads</th></tr>" dat += "<tr><th colspan=3>Heads</th></tr>"
for(name in heads) for(name in heads)
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[heads[name]]</td></tr>" dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[heads[name]]</td><td>[isactive[name]]</td></tr>"
even = !even even = !even
if(sec.len > 0) if(sec.len > 0)
dat += "<tr><th colspan=2>Security</th></tr>" dat += "<tr><th colspan=3>Security</th></tr>"
for(name in sec) for(name in sec)
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[sec[name]]</td></tr>" dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[sec[name]]</td><td>[isactive[name]]</td></tr>"
even = !even even = !even
if(eng.len > 0) if(eng.len > 0)
dat += "<tr><th colspan=2>Engineering</th></tr>" dat += "<tr><th colspan=3>Engineering</th></tr>"
for(name in eng) for(name in eng)
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[eng[name]]</td></tr>" dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[eng[name]]</td><td>[isactive[name]]</td></tr>"
even = !even even = !even
if(med.len > 0) if(med.len > 0)
dat += "<tr><th colspan=2>Medical</th></tr>" dat += "<tr><th colspan=3>Medical</th></tr>"
for(name in med) for(name in med)
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[med[name]]</td></tr>" dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[med[name]]</td><td>[isactive[name]]</td></tr>"
even = !even even = !even
if(sci.len > 0) if(sci.len > 0)
dat += "<tr><th colspan=2>Science</th></tr>" dat += "<tr><th colspan=3>Science</th></tr>"
for(name in sci) for(name in sci)
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[sci[name]]</td></tr>" dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[sci[name]]</td><td>[isactive[name]]</td></tr>"
even = !even even = !even
if(civ.len > 0) if(civ.len > 0)
dat += "<tr><th colspan=2>Civilian</th></tr>" dat += "<tr><th colspan=3>Civilian</th></tr>"
for(name in civ) for(name in civ)
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[civ[name]]</td></tr>" dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[civ[name]]</td><td>[isactive[name]]</td></tr>"
even = !even even = !even
// in case somebody is insane and added them to the manifest, why not // in case somebody is insane and added them to the manifest, why not
if(bot.len > 0) if(bot.len > 0)
dat += "<tr><th colspan=2>Silicon</th></tr>" dat += "<tr><th colspan=3>Silicon</th></tr>"
for(name in bot) for(name in bot)
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[bot[name]]</td></tr>" dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[bot[name]]</td><td>[isactive[name]]</td></tr>"
even = !even even = !even
// misc guys // misc guys
if(misc.len > 0) if(misc.len > 0)
dat += "<tr><th colspan=2>Miscellaneous</th></tr>" dat += "<tr><th colspan=3>Miscellaneous</th></tr>"
for(name in misc) for(name in misc)
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[misc[name]]</td></tr>" dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[misc[name]]</td><td>[isactive[name]]</td></tr>"
even = !even even = !even

View File

@@ -1488,6 +1488,7 @@
m_amt = 12000 m_amt = 12000
origin_tech = "materials=1" origin_tech = "materials=1"
attack_verb = list("cleaved", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") attack_verb = list("cleaved", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
sharp = 1
/obj/item/weapon/butch/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob) /obj/item/weapon/butch/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1) playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1)

View File

@@ -0,0 +1,168 @@
/* sd_Alert library
by Shadowdarke (shadowdarke@byond.com)
sd_Alert() is a powerful and flexible alternative to the built in BYOND
alert() proc. sd_Alert offers timed popups, unlimited buttons, custom
appearance, and even the option to popup without stealing keyboard focus
from the map or command line.
Please see demo.dm for detailed examples.
FORMAT
sd_Alert(who, message, title, buttons, default, duration, unfocus, \
size, table, style, tag, select, flags)
ARGUMENTS
who - the client or mob to display the alert to.
message - text message to display
title - title of the alert box
buttons - list of buttons
Default Value: list("Ok")
default - default button selestion
Default Value: the first button in the list
duration - the number of ticks before this alert expires. If not
set, the alert lasts until a button is clicked.
Default Value: 0 (unlimited)
unfocus - if this value is set, the popup will not steal keyboard
focus from the map or command line.
Default Value: 1 (do not take focus)
size - size of the popup window in px
Default Value: "300x200"
table - optional parameters for the HTML table in the alert
Default Value: "width=100% height=100%" (fill the window)
style - optional style sheet information
tag - lets you specify a certain tag for this sd_Alert so you may manipulate it
externally. (i.e. force the alert to close, change options and redisplay,
reuse the same window, etc.)
select - if set, the buttons will be replaced with a selection box with a number of
lines displayed equal to this value.
Default value: 0 (use buttons)
flags - optional flags effecting the alert display. These flags may be ORed (|)
together for multiple effects.
SD_ALERT_SCROLL = display a scrollbar
SD_ALERT_SELECT_MULTI = forces selection box display (instead of
buttons) allows the user to select multiple
choices.
SD_ALERT_LINKS = display each choice as a plain text link.
Any selection box style overrides this flag.
SD_ALERT_NOVALIDATE = don't validate responses
Default value: SD_ALERT_SCROLL
(button display with scroll bar, validate responses)
RETURNS
The text of the selected button, or null if the alert duration expired
without a button click.
Version 1 changes (from version 0):
* Added the tag, select, and flags arguments, thanks to several suggestions from Foomer.
* Split the sd_Alert/Alert() proc into New(), Display(), and Response() to allow more
customization by developers. Primarily developers would want to use Display() to change
the display of active tagged windows
*/
#define SD_ALERT_SCROLL 1
#define SD_ALERT_SELECT_MULTI 2
#define SD_ALERT_LINKS 4
#define SD_ALERT_NOVALIDATE 8
proc/sd_Alert(client/who, message, title, buttons = list("Ok"),\
default, duration = 0, unfocus = 1, size = "300x200", \
table = "width=100% height=100%", style, tag, select, flags = SD_ALERT_SCROLL)
if(ismob(who))
var/mob/M = who
who = M.client
if(!istype(who)) CRASH("sd_Alert: Invalid target:[who] (\ref[who])")
var/sd_alert/T = locate(tag)
if(T)
if(istype(T)) del(T)
else CRASH("sd_Alert: tag \"[tag]\" is already in use by datum '[T]' (type: [T.type])")
T = new(who, tag)
if(duration)
spawn(duration)
if(T) del(T)
return
T.Display(message,title,buttons,default,unfocus,size,table,style,select,flags)
. = T.Response()
sd_alert
var
client/target
response
list/validation
Del()
target << browse(null,"window=\ref[src]")
..()
New(who, tag)
..()
target = who
src.tag = tag
Topic(href,params[])
if(usr.client != target) return
response = params["clk"]
proc/Display(message,title,list/buttons,default,unfocus,size,table,style,select,flags)
if(unfocus) spawn() target << browse(null,null)
if(istext(buttons)) buttons = list(buttons)
if(!default) default = buttons[1]
if(!(flags & SD_ALERT_NOVALIDATE)) validation = buttons.Copy()
var/html = {"<head><title>[title]</title>[style]<script>\
function c(x) {document.location.href='BYOND://?src=\ref[src];'+x;}\
</script></head><body onLoad="fcs.focus();"\
[(flags&SD_ALERT_SCROLL)?"":" scroll=no"]><table [table]><tr>\
<td>[message]</td></tr><tr><th>"}
if(select || (flags & SD_ALERT_SELECT_MULTI)) // select style choices
html += {"<FORM ID=fcs ACTION='BYOND://?' METHOD=GET>\
<INPUT TYPE=HIDDEN NAME=src VALUE='\ref[src]'>
<SELECT NAME=clk SIZE=[select]\
[(flags & SD_ALERT_SELECT_MULTI)?" MULTIPLE":""]>"}
for(var/b in buttons)
html += "<OPTION[(b == default)?" SELECTED":""]>\
[html_encode(b)]</OPTION>"
html += "</SELECT><BR><INPUT TYPE=SUBMIT VALUE=Submit></FORM>"
else if(flags & SD_ALERT_LINKS) // text link style
for(var/b in buttons)
var/list/L = list()
L["clk"] = b
var/html_string=list2params(L)
var/focus
if(b == default) focus = " ID=fcs"
html += "<A[focus] href=# onClick=\"c('[html_string]')\">[html_encode(b)]</A>\
<BR>"
else // button style choices
for(var/b in buttons)
var/list/L = list()
L["clk"] = b
var/html_string=list2params(L)
var/focus
if(b == default) focus = " ID=fcs"
html += "<INPUT[focus] TYPE=button VALUE='[html_encode(b)]' \
onClick=\"c('[html_string]')\"> "
html += "</th></tr></table></body>"
target << browse(html,"window=\ref[src];size=[size];can_close=0")
proc/Response()
var/validated
while(!validated)
while(target && !response) // wait for a response
sleep(2)
if(response && validation)
if(istype(response, /list))
var/list/L = response - validation
if(L.len) response = null
else validated = 1
else if(response in validation) validated = 1
else response=null
else validated = 1
spawn(2) del(src)
return response

View File

@@ -10,24 +10,75 @@
dust_swarm("weak")*/ dust_swarm("weak")*/
if (!event) if (!event)
//CARN: checks to see if random events are enabled. //CARN: checks to see if random events are enabled.
if(config.allow_random_events && prob(eventchance)) if(config.allow_random_events)
event() hadevent = event()
hadevent = 1
else else
Holiday_Random_Event() Holiday_Random_Event()
else else
event = 0 event = 0
sleep(2400) sleep(2400)
// Doesn't necessarily trigger an event, but might. Returns 1 if it did.
/proc/event() /proc/event()
event = 1 event = 1
if(!sent_ninja_to_station)
choose_space_ninja()
return
var/eventNumbersToPickFrom = list(1,2,4,5,6,7,8,9,10,11,12,13,14, 15) //so ninjas don't cause "empty" events. var/minutes_passed = world.time/600
if((world.time/10)>=3600 && toggle_space_ninja && !sent_ninja_to_station)//If an hour has passed, relatively speaking. Also, if ninjas are allowed to spawn and if there is not already a ninja for the round. var/engineer_count = number_active_with_role("Engineer")
eventNumbersToPickFrom += 3 var/security_count = number_active_with_role("Security")
switch(pick(eventNumbersToPickFrom)) var/medical_count = number_active_with_role("Medical")
if(1) var/AI_count = number_active_with_role("AI")
// Maps event names to event chances
// For each chance, 100 represents "normal likelihood", anything below 100 is "reduced likelihood", anything above 100 is "increased likelihood"
var/list/possibleEvents = list()
// Check for additional possible events
possibleEvents["Carp"] = 50 + 50 * engineer_count
possibleEvents["Lights"] = 100
possibleEvents["Communications"] = 50 + 50 * AI_count
possibleEvents["Alien"] = 10
if(AI_count >= 1)
possibleEvents["Ion Storm"] = AI_count * 50 + engineer_count * 10
if(engineer_count >= 1 && minutes_passed >= 30) // Give engineers time to set up engine
possibleEvents["Meteor"] = 80 * engineer_count
possibleEvents["Blob"] = 30 * engineer_count
possibleEvents["Spacevine"] = 30 * engineer_count
if(medical_count >= 1)
possibleEvents["Radiation"] = medical_count * 100
possibleEvents["Virus"] = medical_count * 50
possibleEvents["Appendicitis"] = medical_count * 50
if(security_count >= 1)
possibleEvents["Prison Break"] = security_count * 50
possibleEvents["Space Ninja"] = security_count * 10 // very low chance for space ninja event
var/picked_event = pick(possibleEvents)
var/chance = possibleEvents[picked_event]
var/base_chance = 0.4
switch(player_list.len)
if(5 to 10)
base_chance = 0.6
if(11 to 15)
base_chance = 0.7
if(16 to 20)
base_chance = 0.8
if(21 to 25)
base_chance = 0.9
if(26 to 30)
base_chance = 1.0
if(30 to 100000)
base_chance = 1.1
// Trigger the event based on how likely it currently is.
if(!prob(chance * eventchance * base_chance / 100)) // "normal" event chance at 20 players
return 0
switch(picked_event)
if("Meteor")
command_alert("Meteors have been detected on collision course with the station.", "Meteor Alert") command_alert("Meteors have been detected on collision course with the station.", "Meteor Alert")
world << sound('sound/AI/meteors.ogg') world << sound('sound/AI/meteors.ogg')
spawn(100) spawn(100)
@@ -36,33 +87,34 @@
spawn(700) spawn(700)
meteor_wave() meteor_wave()
spawn_meteors() spawn_meteors()
if(4) if("Blob")
mini_blob_event() mini_blob_event()
if("Space Ninja")
if(5) //Handled in space_ninja.dm. Doesn't announce arrival, all sneaky-like.
choose_space_ninja()
if("Radiation")
high_radiation_event() high_radiation_event()
if(6) if("Virus")
viral_outbreak() viral_outbreak()
if(7) if("Alien")
if(prob(10)) alien_infestation()
alien_infestation() if("Prison Break")
if(8)
prison_break() prison_break()
if(9) if("Carp")
carp_migration() carp_migration()
/*if(10) if("Lights")
immovablerod()*/
if(11)
lightsout(1,2) lightsout(1,2)
if(12) if("Appendicitis")
appendicitis() appendicitis()
if(13) if("Ion Storm")
IonStorm() IonStorm()
if(14) if("Spacevine")
spacevine_infestation() spacevine_infestation()
if(15) if("Communications")
communications_blackout() communications_blackout()
return 1
/proc/communications_blackout(var/silent = 1) /proc/communications_blackout(var/silent = 1)
if(!silent) if(!silent)
@@ -170,61 +222,16 @@
break break
/proc/viral_outbreak(var/virus = null) /proc/viral_outbreak(var/virus = null)
// command_alert("Confirmed outbreak of level 7 viral biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert") for(var/mob/living/carbon/human/H in world)
// world << sound('sound/AI/outbreak7.ogg') if((H.virus2) || (H.stat == 2) || prob(30))
var/virus_type
if(!virus)
virus_type = pick(/datum/disease/dnaspread,/datum/disease/flu,/datum/disease/cold,/datum/disease/brainrot,/datum/disease/magnitis,/datum/disease/pierrot_throat)
else
switch(virus)
if("fake gbs")
virus_type = /datum/disease/fake_gbs
if("gbs")
virus_type = /datum/disease/gbs
if("magnitis")
virus_type = /datum/disease/magnitis
if("rhumba beat")
virus_type = /datum/disease/rhumba_beat
if("brain rot")
virus_type = /datum/disease/brainrot
if("cold")
virus_type = /datum/disease/cold
if("retrovirus")
virus_type = /datum/disease/dnaspread
if("flu")
virus_type = /datum/disease/flu
// if("t-virus")
// virus_type = /datum/disease/t_virus
if("pierrot's throat")
virus_type = /datum/disease/pierrot_throat
for(var/mob/living/carbon/human/H in living_mob_list)
var/foundAlready = 0 // don't infect someone that already has the virus
for(var/datum/disease/D in H.viruses)
foundAlready = 1
if(H.stat == 2 || foundAlready)
continue continue
if(virus_type == /datum/disease/dnaspread) //Dnaspread needs strain_data set to work. infect_mob_random_lesser(H)
if((!H.dna) || (H.sdisabilities & BLIND)) //A blindness disease would be the worst. break
continue
var/datum/disease/dnaspread/D = new command_alert("An unknown virus has been detected onboard the ship.", "Virus Alert")
D.strain_data["name"] = H.real_name
D.strain_data["UI"] = H.dna.uni_identity spawn(rand(0, 3000)) //Delayed announcements to keep the crew on their toes.
D.strain_data["SE"] = H.dna.struc_enzymes
D.carrier = 1
D.holder = H
D.affected_mob = H
H.viruses += D
break
else
var/datum/disease/D = new virus_type
D.carrier = 1
D.holder = H
D.affected_mob = H
H.viruses += D
break
spawn(rand(1500, 3000)) //Delayed announcements to keep the crew on their toes.
command_alert("Confirmed outbreak of level 7 viral biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert") command_alert("Confirmed outbreak of level 7 viral biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert")
world << sound('sound/AI/outbreak7.ogg') world << sound('sound/AI/outbreak7.ogg')
@@ -482,4 +489,39 @@ Would like to add a law like "Law x is _______" where x = a number, and _____ is
world << "Finished processing FIREDOORS. Processed: [firedoornum]" world << "Finished processing FIREDOORS. Processed: [firedoornum]"
world << "Ion Storm Main Done" world << "Ion Storm Main Done"
*/ */
// Returns how many characters are currently active(not logged out, not AFK for more than 10 minutes)
// with a specific role.
// Note that this isn't sorted by department, because e.g. having a roboticist shouldn't make meteors spawn.
proc/number_active_with_role(role)
var/count = 0
for(var/mob/M in player_list)
if(!M.client || M.client.inactivity > 10 * 10 * 60) // longer than 10 minutes AFK counts them as inactive
continue
switch(role)
if("Engineer")
if(istype(M, /mob/living/silicon/robot) && M:module && M:module.name == "engineering robot module")
count++
if(M.mind.assigned_role in list("Chief Engineer", "Station Engineer"))
count++
if("Medical")
if(istype(M, /mob/living/silicon/robot) && M:module && M:module.name == "medical robot module")
count++
if(M.mind.assigned_role in list("Chief Medical Officer", "Medical Doctor"))
count++
if("Security")
if(istype(M, /mob/living/silicon/robot) && M:module && M:module.name == "security robot module")
count++
if(M.mind.assigned_role in security_positions)
count++
if("Scientist")
if(M.mind.assigned_role in list("Research Director", "Scientist"))
count++
if("AI")
if(M.mind.assigned_role == "AI")
count++
if("Cyborg")
if(M.mind.assigned_role == "Cyborg")
count++
return count

View File

@@ -93,15 +93,34 @@ When I already created about 4 new objectives, this doesn't seem terribly import
/var/global/toggle_space_ninja = 1//If ninjas can spawn or not. /var/global/toggle_space_ninja = 1//If ninjas can spawn or not.
/var/global/sent_ninja_to_station = 0//If a ninja is already on the station. /var/global/sent_ninja_to_station = 0//If a ninja is already on the station.
var/ninja_selection_id = 1 /proc/choose_space_ninja()
var/ninja_selection_active = 0 var/list/candidates = list() //list of candidate keys
var/ninja_confirmed_selection = 0 for(var/mob/dead/observer/G in player_list)
if(G.client && ((G.client.inactivity/10)/60) <= 5 && G.client.be_spaceninja)
if(!(G.mind && G.mind.current && G.mind.current.stat != DEAD))
candidates += G
if(!candidates.len) return
candidates = shuffle(candidates)//Incorporating Donkie's list shuffle
/proc/space_ninja_arrival(var/assign_key = null, var/assign_mission = null)
if(ninja_selection_active) //loop over all viable candidates, giving them a popup asking if they want to be space ninja
usr << "\red Ninja selection already in progress. Please wait until it ends." var/mob/dead/observer/accepted_ghost
return while(candidates.len && !accepted_ghost)
//ask a different random candidate
var/mob/dead/observer/G = pick(candidates)
//give the popup a 30 second timeout in case the player is AFK
if(sd_Alert(G, "A space ninja is about to spawn. Would you like to play as the ninja?", "Space Ninja", list("Yes","No"), "Yes", 300, 1, "350x125") == "Yes")
accepted_ghost = G
else
candidates -= G
if(accepted_ghost)
//someone accepted
space_ninja_arrival(accepted_ghost)
/proc/space_ninja_arrival(var/mob/dead/observer/G)
if(!G)
return choose_space_ninja()
var/datum/game_mode/current_mode = ticker.mode var/datum/game_mode/current_mode = ticker.mode
var/datum/mind/current_mind var/datum/mind/current_mind
@@ -146,24 +165,12 @@ Malf AIs/silicons aren't added. Monkeys aren't added. Messes with objective comp
if(L.name == "ninjaspawn") if(L.name == "ninjaspawn")
spawn_list.Add(L) spawn_list.Add(L)
if(!spawn_list.len) //The ninja will be created on the right spawn point or at late join.
for(var/obj/effect/landmark/L in landmarks_list) var/mob/living/carbon/human/new_ninja = create_space_ninja(pick(spawn_list.len ? spawn_list : latejoin ))
if(L.name == "carpspawn") new_ninja.key = G.ckey
spawn_list.Add(L) new_ninja.wear_suit:randomize_param()//Give them a random set of suit parameters.
new_ninja.internal = new_ninja.s_store //So the poor ninja has something to breath when they spawn in spess.
var/ninja_key = null new_ninja.internals.icon_state = "internal1"
if(assign_key)
ninja_key = assign_key
else
var/list/candidates = list() //list of candidate keys
for(var/mob/dead/observer/G in player_list)
if(G.client && !G.client.holder && ((G.client.inactivity/10)/60) <= 5)
if(!(G.mind && G.mind.current && G.mind.current.stat != DEAD))
candidates += G.key
if(!candidates.len) return
candidates = shuffle(candidates)//Incorporating Donkie's list shuffle
ninja_key = pick(candidates) ninja_key = pick(candidates)

View File

@@ -318,6 +318,8 @@ Whitespace:Seperator;
if(applicant) if(applicant)
candidates += applicant candidates += applicant
drafted.Remove(applicant) drafted.Remove(applicant)
log_admin("[applicant.key] drafted into antagonist role against their preferences.")
message_admins("[applicant.key] drafted into antagonist role against their preferences.")
else // Not enough scrubs, ABORT ABORT ABORT else // Not enough scrubs, ABORT ABORT ABORT
break break

View File

@@ -148,18 +148,6 @@ var/global/datum/controller/gameticker/ticker
spawn(3000) spawn(3000)
statistic_cycle() // Polls population totals regularly and stores them in an SQL DB -- TLE statistic_cycle() // Polls population totals regularly and stores them in an SQL DB -- TLE
//setup vermin spawn areas
var/list/vermin_spawn_areas = list("/area/maintenance","/area/mine/maintenance","/area/crew_quarters/locker/locker_toilet","/area/crew_quarters/toilet")
vermin_spawn_turfs = new/list()
for(var/area_text in vermin_spawn_areas)
var/area_base_type = text2path(area_text)
for(var/area in typesof(area_base_type))
var/list/area_turfs = get_area_turfs(area)
for(var/turf/T in area_turfs)
if(T.density)
area_turfs -= T
vermin_spawn_turfs.Add(area_turfs)
return 1 return 1
/datum/controller/gameticker /datum/controller/gameticker

View File

@@ -379,6 +379,84 @@ datum/objective/survive
return 0 return 0
return 1 return 1
// Similar to the anti-rev objective, but for traitors
datum/objective/brig
var/already_completed = 0
find_target()
..()
if(target && target.current)
explanation_text = "Have [target.current.real_name], the [target.assigned_role] brigged for 10 minutes."
else
explanation_text = "Free Objective"
return target
find_target_by_role(role, role_type=0)
..(role, role_type)
if(target && target.current)
explanation_text = "Have [target.current.real_name], the [!role_type ? target.assigned_role : target.special_role] brigged for 10 minutes."
else
explanation_text = "Free Objective"
return target
check_completion()
if(already_completed)
return 1
if(target && target.current)
if(target.current.stat == DEAD)
return 0
// Make the actual required time a bit shorter than the official time
if(target.is_brigged(10 * 60 * 5))
already_completed = 1
return 1
return 0
return 0
// Harm a crew member, making an example of them
datum/objective/harm
var/already_completed = 0
find_target()
..()
if(target && target.current)
explanation_text = "Make an example of [target.current.real_name], the [target.assigned_role]. Break one of their bones, detach one of their limbs or disfigure their face. Make sure they're alive when you do it."
else
explanation_text = "Free Objective"
return target
find_target_by_role(role, role_type=0)
..(role, role_type)
if(target && target.current)
explanation_text = "Make an example of [target.current.real_name], the [!role_type ? target.assigned_role : target.special_role]. Break one of their bones, detach one of their limbs or disfigure their face. Make sure they're alive when you do it."
else
explanation_text = "Free Objective"
return target
check_completion()
if(already_completed)
return 1
if(target && target.current && istype(target.current, /mob/living/carbon/human))
if(target.current.stat == DEAD)
return 0
var/mob/living/carbon/human/H = target.current
for(var/datum/organ/external/E in H.organs)
if(E.status & ORGAN_BROKEN)
already_completed = 1
return 1
if(E.status & ORGAN_DESTROYED && !E.amputated)
already_completed = 1
return 1
var/datum/organ/external/head/head = H.get_organ("head")
if(head.disfigured)
return 1
return 0
datum/objective/nuclear datum/objective/nuclear
explanation_text = "Destroy the station with a nuclear device." explanation_text = "Destroy the station with a nuclear device."

View File

@@ -94,11 +94,21 @@
else else
switch(rand(1,100)) switch(rand(1,100))
if(1 to 50) if(1 to 33)
var/datum/objective/assassinate/kill_objective = new var/datum/objective/assassinate/kill_objective = new
kill_objective.owner = traitor kill_objective.owner = traitor
kill_objective.find_target() kill_objective.find_target()
traitor.objectives += kill_objective traitor.objectives += kill_objective
if(34 to 50)
var/datum/objective/brig/brig_objective = new
brig_objective.owner = traitor
brig_objective.find_target()
traitor.objectives += brig_objective
if(51 to 66)
var/datum/objective/harm/harm_objective = new
harm_objective.owner = traitor
harm_objective.find_target()
traitor.objectives += harm_objective
else else
var/datum/objective/steal/steal_objective = new var/datum/objective/steal/steal_objective = new
steal_objective.owner = traitor steal_objective.owner = traitor
@@ -140,6 +150,13 @@
..() ..()
return//Traitors will be checked as part of check_extra_completion. Leaving this here as a reminder. return//Traitors will be checked as part of check_extra_completion. Leaving this here as a reminder.
/datum/game_mode/traitor/process()
// Make sure all objectives are processed regularly, so that objectives
// which can be checked mid-round are checked mid-round.
for(var/datum/mind/traitor_mind in traitors)
for(var/datum/objective/objective in traitor_mind.objectives)
objective.check_completion()
return 0
/datum/game_mode/proc/add_law_zero(mob/living/silicon/ai/killer) /datum/game_mode/proc/add_law_zero(mob/living/silicon/ai/killer)
var/law = "Accomplish your objectives at all costs." var/law = "Accomplish your objectives at all costs."
@@ -273,4 +290,4 @@
else else
traitor_mob << "Unfortunately, the Syndicate did not provide you with a code response." traitor_mob << "Unfortunately, the Syndicate did not provide you with a code response."
traitor_mob << "Use the code words in the order provided, during regular conversation, to identify other agents. Proceed with caution, however, as everyone is a potential foe." traitor_mob << "Use the code words in the order provided, during regular conversation, to identify other agents. Proceed with caution, however, as everyone is a potential foe."
//End code phrase. //End code phrase.

View File

@@ -69,9 +69,6 @@
else else
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack) H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack)
H.equip_to_slot_or_del(new /obj/item/weapon/handcuffs(H), slot_in_backpack) H.equip_to_slot_or_del(new /obj/item/weapon/handcuffs(H), slot_in_backpack)
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H)
L.imp_in = H
L.implanted = 1
return 1 return 1
@@ -121,9 +118,6 @@
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/evidence(H), slot_in_backpack) H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/evidence(H), slot_in_backpack)
H.equip_to_slot_or_del(new /obj/item/device/detective_scanner(H), slot_in_backpack) H.equip_to_slot_or_del(new /obj/item/device/detective_scanner(H), slot_in_backpack)
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H)
L.imp_in = H
L.implanted = 1
return 1 return 1
@@ -157,7 +151,4 @@
else else
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack) H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack)
H.equip_to_slot_or_del(new /obj/item/weapon/handcuffs(H), slot_in_backpack) H.equip_to_slot_or_del(new /obj/item/weapon/handcuffs(H), slot_in_backpack)
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H)
L.imp_in = H
L.implanted = 1
return 1 return 1

View File

@@ -4,7 +4,9 @@
anchored = 0 anchored = 0
density = 1 density = 1
/obj/machinery/iv_drip/var/mob/living/carbon/human/attached = null /obj/machinery/iv_drip/var/mob/living/carbon/human/attached = null
/obj/machinery/iv_drip/var/mode = "give" // mode can be "give" or "take"
/obj/machinery/iv_drip/var/obj/item/weapon/reagent_containers/beaker = null /obj/machinery/iv_drip/var/obj/item/weapon/reagent_containers/beaker = null
/obj/machinery/iv_drip/update_icon() /obj/machinery/iv_drip/update_icon()
@@ -68,7 +70,8 @@
set background = 1 set background = 1
..() ..()
if(src.attached && src.beaker && src.beaker.volume > 0)
if(src.attached)
if(!(get_dist(src, src.attached) <= 1)) if(!(get_dist(src, src.attached) <= 1))
visible_message("The needle is ripped out of [src.attached], doesn't that hurt?") visible_message("The needle is ripped out of [src.attached], doesn't that hurt?")
src.attached:apply_damage(3, BRUTE, pick("r_arm", "l_arm")) src.attached:apply_damage(3, BRUTE, pick("r_arm", "l_arm"))
@@ -76,12 +79,65 @@
src.update_icon() src.update_icon()
return return
var/transfer_amount = REAGENTS_METABOLISM if(src.attached && src.beaker)
if(istype(src.beaker, /obj/item/weapon/reagent_containers/blood)) // Give blood
// speed up transfer on blood packs if(mode == "give" && src.beaker.volume > 0)
transfer_amount = 4 var/transfer_amount = REAGENTS_METABOLISM
src.beaker.reagents.trans_to(src.attached, transfer_amount) if(istype(src.beaker, /obj/item/weapon/reagent_containers/blood))
update_icon() // speed up transfer on blood packs
transfer_amount = 4
src.beaker.reagents.trans_to(src.attached, transfer_amount)
update_icon()
// Take blood
else if(mode == "take")
var/amount = beaker.reagents.maximum_volume - beaker.reagents.total_volume
amount = min(amount, 4)
// If the beaker is full, ping
if(amount == 0)
if(prob(5)) visible_message("\The [src] pings.")
return
var/mob/living/carbon/human/T = attached
if(!istype(T)) return
var/datum/reagent/B = new /datum/reagent/blood
if(!T.dna)
return
if(NOCLONE in T.mutations)
return
// If the human is losing too much blood, beep.
if(T.vessel.get_reagent_amount("blood") < BLOOD_VOLUME_SAFE) if(prob(5))
visible_message("\The [src] beeps loudly.")
if(T.vessel.get_reagent_amount("blood") < amount)
return
B.holder = beaker
B.volume = amount
//set reagent data
B.data["donor"] = T
if(T.virus2)
B.data["virus2"] = T.virus2.getcopy()
B.data["blood_DNA"] = copytext(T.dna.unique_enzymes,1,0)
if(T.resistances && T.resistances.len)
B.data["resistances"] = T.resistances.Copy()
B.data["blood_type"] = copytext(T.dna.b_type,1,0)
var/list/temp_chem = list()
for(var/datum/reagent/R in T.reagents.reagent_list)
temp_chem += R.name
temp_chem[R.name] = R.volume
B.data["trace_chem"] = list2params(temp_chem)
B.data["antibodies"] = T.antibodies
T.vessel.remove_reagent("blood",amount) // Removes blood if human
beaker.reagents.reagent_list += B
beaker.reagents.update_total()
beaker.on_reagent_change()
beaker.reagents.handle_reactions()
/obj/machinery/iv_drip/attack_hand(mob/user as mob) /obj/machinery/iv_drip/attack_hand(mob/user as mob)
if(src.beaker) if(src.beaker)
@@ -91,6 +147,22 @@
else else
return ..() return ..()
/obj/machinery/iv_drip/verb/toggle_mode()
set name = "Toggle Mode"
set src in view(1)
if(!istype(usr, /mob/living))
usr << "\red You can't do that."
return
if(mode == "give")
mode = "take"
usr << "The IV drip is now taking blood."
else if(mode == "take")
mode = "give"
usr << "The IV drip is now giving blood."
/obj/machinery/iv_drip/examine() /obj/machinery/iv_drip/examine()
set src in view() set src in view()
..() ..()

View File

@@ -2,6 +2,7 @@
desc = "An aging combat exosuit utilized by the Nanotrasen corporation. Originally developed to combat hostile alien lifeforms." desc = "An aging combat exosuit utilized by the Nanotrasen corporation. Originally developed to combat hostile alien lifeforms."
name = "Durand" name = "Durand"
icon_state = "durand" icon_state = "durand"
initial_icon = "durand"
step_in = 4 step_in = 4
dir_in = 1 //Facing North. dir_in = 1 //Facing North.
health = 400 health = 400

View File

@@ -2,6 +2,7 @@
desc = "A lightweight, security exosuit. Popular among private and corporate security." desc = "A lightweight, security exosuit. Popular among private and corporate security."
name = "Gygax" name = "Gygax"
icon_state = "gygax" icon_state = "gygax"
initial_icon = "gygax"
step_in = 3 step_in = 3
dir_in = 1 //Facing North. dir_in = 1 //Facing North.
health = 300 health = 300
@@ -19,6 +20,7 @@
desc = "A lightweight exosuit used by Nanotrasen Death Squads. A significantly upgraded Gygax security mech." desc = "A lightweight exosuit used by Nanotrasen Death Squads. A significantly upgraded Gygax security mech."
name = "Dark Gygax" name = "Dark Gygax"
icon_state = "darkgygax" icon_state = "darkgygax"
initial_icon = "darkgygax"
health = 400 health = 400
deflect_chance = 25 deflect_chance = 25
damage_absorption = list("brute"=0.6,"fire"=0.8,"bullet"=0.6,"laser"=0.5,"energy"=0.65,"bomb"=0.8) damage_absorption = list("brute"=0.6,"fire"=0.8,"bullet"=0.6,"laser"=0.5,"energy"=0.65,"bomb"=0.8)

View File

@@ -2,6 +2,7 @@
desc = "Produced by \"Tyranny of Honk, INC\", this exosuit is designed as heavy clown-support. Used to spread the fun and joy of life. HONK!" desc = "Produced by \"Tyranny of Honk, INC\", this exosuit is designed as heavy clown-support. Used to spread the fun and joy of life. HONK!"
name = "H.O.N.K" name = "H.O.N.K"
icon_state = "honker" icon_state = "honker"
initial_icon = "honker"
step_in = 2 step_in = 2
health = 140 health = 140
deflect_chance = 60 deflect_chance = 60

View File

@@ -2,6 +2,7 @@
desc = "Heavy-duty, combat exosuit, developed after the Durand model. Rarely found among civilian populations." desc = "Heavy-duty, combat exosuit, developed after the Durand model. Rarely found among civilian populations."
name = "Marauder" name = "Marauder"
icon_state = "marauder" icon_state = "marauder"
initial_icon = "marauder"
step_in = 5 step_in = 5
health = 500 health = 500
deflect_chance = 25 deflect_chance = 25
@@ -25,6 +26,7 @@
desc = "Heavy-duty, command-type exosuit. This is a custom model, utilized only by high-ranking military personnel." desc = "Heavy-duty, command-type exosuit. This is a custom model, utilized only by high-ranking military personnel."
name = "Seraph" name = "Seraph"
icon_state = "seraph" icon_state = "seraph"
initial_icon = "seraph"
operation_req_access = list(access_cent_creed) operation_req_access = list(access_cent_creed)
step_in = 3 step_in = 3
health = 550 health = 550
@@ -37,6 +39,7 @@
desc = "Heavy-duty, combat exosuit, developed off of the existing Marauder model." desc = "Heavy-duty, combat exosuit, developed off of the existing Marauder model."
name = "Mauler" name = "Mauler"
icon_state = "mauler" icon_state = "mauler"
initial_icon = "mauler"
operation_req_access = list(access_syndicate) operation_req_access = list(access_syndicate)
wreckage = /obj/effect/decal/mecha_wreckage/mauler wreckage = /obj/effect/decal/mecha_wreckage/mauler

View File

@@ -2,6 +2,7 @@
desc = "An exosuit which can only be described as 'WTF?'." desc = "An exosuit which can only be described as 'WTF?'."
name = "Phazon" name = "Phazon"
icon_state = "phazon" icon_state = "phazon"
initial_icon = "phazon"
step_in = 1 step_in = 1
dir_in = 1 //Facing North. dir_in = 1 //Facing North.
step_energy_drain = 3 step_energy_drain = 3

View File

@@ -18,6 +18,7 @@
unacidable = 1 //and no deleting hoomans inside unacidable = 1 //and no deleting hoomans inside
layer = MOB_LAYER //icon draw layer layer = MOB_LAYER //icon draw layer
infra_luminosity = 15 //byond implementation is bugged. infra_luminosity = 15 //byond implementation is bugged.
var/initial_icon = "" //Mech type for resetting icon.
var/can_move = 1 var/can_move = 1
var/mob/living/carbon/occupant = null var/mob/living/carbon/occupant = null
var/step_in = 10 //make a step in step_in/10 sec. var/step_in = 10 //make a step in step_in/10 sec.
@@ -666,6 +667,7 @@
/obj/mecha/attackby(obj/item/weapon/W as obj, mob/user as mob) /obj/mecha/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W, /obj/item/device/mmi)) if(istype(W, /obj/item/device/mmi))
if(mmi_move_inside(W,user)) if(mmi_move_inside(W,user))
user << "[src]-MMI interface initialized successfuly" user << "[src]-MMI interface initialized successfuly"
@@ -1011,7 +1013,7 @@
src.add_fingerprint(H) src.add_fingerprint(H)
src.forceMove(src.loc) src.forceMove(src.loc)
src.log_append_to_last("[H] moved in as pilot.") src.log_append_to_last("[H] moved in as pilot.")
src.icon_state = initial(icon_state) src.icon_state = src.reset_icon()
dir = dir_in dir = dir_in
playsound(src, 'sound/machines/windowdoor.ogg', 50, 1) playsound(src, 'sound/machines/windowdoor.ogg', 50, 1)
if(!hasInternalDamage()) if(!hasInternalDamage())
@@ -1070,7 +1072,7 @@
src.verbs -= /obj/mecha/verb/eject src.verbs -= /obj/mecha/verb/eject
src.Entered(mmi_as_oc) src.Entered(mmi_as_oc)
src.Move(src.loc) src.Move(src.loc)
src.icon_state = initial(icon_state) src.icon_state = src.reset_icon()
dir = dir_in dir = dir_in
src.log_message("[mmi_as_oc] moved in as pilot.") src.log_message("[mmi_as_oc] moved in as pilot.")
if(!hasInternalDamage()) if(!hasInternalDamage())
@@ -1159,7 +1161,7 @@
src.occupant.canmove = 0 src.occupant.canmove = 0
src.verbs += /obj/mecha/verb/eject src.verbs += /obj/mecha/verb/eject
src.occupant = null src.occupant = null
src.icon_state = initial(icon_state)+"-open" src.icon_state = src.reset_icon()+"-open"
src.dir = dir_in src.dir = dir_in
return return
@@ -1669,6 +1671,9 @@
return 1 return 1
return 0 return 0
/obj/mecha/proc/reset_icon()
icon_state = initial_icon
return icon_state
////////////////////////////////////////// //////////////////////////////////////////
//////// Mecha global iterators //////// //////// Mecha global iterators ////////
@@ -1799,4 +1804,4 @@
//src.health = initial(src.health)/2.2 //src.health = initial(src.health)/2.2
//src.check_for_internal_damage(list(MECHA_INT_FIRE,MECHA_INT_TEMP_CONTROL,MECHA_INT_TANK_BREACH,MECHA_INT_CONTROL_LOST)) //src.check_for_internal_damage(list(MECHA_INT_FIRE,MECHA_INT_TEMP_CONTROL,MECHA_INT_TANK_BREACH,MECHA_INT_CONTROL_LOST))
return return
*/ */

View File

@@ -2,6 +2,7 @@
desc = "These exosuits are developed and produced by Vey-Med. (&copy; All rights reserved)." desc = "These exosuits are developed and produced by Vey-Med. (&copy; All rights reserved)."
name = "Odysseus" name = "Odysseus"
icon_state = "odysseus" icon_state = "odysseus"
initial_icon = "odysseus"
step_in = 2 step_in = 2
max_temperature = 1500 max_temperature = 1500
health = 120 health = 120

View File

@@ -2,6 +2,7 @@
desc = "Autonomous Power Loader Unit. The workhorse of the exosuit world." desc = "Autonomous Power Loader Unit. The workhorse of the exosuit world."
name = "APLU \"Ripley\"" name = "APLU \"Ripley\""
icon_state = "ripley" icon_state = "ripley"
initial_icon = "ripley"
step_in = 6 step_in = 6
max_temperature = 1000 max_temperature = 1000
health = 200 health = 200
@@ -19,7 +20,7 @@
desc = "Standart APLU chassis was refitted with additional thermal protection and cistern." desc = "Standart APLU chassis was refitted with additional thermal protection and cistern."
name = "APLU \"Firefighter\"" name = "APLU \"Firefighter\""
icon_state = "firefighter" icon_state = "firefighter"
max_temperature = 4500 initial_icon = "firefighter" max_temperature = 4500
health = 250 health = 250
lights_power = 8 lights_power = 8
damage_absorption = list("fire"=0.5,"bullet"=0.8,"bomb"=0.5) damage_absorption = list("fire"=0.5,"bullet"=0.8,"bomb"=0.5)
@@ -29,6 +30,7 @@
desc = "OH SHIT IT'S THE DEATHSQUAD WE'RE ALL GONNA DIE" desc = "OH SHIT IT'S THE DEATHSQUAD WE'RE ALL GONNA DIE"
name = "DEATH-RIPLEY" name = "DEATH-RIPLEY"
icon_state = "deathripley" icon_state = "deathripley"
initial_icon = "deathripley"
step_in = 2 step_in = 2
opacity=0 opacity=0
lights_power = 60 lights_power = 60
@@ -44,6 +46,7 @@
/obj/mecha/working/ripley/mining /obj/mecha/working/ripley/mining
desc = "An old, dusty mining ripley." desc = "An old, dusty mining ripley."
name = "APLU \"Miner\"" name = "APLU \"Miner\""
initial_icon = "ripley"
/obj/mecha/working/ripley/mining/New() /obj/mecha/working/ripley/mining/New()
..() ..()
@@ -110,4 +113,16 @@
return return
/obj/mecha/working/ripley/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W, /obj/item/weapon/fluff/butcher_royce_1))
src.icon_state = "titan"
src.initial_icon = "titan"
src.name = "APLU \"Titan's Fist\""
src.desc = "This ordinary mining Ripley has been customized to look like a unit of the Titans Fist."
user << "You spend some quality time with the Ripley, customising it to look like a \"Titan's Fist\" APLU."
user.drop_item()
del(W)
return
else
..()

View File

@@ -12,7 +12,7 @@
/obj/item/weapon/contraband/poster /obj/item/weapon/contraband/poster
name = "rolled-up poster" name = "rolled-up poster"
desc = "The poster comes with its own automatic adhesive mechanism, for easy pinning to any vertical surface. Its vulgar themes have marked it as Contraband aboard Nanotrasen<65> Space Facilities." desc = "The poster comes with its own automatic adhesive mechanism, for easy pinning to any vertical surface."
icon_state = "rolled_poster" icon_state = "rolled_poster"
var/serial_number = 0 var/serial_number = 0
var/obj/effect/decal/poster/resulting_poster = null //The poster that will be created is initialised and stored through contraband/poster's constructor var/obj/effect/decal/poster/resulting_poster = null //The poster that will be created is initialised and stored through contraband/poster's constructor

View File

@@ -8,7 +8,7 @@
..() ..()
human human
gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/up,/obj/effect/decal/cleanable/blood/gibs/down,/obj/effect/decal/cleanable/blood/gibs,/obj/effect/decal/cleanable/blood/gibs,/obj/effect/decal/cleanable/blood/gibs/body,/obj/effect/decal/cleanable/blood/gibs/limb,/obj/effect/decal/cleanable/blood/gibs/core) gibtypes = list(/obj/effect/decal/cleanable/blood/gibs,/obj/effect/decal/cleanable/blood/gibs/down,/obj/effect/decal/cleanable/blood/gibs,/obj/effect/decal/cleanable/blood/gibs,/obj/effect/decal/cleanable/blood/gibs,/obj/effect/decal/cleanable/blood/gibs,/obj/effect/decal/cleanable/blood/gibs/core)
gibamounts = list(1,1,1,1,1,1,1) gibamounts = list(1,1,1,1,1,1,1)
New() New()

View File

@@ -14,14 +14,20 @@ proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impa
epicenter = get_turf(epicenter) epicenter = get_turf(epicenter)
if(!epicenter) return if(!epicenter) return
playsound(epicenter, 'sound/effects/explosionfar.ogg', 100, 1, round(devastation_range*2,1) )
playsound(epicenter, "explosion", 100, 1, round(devastation_range,1) )
var/close = range(world.view+round(devastation_range,1), epicenter)
// to all distanced mobs play a different sound
for(var/mob/M in world) if(M.z == epicenter.z) if(!(M in close))
// check if the mob can hear
if(M.ear_deaf <= 0 || !M.ear_deaf) if(!istype(M.loc,/turf/space))
M << 'explosionfar.ogg'
if(adminlog) if(adminlog)
message_admins("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range]) in area [epicenter.loc.name] ([epicenter.x],[epicenter.y],[epicenter.z])") message_admins("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range]) in area [epicenter.loc.name] ([epicenter.x],[epicenter.y],[epicenter.z])")
log_game("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range]) in area [epicenter.loc.name] ") log_game("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range]) in area [epicenter.loc.name] ")
playsound(epicenter, 'sound/effects/explosionfar.ogg', 100, 1, round(devastation_range*2,1) )
playsound(epicenter, "explosion", 100, 1, round(devastation_range,1) )
var/lighting_controller_was_processing = lighting_controller.processing //Pause the lighting updates for a bit var/lighting_controller_was_processing = lighting_controller.processing //Pause the lighting updates for a bit
lighting_controller.processing = 0 lighting_controller.processing = 0
var/powernet_rebuild_was_deferred_already = defer_powernet_rebuild var/powernet_rebuild_was_deferred_already = defer_powernet_rebuild
@@ -74,4 +80,4 @@ proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impa
proc/secondaryexplosion(turf/epicenter, range) proc/secondaryexplosion(turf/epicenter, range)
for(var/turf/tile in range(range, epicenter)) for(var/turf/tile in range(range, epicenter))
tile.ex_act(2) tile.ex_act(2)

View File

@@ -192,7 +192,7 @@
if(surgery_steps == null) build_surgery_steps_list() if(surgery_steps == null) build_surgery_steps_list()
for(var/datum/surgery_step/S in surgery_steps) for(var/datum/surgery_step/S in surgery_steps)
//check if tool is right or close enough //check if tool is right or close enough
if(istype(src, S.required_tool) || (S.allowed_tools && src.type in S.allowed_tools )) if(istype(src, S.required_tool) || (S.allowed_tools && (src.type in S.allowed_tools) ))
if(S.can_use(user, M, user.zone_sel.selecting, src)) //is this step possible? if(S.can_use(user, M, user.zone_sel.selecting, src)) //is this step possible?
S.begin_step(user, M, user.zone_sel.selecting, src) S.begin_step(user, M, user.zone_sel.selecting, src)
if(do_mob(user, M, rand(S.min_duration, S.max_duration))) if(do_mob(user, M, rand(S.min_duration, S.max_duration)))

View File

@@ -10,7 +10,7 @@
var/access_security = 0 var/access_security = 0
var/access_engine = 0 var/access_engine = 0
var/access_medical = 0 var/access_medical = 0
var/access_manifest = 0 var/access_manifest = 1 // Make all jobs able to access the manifest
var/access_clown = 0 var/access_clown = 0
var/access_mime = 0 var/access_mime = 0
var/access_janitor = 0 var/access_janitor = 0
@@ -268,9 +268,8 @@ Code:
menu = "<h4><img src=pda_notes.png> Crew Manifest</h4>" menu = "<h4><img src=pda_notes.png> Crew Manifest</h4>"
menu += "Entries cannot be modified from this terminal.<br><br>" menu += "Entries cannot be modified from this terminal.<br><br>"
if(!isnull(data_core.general)) if(data_core)
for (var/datum/data/record/t in sortRecord(data_core.general)) menu += data_core.get_manifest(1) // make it monochrome
menu += "[t.fields["name"]] - [t.fields["rank"]]<br>"
menu += "<br>" menu += "<br>"

View File

@@ -322,6 +322,7 @@ var/list/mechtoys = list(
//manifest finalisation //manifest finalisation
slip.info += "</ul><br>" slip.info += "</ul><br>"
slip.info += "CHECK CONTENTS AND STAMP BELOW THE LINE TO CONFIRM RECEIPT OF GOODS<hr>" slip.info += "CHECK CONTENTS AND STAMP BELOW THE LINE TO CONFIRM RECEIPT OF GOODS<hr>"
if (SP.contraband) slip.loc = null //we are out of blanks for Form #44-D Ordering Illicit Drugs.
while(0<mech_redeem) while(0<mech_redeem)
if(!clear_turfs.len) break if(!clear_turfs.len) break

View File

@@ -60,7 +60,7 @@ var/SMALLSIZEBLOCK = 0
var/skipupdate = 0 var/skipupdate = 0
/////////////// ///////////////
var/eventchance = 3 //% per 5 mins var/eventchance = 10 //% per 5 mins
var/event = 0 var/event = 0
var/hadevent = 0 var/hadevent = 0
var/blobevent = 0 var/blobevent = 0

View File

@@ -26,6 +26,7 @@
var/be_alien = 0 //Check if that guy wants to be an alien var/be_alien = 0 //Check if that guy wants to be an alien
var/be_pai = 1 //Consider client when searching for players to recruit as a pAI var/be_pai = 1 //Consider client when searching for players to recruit as a pAI
var/be_syndicate = 1 //Consider client for late-game autotraitor var/be_syndicate = 1 //Consider client for late-game autotraitor
var/be_spaceninja = 0
var/activeslot = 1 //Default active slot! var/activeslot = 1 //Default active slot!
var/STFU_ghosts //80+ people rounds are fun to admin when text flies faster than airport security var/STFU_ghosts //80+ people rounds are fun to admin when text flies faster than airport security
var/STFU_radio //80+ people rounds are fun to admin when text flies faster than airport security var/STFU_radio //80+ people rounds are fun to admin when text flies faster than airport security

View File

@@ -4,7 +4,7 @@
icon_state = "capspace" icon_state = "capspace"
item_state = "capspacehelmet" item_state = "capspacehelmet"
desc = "A special helmet designed for work in a hazardous, low-pressure environment. Only for the most fashionable of military figureheads." desc = "A special helmet designed for work in a hazardous, low-pressure environment. Only for the most fashionable of military figureheads."
flags = FPRINT | TABLEPASS | HEADCOVERSEYES | BLOCKHAIR flags = FPRINT | TABLEPASS | HEADCOVERSEYES | BLOCKHAIR | STOPSPRESSUREDMAGE
flags_inv = HIDEFACE flags_inv = HIDEFACE
permeability_coefficient = 0.01 permeability_coefficient = 0.01
armor = list(melee = 65, bullet = 50, laser = 50,energy = 25, bomb = 50, bio = 100, rad = 50) armor = list(melee = 65, bullet = 50, laser = 50,energy = 25, bomb = 50, bio = 100, rad = 50)
@@ -18,11 +18,11 @@
w_class = 4 w_class = 4
gas_transfer_coefficient = 0.01 gas_transfer_coefficient = 0.01
permeability_coefficient = 0.02 permeability_coefficient = 0.02
flags = FPRINT | TABLEPASS flags = FPRINT | TABLEPASS | STOPSPRESSUREDMAGE
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS
allowed = list(/obj/item/weapon/tank/emergency_oxygen, /obj/item/device/flashlight,/obj/item/weapon/gun/energy, /obj/item/weapon/gun/projectile, /obj/item/ammo_magazine, /obj/item/ammo_casing, /obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs) allowed = list(/obj/item/weapon/tank/emergency_oxygen, /obj/item/device/flashlight,/obj/item/weapon/gun/energy, /obj/item/weapon/gun/projectile, /obj/item/ammo_magazine, /obj/item/ammo_casing, /obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs)
slowdown = 1.5 slowdown = 1.5
armor = list(melee = 65, bullet = 50, laser = 50, energy = 25, bomb = 50, bio = 100, rad = 50) armor = list(melee = 65, bullet = 50, laser = 50, energy = 25, bomb = 50, bio = 100, rad = 50)
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS
min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECITON_TEMPERATURE min_cold_protection_temperature = SPACE_SUIT_MIN_COLD_PROTECITON_TEMPERATURE

View File

@@ -1,3 +1,4 @@
hi
// Add custom items you give to people here, and put their icons in custom_items.dmi // Add custom items you give to people here, and put their icons in custom_items.dmi
// Remember to change 'icon = 'custom_items.dmi'' for items not using /obj/item/fluff as a base // Remember to change 'icon = 'custom_items.dmi'' for items not using /obj/item/fluff as a base
// Clothing item_state doesn't use custom_items.dmi. Just add them to the normal clothing files. // Clothing item_state doesn't use custom_items.dmi. Just add them to the normal clothing files.
@@ -66,10 +67,20 @@
desc = "A neatly folded handkerchief embroidered with a 'M'." desc = "A neatly folded handkerchief embroidered with a 'M'."
icon_state = "maurice_bedford_1" icon_state = "maurice_bedford_1"
/obj/item/weapon/book/fluff/johnathan_falcian_1
name = "sketchbook"
desc = "A small, well-used sketchbook."
icon = 'custom_items.dmi'
icon_state = "johnathan_notebook"
dat = "In the notebook there are numerous drawings of various crew-mates, locations, and scenes on the ship. They are of fairly good quality."
author = "Johnathan Falcian"
title = "Falcian's sketchbook"
////////////////////////////////// //////////////////////////////////
////////// Usable Items ////////// ////////// Usable Items //////////
////////////////////////////////// //////////////////////////////////
/obj/item/weapon/pen/fluff/multi //spaceman96: Trenna Seber /obj/item/weapon/pen/fluff/multi //spaceman96: Trenna Seber
name = "multicolor pen" name = "multicolor pen"
desc = "It's a cool looking pen. Lots of colors!" desc = "It's a cool looking pen. Lots of colors!"
@@ -330,10 +341,17 @@
/obj/item/weapon/crowbar/fluff/zelda_creedy_1 //daaneesh: Zelda Creedy /obj/item/weapon/crowbar/fluff/zelda_creedy_1 //daaneesh: Zelda Creedy
name = "Zelda's Crowbar" name = "Zelda's Crowbar"
desc = "A pink crow bar that has an engraving that reads, 'To Zelda. Love always, Dawn'" desc = "A pink crow bar that has an engraving that reads, 'To Zelda. Love always, Dawn'"
icon = 'icons/obj/custom_items.dmi' icon = 'custom_items.dmi'
icon_state = "zeldacrowbar" icon_state = "zeldacrowbar"
item_state = "crowbar" item_state = "crowbar"
////// Ripley customisation kit - Butchery Royce - MayeDay
/obj/item/weapon/fluff/butcher_royce_1
name = "Ripley customisation kit"
desc = "A kit containing all the needed tools and parts to turn an APLU Ripley into a Titan's Fist worker mech."
icon = 'custom_items.dmi'
icon_state = "royce_kit"
////////////////////////////////// //////////////////////////////////
//////////// Clothing //////////// //////////// Clothing ////////////
@@ -384,6 +402,19 @@
icon = 'custom_items.dmi' icon = 'custom_items.dmi'
icon_state = "ian_colm_1" icon_state = "ian_colm_1"
////// Medical eyepatch - Thysse Ezinwa - Jadepython
/obj/item/clothing/glasses/eyepatch/fluff/thysse_1
name = "medical eyepatch"
desc = "On the strap, EZINWA is written in white block letters."
////// Safety Goggles - Arjun Chopra - MindPhyre - APPROVED
/obj/item/clothing/glasses/fluff/arjun_chopra_1
name = "safety goggles"
desc = "A used pair of leather safety goggles."
icon = 'custom_items.dmi'
icon_state = "arjun_chopra"
item_state = "arjun_chopra"
//////////// Hats //////////// //////////// Hats ////////////
/obj/item/clothing/head/secsoft/fluff/swatcap //deusdactyl: James Girard /obj/item/clothing/head/secsoft/fluff/swatcap //deusdactyl: James Girard
@@ -500,6 +531,50 @@
item_state = "ara_bar_uniform" item_state = "ara_bar_uniform"
color = "ara_bar_uniform" color = "ara_bar_uniform"
/////// NT-SID Suit //Zuhayr: Jane Doe
/obj/item/clothing/under/fluff/jane_sidsuit
name = "NT-SID jumpsuit"
desc = "A NanoTrasen Synthetic Intelligence Division jumpsuit, issued to 'volunteers'. On other people it looks fine, but right here a scientist has noted: on you it looks stupid."
icon = 'icons/obj/custom_items.dmi'
icon_state = "jane_sid_suit"
item_state = "jane_sid_suit"
color = "jane_sid_suit"
has_sensor = 2
sensor_mode = 3
flags = FPRINT | TABLEPASS
//Suit roll-down toggle.
/obj/item/clothing/under/fluff/jane_sidsuit/verb/toggle_zipper()
set name = "Toggle Jumpsuit Zipper"
set category = "Object"
set src in usr
if(!usr.canmove || usr.stat || usr.restrained())
return 0
if(src.icon_state == "jane_sid_suit_down")
src.color = "jane_sid_suit"
usr << "You zip up the [src]."
else
src.color = "jane_sid_suit_down"
usr << "You unzip and roll down the [src]."
src.icon_state = "[color]"
src.item_state = "[color]"
usr.update_inv_w_uniform()
////// Wyatt's Ex-Commander Jumpsuit - RawrTaicho
/obj/item/clothing/under/fluff/wyatt_1
name = "ex-commander jumpsuit"
desc = "A standard Central Command Engineering Commander jumpsuit tailored to fight the wearer tightly. It has a Medal of Service pinned onto the left side of it."
icon = 'custom_items.dmi'
icon_state = "wyatt_uniform"
item_state = "wyatt_uniform"
color = "wyatt_uniform"
//////////// Masks //////////// //////////// Masks ////////////
/* /*
@@ -522,6 +597,41 @@
flags = FPRINT|TABLEPASS flags = FPRINT|TABLEPASS
w_class = 1 w_class = 1
////// Small locket - Altair An-Nasaqan - Serithi
/obj/item/clothing/tie/fluff/altair_locket
name = "small locket"
desc = "A small golden locket attached to an Ii'rka-reed string. Inside the locket is a holo-picture of a female Tajaran, and an inscription writtin in Siik'mas."
icon = 'custom_items.dmi'
icon_state = "altair_locket"
item_state = "altair_locket"
color = "altair_locket"
slot_flags = 0
flags = FPRINT|TABLEPASS
w_class = 1
slot_flags = SLOT_MASK
////// Medallion - Nasir Khayyam - Jamini
/obj/item/clothing/tie/fluff/nasir_khayyam_1
name = "medallion"
desc = "This silvered medallion bears the symbol of the Hadii Clan of the Tajaran."
icon = 'custom_items.dmi'
icon_state = "nasir_khayyam_1"
flags = FPRINT|TABLEPASS
w_class = 1
slot_flags = SLOT_MASK
////// Emerald necklace - Ty Foster - Nega
/obj/item/clothing/mask/mara_kilpatrick_1
name = "emerald necklace"
desc = "A brass necklace with a green emerald placed at the end. It has a small inscription on the top of the chain, saying \'Foster\'"
icon = 'custom_items.dmi'
icon_state = "ty_foster"
flags = FPRINT|TABLEPASS
w_class = 1
//////////// Shoes //////////// //////////// Shoes ////////////
/obj/item/clothing/shoes/magboots/fluff/susan_harris_1 //sniperyeti: Susan Harris /obj/item/clothing/shoes/magboots/fluff/susan_harris_1 //sniperyeti: Susan Harris
@@ -529,22 +639,6 @@
desc = "A colorful pair of magboots with the name Susan Harris clearly written on the back." desc = "A colorful pair of magboots with the name Susan Harris clearly written on the back."
icon = 'custom_items.dmi' icon = 'custom_items.dmi'
icon_state = "atmosmagboots0" icon_state = "atmosmagboots0"
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 //////////// //////////// Sets ////////////
@@ -593,3 +687,19 @@
icon_state = "retpoluniform" icon_state = "retpoluniform"
color = "retpoluniform" color = "retpoluniform"
//////////// Weapons ////////////
///// Colt Peacemaker - Ana Ka'Rimah - SueTheCake
/obj/item/weapon/gun/energy/stunrevolver/fluff/ana_peacemaker
name = "Peacemaker"
desc = "A nickel-plated revolver with pearl grips. It has a certain Old West flair!"
icon = 'custom_items.dmi'
icon_state = "peacemaker"
///// Well-used baton - Oen'g Issek - Donofnyc3
/obj/item/weapon/melee/baton/fluff/oeng_baton
name = "well-used stun baton"
desc = "A stun baton used for incapacitating targets; there seems to be a bunch of tally marks set into the handle."

View File

@@ -254,6 +254,17 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
client.be_pai = 1 client.be_pai = 1
src << "You will now be considered a viable candidate when a pAI device requests a new personality, effective until the end of this round." src << "You will now be considered a viable candidate when a pAI device requests a new personality, effective until the end of this round."
/mob/dead/observer/verb/toggle_spaceninja_candidate()
set name = "Toggle Be Space Ninja Candidate"
set category = "Ghost"
set desc = "Determines whether you will be a candidate for when a new space ninja spawns. (toggle)"
if(client.be_spaceninja)
client.be_spaceninja = 0
src << "You are now excluded from space ninja candidate lists until end of round."
else
client.be_spaceninja = 1
src << "You are now included in space ninja candidate lists until end of round."
/mob/dead/observer/memory() /mob/dead/observer/memory()
set hidden = 1 set hidden = 1
src << "\red You are dead! You have no mind to store memory!" src << "\red You are dead! You have no mind to store memory!"

View File

@@ -22,7 +22,7 @@
var/move_delay_add = 0 // movement delay to add var/move_delay_add = 0 // movement delay to add
status_flags = CANPARALYSE status_flags = CANPARALYSE
var/heal_rate = 5 var/heal_rate = 1
var/plasma_rate = 5 var/plasma_rate = 5
var/oxygen_alert = 0 var/oxygen_alert = 0

View File

@@ -114,7 +114,7 @@ Doesn't work on other aliens/AI.*/
/mob/living/carbon/alien/humanoid/proc/neurotoxin(mob/target as mob in oview()) /mob/living/carbon/alien/humanoid/proc/neurotoxin(mob/target as mob in oview())
set name = "Spit Neurotoxin (50)" set name = "Spit Neurotoxin (50)"
set desc = "Spits neurotoxin at someone, paralyzing them for a short time." set desc = "Spits neurotoxin at someone, paralyzing them for a short time if they are not wearing protective gear."
set category = "Alien" set category = "Alien"
if(powerc(50)) if(powerc(50))
@@ -137,12 +137,12 @@ Doesn't work on other aliens/AI.*/
if(!istype(T, /turf)) if(!istype(T, /turf))
return return
if (U == T) if (U == T)
usr.bullet_act(src, get_organ_target()) usr.bullet_act(new /obj/item/projectile/neurotoxin(usr.loc), get_organ_target())
return return
if(!istype(U, /turf)) if(!istype(U, /turf))
return return
var/obj/item/projectile/energy/dart/A = new /obj/item/projectile/energy/dart(usr.loc) var/obj/item/projectile/neurotoxin/A = new /obj/item/projectile/neurotoxin(usr.loc)
A.current = U A.current = U
A.yo = U.y - T.y A.yo = U.y - T.y
@@ -186,4 +186,4 @@ Doesn't work on other aliens/AI.*/
M.loc = loc M.loc = loc
//Paralyse(10) //Paralyse(10)
src.visible_message("\green <B>[src] hurls out the contents of their stomach!</B>") src.visible_message("\green <B>[src] hurls out the contents of their stomach!</B>")
return return

View File

@@ -94,7 +94,8 @@ var/const/MAX_ACTIVE_TIME = 400
return return
/obj/item/clothing/mask/facehugger/throw_impact(atom/hit_atom) /obj/item/clothing/mask/facehugger/throw_impact(atom/hit_atom)
Attach(hit_atom) if(prob(25))
Attach(hit_atom)
return return
/obj/item/clothing/mask/facehugger/proc/Attach(M as mob) /obj/item/clothing/mask/facehugger/proc/Attach(M as mob)
@@ -134,17 +135,21 @@ var/const/MAX_ACTIVE_TIME = 400
for(var/mob/O in viewers(target, null)) for(var/mob/O in viewers(target, null))
O.show_message("\red \b [src] tears [W] off of [target]'s face!", 1) O.show_message("\red \b [src] tears [W] off of [target]'s face!", 1)
loc = target if(prob(75))
layer = 20 loc = target
target.wear_mask = src layer = 20
target.update_inv_wear_mask() target.wear_mask = src
target.update_inv_wear_mask()
GoIdle() //so it doesn't jump the people that tear it off GoIdle() //so it doesn't jump the people that tear it off
if(!sterile) target.Paralyse(MAX_IMPREGNATION_TIME/6) //something like 25 ticks = 20 seconds with the default settings if(!sterile) target.Paralyse(MAX_IMPREGNATION_TIME/6) //something like 25 ticks = 20 seconds with the default settings
spawn(rand(MIN_IMPREGNATION_TIME,MAX_IMPREGNATION_TIME)) spawn(rand(MIN_IMPREGNATION_TIME,MAX_IMPREGNATION_TIME))
Impregnate(target) Impregnate(target)
else
for(var/mob/O in viewers(target, null))
O.show_message("\red \b [src] misses [target]'s face!", 1)
return return

View File

@@ -192,7 +192,7 @@
swap_hand() swap_hand()
/mob/living/carbon/proc/help_shake_act(mob/living/carbon/M) /mob/living/carbon/proc/help_shake_act(mob/living/carbon/M)
if (src.health > 0) if (src.health > config.health_threshold_crit)
if(src == M && istype(src, /mob/living/carbon/human)) if(src == M && istype(src, /mob/living/carbon/human))
var/mob/living/carbon/human/H = src var/mob/living/carbon/human/H = src
src.visible_message( \ src.visible_message( \

View File

@@ -11,6 +11,14 @@
animation.icon = 'icons/mob/mob.dmi' animation.icon = 'icons/mob/mob.dmi'
animation.master = src animation.master = src
for(var/datum/organ/external/E in src.organs)
if(istype(E, /datum/organ/external/chest))
continue
// Only make the limb drop if it's not too damaged
if(prob(100 - E.get_damage()))
// Override the current limb status and don't cause an explosion
E.droplimb(1,1)
flick("gibbed-h", animation) flick("gibbed-h", animation)
hgibs(loc, viruses, dna) hgibs(loc, viruses, dna)
@@ -100,4 +108,4 @@
/mob/living/carbon/human/proc/Drain() /mob/living/carbon/human/proc/Drain()
ChangeToHusk() ChangeToHusk()
mutations |= NOCLONE mutations |= NOCLONE
return return

View File

@@ -38,17 +38,19 @@
apply_damage(damage, BRUTE, affecting, armor_block) apply_damage(damage, BRUTE, affecting, armor_block)
if (damage >= 25) if (damage >= 25)
visible_message("\red <B>[M] has wounded [src]!</B>") visible_message("\red <B>[M] has wounded [src]!</B>")
apply_effect(4, WEAKEN, armor_block) apply_effect(rand(0.5,3), WEAKEN, armor_block)
updatehealth() updatehealth()
if("disarm") if("disarm")
var/randn = rand(1, 100) if (prob(80)) playsound(loc, 'sound/weapons/pierce.ogg', 25, 1, -1)
if (randn <= 80) Weaken(rand(0.5,3))
playsound(loc, 'sound/weapons/pierce.ogg', 25, 1, -1) for(var/mob/O in viewers(src, null))
Weaken(10) if ((O.client && !( O.blinded )))
visible_message(text("\red <B>[] has tackled down []!</B>", M, src)) O.show_message(text("\red <B>[] has tackled down []!</B>", M, src), 1)
if (prob(25))
M.Weaken(rand(2,4))
else else
if (randn <= 99) if (prob(80))
playsound(loc, 'sound/weapons/slash.ogg', 25, 1, -1) playsound(loc, 'sound/weapons/slash.ogg', 25, 1, -1)
drop_item() drop_item()
visible_message(text("\red <B>[] disarmed []!</B>", M, src)) visible_message(text("\red <B>[] disarmed []!</B>", M, src))

View File

@@ -113,7 +113,12 @@ emp_act
/mob/living/carbon/human/proc/attacked_by(var/obj/item/I, var/mob/living/user, var/def_zone) /mob/living/carbon/human/proc/attacked_by(var/obj/item/I, var/mob/living/user, var/def_zone)
if(!I || !user) return 0 if(!I || !user) return 0
var/datum/organ/external/affecting = get_organ(ran_zone(user.zone_sel.selecting)) var/target_zone = get_zone_with_miss_chance(user.zone_sel.selecting, src)
if(!target_zone)
visible_message("\red <B>[user] misses [src] with \the [I]!")
return
var/datum/organ/external/affecting = get_organ(target_zone)
if (!affecting) if (!affecting)
return return
if(affecting.status & ORGAN_DESTROYED) if(affecting.status & ORGAN_DESTROYED)
@@ -148,21 +153,8 @@ emp_act
if(ishuman(user)) if(ishuman(user))
var/mob/living/carbon/human/H = user var/mob/living/carbon/human/H = user
if(get_dist(H, src) > 1) //people with TK won't get smeared with blood if(get_dist(H, src) > 1) //people with TK won't get smeared with blood
if(H.wear_suit) H.bloody_body(src)
H.wear_suit.add_blood(src) H.bloody_hands(src)
H.update_inv_wear_suit(0) //updates mob overlays to show the new blood (no refresh)
else if(H.w_uniform)
H.w_uniform.add_blood(src)
H.update_inv_w_uniform(0) //updates mob overlays to show the new blood (no refresh)
if (H.gloves)
H.gloves.add_blood(H)
H.gloves:transfer_blood = 2
H.gloves:bloody_hands_mob = H
else
H.add_blood(H)
H.bloody_hands = 2
H.bloody_hands_mob = H
H.update_inv_gloves() //updates on-mob overlays for bloody hands and/or bloody gloves
switch(hit_area) switch(hit_area)
if("head")//Harder to score a stun but if you do it lasts a bit longer if("head")//Harder to score a stun but if you do it lasts a bit longer
@@ -189,10 +181,23 @@ emp_act
visible_message("\red <B>[src] has been knocked down!</B>") visible_message("\red <B>[src] has been knocked down!</B>")
if(bloody) if(bloody)
bloody_body(src)
if(wear_suit) /mob/living/carbon/human/proc/bloody_hands(var/mob/living/source, var/amount = 2)
wear_suit.add_blood(src) if (gloves)
update_inv_wear_suit(0) gloves.add_blood(source)
if(w_uniform) gloves:transfer_blood = amount
w_uniform.add_blood(src) gloves:bloody_hands_mob = source
update_inv_w_uniform(0) else
add_blood(source)
bloody_hands = amount
bloody_hands_mob = source
update_inv_gloves() //updates on-mob overlays for bloody hands and/or bloody gloves
/mob/living/carbon/human/proc/bloody_body(var/mob/living/source)
if(wear_suit)
wear_suit.add_blood(source)
update_inv_wear_suit(0)
if(w_uniform)
w_uniform.add_blood(source)
update_inv_w_uniform(0)

View File

@@ -304,7 +304,7 @@
/obj/effect/equip_e/human/process() /obj/effect/equip_e/human/process()
if (item) if (item)
item.add_fingerprint(source) item.add_fingerprint(source)
if (!item) else
switch(place) switch(place)
if("mask") if("mask")
if (!( target.wear_mask )) if (!( target.wear_mask ))
@@ -533,7 +533,7 @@ It can still be worn/put on as normal.
if (target.legcuffed) if (target.legcuffed)
strip_item = target.legcuffed strip_item = target.legcuffed
if("CPR") if("CPR")
if ((target.health >= -99.0 && target.health <= 0)) if ((target.health > config.health_threshold_dead && target.health < config.health_threshold_crit))
var/suff = min(target.getOxyLoss(), 7) var/suff = min(target.getOxyLoss(), 7)
target.adjustOxyLoss(-suff) target.adjustOxyLoss(-suff)
target.updatehealth() target.updatehealth()

View File

@@ -21,6 +21,11 @@
#define COLD_GAS_DAMAGE_LEVEL_2 1.5 //Amount of damage applied when the current breath's temperature passes the 200K point #define COLD_GAS_DAMAGE_LEVEL_2 1.5 //Amount of damage applied when the current breath's temperature passes the 200K point
#define COLD_GAS_DAMAGE_LEVEL_3 3 //Amount of damage applied when the current breath's temperature passes the 120K point #define COLD_GAS_DAMAGE_LEVEL_3 3 //Amount of damage applied when the current breath's temperature passes the 120K point
var/const/BLOOD_VOLUME_SAFE = 501
var/const/BLOOD_VOLUME_OKAY = 336
var/const/BLOOD_VOLUME_BAD = 224
var/const/BLOOD_VOLUME_SURVIVE = 122
/mob/living/carbon/human /mob/living/carbon/human
var/oxygen_alert = 0 var/oxygen_alert = 0
var/toxins_alert = 0 var/toxins_alert = 0
@@ -153,11 +158,11 @@
switch(blood_volume) switch(blood_volume)
if(501 to 10000) if(BLOOD_VOLUME_SAFE to 10000)
if(pale) if(pale)
pale = 0 pale = 0
update_body() update_body()
if(336 to 500) if(BLOOD_VOLUME_OKAY to BLOOD_VOLUME_SAFE)
if(!pale) if(!pale)
pale = 1 pale = 1
update_body() update_body()
@@ -169,7 +174,7 @@
if(oxyloss < 20) if(oxyloss < 20)
// hint that they're getting close to suffocation // hint that they're getting close to suffocation
oxyloss += 3 oxyloss += 3
if(224 to 335) if(BLOOD_VOLUME_BAD to BLOOD_VOLUME_OKAY)
if(!pale) if(!pale)
pale = 1 pale = 1
update_body() update_body()
@@ -181,19 +186,25 @@
Paralyse(rand(1,3)) Paralyse(rand(1,3))
var/word = pick("dizzy","woosey","faint") var/word = pick("dizzy","woosey","faint")
src << "\red You feel extremely [word]" src << "\red You feel extremely [word]"
if(122 to 244) if(BLOOD_VOLUME_SURVIVE to BLOOD_VOLUME_BAD)
oxyloss += 5 oxyloss += 5
toxloss += 5 toxloss += 5
if(prob(15)) if(prob(15))
var/word = pick("dizzy","woosey","faint") var/word = pick("dizzy","woosey","faint")
src << "\red You feel extremely [word]" src << "\red You feel extremely [word]"
if(0 to 122) if(0 to BLOOD_VOLUME_SURVIVE)
// There currently is a strange bug here. If the mob is not below -100 health // 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 // 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. // spam deathgasp. Adjusting toxloss ensures the mob will stay dead.
toxloss += 300 // just to be safe! toxloss += 300 // just to be safe!
death() death()
// Without enough blood you slowly go hungry.
if(blood_volume < BLOOD_VOLUME_SAFE)
if(nutrition >= 300)
nutrition -= 10
else if(nutrition >= 200)
nutrition -= 3
var/blood_max = 0 var/blood_max = 0
for(var/datum/organ/external/temp in organs) for(var/datum/organ/external/temp in organs)
@@ -814,6 +825,10 @@
else else
pressure_alert = -1 pressure_alert = -1
else if(pressure <= 50)
var/adjusted_pressure = calculate_affecting_pressure(pressure) //Returns how much pressure actually affects the mob.
if(adjusted_pressure < 50)
adjustBruteLoss( (50 - adjusted_pressure) / 50 )
return return
/* /*

View File

@@ -1,4 +1,4 @@
#define SAY_MINIMUM_PRESSURE 10
var/list/department_radio_keys = list( var/list/department_radio_keys = list(
":r" = "right hand", ":r" = "right hand",
":l" = "left hand", ":l" = "left hand",
@@ -295,6 +295,13 @@ var/list/department_radio_keys = list(
italics = 1 italics = 1
/////SPECIAL HEADSETS END /////SPECIAL HEADSETS END
var/datum/gas_mixture/environment = loc.return_air()
if(environment)
var/pressure = environment.return_pressure()
if (pressure < SAY_MINIMUM_PRESSURE) //in space no one can hear you scream
italics = 1
message_range = 1
var/list/listening var/list/listening
listening = get_mobs_in_view(message_range, src) listening = get_mobs_in_view(message_range, src)

View File

@@ -128,20 +128,15 @@ var/list/ai_list = list()
//if(icon_state == initial(icon_state)) //if(icon_state == initial(icon_state))
var/icontype = "" var/icontype = ""
var/list/icons = list("Monochrome", "Blue", "Inverted", "Firewall", "Green", "Red", "Static") var/list/icons = list("Monochrome", "Blue", "Inverted", "Text", "Smiley", "Angry", "Dorf", "Matrix", "Bliss", "Firewall", "Green", "Red", "Static", "Triumvirate", "Triumvirate Static")
if (src.name == "B.A.N.N.E.D." && src.ckey == "spaceman96")
icons += "B.A.N.N.E.D."
if (src.name == "M00X-BC" && src.ckey == "searif") if (src.name == "M00X-BC" && src.ckey == "searif")
icons += "M00X-BC" icons += "M00X-BC"
if (src.name == "TRIBUNAL" && src.ckey == "serithi")
icons += "Tribunal"
icons += "Tribunal Malfunctioning"
if (src.name == "Skuld" && src.ckey == "ravensdale") if (src.name == "Skuld" && src.ckey == "ravensdale")
icons += "Skuld" icons += "Skuld"
/* if(icontype == "Clown")
icon_state = "ai-clown2"*/
icontype = input("Please, select a display!", "AI", null/*, null*/) in icons icontype = input("Please, select a display!", "AI", null/*, null*/) in icons
if(icontype == "Monochrome") if(icontype == "Clown")
icon_state = "ai-clown2"
else if(icontype == "Monochrome")
icon_state = "ai-mono" icon_state = "ai-mono"
else if(icontype == "Blue") else if(icontype == "Blue")
icon_state = "ai" icon_state = "ai"
@@ -155,12 +150,24 @@ var/list/ai_list = list()
icon_state = "ai-malf" icon_state = "ai-malf"
else if(icontype == "Static") else if(icontype == "Static")
icon_state = "ai-static" icon_state = "ai-static"
else if(icontype == "Text")
icon_state = "ai-text"
else if(icontype == "Smiley")
icon_state = "ai-smiley"
else if(icontype == "Matrix")
icon_state = "ai-matrix"
else if(icontype == "Angry")
icon_state = "ai-angryface"
else if(icontype == "Dorf")
icon_state = "ai-dorf"
else if(icontype == "Bliss")
icon_state = "ai-bliss"
else if(icontype == "M00X-BC") else if(icontype == "M00X-BC")
icon_state = "ai-searif" icon_state = "ai-searif"
else if(icontype == "Tribunal") else if(icontype == "Triumvirate")
icon_state = "ai-tribunal" icon_state = "ai-triumvirate"
else if(icontype == "Tribunal Malfunctioning") else if(icontype == "Triumvirate Static")
icon_state = "ai-tribunal-malf" icon_state = "ai-triumvirate-malf"
else if(icontype == "Skuld") else if(icontype == "Skuld")
icon_state = "ai-ravensdale" icon_state = "ai-ravensdale"
//else //else

View File

@@ -163,6 +163,53 @@ proc/hasorgans(A)
if(prob(probability * 0.75)) return zone if(prob(probability * 0.75)) return zone
return "chest" return "chest"
// Emulates targetting a specific body part, and miss chances
// May return null if missed
// miss_chance_mod may be negative.
/proc/get_zone_with_miss_chance(zone, var/mob/target, var/miss_chance_mod = 0)
zone = check_zone(zone)
// you can only miss if your target is standing and not restrained
if(!target.buckled && !target.lying)
var/miss_chance = max(10 + miss_chance_mod, 0)
switch(zone)
if("head")
miss_chance = 40
if("l_leg")
miss_chance = 20
if("r_leg")
miss_chance = 20
if("l_arm")
miss_chance = 20
if("r_arm")
miss_chance = 20
if("l_hand")
miss_chance = 50
if("r_hand")
miss_chance = 50
if("l_foot")
miss_chance = 50
if("r_foot")
miss_chance = 50
if(prob(miss_chance))
if(prob(70))
return null
else
var/t = rand(1, 10)
switch(t)
if(1) return "head"
if(2) return "l_arm"
if(3) return "r_arm"
if(4) return "chest"
if(5) return "l_foot"
if(6) return "r_foot"
if(7) return "l_hand"
if(8) return "r_hand"
if(9) return "l_leg"
if(10) return "r_leg"
return zone
/proc/stars(n, pr) /proc/stars(n, pr)
if (pr == null) if (pr == null)

View File

@@ -374,7 +374,11 @@
dat += "Choose from the following open positions:<br>" dat += "Choose from the following open positions:<br>"
for(var/datum/job/job in job_master.occupations) for(var/datum/job/job in job_master.occupations)
if(job && IsJobAvailable(job.title)) if(job && IsJobAvailable(job.title))
dat += "<a href='byond://?src=\ref[src];SelectedJob=[job.title]'>[job.title] ([job.current_positions])</a><br>" var/active = 0
// Only players with the job assigned and AFK for less than 10 minutes count as active
for(var/mob/M in player_list) if(M.mind && M.client && M.mind.assigned_job == job && M.client.inactivity <= 10 * 60 * 10)
active++
dat += "<a href='byond://?src=\ref[src];SelectedJob=[job.title]'>[job.title] ([job.current_positions]) (Active: [active])</a><br>"
dat += "</center>" dat += "</center>"
src << browse(dat, "window=latechoices;size=300x640;can_close=1") src << browse(dat, "window=latechoices;size=300x640;can_close=1")

View File

@@ -12,6 +12,7 @@ var/global/list/special_roles = list( //keep synced with the defines BE_* in set
"pAI candidate" = 1, // -- TLE // 7 "pAI candidate" = 1, // -- TLE // 7
"cultist" = IS_MODE_COMPILED("cult"), // 8 "cultist" = IS_MODE_COMPILED("cult"), // 8
"infested monkey" = IS_MODE_COMPILED("monkey"), // 9 "infested monkey" = IS_MODE_COMPILED("monkey"), // 9
"space ninja" = "true", // 10
) )
var/global/list/underwear_m = list("White", "Grey", "Green", "Blue", "Black", "Mankini", "Love-Hearts", "Black2", "Grey2", "Stripey", "Kinky", "None") //Curse whoever made male/female underwear diffrent colours var/global/list/underwear_m = list("White", "Grey", "Green", "Blue", "Black", "Mankini", "Love-Hearts", "Black2", "Grey2", "Stripey", "Kinky", "None") //Curse whoever made male/female underwear diffrent colours
@@ -28,6 +29,7 @@ var/const/BE_ALIEN =(1<<6)
var/const/BE_PAI =(1<<7) var/const/BE_PAI =(1<<7)
var/const/BE_CULTIST =(1<<8) var/const/BE_CULTIST =(1<<8)
var/const/BE_MONKEY =(1<<9) var/const/BE_MONKEY =(1<<9)
var/const/BE_SPACENINJA=(1<<10)
var/const/MAX_SAVE_SLOTS = 10 var/const/MAX_SAVE_SLOTS = 10
@@ -236,8 +238,8 @@ datum/preferences
dat += "<a href=\"byond://?src=\ref[user];preference=slotname;task=input\">Rename slot</a> - " dat += "<a href=\"byond://?src=\ref[user];preference=slotname;task=input\">Rename slot</a> - "
dat += "<a href=\"byond://?src=\ref[user];preference=reload\">Reload slot</a>" dat += "<a href=\"byond://?src=\ref[user];preference=reload\">Reload slot</a>"
//column 1 //COLUMN 1
dat += "</center><hr><table><tr><td width='310px'>" dat += "</center><hr><table><tr><td width='285px'>"
dat += "<b>Name:</b> " dat += "<b>Name:</b> "
dat += "<a href=\"byond://?src=\ref[user];preference=name;task=input\"><b>[real_name]</b></a> " dat += "<a href=\"byond://?src=\ref[user];preference=name;task=input\"><b>[real_name]</b></a> "
@@ -263,41 +265,68 @@ datum/preferences
dat += "[(sound_adminhelp)?"On":"Off"] <a href='byond://?src=\ref[user];preference=hear_adminhelps'>toggle</a><br>" dat += "[(sound_adminhelp)?"On":"Off"] <a href='byond://?src=\ref[user];preference=hear_adminhelps'>toggle</a><br>"
if(config.allow_admin_ooccolor && check_rights(R_FUN,0)) if(config.allow_admin_ooccolor && check_rights(R_FUN,0))
dat += "<br><b>OOC</b><br>" dat += "<br><a href='byond://?src=\ref[user];preference=ooccolor;task=input'><b>OOC color</b></a> <font face=\"fixedsys\" size=\"3\" color=\"[ooccolor]\"><table style='display:inline;' bgcolor=\"[ooccolor]\"><tr><td>__</td></tr></table></font><br>"
dat += "<a href='byond://?src=\ref[user];preference=ooccolor;task=input'>Change color</a> <font face=\"fixedsys\" size=\"3\" color=\"[ooccolor]\"><table style='display:inline;' bgcolor=\"[ooccolor]\"><tr><td>__</td></tr></table></font><br>"
dat += "<br><b>Occupation Choices</b><br>" dat += "\t<a href=\"byond://?src=\ref[user];preference=job;task=menu\"><b>Occupation Preferences</b></a><br>"
dat += "\t<a href=\"byond://?src=\ref[user];preference=job;task=menu\"><b>Set Preferences</b></a><br><br>"
if(jobban_isbanned(user, "Records")) if(jobban_isbanned(user, "Records"))
dat += "<b>You are banned from using character records.</b><br>" dat += "<b>You are banned from using character records.</b><br>"
else else
dat += "<b><a href=\"byond://?src=\ref[user];preference=records;record=1\">Character Records</a></b><br><br>" dat += "<b><a href=\"byond://?src=\ref[user];preference=records;record=1\">Character Records</a></b><br>"
dat += "<b>Flavor Text</b><br>" dat += "\t<a href=\"byond://?src=\ref[user];preference=skills\"><b>Set Skills</b> (<i>[GetSkillClass(used_skillpoints)][used_skillpoints > 0 ? " [used_skillpoints]" : "0"])</i></a><br>"
dat += "<a href='byond://?src=\ref[user];preference=flavor_text;task=input'>Change</a><br>"
dat += "<a href='byond://?src=\ref[user];preference=flavor_text;task=input'><b>Set Flavor Text</b></a><br>"
if(lentext(flavor_text) <= 40) if(lentext(flavor_text) <= 40)
dat += "[flavor_text]" if(!lentext(flavor_text))
dat += "\[...\]"
else
dat += "[flavor_text]"
else else
dat += "[copytext(flavor_text, 1, 37)]...<br>" dat += "[copytext(flavor_text, 1, 37)]...<br>"
dat += "<br>" dat += "<br>"
dat += "<b>Skill Choices</b><br>" //antag
dat += "\t<i>[GetSkillClass(used_skillpoints)]</i> ([used_skillpoints])<br>"
dat += "\t<a href=\"byond://?src=\ref[user];preference=skills\"><b>Set Skills</b></a><br><br>"
//column 2
dat += "</td><td width='310px'>" //height='300px'
dat += "<table><tr><td width=100><b>Body</b> "
dat += "(<a href=\"byond://?src=\ref[user];preference=all;task=random\">&reg;</A>)"
dat += "<br>" dat += "<br>"
if(jobban_isbanned(user, "Syndicate"))
dat += "<b>You are banned from antagonist roles.</b>"
src.be_special = 0
else
var/n = 0
for (var/i in special_roles)
if(special_roles[i]) //if mode is available on the server
if(jobban_isbanned(user, i))
dat += "<b>Be [i]:</b> <font color=red><b> \[BANNED]</b></font><br>"
else if(i == "pai candidate")
if(jobban_isbanned(user, "pAI"))
dat += "<b>Be [i]:</b> <font color=red><b> \[BANNED]</b></font><br>"
else
dat += "<b>Be [i]:</b> <a href=\"byond://?src=\ref[user];preference=be_special;num=[n]\"><b>[src.be_special&(1<<n) ? "Yes" : "No"]</b></a><br>"
n++
dat += "</td>"
//COLUMN 2
dat += "<td>"
dat += "<table><tr>"
dat += "<td width='142px'>"
dat += "<b>Body</b> (<a href=\"byond://?src=\ref[user];preference=all;task=random\">&reg;</A>)<br>"
dat += "Species: <a href='byond://?src=\ref[user];preference=species;task=input'>[species]</a><br>" dat += "Species: <a href='byond://?src=\ref[user];preference=species;task=input'>[species]</a><br>"
dat += "Blood Type: <a href='byond://?src=\ref[user];preference=b_type;task=input'>[b_type]</a><br>" dat += "Blood Type: <a href='byond://?src=\ref[user];preference=b_type;task=input'>[b_type]</a><br>"
dat += "Skin Tone: <a href='byond://?src=\ref[user];preference=s_tone;task=input'>[-s_tone + 35]/220<br></a>" dat += "Skin Tone: <a href='byond://?src=\ref[user];preference=s_tone;task=input'>[-s_tone + 35]/220</a><br>"
dat += "<a href='byond://?src=\ref[user];preference=skin_style;task=input'>Adjust Skin</a><br>"
dat += "<a href='byond://?src=\ref[user];preference=limbs;task=input'>Adjust Limbs</a><br>"
dat += "</td>"
dat += "Limbs: <a href='byond://?src=\ref[user];preference=limbs;task=input'>Adjust Limbs</a><br>" dat += "<td><b>Preview</b></br>"
dat += "<img src=previewicon.png height=64 width=64><img src=previewicon2.png height=64 width=64></br></td>"
dat += "</tr></table>"
//display limbs below
var/ind = 0
for(var/name in organ_data) for(var/name in organ_data)
//world << "[ind] \ [organ_data.len]"
var/status = organ_data[name] var/status = organ_data[name]
var/organ_name = null var/organ_name = null
switch(name) switch(name)
@@ -319,11 +348,18 @@ datum/preferences
organ_name = "right hand" organ_name = "right hand"
if(status == "cyborg") if(status == "cyborg")
dat += "\tRobotical [organ_name] prothesis<br>" ++ind
if(status == "amputated") if(ind > 1)
dat += "\tAmputated [organ_name]<br>" dat += ", "
dat+="<br>" dat += "\tMechanical [organ_name] prothesis"
else if(status == "amputated")
++ind
if(ind > 1)
dat += ", "
dat += "\tAmputated [organ_name]"
if(ind)
dat += "\[...\]"
dat += "<br><br>"
if(gender == MALE) if(gender == MALE)
dat += "Underwear: <a href =\"byond://?src=\ref[user];preference=underwear;task=input\"><b>[underwear_m[underwear]]</b></a><br>" dat += "Underwear: <a href =\"byond://?src=\ref[user];preference=underwear;task=input\"><b>[underwear_m[underwear]]</b></a><br>"
@@ -332,8 +368,6 @@ datum/preferences
dat += "Backpack Type:<br><a href =\"byond://?src=\ref[user];preference=bag;task=input\"><b>[backbaglist[backbag]]</b></a><br>" dat += "Backpack Type:<br><a href =\"byond://?src=\ref[user];preference=bag;task=input\"><b>[backbaglist[backbag]]</b></a><br>"
dat += "</td><td><b>Preview</b><br><img src=previewicon.png height=64 width=64><img src=previewicon2.png height=64 width=64></td></tr></table>"
dat += "<br><b>Hair</b><br>" dat += "<br><b>Hair</b><br>"
dat += "<a href='byond://?src=\ref[user];preference=hair;task=input'>Change Color</a> <font face=\"fixedsys\" size=\"3\" color=\"#[num2hex(r_hair, 2)][num2hex(g_hair, 2)][num2hex(b_hair, 2)]\"><table style='display:inline;' bgcolor=\"#[num2hex(r_hair, 2)][num2hex(g_hair, 2)][num2hex(b_hair)]\"><tr><td>__</td></tr></table></font><br>" dat += "<a href='byond://?src=\ref[user];preference=hair;task=input'>Change Color</a> <font face=\"fixedsys\" size=\"3\" color=\"#[num2hex(r_hair, 2)][num2hex(g_hair, 2)][num2hex(b_hair, 2)]\"><table style='display:inline;' bgcolor=\"#[num2hex(r_hair, 2)][num2hex(g_hair, 2)][num2hex(b_hair)]\"><tr><td>__</td></tr></table></font><br>"
dat += "Style: <a href='byond://?src=\ref[user];preference=h_style;task=input'>[h_style]</a><br>" dat += "Style: <a href='byond://?src=\ref[user];preference=h_style;task=input'>[h_style]</a><br>"
@@ -345,22 +379,7 @@ datum/preferences
dat += "<br><b>Eyes</b><br>" dat += "<br><b>Eyes</b><br>"
dat += "<a href='byond://?src=\ref[user];preference=eyes;task=input'>Change Color</a> <font face=\"fixedsys\" size=\"3\" color=\"#[num2hex(r_eyes, 2)][num2hex(g_eyes, 2)][num2hex(b_eyes, 2)]\"><table style='display:inline;' bgcolor=\"#[num2hex(r_eyes, 2)][num2hex(g_eyes, 2)][num2hex(b_eyes)]\"><tr><td>__</td></tr></table></font>" dat += "<a href='byond://?src=\ref[user];preference=eyes;task=input'>Change Color</a> <font face=\"fixedsys\" size=\"3\" color=\"#[num2hex(r_eyes, 2)][num2hex(g_eyes, 2)][num2hex(b_eyes, 2)]\"><table style='display:inline;' bgcolor=\"#[num2hex(r_eyes, 2)][num2hex(g_eyes, 2)][num2hex(b_eyes)]\"><tr><td>__</td></tr></table></font>"
dat += "<br><br>" dat += "<br>"
if(jobban_isbanned(user, "Syndicate"))
dat += "<b>You are banned from antagonist roles.</b>"
src.be_special = 0
else
var/n = 0
for (var/i in special_roles)
if(special_roles[i]) //if mode is available on the server
if(jobban_isbanned(user, i))
dat += "<b>Be [i]:</b> <font color=red><b> \[BANNED]</b></font><br>"
else if(i == "pai candidate")
if(jobban_isbanned(user, "pAI"))
dat += "<b>Be [i]:</b> <font color=red><b> \[BANNED]</b></font><br>"
else
dat += "<b>Be [i]:</b> <a href=\"byond://?src=\ref[user];preference=be_special;num=[n]\"><b>[src.be_special&(1<<n) ? "Yes" : "No"]</b></a><br>"
n++
dat += "</td></tr></table><center>" dat += "</td></tr></table><center>"
dat += "<hr>" dat += "<hr>"
@@ -1021,6 +1040,10 @@ datum/preferences
if(second_limb) if(second_limb)
organ_data[second_limb] = "cyborg" organ_data[second_limb] = "cyborg"
if("skin_style")
var/skin_style_name = input(user, "Select a new skin style") as null|anything in list("default1", "default2", "default3")
if(!skin_style_name) return
else else
switch(href_list["preference"]) switch(href_list["preference"])
@@ -1231,6 +1254,7 @@ datum/preferences
C.be_alien = be_special & BE_ALIEN C.be_alien = be_special & BE_ALIEN
C.be_pai = be_special & BE_PAI C.be_pai = be_special & BE_PAI
C.be_syndicate = be_special & BE_TRAITOR C.be_syndicate = be_special & BE_TRAITOR
C.be_spaceninja = be_special & BE_SPACENINJA
if(isnull(src.ghost_ears)) src.ghost_ears = 1 //There were problems where the default was null before someone saved their profile. if(isnull(src.ghost_ears)) src.ghost_ears = 1 //There were problems where the default was null before someone saved their profile.
C.ghost_ears = src.ghost_ears C.ghost_ears = src.ghost_ears
C.ghost_sight = src.ghost_sight C.ghost_sight = src.ghost_sight

View File

@@ -416,3 +416,29 @@
name = "Tajaran Ears" name = "Tajaran Ears"
icon_state = "tajears" icon_state = "tajears"
species_allowed = list("Tajaran") species_allowed = list("Tajaran")
//skin styles - WIP
/datum/sprite_accessory/skin
human
name = "Default human skin"
icon = "human"
human_tatt01
name = "Tatt01 human skin"
icon = "human_tattoo1"
tajaran
name = "Default tajaran skin"
icon = "tajaran"
species_allowed = list("Tajaran")
soghun
name = "Default soghun skin"
icon = "soghun"
species_allowed = list("Soghun")
skrell
name = "Default skrell skin"
icon = "skrell"
species_allowed = list("Skrell")

View File

@@ -518,6 +518,7 @@
if ((!( L.stat ) && L.canmove && !( L.restrained() ))) if ((!( L.stat ) && L.canmove && !( L.restrained() )))
var/resisting = 0 var/resisting = 0
for(var/obj/O in L.requests) for(var/obj/O in L.requests)
L.requests.Remove(O)
del(O) del(O)
resisting++ resisting++
for(var/obj/item/weapon/grab/G in usr.grabbed_by) for(var/obj/item/weapon/grab/G in usr.grabbed_by)

View File

@@ -36,7 +36,7 @@
var/damage = 10 var/damage = 10
var/damage_type = BRUTE //BRUTE, BURN, TOX, OXY, CLONE are the only things that should be in here var/damage_type = BRUTE //BRUTE, BURN, TOX, OXY, CLONE are the only things that should be in here
var/nodamage = 0 //Determines if the projectile will skip any damage inflictions var/nodamage = 0 //Determines if the projectile will skip any damage inflictions
var/flag = "bullet" //Defines what armor to use when it hits things. Must be set to bullet, laser, energy,or bomb var/flag = "bullet" //Defines what armor to use when it hits things. Must be set to bullet, laser, energy,or bomb //Cael - bio and rad are also valid
var/projectile_type = "/obj/item/projectile" var/projectile_type = "/obj/item/projectile"
var/kill_count = 50 //This will de-increment every process(). When 0, it will delete the projectile. var/kill_count = 50 //This will de-increment every process(). When 0, it will delete the projectile.
//Effects //Effects
@@ -80,7 +80,14 @@
forcedodge = 1 forcedodge = 1
else else
var/distance = get_dist(original,loc) var/distance = get_dist(original,loc)
def_zone = ran_zone(def_zone, 100-(5*distance)) //Lower accurancy/longer range tradeoff. //Lower accurancy/longer range tradeoff. Distance matters a lot here, so at
// close distance, actually RAISE the chance to hit.
def_zone = get_zone_with_miss_chance(def_zone, M, -30 + 8*distance)
if(!def_zone)
visible_message("\The [src] misses [M] narrowly.")
del(src)
return
if(silenced) if(silenced)
M << "\red You've been shot in the [parse_zone(def_zone)] by the [src.name]!" M << "\red You've been shot in the [parse_zone(def_zone)] by the [src.name]!"
else else

View File

@@ -124,4 +124,12 @@
else if (istype(target, /mob/living/carbon/)) else if (istype(target, /mob/living/carbon/))
M.show_message("\blue The radiation beam dissipates harmlessly through your body.") M.show_message("\blue The radiation beam dissipates harmlessly through your body.")
else else
return 1 return 1
/obj/item/projectile/neurotoxin
name = "neurotoxin"
icon_state = "toxin"
damage = 5
damage_type = TOX
weaken = 5
flag = "bio"

View File

@@ -83,9 +83,9 @@ datum
on_mob_life(var/mob/living/M as mob) on_mob_life(var/mob/living/M as mob)
if(prob(10)) if(prob(10))
M << "\red Your insides are burning!" M << "\red Your insides are burning!"
M.adjustToxLoss(rand(20,60)) M.adjustToxLoss(rand(20,60)*REAGENTS_EFFECT_MULTIPLIER)
else if(prob(40)) else if(prob(40))
M.heal_organ_damage(5,0) M.heal_organ_damage(5*REAGENTS_EFFECT_MULTIPLIER,0)
..() ..()
return return
@@ -305,29 +305,29 @@ datum
on_mob_life(var/mob/living/M as mob) on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom if(!M) M = holder.my_atom
M.drowsyness = max(M.drowsyness-2, 0) M.drowsyness = max(M.drowsyness-2*REAGENTS_EFFECT_MULTIPLIER, 0)
if(holder.has_reagent("toxin")) if(holder.has_reagent("toxin"))
holder.remove_reagent("toxin", 2) holder.remove_reagent("toxin", 2*REAGENTS_EFFECT_MULTIPLIER)
if(holder.has_reagent("stoxin")) if(holder.has_reagent("stoxin"))
holder.remove_reagent("stoxin", 2) holder.remove_reagent("stoxin", 2*REAGENTS_EFFECT_MULTIPLIER)
if(holder.has_reagent("plasma")) if(holder.has_reagent("plasma"))
holder.remove_reagent("plasma", 1) holder.remove_reagent("plasma", 1*REAGENTS_EFFECT_MULTIPLIER)
if(holder.has_reagent("sacid")) if(holder.has_reagent("sacid"))
holder.remove_reagent("sacid", 1) holder.remove_reagent("sacid", 1*REAGENTS_EFFECT_MULTIPLIER)
if(holder.has_reagent("cyanide")) if(holder.has_reagent("cyanide"))
holder.remove_reagent("cyanide", 1) holder.remove_reagent("cyanide", 1*REAGENTS_EFFECT_MULTIPLIER)
if(holder.has_reagent("amatoxin")) if(holder.has_reagent("amatoxin"))
holder.remove_reagent("amatoxin", 2) holder.remove_reagent("amatoxin", 2*REAGENTS_EFFECT_MULTIPLIER)
if(holder.has_reagent("chloralhydrate")) if(holder.has_reagent("chloralhydrate"))
holder.remove_reagent("chloralhydrate", 5) holder.remove_reagent("chloralhydrate", 5*REAGENTS_EFFECT_MULTIPLIER)
if(holder.has_reagent("carpotoxin")) if(holder.has_reagent("carpotoxin"))
holder.remove_reagent("carpotoxin", 1) holder.remove_reagent("carpotoxin", 1*REAGENTS_EFFECT_MULTIPLIER)
if(holder.has_reagent("zombiepowder")) if(holder.has_reagent("zombiepowder"))
holder.remove_reagent("zombiepowder", 0.5) holder.remove_reagent("zombiepowder", 0.5*REAGENTS_EFFECT_MULTIPLIER)
if(holder.has_reagent("mindbreaker")) if(holder.has_reagent("mindbreaker"))
holder.remove_reagent("mindbreaker", 2) holder.remove_reagent("mindbreaker", 2*REAGENTS_EFFECT_MULTIPLIER)
M.hallucination = max(0, M.hallucination - 5) M.hallucination = max(0, M.hallucination - 5*REAGENTS_EFFECT_MULTIPLIER)
M.adjustToxLoss(-2) M.adjustToxLoss(-2*REAGENTS_EFFECT_MULTIPLIER)
..() ..()
return return
@@ -340,7 +340,7 @@ datum
on_mob_life(var/mob/living/M as mob) on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom if(!M) M = holder.my_atom
M.adjustToxLoss(1.5) M.adjustToxLoss(1.5*REAGENTS_EFFECT_MULTIPLIER)
..() ..()
return return
@@ -353,8 +353,8 @@ datum
on_mob_life(var/mob/living/M as mob) on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom if(!M) M = holder.my_atom
M.adjustToxLoss(3) M.adjustToxLoss(3*REAGENTS_EFFECT_MULTIPLIER)
M.adjustOxyLoss(3) M.adjustOxyLoss(3*REAGENTS_EFFECT_MULTIPLIER)
M.sleeping += 1 M.sleeping += 1
..() ..()
return return
@@ -439,7 +439,7 @@ datum
if(!M) M = holder.my_atom if(!M) M = holder.my_atom
if(M.losebreath >= 10) if(M.losebreath >= 10)
M.losebreath = max(10, M.losebreath-5) M.losebreath = max(10, M.losebreath-5)
holder.remove_reagent(src.id, 0.2) holder.remove_reagent(src.id, 0.5 * REAGENTS_METABOLISM)
return return
space_drugs space_drugs
@@ -456,7 +456,7 @@ datum
if(M.canmove) if(M.canmove)
if(prob(10)) step(M, pick(cardinal)) if(prob(10)) step(M, pick(cardinal))
if(prob(7)) M.emote(pick("twitch","drool","moan","giggle")) if(prob(7)) M.emote(pick("twitch","drool","moan","giggle"))
holder.remove_reagent(src.id, 0.2) holder.remove_reagent(src.id, 0.5 * REAGENTS_METABOLISM)
return return
serotrotium serotrotium
@@ -469,7 +469,7 @@ datum
on_mob_life(var/mob/living/M as mob) on_mob_life(var/mob/living/M as mob)
if(ishuman(M)) if(ishuman(M))
if(prob(7)) M.emote(pick("twitch","drool","moan","gasp")) if(prob(7)) M.emote(pick("twitch","drool","moan","gasp"))
holder.remove_reagent(src.id, 0.1) holder.remove_reagent(src.id, 0.25 * REAGENTS_METABOLISM)
return return
/* silicate /* silicate
@@ -585,7 +585,7 @@ datum
on_mob_life(var/mob/living/M as mob) on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom if(!M) M = holder.my_atom
M.take_organ_damage(1, 0) M.take_organ_damage(1*REAGENTS_EFFECT_MULTIPLIER, 0)
..() ..()
return return
@@ -598,7 +598,7 @@ datum
on_mob_life(var/mob/living/M as mob) on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom if(!M) M = holder.my_atom
M.adjustToxLoss(1) M.adjustToxLoss(1*REAGENTS_EFFECT_MULTIPLIER)
..() ..()
return return
@@ -639,7 +639,7 @@ datum
color = "#808080" // rgb: 128, 128, 128 color = "#808080" // rgb: 128, 128, 128
on_mob_life(var/mob/living/M as mob) on_mob_life(var/mob/living/M as mob)
M.nutrition += 1 M.nutrition += 1*REAGENTS_EFFECT_MULTIPLIER
..() ..()
return return
@@ -652,8 +652,8 @@ datum
on_mob_life(var/mob/living/M as mob) on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom if(!M) M = holder.my_atom
M.adjustToxLoss(1) M.adjustToxLoss(1*REAGENTS_EFFECT_MULTIPLIER)
M.take_organ_damage(0, 1) M.take_organ_damage(0, 1*REAGENTS_EFFECT_MULTIPLIER)
..() ..()
return return
reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume) reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)
@@ -725,7 +725,7 @@ datum
on_mob_life(var/mob/living/M as mob) on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom if(!M) M = holder.my_atom
M.adjustToxLoss(1) M.adjustToxLoss(1*REAGENTS_EFFECT_MULTIPLIER)
..() ..()
return return
@@ -907,7 +907,7 @@ datum
on_mob_life(var/mob/living/M as mob) on_mob_life(var/mob/living/M as mob)
if(!M.dna) return //No robots, AIs, aliens, Ians or other mobs should be affected by this. if(!M.dna) return //No robots, AIs, aliens, Ians or other mobs should be affected by this.
if(!M) M = holder.my_atom if(!M) M = holder.my_atom
M.apply_effect(10,IRRADIATE,0) M.apply_effect(10*REAGENTS_EFFECT_MULTIPLIER,IRRADIATE,0)
..() ..()
return return
@@ -935,7 +935,7 @@ datum
on_mob_life(var/mob/living/M as mob) on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom if(!M) M = holder.my_atom
M.nutrition += nutriment_factor M.nutrition += nutriment_factor*REAGENTS_EFFECT_MULTIPLIER
..() ..()
return return
@@ -1004,7 +1004,7 @@ datum
on_mob_life(var/mob/living/M as mob) on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom if(!M) M = holder.my_atom
M.apply_effect(1,IRRADIATE,0) M.apply_effect(1*REAGENTS_EFFECT_MULTIPLIER,IRRADIATE,0)
..() ..()
return return
@@ -1055,7 +1055,7 @@ datum
on_mob_life(var/mob/living/M as mob) on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom if(!M) M = holder.my_atom
M.adjustToxLoss(1) M.adjustToxLoss(1*REAGENTS_EFFECT_MULTIPLIER)
..() ..()
return return
@@ -1157,8 +1157,8 @@ datum
on_mob_life(var/mob/living/M as mob) on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom if(!M) M = holder.my_atom
if(holder.has_reagent("inaprovaline")) if(holder.has_reagent("inaprovaline"))
holder.remove_reagent("inaprovaline", 2) holder.remove_reagent("inaprovaline", 2*REAGENTS_EFFECT_MULTIPLIER)
M.adjustToxLoss(1) M.adjustToxLoss(1*REAGENTS_EFFECT_MULTIPLIER)
..() ..()
return return
reaction_obj(var/obj/O, var/volume) reaction_obj(var/obj/O, var/volume)
@@ -1211,7 +1211,7 @@ datum
M.make_dizzy(1) M.make_dizzy(1)
if(!M.confused) M.confused = 1 if(!M.confused) M.confused = 1
M.confused = max(M.confused, 20) M.confused = max(M.confused, 20)
holder.remove_reagent(src.id, 0.2) holder.remove_reagent(src.id, 0.5 * REAGENTS_METABOLISM)
..() ..()
return return
@@ -1227,7 +1227,7 @@ datum
return return
if(!M) M = holder.my_atom if(!M) M = holder.my_atom
if(prob(33)) if(prob(33))
M.take_organ_damage(1, 0) M.take_organ_damage(1*REAGENTS_EFFECT_MULTIPLIER, 0)
M.adjustOxyLoss(3) M.adjustOxyLoss(3)
if(prob(20)) M.emote("gasp") if(prob(20)) M.emote("gasp")
..() ..()
@@ -1244,7 +1244,7 @@ datum
if(M.stat == 2.0) if(M.stat == 2.0)
return return
if(!M) M = holder.my_atom if(!M) M = holder.my_atom
M.heal_organ_damage(0,2) M.heal_organ_damage(0,2*REAGENTS_EFFECT_MULTIPLIER)
..() ..()
return return
@@ -1259,7 +1259,7 @@ datum
if(M.stat == 2.0) //THE GUY IS **DEAD**! BEREFT OF ALL LIFE HE RESTS IN PEACE etc etc. He does NOT metabolise shit anymore, god DAMN if(M.stat == 2.0) //THE GUY IS **DEAD**! BEREFT OF ALL LIFE HE RESTS IN PEACE etc etc. He does NOT metabolise shit anymore, god DAMN
return return
if(!M) M = holder.my_atom if(!M) M = holder.my_atom
M.heal_organ_damage(0,3) M.heal_organ_damage(0,3*REAGENTS_EFFECT_MULTIPLIER)
..() ..()
return return
@@ -1274,9 +1274,9 @@ datum
if(M.stat == 2.0) if(M.stat == 2.0)
return //See above, down and around. --Agouri return //See above, down and around. --Agouri
if(!M) M = holder.my_atom if(!M) M = holder.my_atom
M.adjustOxyLoss(-2) M.adjustOxyLoss(-2*REAGENTS_EFFECT_MULTIPLIER)
if(holder.has_reagent("lexorin")) if(holder.has_reagent("lexorin"))
holder.remove_reagent("lexorin", 2) holder.remove_reagent("lexorin", 2*REAGENTS_EFFECT_MULTIPLIER)
..() ..()
return return
@@ -1293,7 +1293,7 @@ datum
if(!M) M = holder.my_atom if(!M) M = holder.my_atom
M.adjustOxyLoss(-M.getOxyLoss()) M.adjustOxyLoss(-M.getOxyLoss())
if(holder.has_reagent("lexorin")) if(holder.has_reagent("lexorin"))
holder.remove_reagent("lexorin", 2) holder.remove_reagent("lexorin", 2*REAGENTS_EFFECT_MULTIPLIER)
..() ..()
return return
@@ -1308,10 +1308,10 @@ datum
if(M.stat == 2.0) if(M.stat == 2.0)
return return
if(!M) M = holder.my_atom if(!M) M = holder.my_atom
if(M.getOxyLoss() && prob(40)) M.adjustOxyLoss(-1) if(M.getOxyLoss() && prob(40)) M.adjustOxyLoss(-1*REAGENTS_EFFECT_MULTIPLIER)
if(M.getBruteLoss() && prob(40)) M.heal_organ_damage(1,0) if(M.getBruteLoss() && prob(40)) M.heal_organ_damage(1*REAGENTS_EFFECT_MULTIPLIER,0)
if(M.getFireLoss() && prob(40)) M.heal_organ_damage(0,1) if(M.getFireLoss() && prob(40)) M.heal_organ_damage(0,1*REAGENTS_EFFECT_MULTIPLIER)
if(M.getToxLoss() && prob(40)) M.adjustToxLoss(-1) if(M.getToxLoss() && prob(40)) M.adjustToxLoss(-1*REAGENTS_EFFECT_MULTIPLIER)
..() ..()
return return
@@ -1394,7 +1394,7 @@ datum
M.AdjustWeakened(-1) M.AdjustWeakened(-1)
if(holder.has_reagent("mindbreaker")) if(holder.has_reagent("mindbreaker"))
holder.remove_reagent("mindbreaker", 5) holder.remove_reagent("mindbreaker", 5)
M.hallucination = max(0, M.hallucination - 10) M.hallucination = max(0, M.hallucination - 10*REAGENTS_EFFECT_MULTIPLIER)
if(prob(60)) M.adjustToxLoss(1) if(prob(60)) M.adjustToxLoss(1)
..() ..()
return return
@@ -1410,7 +1410,7 @@ datum
on_mob_life(var/mob/living/M as mob) on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom if(!M) M = holder.my_atom
M.jitteriness = max(M.jitteriness-5,0) M.jitteriness = max(M.jitteriness-5,0)
if(prob(80)) M.adjustBrainLoss(1) if(prob(80)) M.adjustBrainLoss(1*REAGENTS_EFFECT_MULTIPLIER)
if(prob(50)) M.drowsyness = max(M.drowsyness, 3) if(prob(50)) M.drowsyness = max(M.drowsyness, 3)
if(prob(10)) M.emote("drool") if(prob(10)) M.emote("drool")
..() ..()
@@ -1425,7 +1425,7 @@ datum
on_mob_life(var/mob/living/M as mob) on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom if(!M) M = holder.my_atom
M.radiation = max(M.radiation-3,0) M.radiation = max(M.radiation-3*REAGENTS_EFFECT_MULTIPLIER,0)
..() ..()
return return
@@ -1440,10 +1440,10 @@ datum
if(M.stat == 2.0) if(M.stat == 2.0)
return //See above, down and around. --Agouri return //See above, down and around. --Agouri
if(!M) M = holder.my_atom if(!M) M = holder.my_atom
M.radiation = max(M.radiation-7,0) M.radiation = max(M.radiation-7*REAGENTS_EFFECT_MULTIPLIER,0)
M.adjustToxLoss(-1) M.adjustToxLoss(-1*REAGENTS_EFFECT_MULTIPLIER)
if(prob(15)) if(prob(15))
M.take_organ_damage(1, 0) M.take_organ_damage(1*REAGENTS_EFFECT_MULTIPLIER, 0)
..() ..()
return return
@@ -1456,7 +1456,7 @@ datum
on_mob_life(var/mob/living/M as mob) on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom if(!M) M = holder.my_atom
M.adjustBrainLoss(-3) M.adjustBrainLoss(-3*REAGENTS_EFFECT_MULTIPLIER)
..() ..()
return return
@@ -1488,7 +1488,7 @@ datum
if(M.stat == 2.0) if(M.stat == 2.0)
return return
if(!M) M = holder.my_atom if(!M) M = holder.my_atom
M.heal_organ_damage(2,0) M.heal_organ_damage(2*REAGENTS_EFFECT_MULTIPLIER,0)
..() ..()
return return
@@ -1502,7 +1502,7 @@ datum
on_mob_life(var/mob/living/M as mob) on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom if(!M) M = holder.my_atom
if(prob(5)) M.emote(pick("twitch","blink_r","shiver")) if(prob(5)) M.emote(pick("twitch","blink_r","shiver"))
holder.remove_reagent(src.id, 0.2) holder.remove_reagent(src.id, 0.5 * REAGENTS_METABOLISM)
..() ..()
return return
@@ -1549,7 +1549,6 @@ datum
color = "#C8A5DC" // rgb: 200, 165, 220 color = "#C8A5DC" // rgb: 200, 165, 220
on_mob_life(var/mob/living/M as mob)//no more mr. panacea on_mob_life(var/mob/living/M as mob)//no more mr. panacea
holder.remove_reagent(src.id, 0.2)
..() ..()
return return
@@ -1562,7 +1561,7 @@ datum
on_mob_life(var/mob/living/M as mob) on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom if(!M) M = holder.my_atom
M.adjustToxLoss(2) M.adjustToxLoss(2*REAGENTS_EFFECT_MULTIPLIER)
..() ..()
return return
@@ -1575,8 +1574,8 @@ datum
on_mob_life(var/mob/living/carbon/M as mob) on_mob_life(var/mob/living/carbon/M as mob)
if(!M) M = holder.my_atom if(!M) M = holder.my_atom
M.status_flags |= FAKEDEATH M.status_flags |= FAKEDEATH
M.adjustOxyLoss(0.5) M.adjustOxyLoss(0.5*REAGENTS_EFFECT_MULTIPLIER)
M.adjustToxLoss(0.5) M.adjustToxLoss(0.5*REAGENTS_EFFECT_MULTIPLIER)
M.Weaken(10) M.Weaken(10)
M.silent = max(M.silent, 10) M.silent = max(M.silent, 10)
M.tod = worldtime2text() M.tod = worldtime2text()
@@ -1710,7 +1709,7 @@ datum
M.sleeping += 1 M.sleeping += 1
if(61 to INFINITY) if(61 to INFINITY)
M.sleeping += 1 M.sleeping += 1
M.adjustToxLoss(data - 50) M.adjustToxLoss((data - 50) * REAGENTS_EFFECT_MULTIPLIER)
..() ..()
return return
@@ -2144,6 +2143,7 @@ datum
if(!M) M = holder.my_atom if(!M) M = holder.my_atom
M.druggy = max(M.druggy, 30) M.druggy = max(M.druggy, 30)
if(!data) data = 1 if(!data) data = 1
switch(data) switch(data)
if(1 to 5) if(1 to 5)
if (!M.stuttering) M.stuttering = 1 if (!M.stuttering) M.stuttering = 1

View File

@@ -237,6 +237,14 @@
..() ..()
reagents.add_reagent("wine", 100) reagents.add_reagent("wine", 100)
/obj/item/weapon/reagent_containers/food/drinks/bottle/absinthe
name = "Jailbreaker Verte"
desc = "Twenty-fourth century Green Fairy, one sip of this and you just know you're gonna have a good time."
icon_state = "absinthebottle"
New()
..()
reagents.add_reagent("absinthe", 100)
//////////////////////////JUICES AND STUFF /////////////////////// //////////////////////////JUICES AND STUFF ///////////////////////
/obj/item/weapon/reagent_containers/food/drinks/bottle/orangejuice /obj/item/weapon/reagent_containers/food/drinks/bottle/orangejuice

View File

@@ -259,6 +259,16 @@
reagents.add_reagent("sugar", 3) reagents.add_reagent("sugar", 3)
bitesize = 2 bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/candy/donor
name = "Donor Candy"
desc = "A little treat for blood donors."
trash = /obj/item/trash/candy
New()
..()
reagents.add_reagent("nutriment", 10)
reagents.add_reagent("sugar", 3)
bitesize = 5
/obj/item/weapon/reagent_containers/food/snacks/candy_corn /obj/item/weapon/reagent_containers/food/snacks/candy_corn
name = "candy corn" name = "candy corn"
desc = "It's a handful of candy corn. Can be stored in a detective's hat." desc = "It's a handful of candy corn. Can be stored in a detective's hat."

View File

@@ -6,8 +6,9 @@
name = "hypospray" name = "hypospray"
desc = "The DeForest Medical Corporation hypospray is a sterile, air-needle autoinjector for rapid administration of drugs to patients." desc = "The DeForest Medical Corporation hypospray is a sterile, air-needle autoinjector for rapid administration of drugs to patients."
icon = 'icons/obj/syringe.dmi' icon = 'icons/obj/syringe.dmi'
item_state = "hypo" item_state = "hypo1"
icon_state = "hypo" icon_state = "hypo"
var/original_icon_state = "hypo"
amount_per_transfer_from_this = 5 amount_per_transfer_from_this = 5
volume = 30 volume = 30
possible_transfer_amounts = null possible_transfer_amounts = null
@@ -54,6 +55,7 @@
name = "autoinjector" name = "autoinjector"
desc = "A rapid and safe way to administer small amounts of drugs by untrained or trained personnel." desc = "A rapid and safe way to administer small amounts of drugs by untrained or trained personnel."
icon_state = "autoinjector" icon_state = "autoinjector"
original_icon_state = "autoinjector"
item_state = "autoinjector" item_state = "autoinjector"
amount_per_transfer_from_this = 5 amount_per_transfer_from_this = 5
volume = 5 volume = 5
@@ -72,9 +74,9 @@
/obj/item/weapon/reagent_containers/hypospray/autoinjector/update_icon() /obj/item/weapon/reagent_containers/hypospray/autoinjector/update_icon()
if(reagents.total_volume > 0) if(reagents.total_volume > 0)
icon_state = "[initial(icon_state)]1" icon_state = "[original_icon_state]1"
else else
icon_state = "[initial(icon_state)]0" icon_state = "[original_icon_state]0"
/obj/item/weapon/reagent_containers/hypospray/autoinjector/examine() /obj/item/weapon/reagent_containers/hypospray/autoinjector/examine()
..() ..()

View File

@@ -176,3 +176,22 @@
New() New()
..() ..()
reagents.add_reagent("bicaridine", 30) reagents.add_reagent("bicaridine", 30)
/obj/item/weapon/reagent_containers/pill/happy
name = "Happy pill"
desc = "Happy happy joy joy!"
icon_state = "pill18"
New()
..()
reagents.add_reagent("space_drugs", 15)
reagents.add_reagent("sugar", 15)
/obj/item/weapon/reagent_containers/pill/zoom
name = "Zoom pill"
desc = "Zoooom!"
icon_state = "pill18"
New()
..()
reagents.add_reagent("impedrezene", 10)
reagents.add_reagent("synaptizine", 5)
reagents.add_reagent("hyperzine", 5)

View File

@@ -69,7 +69,10 @@
// Factor of how fast mob nutrition decreases // Factor of how fast mob nutrition decreases
#define HUNGER_FACTOR 0.05 #define HUNGER_FACTOR 0.05
#define REAGENTS_METABOLISM 0.4 #define REAGENTS_METABOLISM 0.02
// By defining the effect multiplier this way, it'll exactly adjust
// all effects according to how they originally were with the 0.4 metabolism
#define REAGENTS_EFFECT_MULTIPLIER REAGENTS_METABOLISM / 0.4
#define MINIMUM_AIR_RATIO_TO_SUSPEND 0.05 #define MINIMUM_AIR_RATIO_TO_SUSPEND 0.05
//Minimum ratio of air that must move to/from a tile to suspend group processing //Minimum ratio of air that must move to/from a tile to suspend group processing

View File

@@ -11,6 +11,7 @@ daaneesh: Zelda Creedy: /obj/item/weapon/crowbar/fluff/zelda_creedy_1
desiderium: Momiji Inubashiri: /obj/item/clothing/under/fluff/olddressuniform desiderium: Momiji Inubashiri: /obj/item/clothing/under/fluff/olddressuniform
desiderium: Rook Maudlin: /obj/item/clothing/suit/det_suit/fluff/retpolcoat, /obj/item/clothing/head/det_hat/fluff/retpolcap, /obj/item/clothing/under/det/fluff/retpoluniform desiderium: Rook Maudlin: /obj/item/clothing/suit/det_suit/fluff/retpolcoat, /obj/item/clothing/head/det_hat/fluff/retpolcap, /obj/item/clothing/under/det/fluff/retpoluniform
deusdactyl: James Girard: /obj/item/clothing/head/secsoft/fluff/swatcap, /obj/item/clothing/suit/armor/vest/fluff/deus_blueshield deusdactyl: James Girard: /obj/item/clothing/head/secsoft/fluff/swatcap, /obj/item/clothing/suit/armor/vest/fluff/deus_blueshield
donofnyc3: Oen'g Issek: /obj/item/weapon/melee/baton/fluff/oeng_baton
eternal248: Maximilian Haynes: /obj/item/weapon/paper/certificate eternal248: Maximilian Haynes: /obj/item/weapon/paper/certificate
executivekill: Hunter Duke: /obj/item/weapon/lighter/zippo/fluff/executivekill_1 executivekill: Hunter Duke: /obj/item/weapon/lighter/zippo/fluff/executivekill_1
fastler: Fastler Greay: /obj/item/weapon/card/id/fluff/lifetime fastler: Fastler Greay: /obj/item/weapon/card/id/fluff/lifetime
@@ -21,7 +22,10 @@ furohman: Fay Sullivan: /obj/item/weapon/lighter/zippo/fluff/fay_sullivan_1
furlucis: Chal Appara: /obj/item/clothing/gloves/fluff/chal_appara_1 furlucis: Chal Appara: /obj/item/clothing/gloves/fluff/chal_appara_1
gvazdas: Sarah Carbrokes: /obj/item/fluff/sarah_carbrokes_1 gvazdas: Sarah Carbrokes: /obj/item/fluff/sarah_carbrokes_1
jamini: Edwin Atweeke: /obj/item/clothing/suit/labcoat/fluff/burnt jamini: Edwin Atweeke: /obj/item/clothing/suit/labcoat/fluff/burnt
jamini: Nasir Khayyam: /obj/item/clothing/tie/fluff/nasir_khayyam_1
jadepython: Thysse Ezinwa: /obj/item/clothing/glasses/eyepatch/fluff/thysse_1
kirbyelder: John McKeever: /obj/item/paper/fluff/john_mckeever_1 kirbyelder: John McKeever: /obj/item/paper/fluff/john_mckeever_1
leon_the_killer: johnathan Falcian: /obj/item/weapon/clipboard/notebook/fluff/johnathan_falcian_1
leonheart11: Johann Erzatz: /obj/item/weapon/reagent_containers/food/drinks/flask/fluff/johann_erzatz_1 leonheart11: Johann Erzatz: /obj/item/weapon/reagent_containers/food/drinks/flask/fluff/johann_erzatz_1
lexusjjss: Lexus Langg: /obj/item/weapon/clipboard/fluff/smallnote, /obj/item/weapon/reagent_containers/food/drinks/flask/fluff/shinyflask lexusjjss: Lexus Langg: /obj/item/weapon/clipboard/fluff/smallnote, /obj/item/weapon/reagent_containers/food/drinks/flask/fluff/shinyflask
lexusjjss: Zachary Tomlinson: /obj/item/weapon/clipboard/fluff/smallnote, /obj/item/weapon/reagent_containers/food/drinks/flask/fluff/shinyflask lexusjjss: Zachary Tomlinson: /obj/item/weapon/clipboard/fluff/smallnote, /obj/item/weapon/reagent_containers/food/drinks/flask/fluff/shinyflask
@@ -29,10 +33,12 @@ madmalicemccrea: Alice McCrea: /obj/item/clothing/head/welding/fluff/alice_mccre
mangled: Li Matsuda: /obj/item/weapon/lighter/zippo/fluff/li_matsuda_1 mangled: Li Matsuda: /obj/item/weapon/lighter/zippo/fluff/li_matsuda_1
maximumbob: Maurice Bedford: /obj/item/fluff/maurice_bedford_1 maximumbob: Maurice Bedford: /obj/item/fluff/maurice_bedford_1
mcgulliver: Wox Derax: /obj/item/weapon/reagent_containers/food/drinks/flask/fluff/lithiumflask mcgulliver: Wox Derax: /obj/item/weapon/reagent_containers/food/drinks/flask/fluff/lithiumflask
mindphyre: Arjun Chopra: /obj/item/clothing/glasses/fluff/arjun_chopra_1
misterbook: Smoke Perkins: /obj/item/clothing/mask/cigarette/pipe misterbook: Smoke Perkins: /obj/item/clothing/mask/cigarette/pipe
misterfox: Rashid Siraj: /obj/item/weapon/storage/bible/tajaran misterfox: Rashid Siraj: /obj/item/weapon/storage/bible/tajaran
morrinn: Maye Day: /obj/item/weapon/storage/fluff/maye_daye_1 morrinn: Maye Day: /obj/item/weapon/storage/fluff/maye_daye_1
naples: Russell Vierson: /obj/item/weapon/lighter/zippo/fluff/naples_1 naples: Russell Vierson: /obj/item/weapon/lighter/zippo/fluff/naples_1
nega10: Ty Foster: /obj/item/clothing/mask/mara_kilpatrick_1
nerezza: Asher Spock: /obj/item/weapon/reagent_containers/hypospray/fluff/asher_spock_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 nerezza: Asher Spock: /obj/item/weapon/card/id/fluff/asher_spock_2
orangebottle: Lillian Levett: /obj/item/weapon/pen/fluff/fancypen orangebottle: Lillian Levett: /obj/item/weapon/pen/fluff/fancypen
@@ -40,11 +46,13 @@ orangebottle: Lilliana Reade: /obj/item/weapon/pen/fluff/fancypen
paththegreat: Eli Stevens: /obj/item/weapon/pen/fluff/fountainpen paththegreat: Eli Stevens: /obj/item/weapon/pen/fluff/fountainpen
phaux: Tian Krieger: /obj/item/clothing/under/fluff/tian_dress phaux: Tian Krieger: /obj/item/clothing/under/fluff/tian_dress
rawrtaicho: Riley Rohtin: /obj/item/weapon/lighter/zippo/fluff/riley_rohtin_1 rawrtaicho: Riley Rohtin: /obj/item/weapon/lighter/zippo/fluff/riley_rohtin_1
rawrtaicho: Wyatt Engstrom: /obj/item/clothing/under/fluff/wyatt_1
roaper: Ian Colm: /obj/item/weapon/card/id/fluff/ian_colm_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 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 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: 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 searif: Ara Al-Jazari: /obj/item/clothing/under/rank/bartender/fluff/classy
serithi: Altair An-Nasaqan: /obj/item/clothing/tie/fluff/altair_locket
sirribbit: /obj/item/weapon/clipboard/fluff/mcreary_journal sirribbit: /obj/item/weapon/clipboard/fluff/mcreary_journal
sicktrigger: David Fanning: /obj/item/fluff/david_fanning_1 sicktrigger: David Fanning: /obj/item/fluff/david_fanning_1
silentthunder: Val McNeil: /obj/item/fluff/val_mcneil_1 silentthunder: Val McNeil: /obj/item/fluff/val_mcneil_1
@@ -52,6 +60,7 @@ 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 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: Cado Keppel: /obj/item/weapon/fluff/cado_keppel_1
sparklysheep: Uzenwa Sissra: /obj/item/clothing/glasses/fluff/uzenwa_sissra_1 sparklysheep: Uzenwa Sissra: /obj/item/clothing/glasses/fluff/uzenwa_sissra_1
suethecake: Ana Ka'Rimah: /obj/item/weapon/gun/energy/stunrevolver/fluff/ana_peacemaker
staghorn: Mara Kilpatrick: /obj/item/clothing/mask/mara_kilpatrick_1 staghorn: Mara Kilpatrick: /obj/item/clothing/mask/mara_kilpatrick_1
tastyfish: Cindy Robertson: /obj/item/weapon/wrapping_paper tastyfish: Cindy Robertson: /obj/item/weapon/wrapping_paper
thatoneguy: Hugo Cinderbatch: /obj/item/weapon/fluff/hugo_cinderbacth_1 thatoneguy: Hugo Cinderbatch: /obj/item/weapon/fluff/hugo_cinderbacth_1
@@ -62,3 +71,4 @@ tzefa: Wes Solari: /obj/item/fluff/wes_solari_1
vinceluk: Seth Sealis: /obj/item/clothing/suit/det_suit/fluff/graycoat vinceluk: Seth Sealis: /obj/item/clothing/suit/det_suit/fluff/graycoat
whitellama: Ethan Way: /obj/item/fluff/ethan_way_1 whitellama: Ethan Way: /obj/item/fluff/ethan_way_1
whitewolf41: Jeremy Wolf: /obj/item/clothing/under/rank/security/fluff/jeremy_wolf_1 whitewolf41: Jeremy Wolf: /obj/item/clothing/under/rank/security/fluff/jeremy_wolf_1
zuhayr: Jane Doe: /obj/item/clothing/under/fluff/jane_sidsuit

View File

@@ -65,6 +65,14 @@ should be listed in the changelog upon commit though. Thanks. -->
</ul> </ul>
</div> </div>
<div class="commit sansserif">
<h2 class="date">December 3rd</h2>
<h3 class="author">Cael_Aislinn updated:</h3>
<ul class="changes bgimages16">
<li class="tweak">Aliens have been significantly nerfed: neurotoxin is affected by bio protection suits, tackle stuns for much shorter time and facehuggers have a chance to fail when leaping.</li>
</ul>
</div>
<div class="commit sansserif"> <div class="commit sansserif">
<h2 class="date">23.11.12</h2> <h2 class="date">23.11.12</h2>
<h3 class="author">CIB updated:</h3> <h3 class="author">CIB updated:</h3>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 134 KiB

After

Width:  |  Height:  |  Size: 137 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 177 KiB

After

Width:  |  Height:  |  Size: 207 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.9 KiB

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 122 KiB

After

Width:  |  Height:  |  Size: 122 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 124 KiB

After

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 119 KiB

After

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 198 KiB

After

Width:  |  Height:  |  Size: 203 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 39 KiB

6693
maps/RowtreeStation.dmm Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -157,7 +157,7 @@
"ada" = (/turf/simulated/floor{icon_state = "red"; dir = 9},/area/security/range) "ada" = (/turf/simulated/floor{icon_state = "red"; dir = 9},/area/security/range)
"adb" = (/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/range) "adb" = (/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/range)
"adc" = (/turf/simulated/floor{icon_state = "dark"},/area/security/range) "adc" = (/turf/simulated/floor{icon_state = "dark"},/area/security/range)
"add" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/security/range) "add" = (/obj/structure/table,/obj/item/device/assembly/timer,/obj/structure/disposalpipe/segment,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/folder/red,/turf/simulated/floor,/area/security/main)
"ade" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/security/prison) "ade" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/security/prison)
"adf" = (/obj/structure/closet/secure_closet/injection,/turf/simulated/floor{icon_state = "dark"},/area/security/prison) "adf" = (/obj/structure/closet/secure_closet/injection,/turf/simulated/floor{icon_state = "dark"},/area/security/prison)
"adg" = (/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor{icon_state = "dark"},/area/security/prison) "adg" = (/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor{icon_state = "dark"},/area/security/prison)
@@ -345,8 +345,8 @@
"agG" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/machinery/requests_console{department = "Security"; departmentType = 5; pixel_x = 0; pixel_y = 30},/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden) "agG" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/machinery/requests_console{department = "Security"; departmentType = 5; pixel_x = 0; pixel_y = 30},/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden)
"agH" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/turf/simulated/floor/plating,/area/security/warden) "agH" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/turf/simulated/floor/plating,/area/security/warden)
"agI" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 4},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/security/main) "agI" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 4},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/security/main)
"agJ" = (/obj/structure/table,/obj/item/device/assembly/timer,/obj/item/weapon/folder/red,/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/security/main) "agJ" = (/obj/structure/table,/obj/item/ashtray/glass,/turf/simulated/floor,/area/security/main)
"agK" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/turf/simulated/floor,/area/security/main) "agK" = (/obj/machinery/light/small{dir = 4},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{icon_state = "dark"},/area/security/range)
"agL" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor,/area/security/main) "agL" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor,/area/security/main)
"agM" = (/obj/machinery/power/apc{dir = 4; name = "Security Office APC"; pixel_x = 24; pixel_y = 0},/obj/structure/cable,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/main) "agM" = (/obj/machinery/power/apc{dir = 4; name = "Security Office APC"; pixel_x = 24; pixel_y = 0},/obj/structure/cable,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/main)
"agN" = (/obj/machinery/door/window/eastright{dir = 1; name = "Security Delivery"; req_access_txt = "1"},/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "delivery"},/area/security/main) "agN" = (/obj/machinery/door/window/eastright{dir = 1; name = "Security Delivery"; req_access_txt = "1"},/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "delivery"},/area/security/main)
@@ -2552,8 +2552,8 @@
"aXd" = (/obj/machinery/keycard_auth{pixel_x = 24; pixel_y = 0},/obj/structure/filingcabinet/chestdrawer,/turf/simulated/floor{dir = 5; icon_state = "blue"},/area/crew_quarters/heads) "aXd" = (/obj/machinery/keycard_auth{pixel_x = 24; pixel_y = 0},/obj/structure/filingcabinet/chestdrawer,/turf/simulated/floor{dir = 5; icon_state = "blue"},/area/crew_quarters/heads)
"aXe" = (/turf/simulated/floor{icon_state = "bot"},/area/hallway/primary/central) "aXe" = (/turf/simulated/floor{icon_state = "bot"},/area/hallway/primary/central)
"aXf" = (/obj/machinery/door/firedoor/border_only{dir = 4},/obj/machinery/door/airlock/glass{name = "Diner"},/turf/simulated/floor,/area/crew_quarters/bar) "aXf" = (/obj/machinery/door/firedoor/border_only{dir = 4},/obj/machinery/door/airlock/glass{name = "Diner"},/turf/simulated/floor,/area/crew_quarters/bar)
"aXg" = (/obj/effect/sign/maltesefalcon1{pixel_y = 0},/turf/simulated/wall,/area/crew_quarters/bar) "aXg" = (/obj/effect/sign/barsign,/turf/simulated/wall,/area/crew_quarters/bar)
"aXh" = (/obj/effect/sign/maltesefalcon2{pixel_y = 0},/turf/simulated/wall,/area/crew_quarters/bar) "aXh" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/obj/item/weapon/hand_labeler,/obj/item/weapon/gun/syringe,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/item/clothing/glasses/hud/health,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
"aXi" = (/turf/simulated/wall,/area/hallway/primary/starboard) "aXi" = (/turf/simulated/wall,/area/hallway/primary/starboard)
"aXj" = (/turf/simulated/floor{dir = 1; icon_state = "whitecorner"},/area/hallway/primary/starboard) "aXj" = (/turf/simulated/floor{dir = 1; icon_state = "whitecorner"},/area/hallway/primary/starboard)
"aXk" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor{dir = 1; icon_state = "whitecorner"},/area/hallway/primary/starboard) "aXk" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor{dir = 1; icon_state = "whitecorner"},/area/hallway/primary/starboard)
@@ -3026,7 +3026,7 @@
"bgj" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay) "bgj" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
"bgk" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay) "bgk" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
"bgl" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/medical/chemistry) "bgl" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/medical/chemistry)
"bgm" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/atmospherics/pipe/manifold{color = "red"; dir = 1; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/obj/structure/closet/secure_closet/chemical,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "bgm" = (/obj/structure/table,/obj/item/weapon/pen,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/item/clothing/tie/stethoscope,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo)
"bgn" = (/obj/machinery/atmospherics/pipe/manifold{color = "red"; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "bgn" = (/obj/machinery/atmospherics/pipe/manifold{color = "red"; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
"bgo" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "bgo" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
"bgp" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "bgp" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
@@ -3192,7 +3192,7 @@
"bjt" = (/obj/structure/stool/bed/chair/office/light{dir = 1},/obj/effect/landmark/start{name = "Medical Doctor"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay) "bjt" = (/obj/structure/stool/bed/chair/office/light{dir = 1},/obj/effect/landmark/start{name = "Medical Doctor"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
"bju" = (/obj/machinery/door_control{desc = "A remote control switch for the medbay foyer."; id = "MedbayFoyer"; name = "Medbay Doors Control"; normaldoorcontrol = 1; pixel_x = 26; range = 6},/obj/structure/stool/bed/chair/office/light{dir = 4},/obj/effect/landmark/start{name = "Medical Doctor"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay) "bju" = (/obj/machinery/door_control{desc = "A remote control switch for the medbay foyer."; id = "MedbayFoyer"; name = "Medbay Doors Control"; normaldoorcontrol = 1; pixel_x = 26; range = 6},/obj/structure/stool/bed/chair/office/light{dir = 4},/obj/effect/landmark/start{name = "Medical Doctor"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
"bjv" = (/obj/structure/table/reinforced,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay) "bjv" = (/obj/structure/table/reinforced,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
"bjw" = (/obj/structure/closet/wardrobe/chemistry_white,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "bjw" = (/obj/structure/table,/obj/item/ashtray/glass,/turf/simulated/floor,/area/bridge/meeting_room)
"bjx" = (/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "bjx" = (/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
"bjy" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/machinery/light_switch{pixel_y = -23},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "bjy" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/machinery/light_switch{pixel_y = -23},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
"bjz" = (/obj/structure/table,/obj/item/weapon/storage/beakerbox{pixel_x = 2; pixel_y = 2},/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/storage/pill_bottle/inaprovaline{pixel_x = 5; pixel_y = -2},/obj/machinery/requests_console{department = "Chemistry"; departmentType = 2; pixel_x = 30; pixel_y = 0},/obj/machinery/camera{c_tag = "Chemistry"; dir = 8; network = "SS13"; pixel_y = -10},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "bjz" = (/obj/structure/table,/obj/item/weapon/storage/beakerbox{pixel_x = 2; pixel_y = 2},/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/storage/pill_bottle/inaprovaline{pixel_x = 5; pixel_y = -2},/obj/machinery/requests_console{department = "Chemistry"; departmentType = 2; pixel_x = 30; pixel_y = 0},/obj/machinery/camera{c_tag = "Chemistry"; dir = 8; network = "SS13"; pixel_y = -10},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
@@ -3528,7 +3528,7 @@
"bpR" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/medical/chemistry) "bpR" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/medical/chemistry)
"bpS" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/device/radio/headset/headset_med,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "bpS" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/device/radio/headset/headset_med,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
"bpT" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/stool,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "bpT" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/stool,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
"bpU" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry) "bpU" = (/obj/structure/table,/obj/item/weapon/folder/blue,/obj/item/weapon/pen/red,/turf/simulated/floor,/area/bridge/meeting_room)
"bpV" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) "bpV" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab)
"bpW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) "bpW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab)
"bpX" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/light_switch{pixel_x = 27},/obj/structure/table,/obj/item/weapon/folder/white,/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) "bpX" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/light_switch{pixel_x = 27},/obj/structure/table,/obj/item/weapon/folder/white,/turf/simulated/floor{icon_state = "white"},/area/toxins/lab)
@@ -3581,8 +3581,8 @@
"bqS" = (/obj/machinery/power/apc{dir = 1; name = "Cyborg Station APC"; pixel_y = 24},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/structure/table,/obj/item/weapon/phone{pixel_x = -3; pixel_y = 3},/turf/simulated/floor/bluegrid,/area/comms{name = "\improper Cyborg Station"}) "bqS" = (/obj/machinery/power/apc{dir = 1; name = "Cyborg Station APC"; pixel_y = 24},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/structure/table,/obj/item/weapon/phone{pixel_x = -3; pixel_y = 3},/turf/simulated/floor/bluegrid,/area/comms{name = "\improper Cyborg Station"})
"bqT" = (/obj/machinery/computer/aifixer,/turf/simulated/floor/bluegrid,/area/comms{name = "\improper Cyborg Station"}) "bqT" = (/obj/machinery/computer/aifixer,/turf/simulated/floor/bluegrid,/area/comms{name = "\improper Cyborg Station"})
"bqU" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor,/area/bridge/meeting_room) "bqU" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor,/area/bridge/meeting_room)
"bqV" = (/obj/structure/table,/obj/item/weapon/pen/red,/turf/simulated/floor,/area/bridge/meeting_room) "bqV" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/closet/wardrobe/chemistry_white,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
"bqW" = (/obj/structure/table,/obj/item/weapon/folder/blue,/turf/simulated/floor,/area/bridge/meeting_room) "bqW" = (/obj/structure/closet/wardrobe/chemistry_white,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/closet/secure_closet/chemical,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
"bqX" = (/obj/structure/table,/obj/item/weapon/hand_labeler,/obj/item/device/assembly/timer,/turf/simulated/floor,/area/bridge/meeting_room) "bqX" = (/obj/structure/table,/obj/item/weapon/hand_labeler,/obj/item/device/assembly/timer,/turf/simulated/floor,/area/bridge/meeting_room)
"bqY" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "heads_meeting"; name = "Meeting Room Window Shields"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/bridge/meeting_room) "bqY" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "heads_meeting"; name = "Meeting Room Window Shields"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/bridge/meeting_room)
"bqZ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall,/area/library) "bqZ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall,/area/library)
@@ -3933,7 +3933,7 @@
"bxG" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay) "bxG" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
"bxH" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) "bxH" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo)
"bxI" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/stamp/cmo,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) "bxI" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/stamp/cmo,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo)
"bxJ" = (/obj/structure/table,/obj/item/weapon/pen,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/item/clothing/tie/stethoscope,/obj/item/clothing/glasses/hud/health,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo) "bxJ" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/atmospherics/pipe/manifold{color = "red"; dir = 1; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/obj/structure/table,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
"bxK" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/medical/cmo) "bxK" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/medical/cmo)
"bxL" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/machinery/light,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay) "bxL" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/machinery/light,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
"bxM" = (/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 4; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay) "bxM" = (/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 4; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
@@ -4514,7 +4514,7 @@
"bIP" = (/obj/structure/closet/secure_closet/medical3,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/simulated/floor{icon_state = "whitehall"; dir = 4},/area/medical/medbay) "bIP" = (/obj/structure/closet/secure_closet/medical3,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/simulated/floor{icon_state = "whitehall"; dir = 4},/area/medical/medbay)
"bIQ" = (/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay) "bIQ" = (/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
"bIR" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay) "bIR" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
"bIS" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/obj/item/weapon/hand_labeler,/obj/item/weapon/gun/syringe,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay) "bIS" = (/obj/structure/table,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/item/ashtray/glass,/turf/simulated/floor,/area/engine/break_room)
"bIT" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/medical/medbay) "bIT" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/medical/medbay)
"bIU" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay) "bIU" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
"bIV" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay) "bIV" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
@@ -5223,7 +5223,7 @@
"bWw" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay) "bWw" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
"bWx" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/medical,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "bWx" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/medical,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
"bWy" = (/obj/item/device/radio/intercom{pixel_y = -25},/obj/structure/stool/bed,/obj/item/weapon/bedsheet/medical,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "bWy" = (/obj/item/device/radio/intercom{pixel_y = -25},/obj/structure/stool/bed,/obj/item/weapon/bedsheet/medical,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
"bWz" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/gun/syringe,/obj/item/weapon/reagent_containers/dropper,/obj/machinery/light/small,/turf/simulated/floor{icon_state = "whitehall"; dir = 1},/area/medical/surgery) "bWz" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/gun/syringe,/obj/item/weapon/reagent_containers/dropper,/obj/machinery/light/small,/obj/item/weapon/reagent_containers/food/snacks/candy/donor,/obj/item/weapon/reagent_containers/food/snacks/candy/donor,/obj/item/weapon/reagent_containers/food/snacks/candy/donor,/obj/item/weapon/reagent_containers/food/snacks/candy/donor,/obj/item/weapon/reagent_containers/food/snacks/candy/donor,/turf/simulated/floor{icon_state = "whitehall"; dir = 1},/area/medical/surgery)
"bWA" = (/obj/structure/table,/obj/structure/bedsheetbin{pixel_x = 2},/obj/item/clothing/suit/straight_jacket,/obj/item/clothing/mask/muzzle,/turf/simulated/floor{dir = 1; icon_state = "whitecorner"},/area/medical/surgery) "bWA" = (/obj/structure/table,/obj/structure/bedsheetbin{pixel_x = 2},/obj/item/clothing/suit/straight_jacket,/obj/item/clothing/mask/muzzle,/turf/simulated/floor{dir = 1; icon_state = "whitecorner"},/area/medical/surgery)
"bWB" = (/obj/structure/table,/obj/machinery/cell_charger{pixel_y = 5},/obj/item/weapon/cable_coil,/obj/item/device/multitool,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/misc_lab) "bWB" = (/obj/structure/table,/obj/machinery/cell_charger{pixel_y = 5},/obj/item/weapon/cable_coil,/obj/item/device/multitool,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/misc_lab)
"bWC" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "misclab"; name = "Test Chamber Blast Doors"; opacity = 0},/obj/machinery/door/firedoor/border_only{dir = 4; name = "hazard door east"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/toxins/misc_lab) "bWC" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "misclab"; name = "Test Chamber Blast Doors"; opacity = 0},/obj/machinery/door/firedoor/border_only{dir = 4; name = "hazard door east"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/toxins/misc_lab)
@@ -5466,7 +5466,7 @@
"cbf" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor,/area/engine/break_room) "cbf" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor,/area/engine/break_room)
"cbg" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers,/obj/item/weapon/reagent_containers/food/drinks/cola{pixel_x = -3},/turf/simulated/floor,/area/engine/break_room) "cbg" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers,/obj/item/weapon/reagent_containers/food/drinks/cola{pixel_x = -3},/turf/simulated/floor,/area/engine/break_room)
"cbh" = (/obj/structure/table,/obj/item/weapon/folder/yellow,/obj/item/device/flashlight/lamp,/turf/simulated/floor,/area/engine/break_room) "cbh" = (/obj/structure/table,/obj/item/weapon/folder/yellow,/obj/item/device/flashlight/lamp,/turf/simulated/floor,/area/engine/break_room)
"cbi" = (/obj/structure/table,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor,/area/engine/break_room) "cbi" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion_l (WEST)"; icon_state = "propulsion_l"; dir = 8},/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"; dir = 2},/area/shuttle/transport1/centcom)
"cbj" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor,/area/engine/break_room) "cbj" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor,/area/engine/break_room)
"cbk" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "yellowcorner"},/area/engine/break_room) "cbk" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "yellowcorner"},/area/engine/break_room)
"cbl" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/atmos) "cbl" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/atmos)
@@ -6993,7 +6993,7 @@
"cEy" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s10"; icon_state = "swall_s10"; dir = 2},/area/shuttle/transport1/centcom) "cEy" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s10"; icon_state = "swall_s10"; dir = 2},/area/shuttle/transport1/centcom)
"cEz" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/shuttle/plating,/area/shuttle/transport1/centcom) "cEz" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/shuttle/plating,/area/shuttle/transport1/centcom)
"cEA" = (/turf/simulated/shuttle/wall{tag = "icon-swall14"; icon_state = "swall14"; dir = 2},/area/shuttle/transport1/centcom) "cEA" = (/turf/simulated/shuttle/wall{tag = "icon-swall14"; icon_state = "swall14"; dir = 2},/area/shuttle/transport1/centcom)
"cEB" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion_l (WEST)"; icon_state = "propulsion_l"; dir = 8},/turf/space,/area/shuttle/transport1/centcom) "cEB" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion_l (WEST)"; icon_state = "propulsion_l"; dir = 8},/turf/simulated/shuttle/wall{tag = "icon-swall_s9"; icon_state = "swall_s9"; dir = 2},/area/shuttle/transport1/centcom)
"cEC" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 3},/obj/item/weapon/crowbar,/obj/item/weapon/extinguisher,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) "cEC" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 3},/obj/item/weapon/crowbar,/obj/item/weapon/extinguisher,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom)
"cED" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom) "cED" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom)
"cEE" = (/turf/simulated/shuttle/floor,/turf/simulated/shuttle/wall{tag = "icon-swall_f9"; icon_state = "swall_f9"; dir = 2},/area/shuttle/transport1/centcom) "cEE" = (/turf/simulated/shuttle/floor,/turf/simulated/shuttle/wall{tag = "icon-swall_f9"; icon_state = "swall_f9"; dir = 2},/area/shuttle/transport1/centcom)
@@ -8988,6 +8988,7 @@
"dqR" = (/obj/machinery/disposal/deliveryChute{dir = 1},/obj/structure/disposalpipe/trunk{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/disposal) "dqR" = (/obj/machinery/disposal/deliveryChute{dir = 1},/obj/structure/disposalpipe/trunk{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/disposal)
"dqS" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/disposal) "dqS" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/disposal)
"dqT" = (/obj/machinery/conveyor{dir = 1; id = "garbage"},/obj/effect/sign/vacuum{pixel_x = -32},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/maintenance/disposal) "dqT" = (/obj/machinery/conveyor{dir = 1; id = "garbage"},/obj/effect/sign/vacuum{pixel_x = -32},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/maintenance/disposal)
"dqU" = (/turf/space,/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion_l (WEST)"; icon_state = "propulsion_l"; dir = 8},/turf/simulated/shuttle/wall{dir = 3; icon_state = "swall_f10"; layer = 2; tag = "icon-swall_f10"},/area/shuttle/transport1/centcom)
(1,1,1) = {" (1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -9062,13 +9063,13 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaahabxaaSabyabzabAabBabCabDabEaaSaaSabFabtabGabGabGabHabIabJabKabtabLabMabNabOabPabPabPabPaaxaaPaaPaaRaaxaafaafaafaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaahabxaaSabyabzabAabBabCabDabEaaSaaSabFabtabGabGabGabHabIabJabKabtabLabMabNabOabPabPabPabPaaxaaPaaPaaRaaxaafaafaafaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaagaahabQaaSabRabSaaSabTaaaabUaaaaaaaaSabVabtabWabWabWabXabYabZacaabtacbaccacdaceacfacgachabPaaxaciaaPacjaaxaaxaaxaaxaaxaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaagaahabQaaSabRabSaaSabTaaaabUaaaaaaaaSabVabtabWabWabWabXabYabZacaabtacbaccacdaceacfacgachabPaaxaciaaPacjaaxaaxaaxaaxaaxaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaahackaaSabRaclaaSabTaaaabUaaaaaaaaSacmabtacnacoacoacpacqacracsabtactacuacvacwacxacyaczabPacAacBacCacDacEacFacGacGaaxaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaahackaaSabRaclaaSabTaaaabUaaaaaaaaSacmabtacnacoacoacpacqacracsabtactacuacvacwacxacyaczabPacAacBacCacDacEacFacGacGaaxaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahacHaaSacIacJaaSacKacLacMacNaaSaaSaaSabtacOabWabWacpacPacQacRabtacSacuacvacTacUacVacWabPacXacYacZadaadbadcadcaddaaxaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahacHaaSacIacJaaSacKacLacMacNaaSaaSaaSabtacOabWabWacpacPacQacRabtacSacuacvacTacUacVacWabPacXacYacZadaadbadcadcagKaaxaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadeadfadgadhadiadjadkadladmadnadoadpadqadradsadtaaoaduadvabtadwadwadwacpadxadyadzabtadAadBadCadDadEadFadGabPadHadIadJadKadLadMadNadOaaxaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadeadfadgadhadiadjadkadladmadnadoadpadqadradsadtaaoaduadvabtadwadwadwacpadxadyadzabtadAadBadCadDadEadFadGabPadHadIadJadKadLadMadNadOaaxaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadPadQadRadSadTadUadVadWadXaazaazaazadYadZaeaaebaecaedaeeabtaefaegaehacpacqaeiaejabtabPaekaelaemaenaeoabPabPaaxaepaeqaeraaxaaxaaxaesaaxaaxaaxaesaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadPadQadRadSadTadUadVadWadXaazaazaazadYadZaeaaebaecaedaeeabtaefaegaehacpacqaeiaejabtabPaekaelaemaenaeoabPabPaaxaepaeqaeraaxaaxaaxaesaaxaaxaaxaesaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaetaeuaevaewaexaeyaezaeAaeBaeCaeCaeCaeDaeEaeFaeGaaKaeHaeIabtaeJaeKaeLaeMaeNaeOaePaeQaeRaeSaeTaeUaeVaeWaeXaeYaeZafaafbafcafdafeaffafgafhafiafjafjafkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaetaeuaevaewaexaeyaezaeAaeBaeCaeCaeCaeDaeEaeFaeGaaKaeHaeIabtaeJaeKaeLaeMaeNaeOaePaeQaeRaeSaeTaeUaeVaeWaeXaeYaeZafaafbafcafdafeaffafgafhafiafjafjafkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaflafmaaSafnafoafnaahafpafqafraahaahaahabtafsaftafuafvafwafxafyabtafzafAafBafCafDafEafFafEafEafEafEafGafHafIafJafKafLafMafNafOafPaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaflafmaaSafnafoafnaahafpafqafraahaahaahabtafsaftafuafvafwafxafyabtafzafAafBafCafDafEafFafEafEafEafEafGafHafIafJafKafLafMafNafOafPaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaahafQafRafSafSafSafSafSafTafUafVafSaaaaaaabtabtabtabtafWafXafYabtabtafZafHagaagbagcagdageagfaggaghagiagjagkaglagmafgafLagnafjafjagoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaahafQafRafSafSafSafSafSafTafUafVafSaaaaaaabtabtabtabtafWafXafYabtabtafZafHagaagbagcagdageagfaggaghagiagjagkaglagmafgafLagnafjafjagoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaahagpagqafSagragsagtaguagvagwagxagyagzagAagyagyagBagCagDagEagFagGagHagIafHagaagJagKagLagMafgafgafgafgagNafgafgafgagOagPafgafgagOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaahagpagqafSagragsagtaguagvagwagxagyagzagAagyagyagBagCagDagEagFagGagHagIafHagaaddagJagLagMafgafgafgafgagNafgafgafgagOagPafgafgagOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafagQaahaahaahafSagRagSagTaguagvagwagUagyagVagWagWagXagBagYagZahaahbahcahdafHaheahfahgahhagdahiahjahkahlafgahmafgahnahoafgafLahpafLahqaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafagQaahaahaahafSagRagSagTaguagvagwagUagyagVagWagWagXagBagYagZahaahbahcahdafHaheahfahgahhagdahiahjahkahlafgahmafgahnahoafgafLahpafLahqaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaagaagahraagaagaagagyagTahsagTaguagvagwahtagyahuagvagvahvagBahwahxahyahzahAahBahCahDahEahFafBahGahHafBahIahJahKahLahMahNahOafgafgafgafgafgaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaagaagahraagaagaagagyagTahsagTaguagvagwahtagyahuagvagvahvagBahwahxahyahzahAahBahCahDahEahFafBahGahHafBahIahJahKahLahMahNahOafgafgafgafgafgaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafahPaagahQagyagyagyagyagyagyahRagwahSahTahUagvagvagwahVahWahXahYahZaiaaibaicaidaieaifaigaihaihaiiaiiaijaikailaimainaioaipaipaipaiqairaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafahPaagahQagyagyagyagyagyagyahRagwahSahTahUagvagvagwahVahWahXahYahZaiaaibaicaidaieaifaigaihaihaiiaiiaijaikailaimainaioaipaipaipaiqairaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -9114,26 +9115,26 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaSiaSjaSkavTaSlaSmaSnaSoaSpaSqaSraSsaStaSoaSuaSvaSwaSxaSyaLUaSzaNmaSAaSBaSCaSCaSDaSCaSCaSCaSEaSFaSGaNdaSHaSIaRsaSJaSKaNdaSLaLRaSMaMfaSNaSOaSPaSQaSQaSRaGdaGdaGdaGdaGdaSSaSTaSUaSVaSWaSXaQmaSYaSZaTaaTbaTcaTdaTeaTfaTgaThaTiaSWaTjaRGaSVaSUaTkaTlaTmaGdaGdaGdaTnaGqaNTaPgaPkaPiaKqaPjaPhaPiaNVaJnaQxaQxaToaTpaGwaPoaRPaPoaTqaPoaTraQFaTsaGwaMHaQIaOiaOiaOiaOiaQLaMLaGAaTtaTuaTvaTwaFhaOmaPEaPEaPEaPEaPEaOnaDtaTxaTyaPGaOsaOsaOsaTzaOwaaaaafaafaGLaGLaGLaGLaGLaGLaGLaGLaGLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaSiaSjaSkavTaSlaSmaSnaSoaSpaSqaSraSsaStaSoaSuaSvaSwaSxaSyaLUaSzaNmaSAaSBaSCaSCaSDaSCaSCaSCaSEaSFaSGaNdaSHaSIaRsaSJaSKaNdaSLaLRaSMaMfaSNaSOaSPaSQaSQaSRaGdaGdaGdaGdaGdaSSaSTaSUaSVaSWaSXaQmaSYaSZaTaaTbaTcaTdaTeaTfaTgaThaTiaSWaTjaRGaSVaSUaTkaTlaTmaGdaGdaGdaTnaGqaNTaPgaPkaPiaKqaPjaPhaPiaNVaJnaQxaQxaToaTpaGwaPoaRPaPoaTqaPoaTraQFaTsaGwaMHaQIaOiaOiaOiaOiaQLaMLaGAaTtaTuaTvaTwaFhaOmaPEaPEaPEaPEaPEaOnaDtaTxaTyaPGaOsaOsaOsaTzaOwaaaaafaafaGLaGLaGLaGLaGLaGLaGLaGLaGLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXavSarVavSatPaTAaPQaTBaTCaTDaTDaTDaTCaTEaTFaPOaTGaTHaTIaTJaTKaTKaTKaTLaTKaTMaTNaTOaTPaTQaTQaTRaNsaTSaTTaTUaTVaTWaTXaTYaTZaUaaUbaUcaUdaUeaUfaUfaUfaUgaMfaGdaGdaUhaUiaUjaUkaUlaUmaUnaUoaUpaUqaUraMkaMkaMkaMkaMkaMkaUsaUtaUuaUvaSZaUwaUxaMkaUmaUlaUyaUzaUiaLkaGdaGdaPfaKqaUAaQwaKqaKqaKqaQwaKqaNVaKqaJnaJnaKqaKqaUBaUCaUDaPoaPoaPoaUEaUFaUGaGwaUHaUIaOiaUJaUJaUKaUIaULaGAaUMaUNaTvaTwaFhaMQaPEaPEaPEaPEaPEaMRaUOaUPaUQaURaUSaUTaUSaUUaOwaafaafaaaaGLaGLaGLaGLaGLaGLaGLaGLaGLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXavSarVavSatPaTAaPQaTBaTCaTDaTDaTDaTCaTEaTFaPOaTGaTHaTIaTJaTKaTKaTKaTLaTKaTMaTNaTOaTPaTQaTQaTRaNsaTSaTTaTUaTVaTWaTXaTYaTZaUaaUbaUcaUdaUeaUfaUfaUfaUgaMfaGdaGdaUhaUiaUjaUkaUlaUmaUnaUoaUpaUqaUraMkaMkaMkaMkaMkaMkaUsaUtaUuaUvaSZaUwaUxaMkaUmaUlaUyaUzaUiaLkaGdaGdaPfaKqaUAaQwaKqaKqaKqaQwaKqaNVaKqaJnaJnaKqaKqaUBaUCaUDaPoaPoaPoaUEaUFaUGaGwaUHaUIaOiaUJaUJaUKaUIaULaGAaUMaUNaTvaTwaFhaMQaPEaPEaPEaPEaPEaMRaUOaUPaUQaURaUSaUTaUSaUUaOwaafaafaaaaGLaGLaGLaGLaGLaGLaGLaGLaGLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaUVaUWaSkavTaUXaUYaUZaVaaUZaVbaTCaTCaVcaTDaPOaVdaVeaTIaTJaVfaVgaVhaViaTKaVjaVkaVlaLUaVmaVnaVoaVpaLUaVqaVraVsaVsaVsaVsaVtaVsaVuaVvaVwaVvaVvaVxaVvaVyaVuaGdaGdaVzaVAaVBaVBaVBaVBaVCaVDaVEaVDaVDaVFaVFaVFaVFaVFaVGaVHaVHaVIaVJaVKaVLaVKaVKaVKaVKaVKaQhaQhaLkaGdaVMaGqaVNaVOaVPaVQaKqaKqaKqaVRaVSaVTaKqaVUaVVaVWaGwaGwaGwaVXaVYaVYaVYaGwaGwaGwaVZaOiaOiaWaaWbaWcaWdaKzaGAaWeaUNaTvaLLaWfaOmaOnaPDaPEaPDaOmaOnaWgaFjaWhaOsaOsaOsaOsaWiaOwaaaaafaafaGLaGLaGLaGLaGLaGLaGLaGLaGLaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaUVaUWaSkavTaUXaUYaUZaVaaUZaVbaTCaTCaVcaTDaPOaVdaVeaTIaTJaVfaVgaVhaViaTKaVjaVkaVlaLUaVmaVnaVoaVpaLUaVqaVraVsaVsaVsaVsaVtaVsaVuaVvaVwaVvaVvaVxaVvaVyaVuaGdaGdaVzaVAaVBaVBaVBaVBaVCaVDaVEaVDaVDaVFaVFaVFaVFaVFaVGaVHaVHaVIaVJaVKaVLaVKaVKaVKaVKaVKaQhaQhaLkaGdaVMaGqaVNaVOaVPaVQaKqaKqaKqaVRaVSaVTaKqaVUaVVaVWaGwaGwaGwaVXaVYaVYaVYaGwaGwaGwaVZaOiaOiaWaaWbaWcaWdaKzaGAaWeaUNaTvaLLaWfaOmaOnaPDaPEaPDaOmaOnaWgaFjaWhaOsaOsaOsaOsaWiaOwaaaaafaafaGLaGLaGLaGLaGLaGLaGLaGLaGLaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaafauIaWjatMatOaPQaWkaWkaWlaWmaWnaWlaWoaWkaPOaWpaWqaWraWsaWtaWtaWuaWvaWtaWwaVkaWxaLUaVmaVnaWyaWzaLUaVqaVraVsaWAaWBaWBaWBaWCaVuaWDaWEaWFaWGaVuaVuaVuaVuaGdaGdaUhaWHaWIaWJaWKaWLaWMaWNaWOaWPaVDaVFaWQaWRaWSaWTaWUaWVaWWaWXaVKaWYaWZaXaaXbaXcaXdaVKaXeaXeaHraGdaGdaGqaGqaGqaGqaGqaXfaPfaXfaXgaXhaGqaNSaGqaGqaGqaXiaXjaXkaXjaXjaXjaXjaXlaXjaXiaKzaXmaXmaXnaXoaXoaXoaXoaXiaXpaXqaXraXsaXtaXuaXuaXvaXuaXuaXuaXuaXwaXxaXyaOsaOsaOsaOsaXzaPIaMWaMWaShaGLaGLaGLaGLaGLaGLaGLaGLaGLaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaafauIaWjatMatOaPQaWkaWkaWlaWmaWnaWlaWoaWkaPOaWpaWqaWraWsaWtaWtaWuaWvaWtaWwaVkaWxaLUaVmaVnaWyaWzaLUaVqaVraVsaWAaWBaWBaWBaWCaVuaWDaWEaWFaWGaVuaVuaVuaVuaGdaGdaUhaWHaWIaWJaWKaWLaWMaWNaWOaWPaVDaVFaWQaWRaWSaWTaWUaWVaWWaWXaVKaWYaWZaXaaXbaXcaXdaVKaXeaXeaHraGdaGdaGqaGqaGqaGqaGqaXfaPfaXfaXgaGqaGqaNSaGqaGqaGqaXiaXjaXkaXjaXjaXjaXjaXlaXjaXiaKzaXmaXmaXnaXoaXoaXoaXoaXiaXpaXqaXraXsaXtaXuaXuaXvaXuaXuaXuaXuaXwaXxaXyaOsaOsaOsaOsaXzaPIaMWaMWaShaGLaGLaGLaGLaGLaGLaGLaGLaGLaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawVaqmaXAaxTaSkaraaraaraaraaraaraaXBaXCaPQaPOaPOaPOaPOaPOaPOaPOaPOaPOaXDaNdaTIaTJaVfaXEaXFaXGaTKaXHaXIaXJaLUaVmaVnaXKaXLaLUaVqaVraVsaWBaXMaXMaWBaXMaVuaWDaXNaXOaXOaXPaXQaXRaVuaXSaGdaUhaXTaXUaXVaXWaXWaXWaXWaXXaXYaVDaVFaXZaYaaYbaYcaWQaYdaYeaYfaYgaYhaWZaYiaYjaYkaYlaVKaYmaYnaGcaYoaGdaYpaYqaTvaTvaYraTvaTvaTvaYraTvaYsaTvaTvaYtaTvaYuaTvaYvaTvaTvaTvaTvaTvaTvaYqaTvaTvaTvaTvaTvaTvaTvaTvaYwaYxaYyaYzaYAaYyaYyaYyaYBaYyaYyaYCaTvaYqaYDaOsaOsaOsaOsaOsaYEaQWaYFaQVaQWaGLaGLaGLaGLaGLaGLaGLaGLaGLaafdqBdqDdqEdqDdqEdqDdqCaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawVaqmaXAaxTaSkaraaraaraaraaraaraaXBaXCaPQaPOaPOaPOaPOaPOaPOaPOaPOaPOaXDaNdaTIaTJaVfaXEaXFaXGaTKaXHaXIaXJaLUaVmaVnaXKaXLaLUaVqaVraVsaWBaXMaXMaWBaXMaVuaWDaXNaXOaXOaXPaXQaXRaVuaXSaGdaUhaXTaXUaXVaXWaXWaXWaXWaXXaXYaVDaVFaXZaYaaYbaYcaWQaYdaYeaYfaYgaYhaWZaYiaYjaYkaYlaVKaYmaYnaGcaYoaGdaYpaYqaTvaTvaYraTvaTvaTvaYraTvaYsaTvaTvaYtaTvaYuaTvaYvaTvaTvaTvaTvaTvaTvaYqaTvaTvaTvaTvaTvaTvaTvaTvaYwaYxaYyaYzaYAaYyaYyaYyaYBaYyaYyaYCaTvaYqaYDaOsaOsaOsaOsaOsaYEaQWaYFaQVaQWaGLaGLaGLaGLaGLaGLaGLaGLaGLaafdqBdqDdqEdqDdqEdqDdqCaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYHaYHaYHaYHaYHaYHaYHaYHaYHaYHaaaaafaYIawYauLaYJaYKaYLaYLaYLaYLaYLaYLaYMaYNaLRaSLaNdaTIaTJaTKaTKaYOaYPaTKaLUaLUaYQaLUaVmaYRaXKaYSaLUaVqaVraVsaYTaYUaWBaXMaYVaVuaYWaVubdUbcCaYXaYYaYZaVuaGdaGdaZaaWHaZbaZcaXWaXWaZdaXWaXXaZeaVDaVFaZfaZgaZhaZhaZhaYdaZiaVFaZjaZkaWZaYiaZlaYhaZmaVKaXeaNQaZnaGdaGdaYpaYqaTvaTvaTvaTvaTvaTvaTvaTvaTvaTvaTvaZoaZpaZpaZqaZraTvaTvaTvaTvaTvaTvaYqaTvaTvaTvaTvaTvaTvaTvaTvaTvaZsaTvaYvaTvaTvaTvaTvaTvaTvaTvaZtaTvaYqaYDaOsaOsaOsaOsaOsaZuaSgaMWaMWaPJaGLaGLaGLaGLaGLaGLaGLaGLaGLaafatYdqAdqzaYGdqzaYGatYaafaZvagQagQaZvaafaZvagQagQaZvaafaZvagQagQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYHaYHaYHaYHaYHaYHaYHaYHaYHaYHaaaaafaYIawYauLaYJaYKaYLaYLaYLaYLaYLaYLaYMaYNaLRaSLaNdaTIaTJaTKaTKaYOaYPaTKaLUaLUaYQaLUaVmaYRaXKaYSaLUaVqaVraVsaYTaYUaWBaXMaYVaVuaYWaVubdUbcCaYXaYYaYZaVuaGdaGdaZaaWHaZbaZcaXWaXWaZdaXWaXXaZeaVDaVFaZfaZgaZhaZhaZhaYdaZiaVFaZjaZkaWZaYiaZlaYhaZmaVKaXeaNQaZnaGdaGdaYpaYqaTvaTvaTvaTvaTvaTvaTvaTvaTvaTvaTvaZoaZpaZpaZqaZraTvaTvaTvaTvaTvaTvaYqaTvaTvaTvaTvaTvaTvaTvaTvaTvaZsaTvaYvaTvaTvaTvaTvaTvaTvaTvaZtaTvaYqaYDaOsaOsaOsaOsaOsaZuaSgaMWaMWaPJaGLaGLaGLaGLaGLaGLaGLaGLaGLaafatYdqAdqzaYGdqzaYGatYaafaZvagQagQaZvaafaZvagQagQaZvaafaZvagQagQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYHaYHaYHaYHaYHaYHaYHaYHaYHaYHaYHaSiaSjaSkavTaZwaZxaZyaZyaZzaZyaZyaZyaZAaLRaLRaLRaLRaZBaTJaVfaZCaZDaZEaTKaZFaZGaZHaLUaLUaLUaLUaZIaLUaVqaVraVsaZJaWBaXMaZKaZLaVuaWDaVuaZMaXObfIaZNaZOaVuaZPaGdaZQaWHaZRaZSaZTaZUaZcaZcaZVaZWaVDaZXaZYaZZaZhbaaaZhaYababbacaZjbadbaeaYhaYhaYhbafbagaXebahbaibajaGdaYpaYqaTvaTvaTvaTvaTvaTvaTvaTvaTvaTvbakbalaTvaTvbambanaTvbakbaobapaTvaTvaYqbaqbarbarbarbarbarbarbasaTvaZsaTvaYvaTvbataTvbakaTvbauaTvbavaTvaYqaYDaOsaOsaOsaOsbawaXzbaxaafaaaaafaGLaGLaGLaGLaGLaGLaGLaGLaGLaafdqKdqMdqzaYGdqzdqLdqEaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaagQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYHaYHaYHaYHaYHaYHaYHaYHaYHaYHaYHaSiaSjaSkavTaZwaZxaZyaZyaZzaZyaZyaZyaZAaLRaLRaLRaLRaZBaTJaVfaZCaZDaZEaTKaZFaZGaZHaLUaLUaLUaLUaZIaLUaVqaVraVsaZJaWBaXMaZKaZLaVuaWDaVuaZMaXObfIaZNaZOaVuaZPaGdaZQaWHaZRaZSaZTaZUaZcaZcaZVaZWaVDaZXaZYaZZaZhbaaaZhaYababbacaZjbadbaeaYhaYhaYhbafbagaXebahbaibajaGdaYpaYqaTvaTvaTvaTvaTvaTvaTvaTvaTvaTvbakbalaTvaTvbambanaTvbakbaobapaTvaTvaYqbaqbarbarbarbarbarbarbasaTvaZsaTvaYvaTvbataTvbakaTvbauaTvbavaTvaYqaYDaOsaOsaOsaOsbawaXzbaxaafaaaaafaGLaGLaGLaGLaGLaGLaGLaGLaGLaafdqKdqMdqzaYGdqzdqLdqEaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaagQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYHaYHaYHaYHaYHaYHaYHaYHaYHaYHaYHavSarVavSatPbayaZybazbaAbaBbaBbaCbaDbaEbaFbaFbaFbaFbaGbaHbaIbaIbaJbaKbaIbaLbaLbaMbaLbaNbaOaRkbaPbaObaQbaRbaSbaTbaUbaUbaVbaWbaXbaYbaZbbaaXObfIaZNbbbbbcaZPaGdbbdaWHaZcbbebbfbbgbbhaZcbbiaVDaVDaVFbbjbbkbblbbmbbnbbkbboaVFaZjbbpbbqbbrbbsbbtbbubbvbbwbbxbbyaGdbbzbbAbbBbbCbbCbbCbbCbbCbbDbbAbbEbbEbbAbbFbbGbbFbbFbbHbbIbbJbbJbbJbbJbbKbbJbbJbbLbbMbbNbbObbObbMbbNbbPbarbbQbarbbRbarbbSbbTbbUbbUbbUbarbbVbarbbWbbXbbYbbZbbZbcaaLNbcbbccaafaafaafaGLaGLaGLaGLaGLaGLaGLaGLaGLaafatYdqJdqzaYGaYGaYGatYaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaZvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYHaYHaYHaYHaYHaYHaYHaYHaYHaYHaYHavSarVavSatPbayaZybazbaAbaBbaBbaCbaDbaEbaFbaFbaFbaFbaGbaHbaIbaIbaJbaKbaIbaLbaLbaMbaLbaNbaOaRkbaPbaObaQbaRbaSbaTbaUbaUbaVbaWbaXbaYbaZbbaaXObfIaZNbbbbbcaZPaGdbbdaWHaZcbbebbfbbgbbhaZcbbiaVDaVDaVFbbjbbkbblbbmbbnbbkbboaVFaZjbbpbbqbbrbbsbbtbbubbvbbwbbxbbyaGdbbzbbAbbBbbCbbCbbCbbCbbCbbDbbAbbEbbEbbAbbFbbGbbFbbFbbHbbIbbJbbJbbJbbJbbKbbJbbJbbLbbMbbNbbObbObbMbbNbbPbarbbQbarbbRbarbbSbbTbbUbbUbbUbarbbVbarbbWbbXbbYbbZbbZbcaaLNbcbbccaafaafaafaGLaGLaGLaGLaGLaGLaGLaGLaGLaafatYdqJdqzaYGaYGaYGatYaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaZvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYHaYHaYHaYHaYHaYHaYHaYHaYHaYHaYHaUVaUWaSkavTbcdaZybceaZybcfbcgaZyaZyaZyaNdbchaSKaSKbciaTKaVfbcjaXFbckaTKbclbcmaRsaRsbcnbcobcpbcqbcrbcsbctbcubcvbcwbcvbcxbcybczbcAbcBbfJaXObfIbcDbcEbcFaZPaGdbcGaWHbcHaZcbcIbcJaZcaZcbcKaVDaVDaVFbcLbcMbcNbcObcPbcQbcRaVFaZjbcSbcTbcUbcUbcVbcWaVKbcXbcXbcYaGdaGdbcZbdabdabdbbdbbdbbdbbdbbbAbdabdabbAbdcbddbdebbFbdfbdgbdhbdibdjbdkbdkbdlbdmbdnbdobdpbdpbdpbdpbdqbbTbdrbdsbdrbdtbdrbbTbbTbdubdvbbUbdwbdxbdybbUbbUbdzbdAbdBbdzbdzbdCbccaafaaaaafaGLaGLaGLaGLaGLaGLaGLaGLaGLaafdqGdqDdqEdqHdqEdqDdqIaafaafbdDbdDbdDbdDbdDbdDbdDbdDaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYHaYHaYHaYHaYHaYHaYHaYHaYHaYHaYHaUVaUWaSkavTbcdaZybceaZybcfbcgaZyaZyaZyaNdbchaSKaSKbciaTKaVfbcjaXFbckaTKbclbcmaRsaRsbcnbcobcpbcqbcrbcsbctbcubcvbcwbcvbcxbcybczbcAbcBbfJaXObfIbcDbcEbcFaZPaGdbcGaWHbcHaZcbcIbcJaZcaZcbcKaVDaVDaVFbcLbcMbcNbcObcPbcQbcRaVFaZjbcSbcTbcUbcUbcVbcWaVKbcXbcXbcYaGdaGdbcZbdabdabdbbdbbdbbdbbdbbbAbdabdabbAbdcbddbdebbFbdfbdgbdhbdibdjbdkbdkbdlbdmbdnbdobdpbdpbdpbdpbdqbbTbdrbdsbdrbdtbdrbbTbbTbdubdvbbUbdwbdxbdybbUbbUbdzbdAbdBbdzbdzbdCbccaafaaaaafaGLaGLaGLaGLaGLaGLaGLaGLaGLaafdqGdqDdqEdqHdqEdqDdqIaafaafbdDbdDbdDbdDbdDbdDbdDbdDaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYHaYHaYHaYHaYHaYHaYHaYHaYHaYHaaaaaaawXaWjatMbdEaZybceaZybdFbdGbdHbdIaZybdJaNdbdKaNdbdLaTKaTKaTKaTKaTKaTKbdMbdNbdOaNdbdPaVsbdQaVsbdRaVsaVsaVsaVsaVsbdSbdRaVsbfGbfHbdVbdWaXObfIaZNbdXbbcaZPaGdaUhaWHbdYbdZbeabebbbhbecaZVaVDbedbeebefbegaWQbehaWQbeibejbekbelbembenbeobepbeqberaVKbesbcXbetbeubeubevbewbewbdbbexbdbbeybeybbAbdabezbbAbeAbeBbeCbbFbeDbeEbbJbeFbdkbeFbdkbeFbeGbdnbeHbdpbeIbdpbdpbeJbbTbeKbeLbeMbeNbeKbeObbTbePbeQbeRbeSbeTbeSbeUbbUbeVbeWbeXbeYbdzbdCbccaafaaaaafaGLaGLaGLaGLaGLaGLaGLaGLaGLaafbeZbfabfbbfcbfdbfebdDbdDbdDbdDbffbfgbfhbfibfjbfhbdDaafaaaaaaaZvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYHaYHaYHaYHaYHaYHaYHaYHaYHaYHaaaaaaawXaWjatMbdEaZybceaZybdFbdGbdHbdIaZybdJaNdbdKaNdbdLaTKaTKaTKaTKaTKaTKbdMbdNbdOaNdbdPaVsbdQaVsbdRaVsaVsaVsaVsaVsbdSbdRaVsbfGbfHbdVbdWaXObfIaZNbdXbbcaZPaGdaUhaWHbdYbdZbeabebbbhbecaZVaVDbedbeebefbegaWQbehaWQbeibejbekbelbembenbeobepbeqberaVKbesbcXbetbeubeubevbewbewbdbbexbdbbeybeybbAbdabezbbAbeAbeBbeCbbFbeDbeEbbJbeFbdkbeFbdkbeFbeGbdnbeHbdpbeIbdpbdpbeJbbTbeKbeLbeMbeNbeKbeObbTbePbeQbeRbeSbeTbeSbeUbbUbeVbeWbeXbeYbdzbdCbccaafaaaaafaGLaGLaGLaGLaGLaGLaGLaGLaGLaafbeZbfabfbbfcbfdbfebdDbdDbdDbdDbffbfgbfhbfibfjbfhbdDaafaaaaaaaZvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawVaqmaXAaxTaUWaPLaPLaPLaPLbfkavTatPatPaZydqTbfmbfnbdHbfobfpbfqbfrbfrbfrbfrbfsbftbftbftbcsbcsbcsbfubfvbfvbfvbfwaVsbfxbfybfzbfAbfBbfCbfDbfCbfCbfEbfFbdTbfLdqNdqOdqPbfKbfMbaXbaXbfNbfObfPbfQbfRbfRbfRbfRbfRbfSbfTbfUbfQbekbekbekbekbfVbekbekbekbekbfWaYgbfXaVKaZjbfYaVKaVKbcXbcXbfZaGdaGdbgabgbbgbbgcbdbbdbbdbbgdbbAbdabdabbAbgebeBbgfbbFbggbeEbbJbeFbdkbeFbdkbeFbghbdnbgibgjbgkbgkbgkbgkbglbgmbgnbgobgpbgqbgrbglbgsbgtbgubgvbgwbeSbgxbbUbgybeWbgzbgAbdzbdCbccbccaafaafajmaGLaGLaGLaGLaGLaGLaGLajmaafbgBbgCbgCbgDbgCbfebgEbgFbgEbdDbgGbgHbgIbgIbgIbgIbdDaafaaaaaaagQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawVaqmaXAaxTaUWaPLaPLaPLaPLbfkavTatPatPaZydqTbfmbfnbdHbfobfpbfqbfrbfrbfrbfrbfsbftbftbftbcsbcsbcsbfubfvbfvbfvbfwaVsbfxbfybfzbfAbfBbfCbfDbfCbfCbfEbfFbdTbfLdqNdqOdqPbfKbfMbaXbaXbfNbfObfPbfQbfRbfRbfRbfRbfRbfSbfTbfUbfQbekbekbekbekbfVbekbekbekbekbfWaYgbfXaVKaZjbfYaVKaVKbcXbcXbfZaGdaGdbgabgbbgbbgcbdbbdbbdbbgdbbAbdabdabbAbgebeBbgfbbFbggbeEbbJbeFbdkbeFbdkbeFbghbdnbgibgjbgkbgkbgkbgkbglbxJbgnbgobgpbgqbgrbglbgsbgtbgubgvbgwbeSbgxbbUbgybeWbgzbgAbdzbdCbccbccaafaafajmaGLaGLaGLaGLaGLaGLaGLajmaafbgBbgCbgCbgDbgCbfebgEbgFbgEbdDbgGbgHbgIbgIbgIbgIbdDaafaaaaaaagQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgJbgKarVavSatJatJatMatPatPaZybiybgMbdHbgNaZyaZyaZyaLRbgObgPbgQbgRbgQbgQbgQbgRbgQaLRaLRaVsaVsaVsbgSaVsbgTbfCbgUbfCbfCbfCbgVbgWbgXbgXbgYbgZbhabhbbhbbhbbhcbhdbhebhfbhgbhhbhibhjbhkbhkbhlbhmbhnbhobhpbhobhqbhrbhsbhtbhubhvbhwbhtbhxbhrbhybhzbhAbhBbhCbhDbhEbhFbhFbhGbfZaGdaGdbhHbhIbhIbdbbhJbdabhKbdbbhLbdbbhMbbAbhNbhObhPbbFbhQbeEbbJbeFbdkbeFbdkbeFbeGbdnbhRbhSbhTbhUbdpbhVbhWbhXbhYbhYbhZbiabibbicbidbiebifbigbihbeSbiibbUbijbikbgzbilbimbdCbinbccaaaaafajmajmajmajmajmajmajmajmajmaafbiobgCbipbiqbgCbfebirbgEbisbdDbitbgHbiubivbgIbiwbdDaafaaaaaaagQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgJbgKarVavSatJatJatMatPatPaZybiybgMbdHbgNaZyaZyaZyaLRbgObgPbgQbgRbgQbgQbgQbgRbgQaLRaLRaVsaVsaVsbgSaVsbgTbfCbgUbfCbfCbfCbgVbgWbgXbgXbgYbgZbhabhbbhbbhbbhcbhdbhebhfbhgbhhbhibhjbhkbhkbhlbhmbhnbhobhpbhobhqbhrbhsbhtbhubhvbhwbhtbhxbhrbhybhzbhAbhBbhCbhDbhEbhFbhFbhGbfZaGdaGdbhHbhIbhIbdbbhJbdabhKbdbbhLbdbbhMbbAbhNbhObhPbbFbhQbeEbbJbeFbdkbeFbdkbeFbeGbdnbhRbhSbhTbhUbdpbhVbhWbhXbhYbhYbhZbiabibbicbidbiebifbigbihbeSbiibbUbijbikbgzbilbimbdCbinbccaaaaafajmajmajmajmajmajmajmajmajmaafbiobgCbipbiqbgCbfebirbgEbisbdDbitbgHbiubivbgIbiwbdDaafaaaaaaagQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaabgJarVarVavSauJauJbixauJauJaZydqRdqSdqQbdHaZyaaaaaaaaaaafaafbizbizbizbizbizbizbizaaaaaabiAbiBbiCbiDbiEbiEbiEbiEbiFbfCbiGaVsbiHbfCbfCbfCbiIbiJbiKbiLbiMbiNbfHaVuaVubiObiPbiQbiRbiSbiSbiTbiSbiUbiVbiWbiXabTbiYbiZbhtbjabhvbjabhtbjbbiYbhybjcbjdbjebjfbjgbjhbiSbiSbjibjjaGdbjkbjlbdabdabdbbjmbdabjnbdbbdabdabjobbAbbAbbAbbAbbAbjpbjqbbJbeFbjrbdkbdkbdkbjsbdnbjtbdpbjubjvbdpbdpbbTbjwbjxbjybhZbiabjzbbTbjAbiebjBbjCbeSbeSbjDbbUbjEbjFbjGbjEbdzbdCbjHbjIaaaaafaafaafaafaafaafaafaafaafaafaafbjJbfdbfcbjJbjJbfebjKbjLbjMbjNbgIbgHbjObjPbgIbjQbdDbdDaaaaaaaZvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaabgJarVarVavSauJauJbixauJauJaZydqRdqSdqQbdHaZyaaaaaaaaaaafaafbizbizbizbizbizbizbizaaaaaabiAbiBbiCbiDbiEbiEbiEbiEbiFbfCbiGaVsbiHbfCbfCbfCbiIbiJbiKbiLbiMbiNbfHaVuaVubiObiPbiQbiRbiSbiSbiTbiSbiUbiVbiWbiXabTbiYbiZbhtbjabhvbjabhtbjbbiYbhybjcbjdbjebjfbjgbjhbiSbiSbjibjjaGdbjkbjlbdabdabdbbjmbdabjnbdbbdabdabjobbAbbAbbAbbAbbAbjpbjqbbJbeFbjrbdkbdkbdkbjsbdnbjtbdpbjubjvbdpbdpbbTbqWbjxbjybhZbiabjzbbTbjAbiebjBbjCbeSbeSbjDbbUbjEbjFbjGbjEbdzbdCbjHbjIaaaaafaafaafaafaafaafaafaafaafaafaafbjJbfdbfcbjJbjJbfebjKbjLbjMbjNbgIbgHbjObjPbgIbjQbdDbdDaaaaaaaZvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauIavSavSbjRbjSawVaqmbjTbjSaZybKUbVcbjVbcgaZyaaaaaaaaaaaaaaabizbizbizbizbizbizbizaaaaaabjXbjYbfCbfCbfCbfCbfCbfCbjZbkabkbbkcbkdbfCbfCbfCbkebkfbjXbkgbfCbkhbkibkjbkkaZPbiPaGdbklbklbklbklbklbkmbknbkobklbkpbkqbkrbksbktbkubktbkvbkwbkxbkybkzbkAbkBbkBbkBbkCbkBbkBbkCbkDaGdaGdbhHbkEbkEbdbbkFbkGbkFbdbbkHbkIbkJbbAbkKbkKbkKbbAbkLbkMbbJbbJbbJbbJbbJbbJbkNbdnbkObkPbkQbkRbkSbkSbbTbkTbkUbbTbkVbkWbkXbbTbkYbkZblablbblcblcbldbleblfblgblhblfbdzblibljblkaafaafaafaaaaaaaaaaaaaaaaaaaaaaaeaafbfdbllblmblnblobfeblpbdDblqbdDblrbgHblsbltbgIbgIblubdDaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauIavSavSbjRbjSawVaqmbjTbjSaZybKUbVcbjVbcgaZyaaaaaaaaaaaaaaabizbizbizbizbizbizbizaaaaaabjXbjYbfCbfCbfCbfCbfCbfCbjZbkabkbbkcbkdbfCbfCbfCbkebkfbjXbkgbfCbkhbkibkjbkkaZPbiPaGdbklbklbklbklbklbkmbknbkobklbkpbkqbkrbksbktbkubktbkvbkwbkxbkybkzbkAbkBbkBbkBbkCbkBbkBbkCbkDaGdaGdbhHbkEbkEbdbbkFbkGbkFbdbbkHbkIbkJbbAbkKbkKbkKbbAbkLbkMbbJbbJbbJbbJbbJbbJbkNbdnbkObkPbkQbkRbkSbkSbbTbkTbkUbbTbkVbkWbkXbbTbkYbkZblablbblcblcbldbleblfblgblhblfbdzblibljblkaafaafaafaaaaaaaaaaaaaaaaaaaaaaaeaafbfdbllblmblnblobfeblpbdDblqbdDblrbgHblsbltbgIbgIblubdDaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabizbizbizbizbizbizbizblwblxblyblzbfCbfCbfCbfCbfCbfCbjZbkablAbjXblBbfCbfCbfCbfCbfCblCblDbfCbkhbfCblEblFaZPbiPaTnbklblGblHblGblIblJblKblLbklabTblMblNbhtbktblObktbhtblPblQbhybkzblRblSblTblUblVblWblXblYblZbmabmabmbbmcbmcbmdbmebdabmfbdbbmgbmhbmibbAbmjbmjbmkbmlbmmbkMbdnbmnbmobmpbmqbdnbmrbdnbmsbmtbmubmvbdpbdpbmwbmxbdpbmybmzbmAbmBbmCbmDbmEbmFblebmGbmHbmIbmIbmJbmKbmLbmMbmNbmObmPbmQbmRbmRbmRbmRbmSbmTbmUbmVbmWbmXbmXbmXbmXbmYbmZbmZbnabnbbncbndbnebnfbngbgHbgIbgIbnhbgIbnibdDaaaaaaaZvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabizbizbizbizbizbizbizblwblxblyblzbfCbfCbfCbfCbfCbfCbjZbkablAbjXblBbfCbfCbfCbfCbfCblCblDbfCbkhbfCblEblFaZPbiPaTnbklblGblHblGblIblJblKblLbklabTblMblNbhtbktblObktbhtblPblQbhybkzblRblSblTblUblVblWblXblYblZbmabmabmbbmcbmcbmdbmebdabmfbdbbmgbmhbmibbAbmjbmjbmkbmlbmmbkMbdnbmnbmobmpbmqbdnbmrbdnbmsbmtbmubmvbdpbdpbmwbmxbdpbmybmzbmAbmBbmCbmDbmEbmFblebmGbmHbmIbmIbmJbmKbmLbmMbmNbmObmPbmQbmRbmRbmRbmRbmSbmTbmUbmVbmWbmXbmXbmXbmXbmYbmZbmZbnabnbbncbndbnebnfbngbgHbgIbgIbnhbgIbnibdDaaaaaaaZvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvblvblvblvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabizbizbizbizbizbizbizbnjbnkbnjbnlbnmbfCbfCbfCbfCbfCbjZbkabnnbjXbnobfCbfCbfCbfCbnpbnqbnrbfCbkhbfCbfCbgVaGdbiPaHsbknbnsbntbnsbnsbnsbnsbnubklabTblQblQbnvbnwbnxbhtbnybnzbnAbnBbkzbnCbnDbnEbnEbnDbnDbnFbkCbnGaGdaGdbhHbnHbnHbdbbhJbdabjnbdbbnIbdbbdbbnJbmjbnKbnLbnMbnNbnObdnbnPbnQbnRbnSbnTbnUbnVbnWbnXbdpbnYbdpbdpbdpbmxbnZboabobbocbodboebofbogbohboibojbokbolbombeWbeWbgzbeWbonboobopboqborboqboqbosbotboubovbovbovbowboxbovboybozboAboAboBbovbovbovboCboDboEboFboEboGboHboEboIbdDaaaaaaagQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvblvblvblvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabizbizbizbizbizbizbizbnjbnkbnjbnlbnmbfCbfCbfCbfCbfCbjZbkabnnbjXbnobfCbfCbfCbfCbnpbnqbnrbfCbkhbfCbfCbgVaGdbiPaHsbknbnsbntbnsbnsbnsbnsbnubklabTblQblQbnvbnwbnxbhtbnybnzbnAbnBbkzbnCbnDbnEbnEbnDbnDbnFbkCbnGaGdaGdbhHbnHbnHbdbbhJbdabjnbdbbnIbdbbdbbnJbmjbnKbnLbnMbnNbnObdnbnPbnQbnRbnSbnTbnUbnVbnWbnXbdpbnYbdpbdpbdpbmxbnZboabobbocbodboebofbogbohboibojbokbolbombeWbeWbgzbeWbonboobopboqborboqboqbosbotboubovbovbovbowboxbovboybozboAboAboBbovbovbovboCboDboEboFboEboGboHboEboIbdDaaaaaaagQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvaaaaaaaaaaaaaaaaaeaaaaaaaaabizbizbizbizbizbizbizboJboKboJboLboMbfCbfCbfCbfCbfCbjZbkaboNblFboObfCbfCbfCbfCboPbkcboQbfCboRboSboTboUboVboWboXboYboZboZboZbpabpbboZbpcbpdbpebpfbpgbphbpiblObpibnzbpjbpkbpkbkzbplbpmbpnbpobppbnDbpqbprbpsaGdaGdbptbdabdabpubdbbpvbpwbpxbpybpzbpAbbAbpBbpCbpDbbAbpEbpFbpGbpHbnQbpIbpJbpKbpLbgkbpMbpNbgkbpObgkbgkbgkbpPbpQbpRbpSbpTbpUbpRbpVbpWbpXbpYbpZbqabqbbqcbqcbqdbqebqcbqfbqgbqhbqibqjbqkbqhbqlbqmbqnbqobqpbqobqqbqobqpbqobqrbqobqpbqobqsbqobqpbqtbqubqvbqwbqxbqybqzbqAbdDbdDaaaaaaagQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvaaaaaaaaaaaaaaaaaeaaaaaaaaabizbizbizbizbizbizbizboJboKboJboLboMbfCbfCbfCbfCbfCbjZbkaboNblFboObfCbfCbfCbfCboPbkcboQbfCboRboSboTboUboVboWboXboYboZboZboZbpabpbboZbpcbpdbpebpfbpgbphbpiblObpibnzbpjbpkbpkbkzbplbpmbpnbpobppbnDbpqbprbpsaGdaGdbptbdabdabpubdbbpvbpwbpxbpybpzbpAbbAbpBbpCbpDbbAbpEbpFbpGbpHbnQbpIbpJbpKbpLbgkbpMbpNbgkbpObgkbgkbgkbpPbpQbpRbpSbpTbqVbpRbpVbpWbpXbpYbpZbqabqbbqcbqcbqdbqebqcbqfbqgbqhbqibqjbqkbqhbqlbqmbqnbqobqpbqobqqbqobqpbqobqrbqobqpbqobqsbqobqpbqtbqubqvbqwbqxbqybqzbqAbdDbdDaaaaaaagQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvaaaaaaaaaaaaaaaaaaaaaaaaaaabizbizbizbizbizbizbizbqBblxbqCbqDbfCbfCbfCbfCbfCbfCbjZbfCbfCaVsbqEbfCbfCbfCbfCbqFblFbfCbfCbkhbfCblEbkcaZPaGdbqGbklbqHbnsbnsbnsbnsbnsbqIbqJbqKbqLbqMbqNbnAbqObqPbqQbqRbqSbqTbkzbqUbpmbqVbqWbppbnDbqXbqYbpsaGdaGdbqZbbAbbAbbAbrabrbbrabbAbbAbbAbbAbbAbbAbbAbbAbbAbrcbrdbrebrfbrgbrgbrhbribrjbrkbrlbrmbrnbrobrpbrpbrqbrrbrsbbTbrtbrubrvbbTbrwbrxbryblebrzbrAbrBbrCbrCbrDbrDbrDbrEbrEbrEbrEbrEbrBbrBbrBbrFbrGbrHbfabfbbjJbrHbfabfbbjJbrHbfabfbbjJbrHbfabfbbdDbdDbdDbdDbdDbdDbdDbdDaafaaaaaaaZvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvaaaaaaaaaaaaaaaaaaaaaaaaaaabizbizbizbizbizbizbizbqBblxbqCbqDbfCbfCbfCbfCbfCbfCbjZbfCbfCaVsbqEbfCbfCbfCbfCbqFblFbfCbfCbkhbfCblEbkcaZPaGdbqGbklbqHbnsbnsbnsbnsbnsbqIbqJbqKbqLbqMbqNbnAbqObqPbqQbqRbqSbqTbkzbqUbpmbjwbpUbppbnDbqXbqYbpsaGdaGdbqZbbAbbAbbAbrabrbbrabbAbbAbbAbbAbbAbbAbbAbbAbbAbrcbrdbrebrfbrgbrgbrhbribrjbrkbrlbrmbrnbrobrpbrpbrqbrrbrsbbTbrtbrubrvbbTbrwbrxbryblebrzbrAbrBbrCbrCbrDbrDbrDbrEbrEbrEbrEbrEbrBbrBbrBbrFbrGbrHbfabfbbjJbrHbfabfbbjJbrHbfabfbbjJbrHbfabfbbdDbdDbdDbdDbdDbdDbdDbdDaafaaaaaaaZvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvaaaaaaaaaaaaaaaaaaaaaaaaaaabizbizbizbizbizbizbizboJboKboJbnmbrIbfCbfCbfCbfCbrIbjZbfCbfCbrJbrKbfCbfCbfCbfCbfCbrLbfCbfCbkhbfCblEbjXaZPaGdaNRbklbrMbrNbrObrPbrQbrQbrRbqJbrSbrTbrUbrVbrWbrXbrYbrZbsabsbbscbsdbsebnDbsfbsfbnDbnDbsgbshbpsaGdaGdbqZbsibsjbskbskbslbdbbsmbbAbsnbsnbsobspbsqbsqbsrbssbkMbdnbstbsubsvbswbsxbsybnXbszbdnbsAbsBbsCbsDbsEbsFbsGbbTbbTbbTbbTbbTbleblebleblebsHbsIbrDbrDbrDbrDbsJbsKbsKbsLbsMbsNbrEaafaafbjIbsObjIaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvaaaaaaaaaaaaaaaaaaaaaaaaaaabizbizbizbizbizbizbizboJboKboJbnmbrIbfCbfCbfCbfCbrIbjZbfCbfCbrJbrKbfCbfCbfCbfCbfCbrLbfCbfCbkhbfCblEbjXaZPaGdaNRbklbrMbrNbrObrPbrQbrQbrRbqJbrSbrTbrUbrVbrWbrXbrYbrZbsabsbbscbsdbsebnDbsfbsfbnDbnDbsgbshbpsaGdaGdbqZbsibsjbskbskbslbdbbsmbbAbsnbsnbsobspbsqbsqbsrbssbkMbdnbstbsubsvbswbsxbsybnXbszbdnbsAbsBbsCbsDbsEbsFbsGbbTbbTbbTbbTbbTbleblebleblebsHbsIbrDbrDbrDbrDbsJbsKbsKbsLbsMbsNbrEaafaafbjIbsObjIaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvaaaaaaaaaaaaaaaaaaaaaaaaaaabizbizbizbizbizbizbizbsPbsQbsPbsRbsRbsRbsRbsRbsSbsRbsTbsUbsVbsWbsXbsYbsZbtabtbbfCbtcbtdboTbtebtfblEblFbtgbeubeubklbrMbrNbthbtibtjbtkbtlbqJbtmbtnbtobtpbtqbtrbtsbttbtubtvbtwbkzbtxbtybtzbtAbtBbtCbtDbtEbtFbtGbtHbtIbtJbtKbdbbtLbtLbdbbdbbbAbtMbtMbtMbsqbtNbsqbsrbtObkMbtPbtPbtPbtPbtQbtPbtRbtSbtRbtTbtTbtUbtVbtTbtTbtWbtXbtYbtZbuabubbucbudbuebufbugbuhbuibrDbujbukbulbsJbsKbsKbsLbsMbsNbrEaafaafblkbsOblkaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaZvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvaaaaaaaaaaaaaaaaaaaaaaaaaaabizbizbizbizbizbizbizbsPbsQbsPbsRbsRbsRbsRbsRbsSbsRbsTbsUbsVbsWbsXbsYbsZbtabtbbfCbtcbtdboTbtebtfblEblFbtgbeubeubklbrMbrNbthbtibtjbtkbtlbqJbtmbtnbtobtpbtqbtrbtsbttbtubtvbtwbkzbtxbtybtzbtAbtBbtCbtDbtEbtFbtGbtHbtIbtJbtKbdbbtLbtLbdbbdbbbAbtMbtMbtMbsqbtNbsqbsrbtObkMbtPbtPbtPbtPbtQbtPbtRbtSbtRbtTbtTbtUbtVbtTbtTbtWbtXbtYbtZbuabubbucbudbuebufbugbuhbuibrDbujbukbulbsJbsKbsKbsLbsMbsNbrEaafaafblkbsOblkaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaZvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvblvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabizbizbizbizbizbizbizbumbunbuobupbuqblxblxblxblxburaVsaVsaVsaVsbusaVsbutbuubuvbuwbuxbuybuzbuAbuBbuvbuvbuCbuDbuDbklbklbklbuEbuFbuGbuGbuGbuHbuIbuJbuKbuIbuLbuMbuNbuObuPbuPbuPbuQbuRbkBbkBbuSbuTbuUbkBbkCbuVbuDbuDbqZbuWbuXbuYbuZbvabvbbdbbbAbvcbtMbsnbtMbsqbsqbvdbvebvfbvgbvhbvibvjbvkbvlbsybnXbsybvmbvnbvobvpbvqbtTbvrbvsbtYbtZbvtbvubvvbvwbvxbvybvzbvAbvBbvCbvDbvEbvFbvFbvGbvFbvHbvIbvJbrEaafaafblkbsOblkaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaagQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvblvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabizbizbizbizbizbizbizbumbunbuobupbuqblxblxblxblxburaVsaVsaVsaVsbusaVsbutbuubuvbuwbuxbuybuzbuAbuBbuvbuvbuCbuDbuDbklbklbklbuEbuFbuGbuGbuGbuHbuIbuJbuKbuIbuLbuMbuNbuObuPbuPbuPbuQbuRbkBbkBbuSbuTbuUbkBbkCbuVbuDbuDbqZbuWbuXbuYbuZbvabvbbdbbbAbvcbtMbsnbtMbsqbsqbvdbvebvfbvgbvhbvibvjbvkbvlbsybnXbsybvmbvnbvobvpbvqbtTbvrbvsbtYbtZbvtbvubvvbvwbvxbvybvzbvAbvBbvCbvDbvEbvFbvFbvGbvFbvHbvIbvJbrEaafaafblkbsOblkaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaagQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabizbizbizbizbizbizbizaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvKbvLbvMbvNbvObvPbvQbvRbvSbvTbvUbvVbvWbvXbuvbvYbvZbvZbvZbwabwbbvZbwcbvZbvZbvZbvZbwdbwebwbbwfbwgbwhbwibwjbwkbvZbwlbwmbvZbvZbvZbwnbvZbvZbvZbwobwpbvZbvZbwqbwrbwsbuYbuZbuZbvbbwtbbAbtMbtMbtMbtMbtMbwubsrbwvbkMbwwbwxbwybwzbwAbwBbsybnXbsybwCbwDbwEbwFbwGbvmbwHbwIbwJbwKbwLbwMbwMbwMbwNbwObugbsHbwPbrDbrDbwQbwRbwSbwSbwSbwTbwSbwUbrEaafaafblkbsOblkaafaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaagQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDxaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabizbizbizbizbizbizbizaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvKbvLbvMbvNbvObvPbvQbvRbvSbvTbvUbvVbvWbvXbuvbvYbvZbvZbvZbwabwbbvZbwcbvZbvZbvZbvZbwdbwebwbbwfbwgbwhbwibwjbwkbvZbwlbwmbvZbvZbvZbwnbvZbvZbvZbwobwpbvZbvZbwqbwrbwsbuYbuZbuZbvbbwtbbAbtMbtMbtMbtMbtMbwubsrbwvbkMbwwbwxbwybwzbwAbwBbsybnXbsybwCbwDbwEbwFbwGbvmbwHbwIbwJbwKbwLbwMbwMbwMbwNbwObugbsHbwPbrDbrDbwQbwRbwSbwSbwSbwTbwSbwUbrEaafaafblkbsOblkaafaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaagQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDxaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvblvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabizbizbizbizbizbizbizaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvKbwVbwWbwWbwXbwYbwZbvRbvRbxabxbbxcbxdbxebuvbxfbxgbvZbvZbvZbwbbvZbvZbvZbvZbvZbvZbvZbwebwbbvZbxhbxibxjbvZbvZbvZbvZbwmbvZbvZbvZbwnbvZbvZbxkbxlbwpbxmbxnbxobxpbxqbdbbxrbxsbdbbdbbbAbxtbxubxvbxwbxxbxybsrbwvbxzbtQbxAbxBbxCbxDbxEbxFbxGbsybwCbwDbxHbxIbxJbxKbxLbxMbxNbxObxPbxQbxRbxSbxTbxUbugbxVbxWbxXbxYbxZbyabybbycbydbyebyfbygbrEaafaafblkbsOblkaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaZvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvblvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabizbizbizbizbizbizbizaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvKbwVbwWbwWbwXbwYbwZbvRbvRbxabxbbxcbxdbxebuvbxfbxgbvZbvZbvZbwbbvZbvZbvZbvZbvZbvZbvZbwebwbbvZbxhbxibxjbvZbvZbvZbvZbwmbvZbvZbvZbwnbvZbvZbxkbxlbwpbxmbxnbxobxpbxqbdbbxrbxsbdbbdbbbAbxtbxubxvbxwbxxbxybsrbwvbxzbtQbxAbxBbxCbxDbxEbxFbxGbsybwCbwDbxHbxIbgmbxKbxLbxMbxNbxObxPbxQbxRbxSbxTbxUbugbxVbxWbxXbxYbxZbyabybbycbydbyebyfbygbrEaafaafblkbsOblkaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaZvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabizbizbizbizbizaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvKbvKbvKbvKbwXbwYbyhbyibvRbyjbykbylbymbynbuvbvYbvYbvYbvYbvYbyobypbypbypbypbypbypbyqbyrbysbytbyubyubyubyubyubyvbyubywbyxbyubyubyybvZbyzbyAbyBbyCbvZbvZbqZbbAbyDbbAbbAbbAbbAbbAbbAbsrbyEbsrbsrbsrbsrbsrbyFbyGbtQbyHbyIbyJbyKbyLbsybnXbsybyMbwDbyNbyNbyObtZbugbyPbyQbtZbyRbySbyTbudbuebufbugbyUbyVbyWbrDbyXbyYbyZbzabzbbzcbyfbygbrEaafaafbzdbsObzdaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaZvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabizbizbizbizbizaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvKbvKbvKbvKbwXbwYbyhbyibvRbyjbykbylbymbynbuvbvYbvYbvYbvYbvYbyobypbypbypbypbypbypbyqbyrbysbytbyubyubyubyubyubyvbyubywbyxbyubyubyybvZbyzbyAbyBbyCbvZbvZbqZbbAbyDbbAbbAbbAbbAbbAbbAbsrbyEbsrbsrbsrbsrbsrbyFbyGbtQbyHbyIbyJbyKbyLbsybnXbsybyMbwDbyNbyNbyObtZbugbyPbyQbtZbyRbySbyTbudbuebufbugbyUbyVbyWbrDbyXbyYbyZbzabzbbzcbyfbygbrEaafaafbzdbsObzdaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaZvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaabvKbzebwXbwYbuvbuvbzfbzgbzhbzhbzibuvbuvbzjbzkbzlbzmbzmbznbzobzpbzpbzqbzrbzsbzpbzpbztbzubuDbuDbuDbzvbzwbzwbzwbzxbzybzwbzwbzwbzwbzzbzAbyGbzBbzCbzDbbHbzEbzFbzGbzHbzHbzGbzIbzJbzKbzLbzMbzzbzNbzObzPbwvbzQbtQbzRbzSbyKbzTbvlbsybzUbzVbzWbzXbzYbzZbAabtZbAbbAcbAdbAebAfbAdbAgbAhbAhbAhbAibAjbAkbAlbAlbAlbAlbAlbAlbAmbAnbAmbAmbAmbAmaafbccbAobccaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaabvKbzebwXbwYbuvbuvbzfbzgbzhbzhbzibuvbuvbzjbzkbzlbzmbzmbznbzobzpbzpbzqbzrbzsbzpbzpbztbzubuDbuDbuDbzvbzwbzwbzwbzxbzybzwbzwbzwbzwbzzbzAbyGbzBbzCbzDbbHbzEbzFbzGbzHbzHbzGbzIbzJbzKbzLbzMbzzbzNbzObzPbwvbzQbtQbzRbzSbyKbzTbvlbsybzUbzVbzWbzXbzYbzZbAabtZbAbbAcbAdbAebAfbAdbAgbAhbAhbAhbAibAjbAkbAlbAlbAlbAlbAlbAlbAmbAnbAmbAmbAmbAmaafbccbAobccaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaabvKbwWbwXbAubAvbAwbAxbAybAzbAAbABbuvaaaaaaaaabACbADbAEbAFaaaaafaaabAGbAHbAIaaaaafaaabAJbAKbvZbvZbzCbzwbALbAMbANbAObAPbAQbARbASbATbAUbAVbAWbAWbAWbAXbAYbAZbBabBbbBcbBdbBebBfbBgbBbbBbbBbbBhbBibBjbwvbkMbtQbtPbBkbyKbBlbBmbsybdpbdpbBnbBobBpbBqbBrbtZbBsbBtbBubBubBvbBwbwMbBxbwMbwMbBybsHbBzbAlbBAbBBbBCbBDbBEbBFbBGbBFbBHbBIbBJaafbccbsObjIaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbApbAqbAqbArbAsbAsbAtbAtbAtbAtbAtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaabvKbwWbwXbAubAvbAwbAxbAybAzbAAbABbuvaaaaaaaaabACbADbAEbAFaaaaafaaabAGbAHbAIaaaaafaaabAJbAKbvZbvZbzCbzwbALbAMbANbAObAPbAQbARbASbATbAUbAVbAWbAWbAWbAXbAYbAZbBabBbbBcbBdbBebBfbBgbBbbBbbBbbBhbBibBjbwvbkMbtQbtPbBkbyKbBlbBmbsybdpbdpbBnbBobBpbBqbBrbtZbBsbBtbBubBubBvbBwbwMbBxbwMbwMbBybsHbBzbAlbBAbBBbBCbBDbBEbBFbBGbBFbBHbBIbBJaafbccbsObjIaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbApbAqbAqbArbAsbAsbAtbAtbAtbAtbAtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -9142,7 +9143,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabEgbEhbEibEibEgbEjbDibEkbvKbvKbElbEmbEmbEnbEobEpbEqbErbEsbEtbEubEvbEwbExbEybEzbEAbEBbECaafbBZbEDbEEbDnbDobEFbBZaafbCbbAKbvZbEGbzvbzwbzwbEHbzwbzwbEIbzwbzwbzNbEJbEKbELbEMbzzbzzbENbEObEPbEQbzzaafaafbERaafaafbESbETbESbzNbzNbEUbEVbEWbEXbEYbEZbFabFbbdnbFcbdpbdpbDObFdbFebFebFfbugbFgbFhbyTbFibtZbFjbFkbFlbFmbFnbFobFpbFqbFrbFsbFtbFubFvbFwbFxbFybAmbAmbAmbAmbAmbccbFzbccbAmbAmbAmbAmbAmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabEfbAtbCSbAtbAtbBNbBNbBNbBNbBNbBNbBNbAtbAtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabEgbEhbEibEibEgbEjbDibEkbvKbvKbElbEmbEmbEnbEobEpbEqbErbEsbEtbEubEvbEwbExbEybEzbEAbEBbECaafbBZbEDbEEbDnbDobEFbBZaafbCbbAKbvZbEGbzvbzwbzwbEHbzwbzwbEIbzwbzwbzNbEJbEKbELbEMbzzbzzbENbEObEPbEQbzzaafaafbERaafaafbESbETbESbzNbzNbEUbEVbEWbEXbEYbEZbFabFbbdnbFcbdpbdpbDObFdbFebFebFfbugbFgbFhbyTbFibtZbFjbFkbFlbFmbFnbFobFpbFqbFrbFsbFtbFubFvbFwbFxbFybAmbAmbAmbAmbAmbccbFzbccbAmbAmbAmbAmbAmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabEfbAtbCSbAtbAtbBNbBNbBNbBNbBNbBNbBNbAtbAtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabCXbFCbFCbEibCXbFDbFEbFFbvKbFGbADbADbADbADbADbFHbADbFIbFJbFKbFLbFMbFNbFObFPbFQbFRbDkbFSaaabBZbFTbEEbFUbDobFVbBZaaabCbbFWbFXbFYbFZbGabGbbGcbzHbzHbzHbzHbzHbzHbGdbzHbGebGfbzzaaaaaabhybGgaaaaaaaaaaaabERaaaaaabzzbzzbzzbzzbzzbzzbzzbEWbGhbGibgkbGjbGkbGlbGmbGnbdpbGobGpbGqbGrbGsbugbGtbGubGtbtZbtZbGvbGwbGxbGybGybGzbGAbgzbGBbGCbGDbGEbGFbGFbGGbGGbGHbGIbGGbGJbGKbGLbGMbGNbGObGQbGPbJsbGSaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbAsbAtbFAbFBbFBbBNbBNbBNbBNbBNbBNbBNbBNbAtbAtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabCXbFCbFCbEibCXbFDbFEbFFbvKbFGbADbADbADbADbADbFHbADbFIbFJbFKbFLbFMbFNbFObFPbFQbFRbDkbFSaaabBZbFTbEEbFUbDobFVbBZaaabCbbFWbFXbFYbFZbGabGbbGcbzHbzHbzHbzHbzHbzHbGdbzHbGebGfbzzaaaaaabhybGgaaaaaaaaaaaabERaaaaaabzzbzzbzzbzzbzzbzzbzzbEWbGhbGibgkbGjbGkbGlbGmbGnbdpbGobGpbGqbGrbGsbugbGtbGubGtbtZbtZbGvbGwbGxbGybGybGzbGAbgzbGBbGCbGDbGEbGFbGFbGGbGGbGHbGIbGGbGJbGKbGLbGMbGNbGObGQbGPbJsbGSaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbAsbAtbFAbFBbFBbBNbBNbBNbBNbBNbBNbBNbBNbAtbAtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabEgbEibEibEibGUbGVbADbADbGWbADbADbADbADbFHbADbADbADbGXbvKbvKbvKbvKbvKbGYbGZbHabHbbHcbHdbHebHfbHgbHhbHibHjbHkbHfbHebHlbHmbHnbHobHpbHqbHpbHpbHrbHsbHtbHubzMbzNbzNbHvbHwbHxbAWbHybHybHzbHAbHBbHBbHBbHBbHCbHBbHBbHBbHBbHBbHBbHBbHBbHDbHEbHFbHGbdpbdpbHHbnTbdpbHIbHJbxEbHKbHLbHKbHMbHNbGpbGpbHObDVbHPbHQbHRbHSbHTbHUbHVbHWbgzbHXbHYbHYbHYbHYbHYbCLbCLbCLbCLbCLbHZbIabIbbIcbIdbGObCLbIebGRbIfaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabAtbAtbGTbBNbBNbBNbBNbBNbBNbBNbBNbBNbBNbBNbAtbAtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabEgbEibEibEibGUbGVbADbADbGWbADbADbADbADbFHbADbADbADbGXbvKbvKbvKbvKbvKbGYbGZbHabHbbHcbHdbHebHfbHgbHhbHibHjbHkbHfbHebHlbHmbHnbHobHpbHqbHpbHpbHrbHsbHtbHubzMbzNbzNbHvbHwbHxbAWbHybHybHzbHAbHBbHBbHBbHBbHCbHBbHBbHBbHBbHBbHBbHBbHBbHDbHEbHFbHGbdpbdpbHHbnTbdpbHIbHJbxEbHKbHLbHKbHMbHNbGpbGpbHObDVbHPbHQbHRbHSbHTbHUbHVbHWbgzbHXbHYbHYbHYbHYbHYbCLbCLbCLbCLbCLbHZbIabIbbIcbIdbGObCLbIebGRbIfaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabAtbAtbGTbBNbBNbBNbBNbBNbBNbBNbBNbBNbBNbBNbAtbAtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabCXbFCbFCbFCbCXbIibIjbIkbvKbIlbADbImbADbADbADbADbADbInbvKbIobIpbIpbIqbIrbIsbItbIubIvbBZaaabBZbIwbBZbBZbBZbBZbBZaaabIxbIybIzbIAbHsbIBbICbIDbIEbIFbIFbIFbIFbIFbIFbIGbIHbIFbIFbIIbIJbIKbILbILbILbILbIMbERaaaaaaaaaaaaaaaaafaafaafbjIbINbIObIPbIQbIRbISbITbIRbIUbIQbIVbIWbIXbIYbIZbJabGpbJbbJcbDVbJdbGybGybJebJfbJgbJhbJibJjbAlbJkbJkbJkbJlbJmbJnbJobJpbJqbJrbAmbAmbccbFzbccbAmbjUbIebGRbIfaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbAtbBNbBNbBNbBNbBNbBNbIgbBNbIhbBNbBNbBNbBNbBNbAtbAtaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabCXbFCbFCbFCbCXbIibIjbIkbvKbIlbADbImbADbADbADbADbADbInbvKbIobIpbIpbIqbIrbIsbItbIubIvbBZaaabBZbIwbBZbBZbBZbBZbBZaaabIxbIybIzbIAbHsbIBbICbIDbIEbIFbIFbIFbIFbIFbIFbIGbIHbIFbIFbIIbIJbIKbILbILbILbILbIMbERaaaaaaaaaaaaaaaaafaafaafbjIbINbIObIPbIQbIRaXhbITbIRbIUbIQbIVbIWbIXbIYbIZbJabGpbJbbJcbDVbJdbGybGybJebJfbJgbJhbJibJjbAlbJkbJkbJkbJlbJmbJnbJobJpbJqbJrbAmbAmbccbFzbccbAmbjUbIebGRbIfaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbAtbBNbBNbBNbBNbBNbBNbIgbBNbIhbBNbBNbBNbBNbBNbAtbAtaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabEgbJybJzbJAbEgbJBbDibEkbvKbvKbJCbJDbJEbJFbJGbJHbJHbJHbvKbJIbJJbJKbJLbJMbJNbJObJPbJLbBZaaaaafbJQbJRbJSbJTbJUbJVbJVbJWbJXbJYbJZbHsbIBbICbKabKbbKcbKdbKebKfbKgbKhbKibKjbKkbKlbKmbKnbKobKpbKqbKrbKsbKtbKuaaaaaaaaaaaeaaaaafaaaaaablkbKvbEXbKwbKxbdpbKybKzbdpbKAbKxbGobGpbKBbKCbKDbKEbKFbGpbHObDVbKGbKHbGybKIbKJbKKbDVbGAbKLbKMbKMbKMbKMbKMbKMbKMbKMbKMbKMbKNbKObKPbKQbKRbKSbAmbflbJtbJubAmaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaafaaaaaabAtbJvbJvbJvbJvbJvbJvbJwbBNbJxbJvbIhbBNbBNbBNbBNbAtaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabEgbJybJzbJAbEgbJBbDibEkbvKbvKbJCbJDbJEbJFbJGbJHbJHbJHbvKbJIbJJbJKbJLbJMbJNbJObJPbJLbBZaaaaafbJQbJRbJSbJTbJUbJVbJVbJWbJXbJYbJZbHsbIBbICbKabKbbKcbKdbKebKfbKgbKhbKibKjbKkbKlbKmbKnbKobKpbKqbKrbKsbKtbKuaaaaaaaaaaaeaaaaafaaaaaablkbKvbEXbKwbKxbdpbKybKzbdpbKAbKxbGobGpbKBbKCbKDbKEbKFbGpbHObDVbKGbKHbGybKIbKJbKKbDVbGAbKLbKMbKMbKMbKMbKMbKMbKMbKMbKMbKMbKNbKObKPbKQbKRbKSbAmbflbJtbJubAmaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaafaaaaaabAtbJvbJvbJvbJvbJvbJvbJwbBNbJxbJvbIhbBNbBNbBNbBNbAtaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabLabCWbLbbCWbLcaaaaafaaaaafbvKbvKbLdbLebLebLebLebLfbvKbvKbLgbLhbLibJLbLjbLkbLlbLmbLnbLobLpbLpbLqbLrbLsbLpbLtbLubLubLvbLwbLxbLybLzbLAbLBbLCbLDbKcbLEbLFbLGbLGbLFbLHbKjbLIbLJbLKbLHbLGbLLbLGbLMbLNbLOaafbLPbLPbLPbLPbLPaafaaaaaablkbKvbEXbLQbLRbdpbdpbLSbdpbKAbLTbDObLUbLVbLVbLWbKEbGpbLXbHObDVbLYbLZbMabMbbMcbMdbLYbMebMfbMgbMhbMibMjbMkbMlbMmbMnbMobMpbMqbKObjHbsObccbccbAmbKTbgLbKVbKWaagaagaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabKXbBLbBLbBLbBLbBLbBLbBLbKYbBObBNbBNbBNbBNbKZbBObAtaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabLabCWbLbbCWbLcaaaaafaaaaafbvKbvKbLdbLebLebLebLebLfbvKbvKbLgbLhbLibJLbLjbLkbLlbLmbLnbLobLpbLpbLqbLrbLsbLpbLtbLubLubLvbLwbLxbLybLzbLAbLBbLCbLDbKcbLEbLFbLGbLGbLFbLHbKjbLIbLJbLKbLHbLGbLLbLGbLMbLNbLOaafbLPbLPbLPbLPbLPaafaaaaaablkbKvbEXbLQbLRbdpbdpbLSbdpbKAbLTbDObLUbLVbLVbLWbKEbGpbLXbHObDVbLYbLZbMabMbbMcbMdbLYbMebMfbMgbMhbMibMjbMkbMlbMmbMnbMobMpbMqbKObjHbsObccbccbAmbKTbgLbKVbKWaagaagaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabKXbBLbBLbBLbBLbBLbBLbBLbKYbBObBNbBNbBNbBNbKZbBObAtaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaaaaaaaaaaafaafaaaaafaaaaaaaaaaafbJLbLjbMtbJLbJPbJLbBZbBZbBZbJTbMubMvbJTbJTbMwbMxbMybMzbMAbMBbMCbMDbMEbLGbMFbMGbLGbLGbLGbLGbMHbMIbMJbMKbLJbMLbLGbMMbMNbMObMPbMQbMRbMSbMTbMUbMVbMWbLPaafaafaafblkbKvbEXbMXbMYbMZbNabdnbdpbKAbKxbNbbNbbNbbNbbNbbNcbNdbNbbNbbNbbLYbNebNfbNgbNhbNibLYbGAbNjbNkbNlbNmbNnbNmbNmbNobNpbMpbNpbMpbKObNqbsObccaaabAmbAmbjWbAmbAmaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabAtbFBbFBbFBbFBbFBbFBbMrbBNbFAbFBbMsbBNbBNbBNbBNbAtaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaaaaaaaaaaafaafaaaaafaaaaaaaaaaafbJLbLjbMtbJLbJPbJLbBZbBZbBZbJTbMubMvbJTbJTbMwbMxbMybMzbMAbMBbMCbMDbMEbLGbMFbMGbLGbLGbLGbLGbMHbMIbMJbMKbLJbMLbLGbMMbMNbMObMPbMQbMRbMSbMTbMUbMVbMWbLPaafaafaafblkbKvbEXbMXbMYbMZbNabdnbdpbKAbKxbNbbNbbNbbNbbNbbNcbNdbNbbNbbNbbLYbNebNfbNgbNhbNibLYbGAbNjbNkbNlbNmbNnbNmbNmbNobNpbMpbNpbMpbKObNqbsObccaaabAmbAmbjWbAmbAmaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabAtbFBbFBbFBbFBbFBbFBbMrbBNbFAbFBbMsbBNbBNbBNbBNbAtaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -9160,7 +9161,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajmaaaaaaaafaafaaaaafaafaaaaaaaafaafaafaaaajmaaaaafaafaaaaaaaaaaaaaaaaaaaaabXrbIpbXZbYabYbbXubXubXubXubXubXubYcbXubYdbYebYfbYebYebYgbXubYhbvZbYibYjbMAbYkbYlbYmbYnbYmbYmbYobYpbYqbKcbYrbYsbPMbYtbYubYvbKmbYwbYxbYybVrbYzbYAbRcbMSbMTbYBbYCbYCbLPaafaaaaaaaaaaaaaaaaaaaafbccbccbccbYDbYEbYDbccbYFbYGbjHbYHbjHbjHbYIbXUbXUbVabVabVabVabVabVabXqbYJbYKbYLbXqbVabYMbYNbXYbYObYPbYQbYRbYSbYTbYUbYUbYUbYUbYUaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajmaaaaaaaafaafaaaaafaafaaaaaaaafaafaafaaaajmaaaaafaafaaaaaaaaaaaaaaaaaaaaabXrbIpbXZbYabYbbXubXubXubXubXubXubYcbXubYdbYebYfbYebYebYgbXubYhbvZbYibYjbMAbYkbYlbYmbYnbYmbYmbYobYpbYqbKcbYrbYsbPMbYtbYubYvbKmbYwbYxbYybVrbYzbYAbRcbMSbMTbYBbYCbYCbLPaafaaaaaaaaaaaaaaaaaaaafbccbccbccbYDbYEbYDbccbYFbYGbjHbYHbjHbjHbYIbXUbXUbVabVabVabVabVabVabXqbYJbYKbYLbXqbVabYMbYNbXYbYObYPbYQbYRbYSbYTbYUbYUbYUbYUbYUaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajmaaabYVbYWbYXaaabYVbYWbYXaaabYVbYWbYXaafbYYaafaafaaaaaaaaaaaaaaaaaaaaaaaabXrbIpbWJbYZbZabXubXubXubXubXubXubXubZbbXubXubXubXubXubZcbZdbZebvZbSebvZbZfbXGbZgbZhbZibZjbZkbZlbZlbZmbZnbZobZpbZqbZrbOKbOKbOMbQUbZsbQZbONbSubZtbNRaafbNSbZubZvbZwbLPaafaaaaaaaaaaaaaaaaaaaaaaafaaabZxbZybZzbZAbZxbZxbZxbZxbZxbZxbZxbZBbZCbjHbjHbjHbZDbZEbZFbZFbccbZGbjHbsObjHbjHblibZHbZIbZJbZKbZLbZMbZNbZObZPbZQbZPbZRbZSaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajmaaabYVbYWbYXaaabYVbYWbYXaaabYVbYWbYXaafbYYaafaafaaaaaaaaaaaaaaaaaaaaaaaabXrbIpbWJbYZbZabXubXubXubXubXubXubXubZbbXubXubXubXubXubZcbZdbZebvZbSebvZbZfbXGbZgbZhbZibZjbZkbZlbZlbZmbZnbZobZpbZqbZrbOKbOKbOMbQUbZsbQZbONbSubZtbNRaafbNSbZubZvbZwbLPaafaaaaaaaaaaaaaaaaaaaaaaafaaabZxbZybZzbZAbZxbZxbZxbZxbZxbZxbZxbZBbZCbjHbjHbjHbZDbZEbZFbZFbccbZGbjHbsObjHbjHblibZHbZIbZJbZKbZLbZMbZNbZObZPbZQbZPbZRbZSaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajmaaabYVbZTbYXaaabYVbZTbYXaaabYVbZTbYXaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaabZUbIpbWJbVWbZVbXubXubXubZWbZXbZXbZYbXubZZbXubXubXubXubZccaacabbWdcacbvZbMAcadcaecafcagcahcahcahcaicajcakbLGbNGbLGbPMbLGbQUcalcamcancaobKrcapcaqbTMbOTbMTcarbYCbYCbLPaafaaaaaaaaaaaaaaaaafaafaafaaabZxcascatcaubZxcavcawcaxcaycavbZxbWrbWsbWsbVQbccbWrbWsbWsbVQbcccazcazcaAcaBcazcaCcaDbXYcaEcaFcaGcaHcaIcaJcaKcaJcaLcaMbZSaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajmaaabYVbZTbYXaaabYVbZTbYXaaabYVbZTbYXaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaabZUbIpbWJbVWbZVbXubXubXubZWbZXbZXbZYbXubZZbXubXubXubXubZccaacabbWdcacbvZbMAcadcaecafcagcahcahcahcaicajcakbLGbNGbLGbPMbLGbQUcalcamcancaobKrcapcaqbTMbOTbMTcarbYCbYCbLPaafaaaaaaaaaaaaaaaaafaafaafaaabZxcascatcaubZxcavcawcaxcaycavbZxbWrbWsbWsbVQbccbWrbWsbWsbVQbcccazcazcaAcaBcazcaCcaDbXYcaEcaFcaGcaHcaIcaJcaKcaJcaLcaMbZSaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaajlaafbYVbZTbYXaaabYVbZTbYXaafbYVbZTbYXaafaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaabJLbIpbWJbVWcaNbXubXubXucaOcaPcaQcaRcaScaPcaTcaUcaVcaWcaXcaYcaZcbacbbcbcbJYcbdcaecbecbfcbgcbhcbicbjcbkcblbMDcbmbNNcbnbQUbSobLGbLGbLMbSocbobSubUCbNRaafbLPbLPbLPbLPbLPaafaaaaaaaaaaaabZAbZxbZxbZxbZxbZxcbpcbqcbrbZxcavcbscavcbtcavbZxaaaaafaafaaaaaaaaaaaaaaaaafaaacazcbucbvcbwcazbccbccbXYcbxcbycbzcbAcbBcbCbZPcbDbZPcbEbZSaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaajlaafbYVbZTbYXaaabYVbZTbYXaafbYVbZTbYXaafaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaabJLbIpbWJbVWcaNbXubXubXucaOcaPcaQcaRcaScaPcaTcaUcaVcaWcaXcaYcaZcbacbbcbcbJYcbdcaecbecbfcbgcbhbIScbjcbkcblbMDcbmbNNcbnbQUbSobLGbLGbLMbSocbobSubUCbNRaafbLPbLPbLPbLPbLPaafaaaaaaaaaaaabZAbZxbZxbZxbZxbZxcbpcbqcbrbZxcavcbscavcbtcavbZxaaaaafaafaaaaaaaaaaaaaaaaafaaacazcbucbvcbwcazbccbccbXYcbxcbycbzcbAcbBcbCbZPcbDbZPcbEbZSaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaabYVbZTbYXaafbYVbZTbYXaaabYVbZTbYXaaaaaaaaaaaaaaaaafaaaaafaaaaaaaaaaaabJLbIpbWJbVWcbFcbGcbGcbHbVWbVWbVWbVWbVWbVWbVWbVWbVWbVWcbIbVWbVWcbJcbKcbLbODcbMcaecbNcbOcbPcbPcbQcbRcbSbIFcbTcbUbSubOPcbVcbWcbXcbWcbVcbYcbVcbZbQUccaaafaafaafaafaafaafaafaaaaaaaaaaaaccbcccccdcceccfccgcchcciccjbZxcckcclcavccmcckbZxaaaaaaaafaafaaaaaaaaaaaaaafaaacazccnccoccpcazaafaafbXYccqccrccscctccubXYbYUbYUbYUccvbYUaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaabYVbZTbYXaafbYVbZTbYXaaabYVbZTbYXaaaaaaaaaaaaaaaaafaaaaafaaaaaaaaaaaabJLbIpbWJbVWcbFcbGcbGcbHbVWbVWbVWbVWbVWbVWbVWbVWbVWbVWcbIbVWbVWcbJcbKcbLbODcbMcaecbNcbOcbPcbPcbQcbRcbSbIFcbTcbUbSubOPcbVcbWcbXcbWcbVcbYcbVcbZbQUccaaafaafaafaafaafaafaafaaaaaaaaaaaaccbcccccdcceccfccgcchcciccjbZxcckcclcavccmcckbZxaaaaaaaafaafaaaaaaaaaaaaaafaaacazccnccoccpcazaafaafbXYccqccrccscctccubXYbYUbYUbYUccvbYUaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajmajmajlaafaaabYVbZTbYXaafbYVbZTbYXaaabYVbZTbYXaafaaaaaaaaaaaaaafaafccwccxccxccxccxbJLbIpbWJbVWccycczcczccAbVWccBccCccCccCccCccCccCccCccCccDbTrbTrccEccFccGccHccGccIccJccKccLccMccNccOccPbKcbKcccQccRccSccTccUccVccWccXbLGccYccZcdabLJaafaafaaaaaaaaaaaaaafaaaaaaaaaaaacdbcawcdccddbZxcdebZxcdfbZAbZxcdgcdhcdicdjcdkbZxaafaafaafaafaafaafaafaafaafaafcazcdlcdmcdncazaaaaaabXYbXYbXYcdocdpcdqbXYaagaagbYUbYUbYUaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajmajmajlaafaaabYVbZTbYXaafbYVbZTbYXaaabYVbZTbYXaafaaaaaaaaaaaaaafaafccwccxccxccxccxbJLbIpbWJbVWccycczcczccAbVWccBccCccCccCccCccCccCccCccCccDbTrbTrccEccFccGccHccGccIccJccKccLccMccNccOccPbKcbKcccQccRccSccTccUccVccWccXbLGccYccZcdabLJaafaafaaaaaaaaaaaaaafaaaaaaaaaaaacdbcawcdccddbZxcdebZxcdfbZAbZxcdgcdhcdicdjcdkbZxaafaafaafaafaafaafaafaafaafaafcazcdlcdmcdncazaaaaaabXYbXYbXYcdocdpcdqbXYaagaagbYUbYUbYUaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajmaaaaafaaaaafaafcdraafaafaafcdraafaaaaafcdraafaaaaaaaaaaaaaaacdscdtcducdvcdwcdxcdybIpbIpbWJbVWbVWcdzcdAbVWbVWcdBcdCcdCcdCcdCcdCcdCcdCcdCcdDcdEcdEcdEcdFcdGcdHcdIcdJcdKcdLcdMcdNcdOcdPcdQcdRcdQcdScdTcdUcdVcdUcdTcdUcdVcdUcdWcdUcdWcdXaafaafaaaaaaaaaaaaaafaaaaaaaaaaaacdbcdYcdZceacebceccedceecefcegcehceicejcekcelbZxaaaaaaaaaaaaaafaaaaaaaaaaaaaaacemcenceocepceqaaaaaaaaaaafaafceraafcesaaaaafaaaaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajmaaaaafaaaaafaafcdraafaafaafcdraafaaaaafcdraafaaaaaaaaaaaaaaacdscdtcducdvcdwcdxcdybIpbIpbWJbVWbVWcdzcdAbVWbVWcdBcdCcdCcdCcdCcdCcdCcdCcdCcdDcdEcdEcdEcdFcdGcdHcdIcdJcdKcdLcdMcdNcdOcdPcdQcdRcdQcdScdTcdUcdVcdUcdTcdUcdVcdUcdWcdUcdWcdXaafaafaaaaaaaaaaaaaafaaaaaaaaaaaacdbcdYcdZceacebceccedceecefcegcehceicejcekcelbZxaaaaaaaaaaaaaafaaaaaaaaaaaaaaacemcenceocepceqaaaaaaaaaaafaafceraafcesaaaaafaaaaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -9401,10 +9402,10 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDGcDVcDWcDXcDWcDYcCyaaaaaaaaaaaaaaaaaaaaaaaaaaacDZcEacEbcEccEccEccEdcEecDZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDGcDVcDWcDXcDWcDYcCyaaaaaaaaaaaaaaaaaaaaaaaaaaacDZcEacEbcEccEccEccEdcEecDZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDGcDGcDGcDGcDGcDGcDGcDGcDGcDGcDGcDGcDGcDGcDGcDGcDGcDGcDGcDGcDGczuczvcEfczvcAEcCycCycCyaaaaaaaaaaaaaaaaaaaaacDZcEgcEbcEccEccEhcEdcEicDZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDGcDGcDGcDGcDGcDGcDGcDGcDGcDGcDGcDGcDGcDGcDGcDGcDGcDGcDGcDGcDGczuczvcEfczvcAEcCycCycCyaaaaaaaaaaaaaaaaaaaaacDZcEgcEbcEccEccEhcEdcEicDZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEjcEkcElcElcElcElcElcElcElcElcElcElcElcElcEmcEkcElcElcDGcEncBQcEoczvcEpczvcEqcBQcEncCyaaaaaaaaaaaaaaaaaaaaacErcEscEtcEscEucEscEtcEscEvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEjcEkcElcElcElcElcElcElcElcElcElcElcElcElcEmcEkcElcElcDGcEncBQcEoczvcEpczvcEqcBQcEncCyaaaaaaaaaaaaaaaaaaaaacErcEscEtcEscEucEscEtcEscEvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEjcEkcElcEwcExcEycEwcExcExcExcEzcExcExcEAcEBcEkcElcElcDGcEncBacEoczvczvczvcEqcBacEncCycCycCycCycCycCyaaaaaacDZcECcEDcEDcEccEDcEDcECcDZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEjcEkcElcEwcExcEycEwcExcExcExcEzcExcExcEAdqUcEkcElcElcDGcEncBacEoczvczvczvcEqcBacEncCycCycCycCycCycCyaaaaaacDZcECcEDcEDcEccEDcEDcECcDZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEjcEkcEwcEEcEFcEGcEHcEIcEIcEIcEIcEIcEIcEJcEBcEkcElcElcDGcEncBacEKczvczvczvcELcBacEncCycEMcEMcEMcEMcCyaaaaaacDZcENcEccEccEccEccEccEOcDZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEjcEkcEwcEEcEFcEGcEHcEIcEIcEIcEIcEIcEIcEJcbicEkcElcElcDGcEncBacEKczvczvczvcELcBacEncCycEMcEMcEMcEMcCyaaaaaacDZcENcEccEccEccEccEccEOcDZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEjcEkcEzcEFcEPcEFcEQcEFcEFcEFcEFcEFcEFcEFcEQcElcElcElcDGcEncDWcEoczvczvczvcEqcDWcEncCycERcEScEScEScEScEScETcDZcENcEccEOcEUcENcEccEOcEVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEjcEkcEzcEFcEPcEFcEQcEFcEFcEFcEFcEFcEFcEFcEQcElcElcElcDGcEncDWcEoczvczvczvcEqcDWcEncCycERcEScEScEScEScEScETcDZcENcEccEOcEUcENcEccEOcEVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEjcEkcEWcEXcEFcEYcEHcEZcEZcEZcEZcEZcEZcFacEBcEkcElcFbcDGcFccFdcFeczvczvczvcFfcFgcFhcCycFicFicFicFicFjcFkcFjcFlcEccEccEOcFmcENcEccEOcDZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEjcEkcEWcEXcEFcEYcEHcEZcEZcEZcEZcEZcEZcFacbicEkcElcFbcDGcFccFdcFeczvczvczvcFfcFgcFhcCycFicFicFicFicFjcFkcFjcFlcEccEccEOcFmcENcEccEOcDZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEjcEkcElcEWcExcFncEWcExcExcExcEzcExcExcFocEBcEkcElcFbcFpcElcFpcFqczvczvczvcFrcFjcFkcFjcFicFicFicFicFscEScETcDZcFtcEccEOcFucENcEccFvcDZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEjcEkcElcEWcExcFncEWcExcExcExcEzcExcExcFocEBcEkcElcFbcFpcElcFpcFqczvczvczvcFrcFjcFkcFjcFicFicFicFicFscEScETcDZcFtcEccEOcFucENcEccFvcDZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEjcEkcElcElcElcElcElcElcElcElcElcElcElcElcEmcEkcElcFbcDGcFwcFdcFeczvczvczvcFfcFgcFhcCycFxcFxcFxcFxcCyaaaaaacFmcENcEccEOcFycENcEccEOcDZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEjcEkcElcElcElcElcElcElcElcElcElcElcElcElcEmcEkcElcFbcDGcFwcFdcFeczvczvczvcFfcFgcFhcCycFxcFxcFxcFxcCyaaaaaacFmcENcEccEOcFycENcEccEOcDZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFzcFzcFzcFzcFzcFzcFzcFzcFzcFzcFzcFzcFzcFzcFzcFzcFAcFzcFzcEncFBcEoczvczvczvcEqcDDcEncCycCycFkcFkcCycCyaaaaaacFCcENcEccEOcFmcENcEccEOcEVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFzcFzcFzcFzcFzcFzcFzcFzcFzcFzcFzcFzcFzcFzcFzcFzcFAcFzcFzcEncFBcEoczvczvczvcEqcDDcEncCycCycFkcFkcCycCyaaaaaacFCcENcEccEOcFmcENcEccEOcEVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.