Merge branch 'master' into surgery

This commit is contained in:
Chinsky
2012-12-21 01:07:36 +04:00
55 changed files with 1131 additions and 634 deletions
+5
View File
@@ -288,6 +288,7 @@
#include "code\ATMOSPHERICS\he_pipes.dm"
#include "code\ATMOSPHERICS\pipes.dm"
#include "code\ATMOSPHERICS\components\portables_connector.dm"
#include "code\ATMOSPHERICS\components\tvalve.dm"
#include "code\ATMOSPHERICS\components\valve.dm"
#include "code\ATMOSPHERICS\components\binary_devices\binary_atmos_base.dm"
#include "code\ATMOSPHERICS\components\binary_devices\circulator.dm"
@@ -635,6 +636,7 @@
#include "code\game\objects\explosion_recursive.dm"
#include "code\game\objects\items.dm"
#include "code\game\objects\objs.dm"
#include "code\game\objects\sign_decals.dm"
#include "code\game\objects\structures.dm"
#include "code\game\objects\weapons.dm"
#include "code\game\objects\closets\walllocker.dm"
@@ -1148,6 +1150,7 @@
#include "code\modules\mob\living\silicon\robot\life.dm"
#include "code\modules\mob\living\silicon\robot\login.dm"
#include "code\modules\mob\living\silicon\robot\robot.dm"
#include "code\modules\mob\living\silicon\robot\robot_items.dm"
#include "code\modules\mob\living\silicon\robot\robot_modules.dm"
#include "code\modules\mob\living\silicon\robot\robot_movement.dm"
#include "code\modules\mob\living\silicon\robot\say.dm"
@@ -1206,6 +1209,7 @@
#include "code\modules\power\switch.dm"
#include "code\modules\power\terminal.dm"
#include "code\modules\power\tracker.dm"
#include "code\modules\power\turbine.dm"
#include "code\modules\power\antimatter\containment_jar.dm"
#include "code\modules\power\antimatter\control.dm"
#include "code\modules\power\antimatter\shielding.dm"
@@ -1338,6 +1342,7 @@
#include "code\WorkInProgress\Cael_Aislinn\sculpture.dm"
#include "code\WorkInProgress\Cael_Aislinn\shield_capacitor.dm"
#include "code\WorkInProgress\Cael_Aislinn\shield_gen.dm"
#include "code\WorkInProgress\Cael_Aislinn\Rust\areas.dm"
#include "code\WorkInProgress\Cael_Aislinn\Rust\core_field.dm"
#include "code\WorkInProgress\Cael_Aislinn\Rust\core_gen.dm"
#include "code\WorkInProgress\Cael_Aislinn\Rust\core_monitor.dm"
@@ -26,6 +26,12 @@ obj/machinery/atmospherics/binary/pump
var/id = null
var/datum/radio_frequency/radio_connection
highcap
name = "High capacity gas pump"
desc = "A high capacity pump"
target_pressure = 15000000
on
on = 1
icon_state = "intact_on"
+54 -7
View File
@@ -1,14 +1,61 @@
/area/engine/cooling
//reactor areas
/area/engine/port_gyro_bay
/area/engine
fore
name = "\improper Fore"
/area/engine/starboard_gyro_bay
construction_storage
name = "\improper Construction storage"
/area/engine/generators
locker
name = "\improper Locker room"
/area/engine/turbine_control
atmos_storage
name = "\improper Atmos storage"
/area/engine/reactor_core
control
name = "\improper Control"
/area/engine/aux_control
electrical_storage
name = "\improper Electrical storage"
reactor_core
name = "\improper Reactor Core"
icon_state = "engine_core"
reactor_gas
name = "Reactor Gas Storage"
icon_state = "engine_atmos"
aux_control
name = "Reactor Auxiliary Control"
icon_state = "engine_aux"
turbine_control
name = "Turbine Control"
icon_state = "engine_turbine"
reactor_airlock
name = "\improper Reactor Primary Entrance"
icon_state = "engine_airlock"
reactor_fuel_storage
name = "Reactor Fuel Storage"
icon_state = "engine_fuel"
reactor_fuel_ports
name = "\improper Reactor Fuel Ports"
icon_state = "engine_port"
generators
name = "\improper Generator Room"
icon_state = "engine_generators"
port_gyro_bay
name = "\improper Port Gyrotron Bay"
icon_state = "engine_starboardgyro"
starboard_gyro_bay
name = "\improper Starboard Gyrotron Bay"
icon_state = "engine_portgyro"
@@ -294,6 +294,73 @@ area
//show the dark overlay so areas, not yet in a lighting subarea, won't be bright as day and look silly.
SetLightLevel(4)
atom
var/light_on = 0 //Am I emitting light?
var/brightness_on = 0 //Luminosity when the above: light_on = 1
//Called when turning off or dropping a flashlight for ex.
//It checks the users slots for another source of light, and return the appropriate brightness. 0 if no other source is found
proc/search_light(mob/M, obj/item/W as obj)
var/list/slots
var/obj/item/I
var brightness = 0 //the new brightness to be returned
if (istype(M, /mob/living/carbon/human))
var/mob/living/carbon/human/H = M
slots = list (
"l_hand",
"r_hand",
"belt",
"head",
"l_pocket",
"r_pocket",
"s_store")
for (var/slot in slots)
switch(slot)
if("belt")
I = H.belt
if("head")
I = H.head
if("l_hand")
I = H.l_hand
if("r_hand")
I = H.r_hand
if("l_pocket")
I = H.l_store
if("r_pocket")
I = H.r_store
if("s_store")
I = H.s_store
if (I)
if ((I.light_on) && (I != W)) //an item emitting light other than itself
if (I.brightness_on > brightness)
brightness = I.brightness_on
else if (istype(M, /mob/living/carbon/monkey))
slots = list (
"l_hand",
"r_hand")
for (var/slot in slots)
switch(slot)
if("l_hand")
I = M.l_hand
if("r_hand")
I = M.r_hand
if (I)
if ((I.light_on) && (I != W)) //an item emitting light other than itself
if (I.brightness_on > brightness)
brightness = I.brightness_on
else
for (I in M.contents) //Justin Case
if (I)
if ((I.light_on) && (I != W)) //an item emitting light other than itself
if (I.brightness_on > brightness)
brightness = I.brightness_on
return brightness
#undef LIGHTING_MAX_LUMINOSITY
#undef LIGHTING_MAX_LUMINOSITY_MOB
+26 -6
View File
@@ -214,6 +214,7 @@
proc/bandage()
var/rval = 0
src.status &= ~ORGAN_BLEEDING
for(var/datum/wound/W in wounds)
if(W.internal) continue
rval |= !W.bandaged
@@ -355,7 +356,7 @@
H = new /obj/item/weapon/organ/head(owner.loc, owner)
if(ishuman(owner))
if(owner.gender == FEMALE)
H.icon_state = "head_f_l"
H.icon_state = "head_f"
H.overlays += owner.generate_head_icon()
H:transfer_identity(owner)
H.pixel_x = -10
@@ -425,8 +426,22 @@
else
H.icon_state = initial(H.icon_state)+"_l"
var/lol = pick(cardinal)
step(H,lol)
if(status & ORGAN_ROBOT)
del H
switch(body_part)
if(LEG_RIGHT)
H = new /obj/item/robot_parts/r_leg(owner.loc)
if(LEG_LEFT)
H = new /obj/item/robot_parts/l_leg(owner.loc)
if(ARM_RIGHT)
H = new /obj/item/robot_parts/r_arm(owner.loc)
if(ARM_LEFT)
H = new /obj/item/robot_parts/l_arm(owner.loc)
if(H)
var/lol = pick(cardinal)
step(H,lol)
destspawn = 1
if(status & ORGAN_ROBOT)
owner.visible_message("\red \The [owner]'s [display_name] explodes violently!",\
@@ -513,10 +528,15 @@
proc/emp_act(severity)
if(!(status & ORGAN_ROBOT))
return
if(prob(30*severity))
var/probability = 30
var/damage = 15
if(severity == 2)
probability = 1
damage = 3
if(prob(probability))
droplimb(1)
else
take_damage(4(4-severity), 0, 1, used_weapon = "EMP")
take_damage(damage, 0, 1, used_weapon = "EMP")
proc/getDisplayName()
switch(name)
@@ -681,7 +701,7 @@ obj/item/weapon/organ/New(loc, mob/living/carbon/human/H)
obj/item/weapon/organ/head
name = "head"
icon_state = "head_m_l"
icon_state = "head_m"
var/mob/living/carbon/brain/brainmob
var/brain_op_stage = 0
+1 -1
View File
@@ -789,7 +789,7 @@
desc = "A cane used by a true gentlemen."
icon = 'icons/obj/weapons.dmi'
icon_state = "cane"
item_state = "cane"
item_state = "stick"
flags = FPRINT | TABLEPASS| CONDUCT
force = 5.0
throwforce = 7.0
+24
View File
@@ -684,6 +684,26 @@ proc/process_ghost_teleport_locs()
name = "\improper Captain's Quarters"
icon_state = "captain"
/area/crew_quarters/heads/hop
name = "\improper Head of Personnel's Quarters"
icon_state = "head_quarters"
/area/crew_quarters/heads/hor
name = "\improper Research Director's Quarters"
icon_state = "head_quarters"
/area/crew_quarters/heads/chief
name = "\improper Chief Engineer's Quarters"
icon_state = "head_quarters"
/area/crew_quarters/heads/hos
name = "\improper Head of Security's Quarters"
icon_state = "head_quarters"
/area/crew_quarters/heads/cmo
name = "\improper Chief Medical Officer's Quarters"
icon_state = "head_quarters"
/area/crew_quarters/courtroom
name = "\improper Courtroom"
icon_state = "courtroom"
@@ -1001,6 +1021,10 @@ proc/process_ghost_teleport_locs()
name = "\improper Security Office"
icon_state = "security"
/area/security/lobby
name = "\improper Security lobby"
icon_state = "security"
/area/security/brig
name = "\improper Brig"
icon_state = "brig"
+3 -1
View File
@@ -188,7 +188,9 @@
return result
/proc/setblock(istring, blocknumber, replacement, blocksize)
if(!istring || !blocknumber || !replacement || !blocksize) return 0
if(!blocknumber)
return istring
if(!istring || !replacement || !blocksize) return 0
var/result = getleftblocks(istring, blocknumber, blocksize) + replacement + getrightblocks(istring, blocknumber, blocksize)
return result
+1 -35
View File
@@ -36,40 +36,6 @@
spawn(700)
meteor_wave()
spawn_meteors()
/*if(2)
command_alert("Gravitational anomalies detected on the station. There is no additional data.", "Anomaly Alert")
world << sound('sound/AI/granomalies.ogg')
var/turf/T = pick(blobstart)
var/obj/effect/bhole/bh = new /obj/effect/bhole( T.loc, 30 )
spawn(rand(50, 300))
del(bh)*/
/*
if(3) //Leaving the code in so someone can try and delag it, but this event can no longer occur randomly, per SoS's request. --NEO
command_alert("Space-time anomalies detected on the station. There is no additional data.", "Anomaly Alert")
world << sound('sound/AI/spanomalies.ogg')
var/list/turfs = new
var/turf/picked
for(var/turf/simulated/floor/T in world)
if(T.z == 1)
turfs += T
for(var/turf/simulated/floor/T in turfs)
if(prob(20))
spawn(50+rand(0,3000))
picked = pick(turfs)
var/obj/effect/portal/P = new /obj/effect/portal( T )
P.target = picked
P.creator = null
P.icon = 'icons/obj/objects.dmi'
P.failchance = 0
P.icon_state = "anom"
P.name = "wormhole"
spawn(rand(300,600))
del(P)
*/
if(3)
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.
space_ninja_arrival()//Handled in space_ninja.dm. Doesn't announce arrival, all sneaky-like.
if(4)
mini_blob_event()
@@ -524,4 +490,4 @@ Would like to add a law like "Law x is _______" where x = a number, and _____ is
world << "Finished processing FIREDOORS. Processed: [firedoornum]"
world << "Ion Storm Main Done"
*/
*/
+3 -3
View File
@@ -9,7 +9,7 @@
blobevent = 1
spawn(0)
dotheblobbaby()
spawn(3000)
spawn(12000) // blob event can last up to 20 minutes
blobevent = 0
spawn(rand(1000, 2000)) //Delayed announcements to keep the crew on their toes.
command_alert("Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert")
@@ -25,5 +25,5 @@
if(B.z != 1)
continue
B.Life()
spawn(70)
dotheblobbaby()
spawn(280) // advance 1 tile every 30 seconds
dotheblobbaby()
+3 -2
View File
@@ -106,6 +106,7 @@ datum/objective/mutiny/rp
// less violent rev objectives
check_completion()
var/rval = 1
if(target && target.current)
if(target.current.stat == DEAD || target.current.handcuffed || !ishuman(target.current))
return 1
@@ -115,9 +116,9 @@ datum/objective/mutiny/rp
return 1
var/turf/T = get_turf(target.current)
if(T && (T.z != 1)) //If they leave the station they count as dead for this
return 2
rval = 2
return 0
return 1
return rval
datum/objective/anti_revolution/execute
find_target()
+4
View File
@@ -12,4 +12,8 @@
if(!H) return 0
H.equip_to_slot_or_del(new /obj/item/clothing/under/color/grey(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes)
if(H.backbag == 1)
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand)
else
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack)
return 1
+1 -1
View File
@@ -21,7 +21,7 @@
var/obj/item/clothing/under/U = new /obj/item/clothing/under/rank/captain(H)
U.hastie = new /obj/item/clothing/tie/medal/gold/captain(U)
H.equip_to_slot_or_del(U, slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/device/pda/captain(H), slot_belt)
//H.equip_to_slot_or_del(new /obj/item/device/pda/captain(H), slot_belt)
H.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/captain(H), slot_wear_suit)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(H), slot_shoes)
H.equip_to_slot_or_del(new /obj/item/clothing/head/caphat(H), slot_head)
+24
View File
@@ -57,6 +57,10 @@
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes)
H.equip_to_slot_or_del(new /obj/item/clothing/head/chefhat(H), slot_head)
H.equip_to_slot_or_del(new /obj/item/device/pda/chef(H), slot_belt)
if(H.backbag == 1)
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand)
else
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack)
return 1
@@ -80,6 +84,10 @@
H.equip_to_slot_or_del(new /obj/item/clothing/suit/apron(H), slot_wear_suit)
H.equip_to_slot_or_del(new /obj/item/device/analyzer/plant_analyzer(H), slot_s_store)
H.equip_to_slot_or_del(new /obj/item/device/pda/botanist(H), slot_belt)
if(H.backbag == 1)
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand)
else
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack)
return 1
@@ -105,6 +113,10 @@
H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(H), slot_gloves)
H.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(H), slot_glasses)
H.equip_to_slot_or_del(new /obj/item/weapon/clipboard(H), slot_l_hand)
if(H.backbag == 1)
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand)
else
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack)
return 1
@@ -127,6 +139,10 @@
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes)
H.equip_to_slot_or_del(new /obj/item/device/pda/cargo(H), slot_belt)
H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(H), slot_gloves)
if(H.backbag == 1)
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand)
else
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack)
return 1
@@ -251,6 +267,10 @@
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/janitor(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes)
H.equip_to_slot_or_del(new /obj/item/device/pda/janitor(H), slot_belt)
if(H.backbag == 1)
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand)
else
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack)
return 1
@@ -273,6 +293,10 @@
H.equip_to_slot_or_del(new /obj/item/device/pda/librarian(H), slot_belt)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes)
H.equip_to_slot_or_del(new /obj/item/weapon/barcodescanner(H), slot_l_hand)
if(H.backbag == 1)
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand)
else
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack)
return 1
+4
View File
@@ -18,6 +18,10 @@
H.equip_to_slot_or_del(new /obj/item/device/pda/chaplain(H), slot_belt)
H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chaplain(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes)
if(H.backbag == 1)
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand)
else
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack)
spawn(0)
var/religion_name = "Christianity"
var/new_religion = copytext(sanitize(input(H, "You are the Chaplain. Would you like to change your religion? Default is Christianity, in SPACE.", "Name change", religion_name)),1,MAX_NAME_LEN)
+8
View File
@@ -99,6 +99,10 @@
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(H), slot_shoes)
H.equip_to_slot_or_del(new /obj/item/device/pda/chemist(H), slot_belt)
H.equip_to_slot_or_del(new /obj/item/clothing/suit/labcoat/chemist(H), slot_wear_suit)
if(H.backbag == 1)
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand)
else
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack)
return 1
@@ -122,6 +126,10 @@
H.equip_to_slot_or_del(new /obj/item/device/pda/geneticist(H), slot_belt)
H.equip_to_slot_or_del(new /obj/item/clothing/suit/labcoat/genetics(H), slot_wear_suit)
H.equip_to_slot_or_del(new /obj/item/device/flashlight/pen(H), slot_s_store)
if(H.backbag == 1)
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand)
else
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack)
return 1
/*
+8 -2
View File
@@ -18,6 +18,10 @@
H.equip_to_slot_or_del(new /obj/item/device/pda/heads/rd(H), slot_belt)
H.equip_to_slot_or_del(new /obj/item/clothing/suit/labcoat(H), slot_wear_suit)
H.equip_to_slot_or_del(new /obj/item/weapon/clipboard(H), slot_l_hand)
if(H.backbag == 1)
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand)
else
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack)
return 1
@@ -41,6 +45,8 @@
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(H), slot_shoes)
H.equip_to_slot_or_del(new /obj/item/device/pda/toxins(H), slot_belt)
H.equip_to_slot_or_del(new /obj/item/clothing/suit/labcoat/science(H), slot_wear_suit)
// H.equip_to_slot_or_del(new /obj/item/clothing/mask/gas(H), slot_wear_mask)
// H.equip_to_slot_or_del(new /obj/item/weapon/tank/oxygen(H), slot_l_hand)
if(H.backbag == 1)
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand)
else
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack)
return 1
+1 -1
View File
@@ -154,7 +154,7 @@
update_desc()
break
user << desc
if(P.loc != src && !istype(P, /obj/item/weapon/cable_coil))
if(P && P.loc != src && !istype(P, /obj/item/weapon/cable_coil))
user << "\red You cannot add that component to the machine!"
+9
View File
@@ -77,6 +77,15 @@
opacity = 0
density = 0
/obj/effect/sign/movingparts
desc = "A warning sign which reads 'CAUTION: MOVING PARTS, machinery liable to stop and start at random'"
name = "CAUTION"
icon = 'decals.dmi'
icon_state = "securearea"
anchored = 1.0
opacity = 0
density = 0
/obj/effect/sign/examroom
desc = "A guidance sign which reads 'EXAM ROOM'"
name = "EXAM"
+28 -17
View File
@@ -5,9 +5,11 @@
icon_state = "candle1"
item_state = "candle1"
w_class = 1
light_on = 0
brightness_on = 3 //luminosity when on
var/wax = 200
var/lit = 0
proc
light(var/flavor_text = "\red [usr] lights the [name].")
@@ -19,7 +21,7 @@
else if(wax>80)
i = 2
else i = 3
icon_state = "candle[i][lit ? "_lit" : ""]"
icon_state = "candle[i][light_on ? "_lit" : ""]"
attackby(obj/item/weapon/W as obj, mob/user as mob)
@@ -30,30 +32,30 @@
light("\red [user] casually lights the [name] with [W], what a badass.")
else if(istype(W, /obj/item/weapon/lighter))
var/obj/item/weapon/lighter/L = W
if(L.lit)
if(L.light_on)
light()
else if(istype(W, /obj/item/weapon/match))
var/obj/item/weapon/match/M = W
if(M.lit)
if(M.light_on)
light()
else if(istype(W, /obj/item/candle))
var/obj/item/candle/C = W
if(C.lit)
if(C.light_on)
light()
light(var/flavor_text = "\red [usr] lights the [name].")
if(!src.lit)
src.lit = 1
if(!src.light_on)
src.light_on = 1
//src.damtype = "fire"
for(var/mob/O in viewers(usr, null))
O.show_message(flavor_text, 1)
SetLuminosity(CANDLE_LUM)
SetLuminosity(brightness_on)
processing_objects.Add(src)
process()
if(!lit)
if(!light_on)
return
wax--
if(!wax)
@@ -68,20 +70,29 @@
attack_self(mob/user as mob)
if(lit)
lit = 0
if(light_on)
light_on = 0
update_icon()
SetLuminosity(0)
user.SetLuminosity(user.luminosity - CANDLE_LUM)
user.SetLuminosity(search_light(user, src))
pickup(mob/user)
if(lit)
if(light_on)
if (user.luminosity < brightness_on)
user.SetLuminosity(brightness_on)
SetLuminosity(0)
user.SetLuminosity(user.luminosity + CANDLE_LUM)
dropped(mob/user)
if(lit)
user.SetLuminosity(user.luminosity - CANDLE_LUM)
SetLuminosity(CANDLE_LUM)
if(light_on)
if ((layer <= 3) || (loc != user.loc))
user.SetLuminosity(search_light(user, src))
SetLuminosity(brightness_on)
equipped(mob/user, slot)
if(light_on)
if (user.luminosity < brightness_on)
user.SetLuminosity(brightness_on)
SetLuminosity(0)
+27 -15
View File
@@ -13,6 +13,8 @@ var/global/list/obj/item/device/pda/PDAs = list()
w_class = 1.0
flags = FPRINT | TABLEPASS
slot_flags = SLOT_ID | SLOT_BELT
light_on = 0 //Is the flashlight function on?
brightness_on = 4 //Luminosity for the flashlight function
//Main variables
var/owner = null
@@ -22,8 +24,6 @@ var/global/list/obj/item/device/pda/PDAs = list()
//Secondary variables
var/scanmode = 0 //1 is medical scanner, 2 is forensics, 3 is reagent scanner.
var/fon = 0 //Is the flashlight function on?
var/f_lum = 4 //Luminosity for the flashlight function
var/silent = 0 //To beep or not to beep, that is the question
var/toff = 0 //If 1, messenger disabled
var/tnote = null //Current Texts
@@ -192,14 +192,22 @@ var/global/list/obj/item/device/pda/PDAs = list()
* The Actual PDA
*/
/obj/item/device/pda/pickup(mob/user)
if(fon)
if(light_on)
if(user.luminosity < brightness_on)
user.SetLuminosity(brightness_on)
SetLuminosity(0)
user.SetLuminosity(user.luminosity + f_lum)
/obj/item/device/pda/dropped(mob/user)
if(fon)
user.SetLuminosity(user.luminosity - f_lum)
SetLuminosity(f_lum)
if(light_on)
if ((layer <= 3) || (loc != user.loc))
user.SetLuminosity(search_light(user, src))
SetLuminosity(brightness_on)
/obj/item/device/pda/equipped(mob/user, slot)
if(light_on)
if(user.luminosity < brightness_on)
user.SetLuminosity(brightness_on)
SetLuminosity(0)
/obj/item/device/pda/New()
..()
@@ -320,7 +328,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
if (cartridge.access_remote_door)
dat += "<li><a href='byond://?src=\ref[src];choice=Toggle Door'><img src=pda_rdoor.png> Toggle Remote Door</a></li>"
dat += "<li><a href='byond://?src=\ref[src];choice=3'><img src=pda_atmos.png> Atmospheric Scan</a></li>"
dat += "<li><a href='byond://?src=\ref[src];choice=Light'><img src=pda_flashlight.png> [fon ? "Disable" : "Enable"] Flashlight</a></li>"
dat += "<li><a href='byond://?src=\ref[src];choice=Light'><img src=pda_flashlight.png> [light_on ? "Disable" : "Enable"] Flashlight</a></li>"
if (pai)
if(pai.loc != src)
pai = null
@@ -495,14 +503,18 @@ var/global/list/obj/item/device/pda/PDAs = list()
//MAIN FUNCTIONS===================================
if("Light")
if(fon)
fon = 0
if(src in U.contents) U.SetLuminosity(U.luminosity - f_lum)
else SetLuminosity(0)
if(light_on)
light_on = 0
if(src in U.contents)
U.SetLuminosity(search_light(U, src))
else
SetLuminosity(0)
else
fon = 1
if(src in U.contents) U.SetLuminosity(U.luminosity + f_lum)
else SetLuminosity(f_lum)
light_on = 1
if((src in U.contents) && (U.luminosity < brightness_on))
U.SetLuminosity(brightness_on)
else
SetLuminosity(brightness_on)
if("Medical Scan")
if(scanmode == 1)
scanmode = 0
+29 -19
View File
@@ -10,12 +10,13 @@
m_amt = 50
g_amt = 20
icon_action_button = "action_flashlight"
var/on = 0
var/brightness_on = 4 //luminosity when on
light_on = 0
brightness_on = 4 //luminosity when on
var brightness = 0
/obj/item/device/flashlight/initialize()
..()
if(on)
if(light_on)
icon_state = "[initial(icon_state)]-on"
SetLuminosity(brightness_on)
else
@@ -23,16 +24,16 @@
SetLuminosity(0)
/obj/item/device/flashlight/proc/update_brightness(var/mob/user = null)
if(on)
if(light_on)
icon_state = "[initial(icon_state)]-on"
if(loc == user)
user.SetLuminosity(user.luminosity + brightness_on)
if((loc == user) && (user.luminosity < brightness_on))
user.SetLuminosity(brightness_on)
else if(isturf(loc))
SetLuminosity(brightness_on)
else
icon_state = initial(icon_state)
if(loc == user)
user.SetLuminosity(user.luminosity - brightness_on)
user.SetLuminosity(search_light(user, src))
else if(isturf(loc))
SetLuminosity(0)
@@ -40,14 +41,14 @@
if(!isturf(user.loc))
user << "You cannot turn the light on while in this [user.loc]." //To prevent some lighting anomalities.
return
on = !on
light_on = !light_on
update_brightness(user)
return
/obj/item/device/flashlight/attack(mob/living/M as mob, mob/living/user as mob)
add_fingerprint(user)
if(on && user.zone_sel.selecting == "eyes")
if(light_on && user.zone_sel.selecting == "eyes")
if(((CLUMSY in user.mutations) || user.getBrainLoss() >= 60) && prob(50)) //too dumb to use flashlight properly
return ..() //just hit them in the head
@@ -88,15 +89,24 @@
/obj/item/device/flashlight/pickup(mob/user)
if(on)
user.SetLuminosity(user.luminosity + brightness_on)
if(light_on)
if (user.luminosity < brightness_on)
user.SetLuminosity(brightness_on)
SetLuminosity(0)
/obj/item/device/flashlight/dropped(mob/user)
if(on)
user.SetLuminosity(user.luminosity - brightness_on)
SetLuminosity(brightness_on)
if(light_on)
if ((layer <= 3) || (loc != user.loc))
user.SetLuminosity(search_light(user, src))
SetLuminosity(brightness_on)
/obj/item/device/flashlight/equipped(mob/user, slot)
if(light_on)
if (user.luminosity < brightness_on)
user.SetLuminosity(brightness_on)
SetLuminosity(0)
/obj/item/device/flashlight/pen
@@ -119,7 +129,7 @@
flags = FPRINT | TABLEPASS | CONDUCT
m_amt = 0
g_amt = 0
on = 1
light_on = 1
// green-shaded desk lamp
@@ -159,14 +169,14 @@
var/turf/pos = get_turf(src)
pos.hotspot_expose(produce_heat, 5)
fuel = max(fuel - 1, 0)
if(!fuel || !on)
if(!fuel || !light_on)
turn_off()
if(!fuel)
src.icon_state = "[initial(icon_state)]-empty"
processing_objects -= src
/obj/item/device/flashlight/flare/proc/turn_off()
on = 0
light_on = 0
src.force = initial(src.force)
src.damtype = initial(src.damtype)
if(ismob(loc))
@@ -182,12 +192,12 @@
if(!fuel)
user << "<span class='notice'>It's out of fuel.</span>"
return
if(!on)
if(!light_on)
user.visible_message("<span class='notice'>[user] activates the flare.</span>", "<span class='notice'>You pull the cord on the flare, activating it!</span>")
else
return
// All good, turn it on.
on = 1
light_on = 1
update_brightness(user)
src.force = on_damage
src.damtype = "fire"
+20 -56
View File
@@ -23,70 +23,34 @@
if (istype(M, /mob/living/carbon/human))
var/mob/living/carbon/human/H = M
var/datum/organ/external/affecting = H.get_organ("chest")
var/datum/organ/external/affecting = H.get_organ(user.zone_sel.selecting)
if(affecting.status & ORGAN_ROBOT)
user << "\red This isn't useful at all on a robotic limb.."
return 1
if(istype(user, /mob/living/carbon/human))
var/mob/living/carbon/human/user2 = user
affecting = H.get_organ(check_zone(user2.zone_sel.selecting))
else
if(!istype(affecting, /datum/organ/external) || affecting:burn_dam <= 0)
affecting = H.get_organ("head")
if(src.heal_brute)
if(!affecting.bandage())
user << "\red The wounds on [M]'s [affecting.display_name] have already been bandaged."
return 1
else
user.visible_message( "\blue [user] bandages wounds on [M]'s [affecting.display_name].", \
"\blue You bandage wounds on [M]'s [affecting.display_name]." )
// If we're targetting arms or legs, also heal the respective hand/foot
if(affecting.name in list("l_arm","r_arm","l_leg","r_leg"))
var/datum/organ/external/child
if(affecting.name == "l_arm")
child = H.get_organ("l_hand")
else if(affecting.name == "r_arm")
child = H.get_organ("r_hand")
else if(affecting.name == "r_leg")
child = H.get_organ("r_foot")
else if(affecting.name == "l_leg")
child = H.get_organ("l_foot")
if(src.heal_brute)
if(!affecting.bandage() && !child.bandage())
user << "\red The wounds on this limb have already been bandaged."
return 1
else if(src.heal_burn)
if(!affecting.salve() && !child.salve())
user << "\red The wounds on this limb have already been salved."
return 1
else
if(src.heal_brute)
if(!affecting.bandage())
user << "\red The wounds on this limb have already been bandaged."
return 1
else if(src.heal_burn)
if(!affecting.salve())
user << "\red The wounds on this limb have already been salved."
return 1
else if(src.heal_burn)
if(!affecting.salve())
user << "\red The wounds on [M]'s [affecting.display_name] have already been salved."
return 1
else
user.visible_message( "\blue [user] salves wounds on [M]'s [affecting.display_name].", \
"\blue You salve wounds on [M]'s [affecting.display_name]." )
H.UpdateDamageIcon()
M.updatehealth()
else
M.heal_organ_damage((src.heal_brute/2), (src.heal_burn/2))
user.visible_message( \
"\blue [M] has been applied with [src] by [user].", \
"\blue You apply \the [src] to [M]." \
)
use(1)
if (user)
if (M != user)
user.visible_message( \
"\blue [M] has been applied with [src] by [user].", \
"\blue You apply \the [src] to [M]." \
)
else
var/t_himself = "itself"
if (user.gender == MALE)
t_himself = "himself"
else if (user.gender == FEMALE)
t_himself = "herself"
user.visible_message( \
"\blue [M] applied [src] on [t_himself].", \
"\blue You apply \the [src] on yourself." \
)
M.updatehealth()
@@ -85,12 +85,12 @@ ZIPPO
else if(istype(W, /obj/item/weapon/lighter/zippo))
var/obj/item/weapon/lighter/zippo/Z = W
if(Z.lit)
if(Z.light_on)
light("<span class='rose'>With a single flick of their wrist, [user] smoothly lights their [name] with their [W]. Damn they're cool.</span>")
else if(istype(W, /obj/item/weapon/lighter))
var/obj/item/weapon/lighter/L = W
if(L.lit)
if(L.light_on)
light("<span class='notice'>After some fiddling, [user] manages to light their [name] with [W].</span>")
else if(istype(W, /obj/item/weapon/match))
@@ -375,7 +375,8 @@ ZIPPO
flags = TABLEPASS | CONDUCT
slot_flags = SLOT_BELT
attack_verb = list("burnt", "singed")
var/lit = 0
light_on = 0
brightness_on = 2 //luminosity when on
/obj/item/weapon/lighter/zippo
name = "Zippo lighter"
@@ -394,8 +395,8 @@ ZIPPO
/obj/item/weapon/lighter/attack_self(mob/living/user)
if(user.r_hand == src || user.l_hand == src)
if(!lit)
lit = 1
if(!light_on)
light_on = 1
icon_state = icon_on
item_state = icon_on
if(istype(src, /obj/item/weapon/lighter/zippo) )
@@ -411,10 +412,11 @@ ZIPPO
user.apply_damage(2,BURN,"r_hand")
user.visible_message("<span class='notice'>After a few attempts, [user] manages to light the [src], they however burn their finger in the process.</span>")
user.SetLuminosity(user.luminosity + 2)
if (user.luminosity < brightness_on)
user.SetLuminosity(brightness_on)
processing_objects.Add(src)
else
lit = 0
light_on = 0
icon_state = icon_off
item_state = icon_off
if(istype(src, /obj/item/weapon/lighter/zippo) )
@@ -422,7 +424,7 @@ ZIPPO
else
user.visible_message("<span class='notice'>[user] quietly shuts off the [src].")
user.SetLuminosity(user.luminosity - 2)
user.SetLuminosity(search_light(user, src))
processing_objects.Remove(src)
else
return ..()
@@ -433,7 +435,7 @@ ZIPPO
if(!istype(M, /mob))
return
if(istype(M.wear_mask, /obj/item/clothing/mask/cigarette) && user.zone_sel.selecting == "mouth" && lit)
if(istype(M.wear_mask, /obj/item/clothing/mask/cigarette) && user.zone_sel.selecting == "mouth" && light_on)
var/obj/item/clothing/mask/cigarette/cig = M.wear_mask
if(M == user)
cig.attackby(src, user)
@@ -453,14 +455,24 @@ ZIPPO
/obj/item/weapon/lighter/pickup(mob/user)
if(lit)
if(light_on)
if (user.luminosity < brightness_on)
user.SetLuminosity(brightness_on)
SetLuminosity(0)
user.SetLuminosity(user.luminosity+2)
return
/obj/item/weapon/lighter/dropped(mob/user)
if(lit)
user.SetLuminosity(user.luminosity-2)
SetLuminosity(2)
if(light_on)
if ((layer <= 3) || (loc != user.loc))
user.SetLuminosity(search_light(user, src))
SetLuminosity(brightness_on)
return
/obj/item/weapon/lighter/equipped(mob/user, slot)
if(light_on)
if (user.luminosity < brightness_on)
user.SetLuminosity(brightness_on)
SetLuminosity(0)
return
@@ -95,7 +95,8 @@
"/obj/item/stack/medical",
"/obj/item/device/flashlight/pen",
"/obj/item/clothing/mask/surgical",
"/obj/item/clothing/gloves/latex"
"/obj/item/clothing/gloves/latex",
"/obj/item/weapon/reagent_containers/hypospray/autoinjector"
)
@@ -153,4 +154,4 @@
storage_slots = 1
can_hold = list(
"/obj/item/clothing/mask/luchador"
)
)
+8 -1
View File
@@ -10,6 +10,8 @@
w_class = 3
var/charges = 10
var/status = 0
var/mob/foundmob = "" //Used in throwing proc.
origin_tech = "combat=2"
@@ -99,7 +101,12 @@
H.apply_effect(10, STUTTER, 0)
charges--
H.visible_message("<span class='danger'>[src], thrown by ([src.fingerprintslast]) hits [H] with stunning end!</span>")
for(var/mob/M in player_list) if(M.key == src.fingerprintslast)
foundmob = M
break
H.visible_message("<span class='danger'>[src], thrown by [foundmob.name], strikes [H] and stuns them!</span>")
H.attack_log += "\[[time_stamp()]\]<font color='orange'> Stunned by thrown [src.name] (([src.fingerprintslast]))</font>"
log_attack("<font color='red'>Flying [src.name], thrown by ([src.fingerprintslast]) stunned [H.name] ([H.ckey])</font>" )
@@ -134,7 +134,7 @@
w_class = 2.0
force = 4.0
distribute_pressure = ONE_ATMOSPHERE*O2STANDARD
volume = 3 //Tiny. Real life equivalents only have 21 breaths of oxygen in them. They're EMERGENCY tanks anyway -errorage (dangercon 2011)
volume = 2 //Tiny. Real life equivalents only have 21 breaths of oxygen in them. They're EMERGENCY tanks anyway -errorage (dangercon 2011)
New()
+49
View File
@@ -0,0 +1,49 @@
/obj/effect/sign/barsign
icon = 'barsigns.dmi'
icon_state = "empty"
anchored = 1
New()
ChangeSign(pick("pinkflamingo", "magmasea", "limbo", "rustyaxe", "armokbar", "brokendrum", "meadbay", "thedamnwall", "thecavern", "cindikate", "theorchard", "thesaucyclown", "theclownshead"))
return
proc/ChangeSign(var/Text)
src.icon_state = "[Text]"
//on = 0
//brightness_on = 4 //uncomment these when the lighting fixes get in
return
/obj/effect/sign/securearea/ex_act(severity)
switch(severity)
if(1.0)
del(src)
return
if(2.0)
del(src)
return
if(3.0)
del(src)
return
else
return
/obj/effect/sign/securearea/blob_act()
del(src)
return
/obj/effect/sign/ex_act(severity)
switch(severity)
if(1.0)
del(src)
return
if(2.0)
del(src)
return
if(3.0)
del(src)
return
else
return
/obj/effect/sign/blob_act()
del(src)
return
@@ -279,6 +279,26 @@
return
/obj/structure/closet/wardrobe/medic_white
name = "medical wardrobe"
icon_state = "white"
icon_closed = "white"
/obj/structure/closet/wardrobe/virology_white/New()
new /obj/item/clothing/under/rank/medical(src)
new /obj/item/clothing/under/rank/medical(src)
new /obj/item/clothing/under/rank/medical/blue(src)
new /obj/item/clothing/under/rank/medical/green(src)
new /obj/item/clothing/under/rank/medical/purple(src)
new /obj/item/clothing/shoes/white(src)
new /obj/item/clothing/shoes/white(src)
new /obj/item/clothing/suit/labcoat(src)
new /obj/item/clothing/suit/labcoat(src)
new /obj/item/clothing/mask/surgical(src)
new /obj/item/clothing/mask/surgical(src)
return
/obj/structure/closet/wardrobe/grey
name = "grey wardrobe"
icon_state = "grey"
+32 -4
View File
@@ -173,26 +173,54 @@ var/global/floorIsLava = 0
/datum/player_info/var/content // text content of the information
/datum/player_info/var/timestamp // Because this is bloody annoying
#define PLAYER_NOTES_ENTRIES_PER_PAGE 50
/datum/admins/proc/PlayerNotes()
set category = "Admin"
set name = "Player Notes"
var/dat = "<B>Player notes</B><HR><table>"
if (!istype(src,/datum/admins))
src = usr.client.holder
if (!istype(src,/datum/admins))
usr << "Error: you are not an admin!"
return
PlayerNotesPage(1)
/datum/admins/proc/PlayerNotesPage(page)
var/dat = "<B>Player notes</B><HR>"
var/savefile/S=new("data/player_notes.sav")
var/list/note_keys
S >> note_keys
if(!note_keys)
dat += "No notes found."
else
dat += "<table>"
sortList(note_keys)
for(var/t in note_keys)
// Display the notes on the current page
var/number_pages = note_keys.len / PLAYER_NOTES_ENTRIES_PER_PAGE
// Emulate ceil(why does BYOND not have ceil)
if(number_pages != round(number_pages))
number_pages = round(number_pages) + 1
var/page_index = page - 1
if(page_index < 0 || page_index >= number_pages)
return
var/lower_bound = page_index * PLAYER_NOTES_ENTRIES_PER_PAGE + 1
var/upper_bound = (page_index + 1) * PLAYER_NOTES_ENTRIES_PER_PAGE
upper_bound = min(upper_bound, note_keys.len)
for(var/index = lower_bound, index <= upper_bound, index++)
var/t = note_keys[index]
dat += "<tr><td><a href='?src=\ref[src];notes=show;ckey=[t]'>[t]</a></td></tr>"
dat += "</table>"
dat += "</table><br>"
// Display a footer to select different pages
for(var/index = 1, index <= number_pages, index++)
if(index == page)
dat += "<b>"
dat += "<a href='?src=\ref[src];notes=list;index='[index]'>[index]</a> "
if(index == page)
dat += "</b>"
usr << browse(dat, "window=player_notes;size=400x400")
@@ -1123,4 +1151,4 @@ proc/move_alien_ship()
alien_ship_location = 0
else
alien_ship_location = 1
return
return
+2
View File
@@ -2706,4 +2706,6 @@ var/list/admin_datums = list()
switch(href_list["notes"])
if("show")
show_player_info(ckey)
if("list")
PlayerNotesPage(href_list["index"])
return
+5 -3
View File
@@ -28,10 +28,12 @@ proc/createRandomZlevel()
// var/value = null
if (pos)
name = lowertext(copytext(t, 1, pos))
// No, don't do lowertext here, that breaks paths on linux
name = copytext(t, 1, pos)
// value = copytext(t, pos + 1)
else
name = lowertext(t)
// No, don't do lowertext here, that breaks paths on linux
name = t
if (!name)
continue
@@ -56,4 +58,4 @@ proc/createRandomZlevel()
else
world << "\red \b No away missions found."
return
return
+24 -13
View File
@@ -4,8 +4,8 @@
icon_state = "hardhat0_yellow"
flags = FPRINT | TABLEPASS
item_state = "hardhat0_yellow"
var/brightness_on = 4 //luminosity when on
var/on = 0
brightness_on = 4 //luminosity when on
light_on = 0
color = "yellow" //Determines used sprites: hardhat[on]_[color] and hardhat[on]_[color]2 (lying down sprite)
armor = list(melee = 30, bullet = 5, laser = 20,energy = 10, bomb = 20, bio = 10, rad = 20)
flags_inv = 0
@@ -15,24 +15,35 @@
if(!isturf(user.loc))
user << "You cannot turn the light on while in this [user.loc]" //To prevent some lighting anomalities.
return
on = !on
icon_state = "hardhat[on]_[color]"
item_state = "hardhat[on]_[color]"
light_on = !light_on
icon_state = "hardhat[light_on]_[color]"
item_state = "hardhat[light_on]_[color]"
if(on) user.SetLuminosity(user.luminosity + brightness_on)
else user.SetLuminosity(user.luminosity - brightness_on)
if((light_on) && (user.luminosity < brightness_on))
user.SetLuminosity(brightness_on)
else
user.SetLuminosity(search_light(user, src))
pickup(mob/user)
if(on)
user.SetLuminosity(user.luminosity + brightness_on)
if(light_on)
if (user.luminosity < brightness_on)
user.SetLuminosity(brightness_on)
// user.UpdateLuminosity() //TODO: Carn
SetLuminosity(0)
dropped(mob/user)
if(on)
user.SetLuminosity(user.luminosity - brightness_on)
// user.UpdateLuminosity()
SetLuminosity(brightness_on)
if(light_on)
if ((layer <= 3) || (loc != user.loc))
user.SetLuminosity(search_light(user, src))
SetLuminosity(brightness_on)
// user.UpdateLuminosity()
equipped(mob/user, slot)
if(light_on)
if (user.luminosity < brightness_on)
user.SetLuminosity(brightness_on)
// user.UpdateLuminosity() //TODO: Carn
SetLuminosity(0)
/obj/item/clothing/head/hardhat/orange
+24 -14
View File
@@ -122,32 +122,42 @@
color = "pumpkin"
flags = FPRINT | TABLEPASS | HEADCOVERSEYES | HEADCOVERSMOUTH | BLOCKHAIR
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE
var/brightness_on = 2 //luminosity when on
var/on = 0
brightness_on = 2 //luminosity when on
light_on = 0
attack_self(mob/user)
if(!isturf(user.loc))
user << "You cannot turn the light on while in this [user.loc]" //To prevent some lighting anomalities.
return
on = !on
icon_state = "hardhat[on]_[color]"
item_state = "hardhat[on]_[color]"
light_on = !light_on
icon_state = "hardhat[light_on]_[color]"
item_state = "hardhat[light_on]_[color]"
if(on) user.SetLuminosity(user.luminosity + brightness_on)
else user.SetLuminosity(user.luminosity - brightness_on)
if((light_on) && (user.luminosity < brightness_on))
user.SetLuminosity(brightness_on)
else
user.SetLuminosity(search_light(user, src))
pickup(mob/user)
if(on)
user.SetLuminosity(user.luminosity + brightness_on)
// user.UpdateLuminosity()
if(light_on)
if (user.luminosity < brightness_on)
user.SetLuminosity(brightness_on)
// user.UpdateLuminosity() //TODO: Carn
SetLuminosity(0)
dropped(mob/user)
if(on)
user.SetLuminosity(user.luminosity - brightness_on)
// user.UpdateLuminosity()
SetLuminosity(brightness_on)
if(light_on)
if ((layer <= 3) || (loc != user.loc))
user.SetLuminosity(search_light(user, src))
SetLuminosity(brightness_on)
// user.UpdateLuminosity()
equipped(mob/user, slot)
if(light_on)
if (user.luminosity < brightness_on)
user.SetLuminosity(brightness_on)
// user.UpdateLuminosity() //TODO: Carn
SetLuminosity(0)
/*
* Kitty ears
*/
+26 -15
View File
@@ -4,10 +4,10 @@
desc = "A special helmet designed for work in a hazardous, low-pressure environment. Has radiation shielding."
icon_state = "rig0-engineering"
item_state = "eng_helm"
armor = list(melee = 40, bullet = 5, laser = 20,energy = 5, bomb = 35, bio = 100, rad = 60)
armor = list(melee = 40, bullet = 5, laser = 20,energy = 5, bomb = 35, bio = 100, rad = 100)
allowed = list(/obj/item/device/flashlight)
var/brightness_on = 4 //luminosity when on
var/on = 0
brightness_on = 4 //luminosity when on
light_on = 0
color = "engineering" //Determines used sprites: rig[on]-[color] and rig[on]-[color]2 (lying down sprite)
icon_action_button = "action_hardhat"
heat_protection = HEAD
@@ -17,24 +17,35 @@
if(!isturf(user.loc))
user << "You cannot turn the light on while in this [user.loc]" //To prevent some lighting anomalities.
return
on = !on
icon_state = "rig[on]-[color]"
light_on = !light_on
icon_state = "rig[light_on]-[color]"
// item_state = "rig[on]-[color]"
if(on) user.SetLuminosity(user.luminosity + brightness_on)
else user.SetLuminosity(user.luminosity - brightness_on)
if((light_on) && (user.luminosity < brightness_on))
user.SetLuminosity(brightness_on)
else
user.SetLuminosity(search_light(user, src))
pickup(mob/user)
if(on)
user.SetLuminosity(user.luminosity + brightness_on)
// user.UpdateLuminosity()
if(light_on)
if (user.luminosity < brightness_on)
user.SetLuminosity(brightness_on)
// user.UpdateLuminosity() //TODO: Carn
SetLuminosity(0)
dropped(mob/user)
if(on)
user.SetLuminosity(user.luminosity - brightness_on)
// user.UpdateLuminosity()
SetLuminosity(brightness_on)
if(light_on)
if ((layer <= 3) || (loc != user.loc))
user.SetLuminosity(search_light(user, src))
SetLuminosity(brightness_on)
// user.UpdateLuminosity()
equipped(mob/user, slot)
if(light_on)
if (user.luminosity < brightness_on)
user.SetLuminosity(brightness_on)
// user.UpdateLuminosity() //TODO: Carn
SetLuminosity(0)
/obj/item/clothing/suit/space/rig
name = "engineering hardsuit"
@@ -42,7 +53,7 @@
icon_state = "rig-engineering"
item_state = "eng_hardsuit"
slowdown = 2
armor = list(melee = 40, bullet = 5, laser = 20,energy = 5, bomb = 35, bio = 100, rad = 60)
armor = list(melee = 40, bullet = 5, laser = 20,energy = 5, bomb = 35, bio = 100, rad = 100)
allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/weapon/storage/satchel,/obj/item/device/t_scanner,/obj/item/weapon/pickaxe, /obj/item/weapon/rcd)
heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECITON_TEMPERATURE
+1 -1
View File
@@ -529,7 +529,7 @@
desc = "A colorful pair of magboots with the name Susan Harris clearly written on the back."
icon = 'custom_items.dmi'
icon_state = "atmosmagboots0"
verb/toggle()
toggle()
set name = "Toggle Magboots"
set category = "Object"
set src in usr
+6 -6
View File
@@ -421,19 +421,19 @@
if(!item) return //Grab processing has a chance of returning null
item.layer = initial(item.layer)
u_equip(item)
update_icons()
if(src.client)
src.client.screen -= item
//if(src.client)
//src.client.screen -= item
item.loc = src.loc
//item.loc = src.loc
if(istype(item, /obj/item))
item:dropped(src) // let it know it's been dropped
//if(istype(item, /obj/item))
//item:dropped(src) // let it know it's been dropped
//actually throw it!
if (item)
item.layer = initial(item.layer)
src.visible_message("\red [src] has thrown [item].")
if(!src.lastarea)
@@ -159,9 +159,8 @@
client.screen -= W
W.loc = loc
W.dropped(src)
if(W)
W.layer = initial(W.layer)
//if(W)
//W.layer = initial(W.layer)
update_action_buttons()
return 1
@@ -592,7 +591,15 @@ It can still be worn/put on as normal.
target.internals.icon_state = "internal1"
if(slot_to_process)
if(strip_item) //Stripping an item from the mob
target.u_equip(strip_item)
var/obj/item/W = strip_item
target.u_equip(W)
if (target.client)
target.client.screen -= W
if (W)
W.loc = target.loc
W.layer = initial(W.layer)
W.dropped(target)
W.add_fingerprint(source)
if(slot_to_process == slot_l_store) //pockets! Needs to process the other one too. Snowflake code, wooo! It's not like anyone will rewrite this anytime soon. If I'm wrong then... CONGRATULATIONS! ;)
if(target.r_store)
target.u_equip(target.r_store) //At this stage l_store is already processed by the code above, we only need to process r_store.
@@ -601,6 +608,7 @@ It can still be worn/put on as normal.
if(item.mob_can_equip(target, slot_to_process, 0))
source.u_equip(item)
target.equip_to_slot_if_possible(item, slot_to_process, 0, 1, 1)
item.dropped(source)
source.update_icons()
target.update_icons()
+3 -3
View File
@@ -140,7 +140,7 @@
if(D.data["donor"] == src)
B = D
break
var/datum/reagent/nutriment/F = locate() in vessel.reagent_list
var/datum/reagent/nutriment/F = locate() in reagents.reagent_list
if(F != null)
if(F.volume >= 1)
// nutriment speeds it up quite a bit
@@ -274,7 +274,7 @@
if(E.name == "l_hand" || E.name == "l_arm")
if(hand && equipped())
drop_item()
emote("custom v drops what they were holding, their [E.display_name?"[E.display_name]":"[E]"] malfunctioning!")
emote("me", 1, "drops what they were holding, their [E.display_name?"[E.display_name]":"[E]"] malfunctioning!")
var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread()
spark_system.set_up(5, 0, src)
spark_system.attach(src)
@@ -284,7 +284,7 @@
else if(E.name == "r_hand" || E.name == "r_arm")
if(!hand && equipped())
drop_item()
emote("custom v drops what they were holding, their [E.display_name?"[E.display_name]":"[E]"] malfunctioning!")
emote("me", 1, "drops what they were holding, their [E.display_name?"[E.display_name]":"[E]"] malfunctioning!")
var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread()
spark_system.set_up(5, 0, src)
spark_system.attach(src)
@@ -102,8 +102,8 @@
target.client.screen -= W
if (W)
W.loc = target.loc
W.dropped(target)
W.layer = initial(W.layer)
W.dropped(target)
W.add_fingerprint(source)
else
if (istype(item, /obj/item))
@@ -112,6 +112,8 @@
item.layer = 20
target.l_hand = item
item.loc = target
item.dropped(source)
item.equipped(target,target.l_hand)
if("r_hand")
if (target.r_hand)
var/obj/item/W = target.r_hand
@@ -120,8 +122,8 @@
target.client.screen -= W
if (W)
W.loc = target.loc
W.dropped(target)
W.layer = initial(W.layer)
W.dropped(target)
W.add_fingerprint(source)
else
if (istype(item, /obj/item))
@@ -130,6 +132,8 @@
item.layer = 20
target.r_hand = item
item.loc = target
item.dropped(source)
item.equipped(target,target.r_hand)
if("back")
if (target.back)
var/obj/item/W = target.back
@@ -0,0 +1,122 @@
// A special tray for the service droid. Allow droid to pick up and drop items as if they were using the tray normally
// Click on table to unload, click on item to load. Otherwise works identically to a tray.
// Unlike the base item "tray", robotrays ONLY pick up food, drinks and condiments.
/obj/item/weapon/tray/robotray
name = "RoboTray"
desc = "An autoloading tray specialized for carrying refreshments."
/obj/item/weapon/tray/robotray/afterattack(atom/target, mob/user as mob)
if ( !target )
return
// pick up items, mostly copied from base tray pickup proc
// see code\game\objects\items\weapons\kitchen.dm line 241
if ( istype(target,/obj/item))
if ( !isturf(target.loc) ) // Don't load up stuff if it's inside a container or mob!
return
var turf/pickup = target.loc
var addedSomething = 0
for(var/obj/item/weapon/reagent_containers/food/I in pickup)
if( I != src && !I.anchored && !istype(I, /obj/item/clothing/under) && !istype(I, /obj/item/clothing/suit) && !istype(I, /obj/item/projectile) )
var/add = 0
if(I.w_class == 1.0)
add = 1
else if(I.w_class == 2.0)
add = 3
else
add = 5
if(calc_carry() + add >= max_carry)
break
I.loc = src
carrying.Add(I)
overlays += image("icon" = I.icon, "icon_state" = I.icon_state, "layer" = 30 + I.layer)
addedSomething = 1
if ( addedSomething )
user.visible_message("\blue [user] load some items onto their service tray.")
return
// Unloads the tray, copied from base item's proc dropped() and altered
// see code\game\objects\items\weapons\kitchen.dm line 263
if ( isturf(target) || istype(target,/obj/structure/table) )
var foundtable = istype(target,/obj/structure/table/)
if ( !foundtable ) //it must be a turf!
for(var/obj/structure/table/T in target)
foundtable = 1
break
var turf/dropspot
if ( !foundtable ) // don't unload things onto walls or other silly places.
dropspot = user.loc
else if ( isturf(target) ) // they clicked on a turf with a table in it
dropspot = target
else // they clicked on a table
dropspot = target.loc
overlays = null
var droppedSomething = 0
for(var/obj/item/I in carrying)
I.loc = dropspot
carrying.Remove(I)
droppedSomething = 1
if(!foundtable && isturf(dropspot))
// if no table, presume that the person just shittily dropped the tray on the ground and made a mess everywhere!
spawn()
for(var/i = 1, i <= rand(1,2), i++)
if(I)
step(I, pick(NORTH,SOUTH,EAST,WEST))
sleep(rand(2,4))
if ( droppedSomething )
if ( foundtable )
user.visible_message("\blue [user] unloads their service tray.")
else
user.visible_message("\blue [user] drops all the items on their tray.")
return ..()
// A special pen for service droids. Can be toggled to switch between normal writting mode, and paper rename mode
// Allows service droids to rename paper items.
/obj/item/weapon/pen/robopen
desc = "A black ink printing attachment with a paper naming mode."
name = "Printing Pen"
var/mode = 1
/obj/item/weapon/pen/robopen/attack_self(mob/user as mob)
playsound(src.loc, 'sound/effects/pop.ogg', 50, 0)
if (mode == 1)
mode = 2
user << "Changed printing mode to 'Rename Paper'"
return
if (mode == 2)
mode = 1
user << "Changed printing mode to 'Write Paper'"
// Copied over from paper's rename verb
// see code\modules\paperwork\paper.dm line 62
/obj/item/weapon/pen/robopen/proc/RenamePaper(mob/user as mob,obj/paper as obj)
if ( !user || !paper )
return
var/n_name = input(user, "What would you like to label the paper?", "Paper Labelling", null) as text
if ( !user || !paper )
return
n_name = copytext(n_name, 1, 32)
if(( get_dist(user,paper) <= 1 && user.stat == 0))
paper.name = "paper[(n_name ? text("- '[n_name]'") : null)]"
add_fingerprint(user)
return
@@ -170,7 +170,7 @@
..()
src.modules += new /obj/item/weapon/reagent_containers/food/drinks/beer(src)
src.modules += new /obj/item/weapon/reagent_containers/food/condiment/enzyme(src)
src.modules += new /obj/item/weapon/pen(src)
src.modules += new /obj/item/weapon/pen/robopen(src)
var/obj/item/weapon/rsf/M = new /obj/item/weapon/rsf(src)
M.matter = 30
@@ -179,10 +179,10 @@
src.modules += new /obj/item/weapon/reagent_containers/robodropper(src)
var/obj/item/weapon/lighter/zippo/L = new /obj/item/weapon/lighter/zippo(src)
L.lit = 1
L.light_on = 1
src.modules += L
src.modules += new /obj/item/weapon/tray(src)
src.modules += new /obj/item/weapon/tray/robotray(src)
src.modules += new /obj/item/weapon/reagent_containers/food/drinks/shaker(src)
src.emag = new /obj/item/weapon/reagent_containers/food/drinks/beer(src)
+1 -1
View File
@@ -29,7 +29,7 @@
dna = null
O.dna.uni_identity = "00600200A00E0110148FC01300B009"
//O.dna.struc_enzymes = "0983E840344C39F4B059D5145FC5785DC6406A4BB8"
O.dna.struc_enzymes = "[copytext(O.dna.struc_enzymes,1,1+3*13)]BB8"
O.dna.struc_enzymes = "[copytext(O.dna.struc_enzymes,1,1+3*(STRUCDNASIZE-1))]BB8"
O.loc = loc
O.viruses = viruses
viruses = list()
+4 -1
View File
@@ -264,7 +264,10 @@
clown = 1
if(istype(P, /obj/item/weapon/pen) || istype(P, /obj/item/toy/crayon))
user << browse("<HTML><HEAD><TITLE>[name]</TITLE></HEAD><BODY>[info_links][stamps]</BODY></HTML>", "window=[name]")
if ( istype(P, /obj/item/weapon/pen/robopen) && P:mode == 2 )
P:RenamePaper(user,src)
else
user << browse("<HTML><HEAD><TITLE>[name]</TITLE></HEAD><BODY>[info_links][stamps]</BODY></HTML>", "window=[name]")
//openhelp(user)
return
else if(istype(P, /obj/item/weapon/stamp))
+11 -1
View File
@@ -213,12 +213,22 @@ display round(lastgen) and plasmatank amount
user << "\blue You open the access panel."
else
user << "\blue You close the access panel."
else if(istype(O, /obj/item/weapon/crowbar) && !open)
else if(istype(O, /obj/item/weapon/crowbar) && open)
var/obj/machinery/constructable_frame/machine_frame/new_frame = new /obj/machinery/constructable_frame/machine_frame(src.loc)
for(var/obj/item/I in component_parts)
if(I.reliability < 100)
I.crit_fail = 1
I.loc = src.loc
while ( sheets > 0 )
var/obj/item/stack/sheet/G = new sheet_path(src.loc)
if ( sheets > 50 )
G.amount = 50
else
G.amount = sheets
sheets -= G.amount
new_frame.state = 2
new_frame.icon_state = "box_1"
del(src)
+7 -7
View File
@@ -87,19 +87,19 @@
visible_message("\red [A.name] is hit by the [src.name] in the [def_zone]!")//X has fired Y is now given by the guns so you cant tell who shot you if you could not see the shooter
if(istype(firer, /mob))
M.attack_log += "\[[time_stamp()]\] <b>[firer]/[firer.ckey]</b> shot <b>[M]/[M.ckey]</b> with a <b>[src]</b>"
firer.attack_log += "\[[time_stamp()]\] <b>[firer]/[firer.ckey]</b> shot <b>[M]/[M.ckey]</b> with a <b>[src]</b>"
log_attack("<font color='red'>[firer] ([firer.ckey]) shot [M] ([M.ckey]) with a [src]</font>")
M.attack_log += "\[[time_stamp()]\] <b>[firer]/[firer.ckey]</b> shot <b>[M]/[M.ckey]</b> with a <b>[src.type]</b>"
firer.attack_log += "\[[time_stamp()]\] <b>[firer]/[firer.ckey]</b> shot <b>[M]/[M.ckey]</b> with a <b>[src.type]</b>"
log_attack("<font color='red'>[firer] ([firer.ckey]) shot [M] ([M.ckey]) with a [src.type]</font>")
log_admin("ATTACK: [firer] ([firer.ckey]) shot [M] ([M.ckey]) with a [src]")
msg_admin_attack("ATTACK: [firer] ([firer.ckey]) shot [M] ([M.ckey]) with a [src]") //BS12 EDIT ALG
log_admin("ATTACK: [firer] ([firer.ckey]) shot [M] ([M.ckey]) with a [src.type]")
msg_admin_attack("ATTACK: [firer] ([firer.ckey]) shot [M] ([M.ckey]) with a [src.type]") //BS12 EDIT ALG
else
M.attack_log += "\[[time_stamp()]\] <b>UNKNOWN SUBJECT (No longer exists)</b> shot <b>[M]/[M.ckey]</b> with a <b>[src]</b>"
log_attack("<font color='red'>UNKNOWN shot [M] ([M.ckey]) with a [src]</font>")
log_attack("<font color='red'>UNKNOWN shot [M] ([M.ckey]) with a [src.type]</font>")
log_admin("ATTACK: UNKNOWN shot [M] ([M.ckey]) with a [src]")
msg_admin_attack("ATTACK: UNKNOWN shot [M] ([M.ckey]) with a [src]") //BS12 EDIT ALG
msg_admin_attack("ATTACK: UNKNOWN shot [M] ([M.ckey]) with a [src.type]") //BS12 EDIT ALG
spawn(0)
if(A)
@@ -93,15 +93,27 @@
user << "\red [target] is full."
return
var/datum/reagent/refill
var/datum/reagent/refillName
if(isrobot(user))
refill = reagents.get_master_reagent_id()
refillName = reagents.get_master_reagent_name()
var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this)
user << "\blue You transfer [trans] units of the solution to [target]."
if(isrobot(user)) //Cyborg modules that include drinks automatically refill themselves, but drain the borg's cell
var/mob/living/silicon/robot/bro = user
bro.cell.use(30)
var/refill = reagents.get_master_reagent_id()
spawn(600)
var/chargeAmount = max(30,4*trans)
bro.cell.use(chargeAmount)
user << "Now synthesizing [trans] units of [refillName]..."
spawn(300)
reagents.add_reagent(refill, trans)
user << "Cyborg [src] refilled."
return
@@ -216,8 +216,8 @@
seed = "/obj/item/seeds/glowberryseed"
name = "bunch of glow-berries"
desc = "Nutritious!"
var/on = 1
var/brightness_on = 2 //luminosity when on
light_on = 1
brightness_on = 2 //luminosity when on
icon_state = "glowberrypile"
New()
..()
-15
View File
@@ -1047,21 +1047,6 @@
update()
return
New()
..()
posdir = dir
if(icon_state == "pipe-j1s")
sortdir = turn(posdir, -90)
negdir = turn(posdir, 180)
else
icon_state = "pipe-j2s"
sortdir = turn(posdir, 90)
negdir = turn(posdir, 180)
dpdir = sortdir | posdir | negdir
update()
return
// next direction to move
// if coming in from negdir, then next is primary dir or sortdir
+2 -2
View File
@@ -39,8 +39,8 @@
return
/obj/item/smallDelivery
desc = "A small wrapped package."
name = "small parcel"
desc = "A wrapped package."
name = "parcel"
icon = 'icons/obj/storage.dmi'
icon_state = "deliverycrateSmall"
var/obj/item/wrapped = null
+1 -1
View File
@@ -547,7 +547,7 @@ datum/design/telecomms_processor
build_path = "/obj/item/weapon/circuitboard/telecomms/processor"
datum/design/telecomms_server
name = "Circuit Design (Subspace Receiver)"
name = "Circuit Design (Telecommunication Server)"
desc = "Allows for the construction of Telecommunications Servers."
id = "s-server"
req_tech = list("programming" = 4, "engineering" = 4)
@@ -215,11 +215,12 @@
if("celldrain")
for (var/obj/machinery/power/apc/C in range(src.aurarange,originator))
for (var/obj/item/weapon/cell/B in C.contents)
B.charge -= 10
for (var/obj/machinery/power/smes/S in range (src.aurarange,originator)) S.charge -= 20
B.charge = max(B.charge-10,0)
for (var/obj/machinery/power/smes/S in range (src.aurarange,originator))
S.charge = max(S.charge-20,0)
for (var/mob/living/silicon/robot/M in range(src.aurarange,originator))
for (var/obj/item/weapon/cell/D in M.contents)
D.charge -= 10
D.charge = max(D.charge-10,0)
if(prob(10)) M << "\red SYSTEM ALERT: Energy draining field detected!"
return 1
if("planthelper")
@@ -305,11 +306,12 @@
if("celldrain")
for (var/obj/machinery/power/apc/C in range(src.aurarange,originator))
for (var/obj/item/weapon/cell/B in C.contents)
B.charge -= 500
for (var/obj/machinery/power/smes/S in range (src.aurarange,originator)) S.charge -= 400
B.charge = max(B.charge-500,0)
for (var/obj/machinery/power/smes/S in range (src.aurarange,originator))
S.charge = max(S.charge-400,0)
for (var/mob/living/silicon/robot/M in range(src.aurarange,originator))
for (var/obj/item/weapon/cell/D in M.contents)
D.charge -= 500
D.charge = max(D.charge-500,0)
M << "\red SYSTEM ALERT: Severe energy drain detected!"
return 1
if("planthelper")
@@ -407,11 +409,12 @@
if("celldrain")
for (var/obj/machinery/power/apc/C in world)
for (var/obj/item/weapon/cell/B in C.contents)
B.charge -= 250
for (var/obj/machinery/power/smes/S in range (src.aurarange,src)) S.charge -= 250
B.charge = max(B.charge-250,0)
for (var/obj/machinery/power/smes/S in range (src.aurarange,src))
S.charge = max(S.charge-250,0)
for (var/mob/living/silicon/robot/M in world)
for (var/obj/item/weapon/cell/D in M.contents)
D.charge -= 250
D.charge = max(D.charge-250,0)
M << "\red SYSTEM ALERT: Energy drain detected!"
return 1
if("teleport")
+1 -1
View File
@@ -534,7 +534,7 @@ var/list/liftable_structures = list(\
#define INVISIBILITY_MAXIMUM 100
//Object specific defines
#define CANDLE_LUM 3 //For how bright candles are
//#define CANDLE_LUM 3 //For how bright candles are //Why is this here? Moved to candle.dm (brightness_on) -SweeperM
//Some mob defines below
+292 -292
View File
File diff suppressed because it is too large Load Diff
+54 -47
View File
@@ -784,7 +784,7 @@
"apd" = (/turf/simulated/floor/carpet,/area/security/detectives_office)
"ape" = (/obj/structure/table/woodentable,/obj/item/weapon/cigpacket,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/item/clothing/glasses/sunglasses,/turf/simulated/floor/carpet,/area/security/detectives_office)
"apf" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/turf/simulated/floor/carpet,/area/security/detectives_office)
"apg" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp/green{on = 0; pixel_x = -3; pixel_y = 8},/obj/item/weapon/book/manual/security_space_law,/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office)
"apg" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp/green{light_on = 0; pixel_x = -3; pixel_y = 8},/obj/item/weapon/book/manual/security_space_law,/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office)
"aph" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/requests_console{department = "Law office"; pixel_x = -32; pixel_y = 0},/turf/simulated/floor/wood,/area/lawoffice)
"api" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor/wood,/area/lawoffice)
"apj" = (/obj/structure/table/woodentable,/obj/item/weapon/book/manual/security_space_law,/obj/item/weapon/book/manual/security_space_law,/obj/item/weapon/pen/red,/turf/simulated/floor/wood,/area/lawoffice)
@@ -2647,7 +2647,7 @@
"aYU" = (/obj/structure/closet/crate/freezer,/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/storage)
"aYV" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/storage)
"aYW" = (/obj/machinery/conveyor{dir = 1; id = "packageSort1"},/obj/structure/plasticflaps{opacity = 1},/turf/simulated/floor/plating,/area/quartermaster/sorting)
"aYX" = (/obj/machinery/light_switch{pixel_x = -27},/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/quartermaster/sorting)
"aYX" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor,/area/quartermaster/sorting)
"aYY" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor,/area/quartermaster/sorting)
"aYZ" = (/obj/structure/table,/obj/item/device/destTagger{pixel_x = 4; pixel_y = 3},/obj/item/device/destTagger{pixel_x = 4; pixel_y = 3},/obj/machinery/light{dir = 4},/turf/simulated/floor{icon_state = "arrival"; dir = 4},/area/quartermaster/sorting)
"aZa" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/central)
@@ -2834,7 +2834,7 @@
"bcz" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/wall,/area/quartermaster/sorting)
"bcA" = (/obj/machinery/atmospherics/pipe/manifold{color = "red"; dir = 1; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/wall,/area/quartermaster/sorting)
"bcB" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall,/area/quartermaster/sorting)
"bcC" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 1},/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/quartermaster/sorting)
"bcC" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor,/area/quartermaster/sorting)
"bcD" = (/obj/structure/stool/bed/chair{dir = 4},/obj/effect/landmark/start{name = "Cargo Technician"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/quartermaster/sorting)
"bcE" = (/obj/structure/table/reinforced,/turf/simulated/floor{icon_state = "arrival"; dir = 4},/area/quartermaster/sorting)
"bcF" = (/obj/machinery/door/firedoor/border_only{dir = 8},/turf/simulated/floor,/area/quartermaster/sorting)
@@ -2904,8 +2904,8 @@
"bdR" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall,/area/quartermaster/storage)
"bdS" = (/obj/machinery/door/poddoor/shutters{id = "qm_warehouse"; name = "Warehouse Shutters"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/quartermaster/storage)
"bdT" = (/obj/structure/disposalpipe/wrapsortjunction{dir = 1},/turf/simulated/wall,/area/quartermaster/sorting)
"bdU" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposaloutlet{dir = 4},/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/quartermaster/sorting)
"bdV" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/window/eastleft{name = "Mail"; req_access_txt = "50"},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/quartermaster/sorting)
"bdU" = (/obj/machinery/power/apc{dir = 8; name = "Delivery Sorting APC"; pixel_x = -24; pixel_y = -1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/quartermaster/sorting)
"bdV" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/table/reinforced,/obj/machinery/door/window/eastright{name = "Mail"; req_access_txt = "50"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/quartermaster/sorting)
"bdW" = (/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/quartermaster/sorting)
"bdX" = (/obj/item/weapon/folder/yellow,/obj/item/weapon/pen{pixel_x = 4; pixel_y = 4},/obj/structure/table/reinforced,/obj/machinery/camera{c_tag = "Delivery Office"; dir = 1; network = "SS13"},/turf/simulated/floor{icon_state = "arrival"; dir = 4},/area/quartermaster/sorting)
"bdY" = (/obj/structure/rack,/obj/item/weapon/tank/jetpack/oxygen,/obj/item/clothing/mask/gas,/obj/item/clothing/head/helmet/space/capspace,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/keycard_auth{pixel_x = 0; pixel_y = -24},/turf/simulated/floor/wood,/area/crew_quarters/captain)
@@ -2973,7 +2973,7 @@
"bfi" = (/obj/machinery/artifact_harvester,/turf/simulated/floor{icon_state = "white"},/area/anomaly/lab)
"bfj" = (/obj/machinery/artifact_analyser,/turf/simulated/floor{icon_state = "white"},/area/anomaly/lab)
"bfk" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/hallway/secondary/entry)
"bfl" = (/obj/machinery/conveyor{dir = 1; id = "garbage"},/obj/effect/sign/vacuum{pixel_x = -32},/turf/simulated/floor/plating,/area/maintenance/disposal)
"bfl" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/structure/window/reinforced{dir = 1},/obj/structure/disposaloutlet,/turf/simulated/floor/plating,/area/toxins/mixing)
"bfm" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/maintenance/disposal)
"bfn" = (/obj/structure/stool,/turf/simulated/floor/plating,/area/maintenance/disposal)
"bfo" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_x = 0; pixel_y = -29},/obj/machinery/light/small,/turf/simulated/floor/plating,/area/maintenance/disposal)
@@ -2996,10 +2996,10 @@
"bfF" = (/obj/machinery/alarm{pixel_y = 23},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor,/area/quartermaster/storage)
"bfG" = (/obj/structure/disposalpipe/segment,/turf/simulated/wall,/area/quartermaster/sorting)
"bfH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall,/area/quartermaster/sorting)
"bfI" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/wall,/area/quartermaster/sorting)
"bfJ" = (/obj/machinery/power/apc{dir = 8; name = "Delivery Sorting APC"; pixel_x = -24; pixel_y = -1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/quartermaster/sorting)
"bfK" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/quartermaster/sorting)
"bfL" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/quartermaster/sorting)
"bfI" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor,/area/quartermaster/sorting)
"bfJ" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 1},/obj/machinery/light_switch{pixel_x = -27},/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/quartermaster/sorting)
"bfK" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor,/area/quartermaster/sorting)
"bfL" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/quartermaster/sorting)
"bfM" = (/obj/machinery/atmospherics/pipe/manifold{color = "blue"; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/machinery/conveyor_switch/oneway{convdir = -1; id = "packageExternal"},/obj/machinery/light{dir = 4},/turf/simulated/floor,/area/quartermaster/sorting)
"bfN" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/hallway/primary/central)
"bfO" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor,/area/hallway/primary/central)
@@ -3051,7 +3051,7 @@
"bgI" = (/turf/simulated/floor{icon_state = "white"},/area/anomaly/lab)
"bgJ" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/turf/simulated/floor/plating,/area/hallway/secondary/entry)
"bgK" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
"bgL" = (/obj/machinery/conveyor{dir = 1; id = "garbage"},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/maintenance/disposal)
"bgL" = (/turf/simulated/floor/plating,/area/toxins/mixing)
"bgM" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/disposal)
"bgN" = (/obj/machinery/camera{c_tag = "Disposals"; dir = 8},/turf/simulated/floor/plating,/area/maintenance/disposal)
"bgO" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/port)
@@ -3216,9 +3216,9 @@
"bjR" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/effect/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 0},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
"bjS" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
"bjT" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
"bjU" = (/obj/machinery/mass_driver{id = "trash"},/turf/simulated/floor/plating/airless,/area/maintenance/disposal)
"bjU" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/effect/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = -30; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing)
"bjV" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/disposal)
"bjW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/disposal)
"bjW" = (/obj/structure/grille,/turf/simulated/floor/plating,/area/toxins/mixing)
"bjX" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/quartermaster/storage)
"bjY" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/quartermaster/storage)
"bjZ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/quartermaster/storage)
@@ -4407,8 +4407,8 @@
"bGM" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/mixing)
"bGN" = (/obj/machinery/camera/xray{c_tag = "Mixing Maintenance"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/toxins/mixing)
"bGO" = (/obj/machinery/door/airlock/research{name = "Launch Room"; req_access_txt = "7"},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing)
"bGP" = (/obj/item/device/radio/intercom{pixel_y = 25},/obj/machinery/light/small{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing)
"bGQ" = (/obj/machinery/driver_button{dir = 2; id = "toxinsdriver"; pixel_y = 24},/turf/simulated/floor{tag = "icon-whitehall (WEST)"; icon_state = "whitehall"; dir = 8},/area/toxins/mixing)
"bGP" = (/obj/machinery/light{dir = 1},/turf/simulated/floor{tag = "icon-whitehall (WEST)"; icon_state = "whitehall"; dir = 8},/area/toxins/mixing)
"bGQ" = (/obj/item/device/radio/intercom{pixel_y = 25},/turf/simulated/floor{icon_state = "white"},/area/toxins/mixing)
"bGR" = (/obj/structure/stool/bed/chair{dir = 4},/obj/machinery/computer/security/telescreen{desc = "Used for watching the test chamber."; layer = 4; name = "Test Chamber Telescreen"; network = "Toxins"; pixel_x = 32; pixel_y = 0},/turf/simulated/floor,/area/toxins/mixing)
"bGS" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/toxins/mixing)
"bGT" = (/turf/simulated/floor/airless{dir = 8; icon_state = "warning"},/area/toxins/test_area)
@@ -4540,7 +4540,7 @@
"bJp" = (/obj/machinery/portable_atmospherics/pump,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/mixing)
"bJq" = (/obj/machinery/portable_atmospherics/canister,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/mixing)
"bJr" = (/obj/machinery/portable_atmospherics/canister,/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/toxins/mixing)
"bJs" = (/obj/machinery/door/window/southleft{name = "Mass Driver Door"; req_access_txt = "7"},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/toxins/mixing)
"bJs" = (/obj/structure/stool/bed/chair{dir = 4},/obj/machinery/computer/security/telescreen{desc = "Used for watching the test chamber."; layer = 4; name = "Test Chamber Telescreen"; network = "Toxins"; pixel_x = 32; pixel_y = 0},/obj/machinery/driver_button{dir = 2; id = "toxinsdriver"; pixel_y = 24},/turf/simulated/floor,/area/toxins/mixing)
"bJt" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/toxins/mixing)
"bJu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/toxins/mixing)
"bJv" = (/turf/simulated/floor/airless{icon_state = "warning"},/area/toxins/test_area)
@@ -4620,7 +4620,7 @@
"bKR" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plating,/area/maintenance/asmaint2)
"bKS" = (/obj/structure/rack{dir = 1},/obj/item/weapon/extinguisher,/turf/simulated/floor/plating,/area/maintenance/asmaint2)
"bKT" = (/obj/machinery/mass_driver{dir = 4; id = "toxinsdriver"},/turf/simulated/floor/plating,/area/toxins/mixing)
"bKU" = (/obj/effect/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = -32},/turf/simulated/floor/plating,/area/toxins/mixing)
"bKU" = (/obj/machinery/mass_driver{id = "trash"},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating/airless,/area/maintenance/disposal)
"bKV" = (/turf/simulated/floor/plating{tag = "icon-warnplate (EAST)"; icon_state = "warnplate"; dir = 4},/area/toxins/mixing)
"bKW" = (/obj/machinery/door/poddoor{id = "toxinsdriver"; name = "Toxins Launcher Bay Door"},/turf/simulated/floor/plating{tag = "icon-warnplate (EAST)"; icon_state = "warnplate"; dir = 4},/area/toxins/mixing)
"bKX" = (/obj/machinery/door/poddoor{id = "toxinsdriver"; name = "Toxins Launcher Bay Door"},/turf/simulated/floor/plating/airless,/area/toxins/test_area)
@@ -5148,7 +5148,7 @@
"bUZ" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/asmaint2)
"bVa" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/asmaint2)
"bVb" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/asmaint2)
"bVc" = (/obj/structure/closet/wardrobe/grey,/turf/simulated/floor/plating,/area/maintenance/asmaint2)
"bVc" = (/obj/structure/disposaloutlet{dir = 8},/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plating,/area/maintenance/disposal)
"bVd" = (/obj/structure/lattice,/obj/structure/disposalpipe/segment,/turf/space,/area)
"bVe" = (/obj/machinery/recharge_station,/obj/machinery/light{dir = 8},/turf/simulated/floor{icon_state = "bot"},/area/assembly/chargebay)
"bVf" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor/border_only{dir = 8},/obj/machinery/door/airlock/glass_research{name = "Recharging Bay"; req_access_txt = "29"},/turf/simulated/floor,/area/assembly/chargebay)
@@ -8981,6 +8981,13 @@
"dqK" = (/obj/structure/shuttle/engine/propulsion/burst{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/research/station)
"dqL" = (/obj/machinery/computer/research_shuttle,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/research/station)
"dqM" = (/obj/structure/shuttle/engine/heater{tag = "icon-heater (WEST)"; icon_state = "heater"; dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/research/station)
"dqN" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/structure/disposaloutlet{dir = 1},/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/quartermaster/sorting)
"dqO" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "brown"},/area/quartermaster/sorting)
"dqP" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/quartermaster/sorting)
"dqQ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/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)
"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)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -9109,15 +9116,15 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaUVaUWaSkavTaUXaUYaUZaVaaUZaVbaTCaTCaVcaTDaPOaVdaVeaTIaTJaVfaVgaVhaViaTKaVjaVkaVlaLUaVmaVnaVoaVpaLUaVqaVraVsaVsaVsaVsaVtaVsaVuaVvaVwaVvaVvaVxaVvaVyaVuaGdaGdaVzaVAaVBaVBaVBaVBaVCaVDaVEaVDaVDaVFaVFaVFaVFaVFaVGaVHaVHaVIaVJaVKaVLaVKaVKaVKaVKaVKaQhaQhaLkaGdaVMaGqaVNaVOaVPaVQaKqaKqaKqaVRaVSaVTaKqaVUaVVaVWaGwaGwaGwaVXaVYaVYaVYaGwaGwaGwaVZaOiaOiaWaaWbaWcaWdaKzaGAaWeaUNaTvaLLaWfaOmaOnaPDaPEaPDaOmaOnaWgaFjaWhaOsaOsaOsaOsaWiaOwaaaaafaafaGLaGLaGLaGLaGLaGLaGLaGLaGLaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaafauIaWjatMatOaPQaWkaWkaWlaWmaWnaWlaWoaWkaPOaWpaWqaWraWsaWtaWtaWuaWvaWtaWwaVkaWxaLUaVmaVnaWyaWzaLUaVqaVraVsaWAaWBaWBaWBaWCaVuaWDaWEaWFaWGaVuaVuaVuaVuaGdaGdaUhaWHaWIaWJaWKaWLaWMaWNaWOaWPaVDaVFaWQaWRaWSaWTaWUaWVaWWaWXaVKaWYaWZaXaaXbaXcaXdaVKaXeaXeaHraGdaGdaGqaGqaGqaGqaGqaXfaPfaXfaXgaXhaGqaNSaGqaGqaGqaXiaXjaXkaXjaXjaXjaXjaXlaXjaXiaKzaXmaXmaXnaXoaXoaXoaXoaXiaXpaXqaXraXsaXtaXuaXuaXvaXuaXuaXuaXuaXwaXxaXyaOsaOsaOsaOsaXzaPIaMWaMWaShaGLaGLaGLaGLaGLaGLaGLaGLaGLaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawVaqmaXAaxTaSkaraaraaraaraaraaraaXBaXCaPQaPOaPOaPOaPOaPOaPOaPOaPOaPOaXDaNdaTIaTJaVfaXEaXFaXGaTKaXHaXIaXJaLUaVmaVnaXKaXLaLUaVqaVraVsaWBaXMaXMaWBaXMaVuaWDaXNaXOaXOaXPaXQaXRaVuaXSaGdaUhaXTaXUaXVaXWaXWaXWaXWaXXaXYaVDaVFaXZaYaaYbaYcaWQaYdaYeaYfaYgaYhaWZaYiaYjaYkaYlaVKaYmaYnaGcaYoaGdaYpaYqaTvaTvaYraTvaTvaTvaYraTvaYsaTvaTvaYtaTvaYuaTvaYvaTvaTvaTvaTvaTvaTvaYqaTvaTvaTvaTvaTvaTvaTvaTvaYwaYxaYyaYzaYAaYyaYyaYyaYBaYyaYyaYCaTvaYqaYDaOsaOsaOsaOsaOsaYEaQWaYFaQVaQWaGLaGLaGLaGLaGLaGLaGLaGLaGLaafdqBdqDdqEdqDdqEdqDdqCaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYHaYHaYHaYHaYHaYHaYHaYHaYHaYHaaaaafaYIawYauLaYJaYKaYLaYLaYLaYLaYLaYLaYMaYNaLRaSLaNdaTIaTJaTKaTKaYOaYPaTKaLUaLUaYQaLUaVmaYRaXKaYSaLUaVqaVraVsaYTaYUaWBaXMaYVaVuaYWaVuaYXaXOaXOaYYaYZaVuaGdaGdaZaaWHaZbaZcaXWaXWaZdaXWaXXaZeaVDaVFaZfaZgaZhaZhaZhaYdaZiaVFaZjaZkaWZaYiaZlaYhaZmaVKaXeaNQaZnaGdaGdaYpaYqaTvaTvaTvaTvaTvaTvaTvaTvaTvaTvaTvaZoaZpaZpaZqaZraTvaTvaTvaTvaTvaTvaYqaTvaTvaTvaTvaTvaTvaTvaTvaTvaZsaTvaYvaTvaTvaTvaTvaTvaTvaTvaZtaTvaYqaYDaOsaOsaOsaOsaOsaZuaSgaMWaMWaPJaGLaGLaGLaGLaGLaGLaGLaGLaGLaafatYdqAdqzaYGdqzaYGatYaafaZvagQagQaZvaafaZvagQagQaZvaafaZvagQagQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYHaYHaYHaYHaYHaYHaYHaYHaYHaYHaYHaSiaSjaSkavTaZwaZxaZyaZyaZzaZyaZyaZyaZAaLRaLRaLRaLRaZBaTJaVfaZCaZDaZEaTKaZFaZGaZHaLUaLUaLUaLUaZIaLUaVqaVraVsaZJaWBaXMaZKaZLaVuaWDaVuaZMaXOaXOaZNaZOaVuaZPaGdaZQaWHaZRaZSaZTaZUaZcaZcaZVaZWaVDaZXaZYaZZaZhbaaaZhaYababbacaZjbadbaeaYhaYhaYhbafbagaXebahbaibajaGdaYpaYqaTvaTvaTvaTvaTvaTvaTvaTvaTvaTvbakbalaTvaTvbambanaTvbakbaobapaTvaTvaYqbaqbarbarbarbarbarbarbasaTvaZsaTvaYvaTvbataTvbakaTvbauaTvbavaTvaYqaYDaOsaOsaOsaOsbawaXzbaxaafaaaaafaGLaGLaGLaGLaGLaGLaGLaGLaGLaafdqKdqMdqzaYGdqzdqLdqEaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaagQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYHaYHaYHaYHaYHaYHaYHaYHaYHaYHaYHavSarVavSatPbayaZybazbaAbaBbaBbaCbaDbaEbaFbaFbaFbaFbaGbaHbaIbaIbaJbaKbaIbaLbaLbaMbaLbaNbaOaRkbaPbaObaQbaRbaSbaTbaUbaUbaVbaWbaXbaYbaZbbaaXOaXOaZNbbbbbcaZPaGdbbdaWHaZcbbebbfbbgbbhaZcbbiaVDaVDaVFbbjbbkbblbbmbbnbbkbboaVFaZjbbpbbqbbrbbsbbtbbubbvbbwbbxbbyaGdbbzbbAbbBbbCbbCbbCbbCbbCbbDbbAbbEbbEbbAbbFbbGbbFbbFbbHbbIbbJbbJbbJbbJbbKbbJbbJbbLbbMbbNbbObbObbMbbNbbPbarbbQbarbbRbarbbSbbTbbUbbUbbUbarbbVbarbbWbbXbbYbbZbbZbcaaLNbcbbccaafaafaafaGLaGLaGLaGLaGLaGLaGLaGLaGLaafatYdqJdqzaYGaYGaYGatYaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaZvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYHaYHaYHaYHaYHaYHaYHaYHaYHaYHaYHaUVaUWaSkavTbcdaZybceaZybcfbcgaZyaZyaZyaNdbchaSKaSKbciaTKaVfbcjaXFbckaTKbclbcmaRsaRsbcnbcobcpbcqbcrbcsbctbcubcvbcwbcvbcxbcybczbcAbcBbcCaXOaXObcDbcEbcFaZPaGdbcGaWHbcHaZcbcIbcJaZcaZcbcKaVDaVDaVFbcLbcMbcNbcObcPbcQbcRaVFaZjbcSbcTbcUbcUbcVbcWaVKbcXbcXbcYaGdaGdbcZbdabdabdbbdbbdbbdbbdbbbAbdabdabbAbdcbddbdebbFbdfbdgbdhbdibdjbdkbdkbdlbdmbdnbdobdpbdpbdpbdpbdqbbTbdrbdsbdrbdtbdrbbTbbTbdubdvbbUbdwbdxbdybbUbbUbdzbdAbdBbdzbdzbdCbccaafaaaaafaGLaGLaGLaGLaGLaGLaGLaGLaGLaafdqGdqDdqEdqHdqEdqDdqIaafaafbdDbdDbdDbdDbdDbdDbdDbdDaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYHaYHaYHaYHaYHaYHaYHaYHaYHaYHaaaaaaawXaWjatMbdEaZybceaZybdFbdGbdHbdIaZybdJaNdbdKaNdbdLaTKaTKaTKaTKaTKaTKbdMbdNbdOaNdbdPaVsbdQaVsbdRaVsaVsaVsaVsaVsbdSbdRaVsbdTbdUbdVbdWaXOaXOaZNbdXbbcaZPaGdaUhaWHbdYbdZbeabebbbhbecaZVaVDbedbeebefbegaWQbehaWQbeibejbekbelbembenbeobepbeqberaVKbesbcXbetbeubeubevbewbewbdbbexbdbbeybeybbAbdabezbbAbeAbeBbeCbbFbeDbeEbbJbeFbdkbeFbdkbeFbeGbdnbeHbdpbeIbdpbdpbeJbbTbeKbeLbeMbeNbeKbeObbTbePbeQbeRbeSbeTbeSbeUbbUbeVbeWbeXbeYbdzbdCbccaafaaaaafaGLaGLaGLaGLaGLaGLaGLaGLaGLaafbeZbfabfbbfcbfdbfebdDbdDbdDbdDbffbfgbfhbfibfjbfhbdDaafaaaaaaaZvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawVaqmaXAaxTaUWaPLaPLaPLaPLbfkavTatPatPaZybflbfmbfnbdHbfobfpbfqbfrbfrbfrbfrbfsbftbftbftbcsbcsbcsbfubfvbfvbfvbfwaVsbfxbfybfzbfAbfBbfCbfDbfCbfCbfEbfFbfGbfHbfIbfJbfKbfLbfMbaXbaXbfNbfObfPbfQbfRbfRbfRbfRbfRbfSbfTbfUbfQbekbekbekbekbfVbekbekbekbekbfWaYgbfXaVKaZjbfYaVKaVKbcXbcXbfZaGdaGdbgabgbbgbbgcbdbbdbbdbbgdbbAbdabdabbAbgebeBbgfbbFbggbeEbbJbeFbdkbeFbdkbeFbghbdnbgibgjbgkbgkbgkbgkbglbgmbgnbgobgpbgqbgrbglbgsbgtbgubgvbgwbeSbgxbbUbgybeWbgzbgAbdzbdCbccbccaafaafajmaGLaGLaGLaGLaGLaGLaGLajmaafbgBbgCbgCbgDbgCbfebgEbgFbgEbdDbgGbgHbgIbgIbgIbgIbdDaafaaaaaaagQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgJbgKarVavSatJatJatMatPatPaZybgLbgMbdHbgNaZyaZyaZyaLRbgObgPbgQbgRbgQbgQbgQbgRbgQaLRaLRaVsaVsaVsbgSaVsbgTbfCbgUbfCbfCbfCbgVbgWbgXbgXbgYbgZbhabhbbhbbhbbhcbhdbhebhfbhgbhhbhibhjbhkbhkbhlbhmbhnbhobhpbhobhqbhrbhsbhtbhubhvbhwbhtbhxbhrbhybhzbhAbhBbhCbhDbhEbhFbhFbhGbfZaGdaGdbhHbhIbhIbdbbhJbdabhKbdbbhLbdbbhMbbAbhNbhObhPbbFbhQbeEbbJbeFbdkbeFbdkbeFbeGbdnbhRbhSbhTbhUbdpbhVbhWbhXbhYbhYbhZbiabibbicbidbiebifbigbihbeSbiibbUbijbikbgzbilbimbdCbinbccaaaaafajmajmajmajmajmajmajmajmajmaafbiobgCbipbiqbgCbfebirbgEbisbdDbitbgHbiubivbgIbiwbdDaafaaaaaaagQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaabgJarVarVavSauJauJbixauJauJaZybiybgMbdHbdHaZyaaaaaaaaaaafaafbizbizbizbizbizbizbizaaaaaabiAbiBbiCbiDbiEbiEbiEbiEbiFbfCbiGaVsbiHbfCbfCbfCbiIbiJbiKbiLbiMbiNbfHaVuaVubiObiPbiQbiRbiSbiSbiTbiSbiUbiVbiWbiXabTbiYbiZbhtbjabhvbjabhtbjbbiYbhybjcbjdbjebjfbjgbjhbiSbiSbjibjjaGdbjkbjlbdabdabdbbjmbdabjnbdbbdabdabjobbAbbAbbAbbAbbAbjpbjqbbJbeFbjrbdkbdkbdkbjsbdnbjtbdpbjubjvbdpbdpbbTbjwbjxbjybhZbiabjzbbTbjAbiebjBbjCbeSbeSbjDbbUbjEbjFbjGbjEbdzbdCbjHbjIaaaaafaafaafaafaafaafaafaafaafaafaafbjJbfdbfcbjJbjJbfebjKbjLbjMbjNbgIbgHbjObjPbgIbjQbdDbdDaaaaaaaZvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauIavSavSbjRbjSawVaqmbjTbjSaZybjUbjVbjWbcgaZyaaaaaaaaaaaaaaabizbizbizbizbizbizbizaaaaaabjXbjYbfCbfCbfCbfCbfCbfCbjZbkabkbbkcbkdbfCbfCbfCbkebkfbjXbkgbfCbkhbkibkjbkkaZPbiPaGdbklbklbklbklbklbkmbknbkobklbkpbkqbkrbksbktbkubktbkvbkwbkxbkybkzbkAbkBbkBbkBbkCbkBbkBbkCbkDaGdaGdbhHbkEbkEbdbbkFbkGbkFbdbbkHbkIbkJbbAbkKbkKbkKbbAbkLbkMbbJbbJbbJbbJbbJbbJbkNbdnbkObkPbkQbkRbkSbkSbbTbkTbkUbbTbkVbkWbkXbbTbkYbkZblablbblcblcbldbleblfblgblhblfbdzblibljblkaafaafaafaaaaaaaaaaaaaaaaaaaaaaaeaafbfdbllblmblnblobfeblpbdDblqbdDblrbgHblsbltbgIbgIblubdDaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYHaYHaYHaYHaYHaYHaYHaYHaYHaYHaaaaafaYIawYauLaYJaYKaYLaYLaYLaYLaYLaYLaYMaYNaLRaSLaNdaTIaTJaTKaTKaYOaYPaTKaLUaLUaYQaLUaVmaYRaXKaYSaLUaVqaVraVsaYTaYUaWBaXMaYVaVuaYWaVubdUbcCaYXaYYaYZaVuaGdaGdaZaaWHaZbaZcaXWaXWaZdaXWaXXaZeaVDaVFaZfaZgaZhaZhaZhaYdaZiaVFaZjaZkaWZaYiaZlaYhaZmaVKaXeaNQaZnaGdaGdaYpaYqaTvaTvaTvaTvaTvaTvaTvaTvaTvaTvaTvaZoaZpaZpaZqaZraTvaTvaTvaTvaTvaTvaYqaTvaTvaTvaTvaTvaTvaTvaTvaTvaZsaTvaYvaTvaTvaTvaTvaTvaTvaTvaZtaTvaYqaYDaOsaOsaOsaOsaOsaZuaSgaMWaMWaPJaGLaGLaGLaGLaGLaGLaGLaGLaGLaafatYdqAdqzaYGdqzaYGatYaafaZvagQagQaZvaafaZvagQagQaZvaafaZvagQagQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYHaYHaYHaYHaYHaYHaYHaYHaYHaYHaYHaSiaSjaSkavTaZwaZxaZyaZyaZzaZyaZyaZyaZAaLRaLRaLRaLRaZBaTJaVfaZCaZDaZEaTKaZFaZGaZHaLUaLUaLUaLUaZIaLUaVqaVraVsaZJaWBaXMaZKaZLaVuaWDaVuaZMaXObfIaZNaZOaVuaZPaGdaZQaWHaZRaZSaZTaZUaZcaZcaZVaZWaVDaZXaZYaZZaZhbaaaZhaYababbacaZjbadbaeaYhaYhaYhbafbagaXebahbaibajaGdaYpaYqaTvaTvaTvaTvaTvaTvaTvaTvaTvaTvbakbalaTvaTvbambanaTvbakbaobapaTvaTvaYqbaqbarbarbarbarbarbarbasaTvaZsaTvaYvaTvbataTvbakaTvbauaTvbavaTvaYqaYDaOsaOsaOsaOsbawaXzbaxaafaaaaafaGLaGLaGLaGLaGLaGLaGLaGLaGLaafdqKdqMdqzaYGdqzdqLdqEaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaagQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYHaYHaYHaYHaYHaYHaYHaYHaYHaYHaYHavSarVavSatPbayaZybazbaAbaBbaBbaCbaDbaEbaFbaFbaFbaFbaGbaHbaIbaIbaJbaKbaIbaLbaLbaMbaLbaNbaOaRkbaPbaObaQbaRbaSbaTbaUbaUbaVbaWbaXbaYbaZbbaaXObfIaZNbbbbbcaZPaGdbbdaWHaZcbbebbfbbgbbhaZcbbiaVDaVDaVFbbjbbkbblbbmbbnbbkbboaVFaZjbbpbbqbbrbbsbbtbbubbvbbwbbxbbyaGdbbzbbAbbBbbCbbCbbCbbCbbCbbDbbAbbEbbEbbAbbFbbGbbFbbFbbHbbIbbJbbJbbJbbJbbKbbJbbJbbLbbMbbNbbObbObbMbbNbbPbarbbQbarbbRbarbbSbbTbbUbbUbbUbarbbVbarbbWbbXbbYbbZbbZbcaaLNbcbbccaafaafaafaGLaGLaGLaGLaGLaGLaGLaGLaGLaafatYdqJdqzaYGaYGaYGatYaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaZvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYHaYHaYHaYHaYHaYHaYHaYHaYHaYHaYHaUVaUWaSkavTbcdaZybceaZybcfbcgaZyaZyaZyaNdbchaSKaSKbciaTKaVfbcjaXFbckaTKbclbcmaRsaRsbcnbcobcpbcqbcrbcsbctbcubcvbcwbcvbcxbcybczbcAbcBbfJaXObfIbcDbcEbcFaZPaGdbcGaWHbcHaZcbcIbcJaZcaZcbcKaVDaVDaVFbcLbcMbcNbcObcPbcQbcRaVFaZjbcSbcTbcUbcUbcVbcWaVKbcXbcXbcYaGdaGdbcZbdabdabdbbdbbdbbdbbdbbbAbdabdabbAbdcbddbdebbFbdfbdgbdhbdibdjbdkbdkbdlbdmbdnbdobdpbdpbdpbdpbdqbbTbdrbdsbdrbdtbdrbbTbbTbdubdvbbUbdwbdxbdybbUbbUbdzbdAbdBbdzbdzbdCbccaafaaaaafaGLaGLaGLaGLaGLaGLaGLaGLaGLaafdqGdqDdqEdqHdqEdqDdqIaafaafbdDbdDbdDbdDbdDbdDbdDbdDaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYHaYHaYHaYHaYHaYHaYHaYHaYHaYHaaaaaaawXaWjatMbdEaZybceaZybdFbdGbdHbdIaZybdJaNdbdKaNdbdLaTKaTKaTKaTKaTKaTKbdMbdNbdOaNdbdPaVsbdQaVsbdRaVsaVsaVsaVsaVsbdSbdRaVsbfGbfHbdVbdWaXObfIaZNbdXbbcaZPaGdaUhaWHbdYbdZbeabebbbhbecaZVaVDbedbeebefbegaWQbehaWQbeibejbekbelbembenbeobepbeqberaVKbesbcXbetbeubeubevbewbewbdbbexbdbbeybeybbAbdabezbbAbeAbeBbeCbbFbeDbeEbbJbeFbdkbeFbdkbeFbeGbdnbeHbdpbeIbdpbdpbeJbbTbeKbeLbeMbeNbeKbeObbTbePbeQbeRbeSbeTbeSbeUbbUbeVbeWbeXbeYbdzbdCbccaafaaaaafaGLaGLaGLaGLaGLaGLaGLaGLaGLaafbeZbfabfbbfcbfdbfebdDbdDbdDbdDbffbfgbfhbfibfjbfhbdDaafaaaaaaaZvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawVaqmaXAaxTaUWaPLaPLaPLaPLbfkavTatPatPaZydqTbfmbfnbdHbfobfpbfqbfrbfrbfrbfrbfsbftbftbftbcsbcsbcsbfubfvbfvbfvbfwaVsbfxbfybfzbfAbfBbfCbfDbfCbfCbfEbfFbdTbfLdqNdqOdqPbfKbfMbaXbaXbfNbfObfPbfQbfRbfRbfRbfRbfRbfSbfTbfUbfQbekbekbekbekbfVbekbekbekbekbfWaYgbfXaVKaZjbfYaVKaVKbcXbcXbfZaGdaGdbgabgbbgbbgcbdbbdbbdbbgdbbAbdabdabbAbgebeBbgfbbFbggbeEbbJbeFbdkbeFbdkbeFbghbdnbgibgjbgkbgkbgkbgkbglbgmbgnbgobgpbgqbgrbglbgsbgtbgubgvbgwbeSbgxbbUbgybeWbgzbgAbdzbdCbccbccaafaafajmaGLaGLaGLaGLaGLaGLaGLajmaafbgBbgCbgCbgDbgCbfebgEbgFbgEbdDbgGbgHbgIbgIbgIbgIbdDaafaaaaaaagQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgJbgKarVavSatJatJatMatPatPaZybiybgMbdHbgNaZyaZyaZyaLRbgObgPbgQbgRbgQbgQbgQbgRbgQaLRaLRaVsaVsaVsbgSaVsbgTbfCbgUbfCbfCbfCbgVbgWbgXbgXbgYbgZbhabhbbhbbhbbhcbhdbhebhfbhgbhhbhibhjbhkbhkbhlbhmbhnbhobhpbhobhqbhrbhsbhtbhubhvbhwbhtbhxbhrbhybhzbhAbhBbhCbhDbhEbhFbhFbhGbfZaGdaGdbhHbhIbhIbdbbhJbdabhKbdbbhLbdbbhMbbAbhNbhObhPbbFbhQbeEbbJbeFbdkbeFbdkbeFbeGbdnbhRbhSbhTbhUbdpbhVbhWbhXbhYbhYbhZbiabibbicbidbiebifbigbihbeSbiibbUbijbikbgzbilbimbdCbinbccaaaaafajmajmajmajmajmajmajmajmajmaafbiobgCbipbiqbgCbfebirbgEbisbdDbitbgHbiubivbgIbiwbdDaafaaaaaaagQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaabgJarVarVavSauJauJbixauJauJaZydqRdqSdqQbdHaZyaaaaaaaaaaafaafbizbizbizbizbizbizbizaaaaaabiAbiBbiCbiDbiEbiEbiEbiEbiFbfCbiGaVsbiHbfCbfCbfCbiIbiJbiKbiLbiMbiNbfHaVuaVubiObiPbiQbiRbiSbiSbiTbiSbiUbiVbiWbiXabTbiYbiZbhtbjabhvbjabhtbjbbiYbhybjcbjdbjebjfbjgbjhbiSbiSbjibjjaGdbjkbjlbdabdabdbbjmbdabjnbdbbdabdabjobbAbbAbbAbbAbbAbjpbjqbbJbeFbjrbdkbdkbdkbjsbdnbjtbdpbjubjvbdpbdpbbTbjwbjxbjybhZbiabjzbbTbjAbiebjBbjCbeSbeSbjDbbUbjEbjFbjGbjEbdzbdCbjHbjIaaaaafaafaafaafaafaafaafaafaafaafaafbjJbfdbfcbjJbjJbfebjKbjLbjMbjNbgIbgHbjObjPbgIbjQbdDbdDaaaaaaaZvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauIavSavSbjRbjSawVaqmbjTbjSaZybKUbVcbjVbcgaZyaaaaaaaaaaaaaaabizbizbizbizbizbizbizaaaaaabjXbjYbfCbfCbfCbfCbfCbfCbjZbkabkbbkcbkdbfCbfCbfCbkebkfbjXbkgbfCbkhbkibkjbkkaZPbiPaGdbklbklbklbklbklbkmbknbkobklbkpbkqbkrbksbktbkubktbkvbkwbkxbkybkzbkAbkBbkBbkBbkCbkBbkBbkCbkDaGdaGdbhHbkEbkEbdbbkFbkGbkFbdbbkHbkIbkJbbAbkKbkKbkKbbAbkLbkMbbJbbJbbJbbJbbJbbJbkNbdnbkObkPbkQbkRbkSbkSbbTbkTbkUbbTbkVbkWbkXbbTbkYbkZblablbblcblcbldbleblfblgblhblfbdzblibljblkaafaafaafaaaaaaaaaaaaaaaaaaaaaaaeaafbfdbllblmblnblobfeblpbdDblqbdDblrbgHblsbltbgIbgIblubdDaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabizbizbizbizbizbizbizblwblxblyblzbfCbfCbfCbfCbfCbfCbjZbkablAbjXblBbfCbfCbfCbfCbfCblCblDbfCbkhbfCblEblFaZPbiPaTnbklblGblHblGblIblJblKblLbklabTblMblNbhtbktblObktbhtblPblQbhybkzblRblSblTblUblVblWblXblYblZbmabmabmbbmcbmcbmdbmebdabmfbdbbmgbmhbmibbAbmjbmjbmkbmlbmmbkMbdnbmnbmobmpbmqbdnbmrbdnbmsbmtbmubmvbdpbdpbmwbmxbdpbmybmzbmAbmBbmCbmDbmEbmFblebmGbmHbmIbmIbmJbmKbmLbmMbmNbmObmPbmQbmRbmRbmRbmRbmSbmTbmUbmVbmWbmXbmXbmXbmXbmYbmZbmZbnabnbbncbndbnebnfbngbgHbgIbgIbnhbgIbnibdDaaaaaaaZvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvblvblvblvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabizbizbizbizbizbizbizbnjbnkbnjbnlbnmbfCbfCbfCbfCbfCbjZbkabnnbjXbnobfCbfCbfCbfCbnpbnqbnrbfCbkhbfCbfCbgVaGdbiPaHsbknbnsbntbnsbnsbnsbnsbnubklabTblQblQbnvbnwbnxbhtbnybnzbnAbnBbkzbnCbnDbnEbnEbnDbnDbnFbkCbnGaGdaGdbhHbnHbnHbdbbhJbdabjnbdbbnIbdbbdbbnJbmjbnKbnLbnMbnNbnObdnbnPbnQbnRbnSbnTbnUbnVbnWbnXbdpbnYbdpbdpbdpbmxbnZboabobbocbodboebofbogbohboibojbokbolbombeWbeWbgzbeWbonboobopboqborboqboqbosbotboubovbovbovbowboxbovboybozboAboAboBbovbovbovboCboDboEboFboEboGboHboEboIbdDaaaaaaagQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvaaaaaaaaaaaaaaaaaeaaaaaaaaabizbizbizbizbizbizbizboJboKboJboLboMbfCbfCbfCbfCbfCbjZbkaboNblFboObfCbfCbfCbfCboPbkcboQbfCboRboSboTboUboVboWboXboYboZboZboZbpabpbboZbpcbpdbpebpfbpgbphbpiblObpibnzbpjbpkbpkbkzbplbpmbpnbpobppbnDbpqbprbpsaGdaGdbptbdabdabpubdbbpvbpwbpxbpybpzbpAbbAbpBbpCbpDbbAbpEbpFbpGbpHbnQbpIbpJbpKbpLbgkbpMbpNbgkbpObgkbgkbgkbpPbpQbpRbpSbpTbpUbpRbpVbpWbpXbpYbpZbqabqbbqcbqcbqdbqebqcbqfbqgbqhbqibqjbqkbqhbqlbqmbqnbqobqpbqobqqbqobqpbqobqrbqobqpbqobqsbqobqpbqtbqubqvbqwbqxbqybqzbqAbdDbdDaaaaaaagQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -9127,26 +9134,26 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvblvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabizbizbizbizbizbizbizbumbunbuobupbuqblxblxblxblxburaVsaVsaVsaVsbusaVsbutbuubuvbuwbuxbuybuzbuAbuBbuvbuvbuCbuDbuDbklbklbklbuEbuFbuGbuGbuGbuHbuIbuJbuKbuIbuLbuMbuNbuObuPbuPbuPbuQbuRbkBbkBbuSbuTbuUbkBbkCbuVbuDbuDbqZbuWbuXbuYbuZbvabvbbdbbbAbvcbtMbsnbtMbsqbsqbvdbvebvfbvgbvhbvibvjbvkbvlbsybnXbsybvmbvnbvobvpbvqbtTbvrbvsbtYbtZbvtbvubvvbvwbvxbvybvzbvAbvBbvCbvDbvEbvFbvFbvGbvFbvHbvIbvJbrEaafaafblkbsOblkaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaagQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabizbizbizbizbizbizbizaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvKbvLbvMbvNbvObvPbvQbvRbvSbvTbvUbvVbvWbvXbuvbvYbvZbvZbvZbwabwbbvZbwcbvZbvZbvZbvZbwdbwebwbbwfbwgbwhbwibwjbwkbvZbwlbwmbvZbvZbvZbwnbvZbvZbvZbwobwpbvZbvZbwqbwrbwsbuYbuZbuZbvbbwtbbAbtMbtMbtMbtMbtMbwubsrbwvbkMbwwbwxbwybwzbwAbwBbsybnXbsybwCbwDbwEbwFbwGbvmbwHbwIbwJbwKbwLbwMbwMbwMbwNbwObugbsHbwPbrDbrDbwQbwRbwSbwSbwSbwTbwSbwUbrEaafaafblkbsOblkaafaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaagQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDxaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvblvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabizbizbizbizbizbizbizaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvKbwVbwWbwWbwXbwYbwZbvRbvRbxabxbbxcbxdbxebuvbxfbxgbvZbvZbvZbwbbvZbvZbvZbvZbvZbvZbvZbwebwbbvZbxhbxibxjbvZbvZbvZbvZbwmbvZbvZbvZbwnbvZbvZbxkbxlbwpbxmbxnbxobxpbxqbdbbxrbxsbdbbdbbbAbxtbxubxvbxwbxxbxybsrbwvbxzbtQbxAbxBbxCbxDbxEbxFbxGbsybwCbwDbxHbxIbxJbxKbxLbxMbxNbxObxPbxQbxRbxSbxTbxUbugbxVbxWbxXbxYbxZbyabybbycbydbyebyfbygbrEaafaafblkbsOblkaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaZvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabizbizbizbizbizaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvKbvKbvKbvKbwXbwYbyhbyibvRbyjbykbylbymbynbuvbvYbvYbvYbvYbvYbyobypbypbypbypbypbypbyqbyrbysbytbyubyubyubyubyubyvbyubywbyxbyubyubyybvZbyzbyAbyBbyCbvZbvZbqZbbAbyDbbAbbAbbAbbAbbAbbAbsrbyEbsrbsrbsrbsrbsrbyFbyGbtQbyHbyIbyJbyKbyLbsybnXbsybyMbwDbyNbyNbyObtZbugbyPbyQbtZbyRbySbyTbudbuebufbugbyUbyVbyWbrDbyXbyYbyZbzabzbbzcbyfbygbrEaafaafbzdbsObzdaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaabvKbzebwXbwYbuvbuvbzfbzgbzhbzhbzibuvbuvbzjbzkbzlbzmbzmbznbzobzpbzpbzqbzrbzsbzpbzpbztbzubuDbuDbuDbzvbzwbzwbzwbzxbzybzwbzwbzwbzwbzzbzAbyGbzBbzCbzDbbHbzEbzFbzGbzHbzHbzGbzIbzJbzKbzLbzMbzzbzNbzObzPbwvbzQbtQbzRbzSbyKbzTbvlbsybzUbzVbzWbzXbzYbzZbAabtZbAbbAcbAdbAebAfbAdbAgbAhbAhbAhbAibAjbAkbAlbAlbAlbAlbAlbAlbAmbAnbAmbAmbAmbAmaafbccbAobccaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbApbAqbAqbArbAsbAsbAtbAtbAtbAtbAtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaabvKbwWbwXbAubAvbAwbAxbAybAzbAAbABbuvaaaaaaaaabACbADbAEbAFaaaaafaaabAGbAHbAIaaaaafaaabAJbAKbvZbvZbzCbzwbALbAMbANbAObAPbAQbARbASbATbAUbAVbAWbAWbAWbAXbAYbAZbBabBbbBcbBdbBebBfbBgbBbbBbbBbbBhbBibBjbwvbkMbtQbtPbBkbyKbBlbBmbsybdpbdpbBnbBobBpbBqbBrbtZbBsbBtbBubBubBvbBwbwMbBxbwMbwMbBybsHbBzbAlbBAbBBbBCbBDbBEbBFbBGbBFbBHbBIbBJaafbccbsObjIaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafbBKbBLbBMbBLbAsbAtbAtbBNbBObBNbAtbAtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafbvKbvKbvKbBPbBQbBRbuvbBSbBTbBUbBVbBWbuvaaaaaaaaabACbADbBXbBYaafbBZbBZbBZbCabBZbBZbBZaafbCbbAKbvZbvZbzBbzwbCcbCdbCebCfbCgbChbzwbzwbCibCjbCkbClbCmbCnbzGbCobCpbkMbzzbzzbzzbzzbCqbCrbzHbzHbCsbCtbzNbCubwvbpFbCvbCwbCxbCybCzbwBbsybdpbCAbtTbtTbtTbtTbtTbtZbCBbCCbyTbudbtZbCDbCEbugbCFbCGbugbCHbCIbCJbCKbCLbCMbCNbCLbCObCPbCQbCRbCRbBJaafbccbsOblkaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagbCSbBLbBLbCTbAtbAtbBNbBNbCUbBNbBNbAtbAtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvblvblvblvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaabCVbCWbCXbCWbCYaaaaaaaaaaaabvKbADbCZbDabDbbDcbuvbDdbDebuvbDfbDgbuvbDhbDibDibDjbADbDkbBYaaabBZbDlbDmbDnbDobDpbBZaaabCbbAKbvZbvZbzDbzwbDqbDrbDsbDtbDubDvbDwbBdbDxbDybDzbDAbDBbBbbBdbDCbDDbDEbzzaafaafbDFbDGbzzbzzbzzbzzbDHbDIbDJbDKbDLbtQbtPbtPbtPbtPbtPbDMbdpbDNbDObDPbDQbDQbDRbugbDSbCCbDTbDUbtZbDVbDVbDVbDVbDVbDVbsHbDWbDXbDYbDZbEabEbbEcbBFbEdbBFbEebCRbBJaafbccbsObzdaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabEfbAtbCSbAtbAtbBNbBNbBNbBNbBNbBNbBNbAtbAtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabEgbEhbEibEibEgbEjbDibEkbvKbvKbElbEmbEmbEnbEobEpbEqbErbEsbEtbEubEvbEwbExbEybEzbEAbEBbECaafbBZbEDbEEbDnbDobEFbBZaafbCbbAKbvZbEGbzvbzwbzwbEHbzwbzwbEIbzwbzwbzNbEJbEKbELbEMbzzbzzbENbEObEPbEQbzzaafaafbERaafaafbESbETbESbzNbzNbEUbEVbEWbEXbEYbEZbFabFbbdnbFcbdpbdpbDObFdbFebFebFfbugbFgbFhbyTbFibtZbFjbFkbFlbFmbFnbFobFpbFqbFrbFsbFtbFubFvbFwbFxbFybAmbAmbAmbAmbAmbccbFzbccbAmbAmbAmbAmbAmaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbAsbAtbFAbFBbFBbBNbBNbBNbBNbBNbBNbBNbBNbAtbAtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabCXbFCbFCbEibCXbFDbFEbFFbvKbFGbADbADbADbADbADbFHbADbFIbFJbFKbFLbFMbFNbFObFPbFQbFRbDkbFSaaabBZbFTbEEbFUbDobFVbBZaaabCbbFWbFXbFYbFZbGabGbbGcbzHbzHbzHbzHbzHbzHbGdbzHbGebGfbzzaaaaaabhybGgaaaaaaaaaaaabERaaaaaabzzbzzbzzbzzbzzbzzbzzbEWbGhbGibgkbGjbGkbGlbGmbGnbdpbGobGpbGqbGrbGsbugbGtbGubGtbtZbtZbGvbGwbGxbGybGybGzbGAbgzbGBbGCbGDbGEbGFbGFbGGbGGbGHbGIbGGbGJbGKbGLbGMbGNbGObGPbGQbGRbGSaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabAtbAtbGTbBNbBNbBNbBNbBNbBNbBNbBNbBNbBNbBNbAtbAtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabEgbEibEibEibGUbGVbADbADbGWbADbADbADbADbFHbADbADbADbGXbvKbvKbvKbvKbvKbGYbGZbHabHbbHcbHdbHebHfbHgbHhbHibHjbHkbHfbHebHlbHmbHnbHobHpbHqbHpbHpbHrbHsbHtbHubzMbzNbzNbHvbHwbHxbAWbHybHybHzbHAbHBbHBbHBbHBbHCbHBbHBbHBbHBbHBbHBbHBbHBbHDbHEbHFbHGbdpbdpbHHbnTbdpbHIbHJbxEbHKbHLbHKbHMbHNbGpbGpbHObDVbHPbHQbHRbHSbHTbHUbHVbHWbgzbHXbHYbHYbHYbHYbHYbCLbCLbCLbCLbCLbHZbIabIbbIcbIdbGObCLbIebGRbIfaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbAtbBNbBNbBNbBNbBNbBNbIgbBNbIhbBNbBNbBNbBNbBNbAtbAtaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabCXbFCbFCbFCbCXbIibIjbIkbvKbIlbADbImbADbADbADbADbADbInbvKbIobIpbIpbIqbIrbIsbItbIubIvbBZaaabBZbIwbBZbBZbBZbBZbBZaaabIxbIybIzbIAbHsbIBbICbIDbIEbIFbIFbIFbIFbIFbIFbIGbIHbIFbIFbIIbIJbIKbILbILbILbILbIMbERaaaaaaaaaaaaaaaaafaafaafbjIbINbIObIPbIQbIRbISbITbIRbIUbIQbIVbIWbIXbIYbIZbJabGpbJbbJcbDVbJdbGybGybJebJfbJgbJhbJibJjbAlbJkbJkbJkbJlbJmbJnbJobJpbJqbJrbAmbAmbccbFzbccbAmbJsbJtbJubAmaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaafaaaaaabAtbJvbJvbJvbJvbJvbJvbJwbBNbJxbJvbIhbBNbBNbBNbBNbAtaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabEgbJybJzbJAbEgbJBbDibEkbvKbvKbJCbJDbJEbJFbJGbJHbJHbJHbvKbJIbJJbJKbJLbJMbJNbJObJPbJLbBZaaaaafbJQbJRbJSbJTbJUbJVbJVbJWbJXbJYbJZbHsbIBbICbKabKbbKcbKdbKebKfbKgbKhbKibKjbKkbKlbKmbKnbKobKpbKqbKrbKsbKtbKuaaaaaaaaaaaeaaaaafaaaaaablkbKvbEXbKwbKxbdpbKybKzbdpbKAbKxbGobGpbKBbKCbKDbKEbKFbGpbHObDVbKGbKHbGybKIbKJbKKbDVbGAbKLbKMbKMbKMbKMbKMbKMbKMbKMbKMbKMbKNbKObKPbKQbKRbKSbAmbKTbKUbKVbKWaagaagaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabKXbBLbBLbBLbBLbBLbBLbBLbKYbBObBNbBNbBNbBNbKZbBObAtaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabLabCWbLbbCWbLcaaaaafaaaaafbvKbvKbLdbLebLebLebLebLfbvKbvKbLgbLhbLibJLbLjbLkbLlbLmbLnbLobLpbLpbLqbLrbLsbLpbLtbLubLubLvbLwbLxbLybLzbLAbLBbLCbLDbKcbLEbLFbLGbLGbLFbLHbKjbLIbLJbLKbLHbLGbLLbLGbLMbLNbLOaafbLPbLPbLPbLPbLPaafaaaaaablkbKvbEXbLQbLRbdpbdpbLSbdpbKAbLTbDObLUbLVbLVbLWbKEbGpbLXbHObDVbLYbLZbMabMbbMcbMdbLYbMebMfbMgbMhbMibMjbMkbMlbMmbMnbMobMpbMqbKObjHbsObccbccbAmbAmbAmbAmbAmaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabAtbFBbFBbFBbFBbFBbFBbMrbBNbFAbFBbMsbBNbBNbBNbBNbAtaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaaaaaaaaaaafaafaaaaafaaaaaaaaaaafbJLbLjbMtbJLbJPbJLbBZbBZbBZbJTbMubMvbJTbJTbMwbMxbMybMzbMAbMBbMCbMDbMEbLGbMFbMGbLGbLGbLGbLGbMHbMIbMJbMKbLJbMLbLGbMMbMNbMObMPbMQbMRbMSbMTbMUbMVbMWbLPaafaafaafblkbKvbEXbMXbMYbMZbNabdnbdpbKAbKxbNbbNbbNbbNbbNbbNcbNdbNbbNbbNbbLYbNebNfbNgbNhbNibLYbGAbNjbNkbNlbNmbNnbNmbNmbNobNpbMpbNpbMpbKObNqbsObNraafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbAtbBNbBNbBNbBNbBNbBNbIgbBNbMsbBNbBNbBNbBNbBNbAtbAtaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaafaaaaafaaaaaaaaaaafbJLbLjbNsbNtbNubNtbNtbNvbznbNwbNxbNybNzbNAbMwbNBbNCbvZbMAbNDbNEbNFbNGbLGbNHbKcbNIbLGbLGbLGbNJbLGbLGbLGbNKbKmbNLbNMbNNbNObNPbNQbNRaafbNSbNTbMWbNUbLPaafaaaaaabNVbKvbEXbdnbdnbdnbdnbdnbyLbNWbNXbNbbNYbNZbOabObbOcbOdbOebOfbOgbLYbOhbOibOjbOibOhbLYbGAbvBbOkbOlbOmbNmbNmbOnbNkbOobOpbOpbOqbKObKObsObOraafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabAtbAtbGTbBNbBNbBNbBNbBNbBNbBNbBNbBNbBNbBNbAtbAtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaafaafaafaafaafbJLbLjbOsbOtbOubOvbOvbOwbOxbOxbOybOzbIpbIpbOAbOBbNCbOCbODbOEbHsbHsbNGbLGbOFbKcbOGbOHbOIbLGbNJbOJbOKbOKbOLbOMbMMbONbOObOPbOQbORbOSbOTbMTbOUbMWbMWbLPaafaaaaaabccbKvbOVbOWbOXbOYbOZbPabPbbPcbPdbPebPfbPgbPhbPibPjbPkbPlbPmbPnbLYbPobPpbPqbPrbPsbLYbPtbxWbMgbPubPvbPwbPwbPwbPxbPwbPybPzbPAbPBbKObsObccbccaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbAsbAtbJxbJvbJvbBNbBNbBNbBNbBNbBNbBNbBNbAtbAtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaafaafaafaaaaaaaaabPCbLjbPDbJLbJLbJLbOAbOAbOAbOAbOAbPEbOAbOAbOAbPFbPGbvZbMAbvZbPHbPIbNGbKsbPJbPKbHsbHsbHsbHsbPLbPMbPNbLGbPObPPbPQbPRbPSbPTbPUbPTbPVaafbLPbLPbLPbLPbLPaafaafaafbjIbPWbpGbIQbPXbPYbdpbPZbmxbQabQbbQcbQdbQebQfbQgbQhbQibQjbQibQkbLYbQlbQmbQnbQobQlbLYbQpbQqbNkbQrbQsbQtbQubQtbQvbQtbQwbQxbQxbQybQzbQAbQBbccbccbccaaaaaaaafaaaaaaaafagQagQagQaaaaaaaaaaafaaaaaaaafaaaaaaaafaaaaaabEfbAtbCSbAtbAtbBNbBNbBNbBNbBNbBNbBNbAtbAtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaafaaaaaaaaabQCbLjbPDbJLaafaaabOAbQDbQEbQFbQGbQHbQIbQJbOAbOAbQKbQLbJYbvZbPHbQMbQNbMDbQObQPbQQbQRbQSbHsbQTbPMbLGbQUbLNbQVbQWbQXbQYbQZbRabRbbRcbMSbMTbRdbRebRebLPaafaaaaaablkbKvbdnbRfbEXbdnbdnbdnbRgbRhbRibRjbRkbRlbRmbRnbRobRpbRqbRrbRsbLYbLYbLYbLYbLYbLYbLYbRtbRubNkbRvbRwbRxbRybRzbRAbRBbRCbRDbREbRFbKObRGbRHbRIbRJbRKbRLbRMbRMbRMbRMbRMbRMbRMbRMbRMbRMbRMbRMbRMbRMbRMbRMbRMbRMbRMbRNbRObRPbRPbRQbAtbAtbBNbBNbRRbBNbBNbAtbAtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaabJLbJLbJLbJLbJLbLjbRSbRTbRUbRVbRWbRXbRYbRZbSabSbbQJbQJbScbSdbSebvZbMAbvZbSfbSgbLNbLNbShbSibSjbLNbSkbSlbSmbSnbLNbSobSpbSqbSrbSsbLGbStbSubSvbNRaafbNSbSwbSxbSybLPaafaaaaaablkbKvbdnbSzbSAbSBbSCbSDbdpbRhbSEbNbbSFbSGbQfbSHbSIbSJbSKbSLbRsbSMbSNbSObSPbSQbSRbSSbSTbSUbNkbSVbSWbSXbSYbSZbTabTbbTcbSYbTdbSVbKObTebTfbccbTgbccaaaaaabThaaaaaaaafagQagQagQaaaaaaaaaaafaaaaaaaafaaaaaaaafaafaafbTibTjbBLbCTbAsbAtbAtbBNbBObBNbAtbAtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaaabPCbTkbTlbTmbTnbTobTpbTnbTqbTrbTsbTtbQJbQJbQJbQJbQJbQJbScbSdbSebvZbMAbvZbTubTvbOKbTwbOKbTxbTybTzbTAbTBbTCbTDbTEbTFbTGbTHbTIbTJbLGbStbTKbTLbTMbOTbMTbTNbRebRebLPaafaafaafblkbKvbdnbTObTPbTQbTRbTSbdpbRhbTTbNbbNbbNbbNcbNbbNbbTUbNbbNbbRsbTVbTWbTVbTXbTYbTZbUabUabUbbNkbNkbKObUcbUdbUdbUdbUebUdbUfbKObKObKObUgbUhbUibUjaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbUkbAqbAqbArbAsbAsbAtbAtbAtbAtbAtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaafaaabQCbUlbUmbUnbIpbIpbJLbLgbUobLibOAbUpbQJbQFbQFbQFbQJbUqbOAbOAbQKbUrbMAbvZbTubUsbUtbHsbUubQPbUvbUwbUxbHsbUybUzbHsbHsbHsbUAbLGbUBbLGbStbSubUCbNRaafbLPbLPbLPbLPbLPaafaaaaaabNVbKvbdnbdnbdnbdnbdnbdnbUDbUEbdpbsDbUFbUGbUHbUIbUJbUKbULbUMbRsbUNbTVbUObTXbUPbUQbURbURbUSbUTbUUbKObUVbUWbUdbUXbUYbUWbUdbKObUZbVabVbbVcbccaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaabJLbJLbJLbJLbIpbUnbIpbIpbJLaaabVdaaabOAbVebQJbRZbSabSbbQJbQJbQJbQJbVfbvZbMAbVgbzvbHsbHsbHsbVhbVibVjbVkbVlbKcbNJbPMbVmbVnbVobTHbVpbTHbVqbVrbVsbVtbRcbMSbMTbVubVvbVwbLPaafaaaaaabccbVxbVybVybVybVybVzbdnbVAbRhbdpbdpbVBbQibVCbQibQibVDbQibVEbRsbVFbVGbVHbVIbVJbVGbVKbVLbVMbVNbVNbKObUdbVObUdbUdbUdbVObUdbKObTebccbVPbVQbccaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabizbizbizbizbizaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvKbvKbvKbvKbwXbwYbyhbyibvRbyjbykbylbymbynbuvbvYbvYbvYbvYbvYbyobypbypbypbypbypbypbyqbyrbysbytbyubyubyubyubyubyvbyubywbyxbyubyubyybvZbyzbyAbyBbyCbvZbvZbqZbbAbyDbbAbbAbbAbbAbbAbbAbsrbyEbsrbsrbsrbsrbsrbyFbyGbtQbyHbyIbyJbyKbyLbsybnXbsybyMbwDbyNbyNbyObtZbugbyPbyQbtZbyRbySbyTbudbuebufbugbyUbyVbyWbrDbyXbyYbyZbzabzbbzcbyfbygbrEaafaafbzdbsObzdaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaZvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaabvKbzebwXbwYbuvbuvbzfbzgbzhbzhbzibuvbuvbzjbzkbzlbzmbzmbznbzobzpbzpbzqbzrbzsbzpbzpbztbzubuDbuDbuDbzvbzwbzwbzwbzxbzybzwbzwbzwbzwbzzbzAbyGbzBbzCbzDbbHbzEbzFbzGbzHbzHbzGbzIbzJbzKbzLbzMbzzbzNbzObzPbwvbzQbtQbzRbzSbyKbzTbvlbsybzUbzVbzWbzXbzYbzZbAabtZbAbbAcbAdbAebAfbAdbAgbAhbAhbAhbAibAjbAkbAlbAlbAlbAlbAlbAlbAmbAnbAmbAmbAmbAmaafbccbAobccaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaabvKbwWbwXbAubAvbAwbAxbAybAzbAAbABbuvaaaaaaaaabACbADbAEbAFaaaaafaaabAGbAHbAIaaaaafaaabAJbAKbvZbvZbzCbzwbALbAMbANbAObAPbAQbARbASbATbAUbAVbAWbAWbAWbAXbAYbAZbBabBbbBcbBdbBebBfbBgbBbbBbbBbbBhbBibBjbwvbkMbtQbtPbBkbyKbBlbBmbsybdpbdpbBnbBobBpbBqbBrbtZbBsbBtbBubBubBvbBwbwMbBxbwMbwMbBybsHbBzbAlbBAbBBbBCbBDbBEbBFbBGbBFbBHbBIbBJaafbccbsObjIaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbApbAqbAqbArbAsbAsbAtbAtbAtbAtbAtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafbvKbvKbvKbBPbBQbBRbuvbBSbBTbBUbBVbBWbuvaaaaaaaaabACbADbBXbBYaafbBZbBZbBZbCabBZbBZbBZaafbCbbAKbvZbvZbzBbzwbCcbCdbCebCfbCgbChbzwbzwbCibCjbCkbClbCmbCnbzGbCobCpbkMbzzbzzbzzbzzbCqbCrbzHbzHbCsbCtbzNbCubwvbpFbCvbCwbCxbCybCzbwBbsybdpbCAbtTbtTbtTbtTbtTbtZbCBbCCbyTbudbtZbCDbCEbugbCFbCGbugbCHbCIbCJbCKbCLbCMbCNbCLbCObCPbCQbCRbCRbBJaafbccbsOblkaagaagaagaagaagaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafbBKbBLbBMbBLbAsbAtbAtbBNbBObBNbAtbAtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvblvblvblvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaabCVbCWbCXbCWbCYaaaaaaaaaaaabvKbADbCZbDabDbbDcbuvbDdbDebuvbDfbDgbuvbDhbDibDibDjbADbDkbBYaaabBZbDlbDmbDnbDobDpbBZaaabCbbAKbvZbvZbzDbzwbDqbDrbDsbDtbDubDvbDwbBdbDxbDybDzbDAbDBbBbbBdbDCbDDbDEbzzaafaafbDFbDGbzzbzzbzzbzzbDHbDIbDJbDKbDLbtQbtPbtPbtPbtPbtPbDMbdpbDNbDObDPbDQbDQbDRbugbDSbCCbDTbDUbtZbDVbDVbDVbDVbDVbDVbsHbDWbDXbDYbDZbEabEbbEcbBFbEdbBFbEebCRbBJaafbccbsObzdaafaafaafaafaafaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagbCSbBLbBLbCTbAtbAtbBNbBNbCUbBNbBNbAtbAtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabEgbEhbEibEibEgbEjbDibEkbvKbvKbElbEmbEmbEnbEobEpbEqbErbEsbEtbEubEvbEwbExbEybEzbEAbEBbECaafbBZbEDbEEbDnbDobEFbBZaafbCbbAKbvZbEGbzvbzwbzwbEHbzwbzwbEIbzwbzwbzNbEJbEKbELbEMbzzbzzbENbEObEPbEQbzzaafaafbERaafaafbESbETbESbzNbzNbEUbEVbEWbEXbEYbEZbFabFbbdnbFcbdpbdpbDObFdbFebFebFfbugbFgbFhbyTbFibtZbFjbFkbFlbFmbFnbFobFpbFqbFrbFsbFtbFubFvbFwbFxbFybAmbAmbAmbAmbAmbccbFzbccbAmbAmbAmbAmbAmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabEfbAtbCSbAtbAtbBNbBNbBNbBNbBNbBNbBNbAtbAtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabCXbFCbFCbEibCXbFDbFEbFFbvKbFGbADbADbADbADbADbFHbADbFIbFJbFKbFLbFMbFNbFObFPbFQbFRbDkbFSaaabBZbFTbEEbFUbDobFVbBZaaabCbbFWbFXbFYbFZbGabGbbGcbzHbzHbzHbzHbzHbzHbGdbzHbGebGfbzzaaaaaabhybGgaaaaaaaaaaaabERaaaaaabzzbzzbzzbzzbzzbzzbzzbEWbGhbGibgkbGjbGkbGlbGmbGnbdpbGobGpbGqbGrbGsbugbGtbGubGtbtZbtZbGvbGwbGxbGybGybGzbGAbgzbGBbGCbGDbGEbGFbGFbGGbGGbGHbGIbGGbGJbGKbGLbGMbGNbGObGQbGPbJsbGSaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbAsbAtbFAbFBbFBbBNbBNbBNbBNbBNbBNbBNbBNbAtbAtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabEgbEibEibEibGUbGVbADbADbGWbADbADbADbADbFHbADbADbADbGXbvKbvKbvKbvKbvKbGYbGZbHabHbbHcbHdbHebHfbHgbHhbHibHjbHkbHfbHebHlbHmbHnbHobHpbHqbHpbHpbHrbHsbHtbHubzMbzNbzNbHvbHwbHxbAWbHybHybHzbHAbHBbHBbHBbHBbHCbHBbHBbHBbHBbHBbHBbHBbHBbHDbHEbHFbHGbdpbdpbHHbnTbdpbHIbHJbxEbHKbHLbHKbHMbHNbGpbGpbHObDVbHPbHQbHRbHSbHTbHUbHVbHWbgzbHXbHYbHYbHYbHYbHYbCLbCLbCLbCLbCLbHZbIabIbbIcbIdbGObCLbIebGRbIfaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabAtbAtbGTbBNbBNbBNbBNbBNbBNbBNbBNbBNbBNbBNbAtbAtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabCXbFCbFCbFCbCXbIibIjbIkbvKbIlbADbImbADbADbADbADbADbInbvKbIobIpbIpbIqbIrbIsbItbIubIvbBZaaabBZbIwbBZbBZbBZbBZbBZaaabIxbIybIzbIAbHsbIBbICbIDbIEbIFbIFbIFbIFbIFbIFbIGbIHbIFbIFbIIbIJbIKbILbILbILbILbIMbERaaaaaaaaaaaaaaaaafaafaafbjIbINbIObIPbIQbIRbISbITbIRbIUbIQbIVbIWbIXbIYbIZbJabGpbJbbJcbDVbJdbGybGybJebJfbJgbJhbJibJjbAlbJkbJkbJkbJlbJmbJnbJobJpbJqbJrbAmbAmbccbFzbccbAmbjUbIebGRbIfaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbAtbBNbBNbBNbBNbBNbBNbIgbBNbIhbBNbBNbBNbBNbBNbAtbAtaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabEgbJybJzbJAbEgbJBbDibEkbvKbvKbJCbJDbJEbJFbJGbJHbJHbJHbvKbJIbJJbJKbJLbJMbJNbJObJPbJLbBZaaaaafbJQbJRbJSbJTbJUbJVbJVbJWbJXbJYbJZbHsbIBbICbKabKbbKcbKdbKebKfbKgbKhbKibKjbKkbKlbKmbKnbKobKpbKqbKrbKsbKtbKuaaaaaaaaaaaeaaaaafaaaaaablkbKvbEXbKwbKxbdpbKybKzbdpbKAbKxbGobGpbKBbKCbKDbKEbKFbGpbHObDVbKGbKHbGybKIbKJbKKbDVbGAbKLbKMbKMbKMbKMbKMbKMbKMbKMbKMbKMbKNbKObKPbKQbKRbKSbAmbflbJtbJubAmaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaafaaaaaabAtbJvbJvbJvbJvbJvbJvbJwbBNbJxbJvbIhbBNbBNbBNbBNbAtaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabLabCWbLbbCWbLcaaaaafaaaaafbvKbvKbLdbLebLebLebLebLfbvKbvKbLgbLhbLibJLbLjbLkbLlbLmbLnbLobLpbLpbLqbLrbLsbLpbLtbLubLubLvbLwbLxbLybLzbLAbLBbLCbLDbKcbLEbLFbLGbLGbLFbLHbKjbLIbLJbLKbLHbLGbLLbLGbLMbLNbLOaafbLPbLPbLPbLPbLPaafaaaaaablkbKvbEXbLQbLRbdpbdpbLSbdpbKAbLTbDObLUbLVbLVbLWbKEbGpbLXbHObDVbLYbLZbMabMbbMcbMdbLYbMebMfbMgbMhbMibMjbMkbMlbMmbMnbMobMpbMqbKObjHbsObccbccbAmbKTbgLbKVbKWaagaagaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabKXbBLbBLbBLbBLbBLbBLbBLbKYbBObBNbBNbBNbBNbKZbBObAtaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaaaaaaaaaaafaafaaaaafaaaaaaaaaaafbJLbLjbMtbJLbJPbJLbBZbBZbBZbJTbMubMvbJTbJTbMwbMxbMybMzbMAbMBbMCbMDbMEbLGbMFbMGbLGbLGbLGbLGbMHbMIbMJbMKbLJbMLbLGbMMbMNbMObMPbMQbMRbMSbMTbMUbMVbMWbLPaafaafaafblkbKvbEXbMXbMYbMZbNabdnbdpbKAbKxbNbbNbbNbbNbbNbbNcbNdbNbbNbbNbbLYbNebNfbNgbNhbNibLYbGAbNjbNkbNlbNmbNnbNmbNmbNobNpbMpbNpbMpbKObNqbsObccaaabAmbAmbjWbAmbAmaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabAtbFBbFBbFBbFBbFBbFBbMrbBNbFAbFBbMsbBNbBNbBNbBNbAtaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaaaafaaaaafaaaaaaaaaaafbJLbLjbNsbNtbNubNtbNtbNvbznbNwbNxbNybNzbNAbMwbNBbNCbvZbMAbNDbNEbNFbNGbLGbNHbKcbNIbLGbLGbLGbNJbLGbLGbLGbNKbKmbNLbNMbNNbNObNPbNQbNRaafbNSbNTbMWbNUbLPaafaaaaaabNVbKvbEXbdnbdnbdnbdnbdnbyLbNWbNXbNbbNYbNZbOabObbOcbOdbOebOfbOgbLYbOhbOibOjbOibOhbLYbGAbvBbOkbOlbOmbNmbNmbOnbNkbOobOpbOpbOqbKObKObsObNraafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbAtbBNbBNbBNbBNbBNbBNbIgbBNbMsbBNbBNbBNbBNbBNbAtbAtaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaafaafaafaafaafbJLbLjbOsbOtbOubOvbOvbOwbOxbOxbOybOzbIpbIpbOAbOBbNCbOCbODbOEbHsbHsbNGbLGbOFbKcbOGbOHbOIbLGbNJbOJbOKbOKbOLbOMbMMbONbOObOPbOQbORbOSbOTbMTbOUbMWbMWbLPaafaaaaaabccbKvbOVbOWbOXbOYbOZbPabPbbPcbPdbPebPfbPgbPhbPibPjbPkbPlbPmbPnbLYbPobPpbPqbPrbPsbLYbPtbxWbMgbPubPvbPwbPwbPwbPxbPwbPybPzbPAbPBbKObsObOraafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabAtbAtbGTbBNbBNbBNbBNbBNbBNbBNbBNbBNbBNbBNbAtbAtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaafaafaafaaaaaaaaabPCbLjbPDbJLbJLbJLbOAbOAbOAbOAbOAbPEbOAbOAbOAbPFbPGbvZbMAbvZbPHbPIbNGbKsbPJbPKbHsbHsbHsbHsbPLbPMbPNbLGbPObPPbPQbPRbPSbPTbPUbPTbPVaafbLPbLPbLPbLPbLPaafaafaafbjIbPWbpGbIQbPXbPYbdpbPZbmxbQabQbbQcbQdbQebQfbQgbQhbQibQjbQibQkbLYbQlbQmbQnbQobQlbLYbQpbQqbNkbQrbQsbQtbQubQtbQvbQtbQwbQxbQxbQybQzbQAbccbccaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbAsbAtbJxbJvbJvbBNbBNbBNbBNbBNbBNbBNbBNbAtbAtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaafaaaaaaaaabQCbLjbPDbJLaafaaabOAbQDbQEbQFbQGbQHbQIbQJbOAbOAbQKbQLbJYbvZbPHbQMbQNbMDbQObQPbQQbQRbQSbHsbQTbPMbLGbQUbLNbQVbQWbQXbQYbQZbRabRbbRcbMSbMTbRdbRebRebLPaafaaaaaablkbKvbdnbRfbEXbdnbdnbdnbRgbRhbRibRjbRkbRlbRmbRnbRobRpbRqbRrbRsbLYbLYbLYbLYbLYbLYbLYbRtbRubNkbRvbRwbRxbRybRzbRAbRBbRCbRDbREbRFbKObRGbQBbccbccbccaaaaaaaafaaaaaaaafagQagQagQaaaaaaaaaaafaaaaaaaafaaaaaaaafaaaaaabEfbAtbCSbAtbAtbBNbBNbBNbBNbBNbBNbBNbAtbAtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaabJLbJLbJLbJLbJLbLjbRSbRTbRUbRVbRWbRXbRYbRZbSabSbbQJbQJbScbSdbSebvZbMAbvZbSfbSgbLNbLNbShbSibSjbLNbSkbSlbSmbSnbLNbSobSpbSqbSrbSsbLGbStbSubSvbNRaafbNSbSwbSxbSybLPaafaaaaaablkbKvbdnbSzbSAbSBbSCbSDbdpbRhbSEbNbbSFbSGbQfbSHbSIbSJbSKbSLbRsbSMbSNbSObSPbSQbSRbSSbSTbSUbNkbSVbSWbSXbSYbSZbTabTbbTcbSYbTdbSVbKObTebRHbRIbRJbRKbRLbRMbRMbRMbRMbRMbRMbRMbRMbRMbRMbRMbRMbRMbRMbRMbRMbRMbRMbRMbRNbRObRPbRPbRQbAtbAtbBNbBNbRRbBNbBNbAtbAtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaaabPCbTkbTlbTmbTnbTobTpbTnbTqbTrbTsbTtbQJbQJbQJbQJbQJbQJbScbSdbSebvZbMAbvZbTubTvbOKbTwbOKbTxbTybTzbTAbTBbTCbTDbTEbTFbTGbTHbTIbTJbLGbStbTKbTLbTMbOTbMTbTNbRebRebLPaafaafaafblkbKvbdnbTObTPbTQbTRbTSbdpbRhbTTbNbbNbbNbbNcbNbbNbbTUbNbbNbbRsbTVbTWbTVbTXbTYbTZbUabUabUbbNkbNkbKObUcbUdbUdbUdbUebUdbUfbKObKObKObUgbTfbccbTgbccaaaaaabThaaaaaaaafagQagQagQaaaaaaaaaaafaaaaaaaafaaaaaaaafaafaafbTibTjbBLbCTbAsbAtbAtbBNbBObBNbAtbAtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaafaaabQCbUlbUmbUnbIpbIpbJLbLgbUobLibOAbUpbQJbQFbQFbQFbQJbUqbOAbOAbQKbUrbMAbvZbTubUsbUtbHsbUubQPbUvbUwbUxbHsbUybUzbHsbHsbHsbUAbLGbUBbLGbStbSubUCbNRaafbLPbLPbLPbLPbLPaafaaaaaabNVbKvbdnbdnbdnbdnbdnbdnbUDbUEbdpbsDbUFbUGbUHbUIbUJbUKbULbUMbRsbUNbTVbUObTXbUPbUQbURbURbUSbUTbUUbKObUVbUWbUdbUXbUYbUWbUdbKObUZbVabVbbUhbUibUjaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbUkbAqbAqbArbAsbAsbAtbAtbAtbAtbAtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaabJLbJLbJLbJLbIpbUnbIpbIpbJLaaabVdaaabOAbVebQJbRZbSabSbbQJbQJbQJbQJbVfbvZbMAbVgbzvbHsbHsbHsbVhbVibVjbVkbVlbKcbNJbPMbVmbVnbVobTHbVpbTHbVqbVrbVsbVtbRcbMSbMTbVubVvbVwbLPaafaaaaaabccbVxbVybVybVybVybVzbdnbVAbRhbdpbdpbVBbQibVCbQibQibVDbQibVEbRsbVFbVGbVHbVIbVJbVGbVKbVLbVMbVNbVNbKObUdbVObUdbUdbUdbVObUdbKObTebccbVPbVQbccaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaaaaaaaaaabJLbVRbVSbVTbVUbVVbVWbVXbVWaaabVdaaabOAbVYbQJbQJbQJbVZbQJbWabWbbQJbWcbWdbLxbWdbWebWfbWgbWfbWhbWibWjbMFbLGbKcbNJbPMbWkbLGbWlbWmbVpbTHbVqbStbSubWnbNRaafbNSbWobWpbWqbLPaafaafaafbccbccbWrbWsbVQbccbWtbpGbPYbWubWvbWwbUFbWxbWxbWybWxbQibWzbWAbRsbWBbVGbVGbWCbVGbVGbWDbWEbWFbWGbWHbKObKObKObKObKObKObKObKObKObTebccaafaafaafaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaeaaaaaaaaaaaabWIbIpbWJbVWbVWbWKbVWbWLbVWbVWbWMbWNbVWbVWbWObWPbWQbVWbWRbVWbVWbOAbQKbWSbMAbvZbOCbvZbSebWTbNDbMGbLHbWUbWVbMGbNJbPMbWWbWXbWYbWZbVpbXabVqbStbXbbXcbTMbOTbMTbXdbVvbVvbLPaafaaaaaaaafaafaafaafaaabccbsObdnbdnbXebdnbdnbNbbNbbNbbNbbNbbXfbNbbNbbRsbXgbVGbXhbWCbXibXjbXkbXlbXmbWGbWGbXnbXobXpbVabVabVabVabVabXqbVbbccaaaaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajmajmajmajlajlajmajlajlajlajXajlajlajlajmajmaaaaaaaafaafaaaaaaaaaaaaaaaaaabXrbIpbWJbXsbXtbXubXubXubXvbXwbXxbXybXzbVWbXAbXBbXCbXDbXubXubXEbvZbXFbvZbMAbXGbzvbXHbXIbXHbXJbKcbKcbQPbKcbKcbXKbXLbHsbHsbHsbXMbLGbXNbXObStbSubLGbNRaafbLPbLPbLPbLPbLPaafaaaaaaaaaaaaaaaaafaafbccblibXPbXQbXRbXSbXTbXUbXUbXUbXUbXUbXUbXVbQBbXnbXnbXnbXnbXnbXnbXnbXnbXnbXWbXnbXnbXnbsObXXbXYbXYbXYbXYbXYbXYbXYbXYaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa