diff --git a/code/_onclick/other_mobs.dm b/code/_onclick/other_mobs.dm
index 07f562c4961..427b286800b 100644
--- a/code/_onclick/other_mobs.dm
+++ b/code/_onclick/other_mobs.dm
@@ -99,70 +99,6 @@
/mob/living/carbon/alien/RestrainedClickOn(var/atom/A)
return
-/mob/living/carbon/alien/humanoid/RangedAttack(var/atom/A)
- if(!large && a_intent == "harm")
- Neurotox(A)
- return
- else if(large && a_intent == "harm")
- NeuroAOE(A)
- return
-
-/mob/living/carbon/alien/humanoid/proc/Neurotox(atom/A)
- if(world.time < next_attack)
- return
-
- var/turf/T = get_turf(src)
- var/turf/U = get_turf(A) // Get the tile infront of the move, based on their direction
-
- if(!isturf(U) || !isturf(T))
- return
-
- var/obj/item/projectile/bullet/neurotoxin/NT = new /obj/item/projectile/bullet/neurotoxin(loc)
- NT.firer = src
-// NT.def_zone = get_organ_target()
- NT.original = A
- NT.current = T
- NT.yo = U.y - T.y
- NT.xo = U.x - T.x
- spawn(1)
- NT.process()
- next_attack = world.time + 60
-
-/mob/living/carbon/alien/humanoid/proc/NeuroAOE(atom/A)
- if(world.time < next_attack)
- return
-
- var/direction = get_dir(src,A)
- var/turf/T = get_turf(A)
- var/turf/T1 = get_step(T,turn(direction, 90))
- var/turf/T2 = get_step(T,turn(direction, -90))
-
- var/list/the_targets = list(T,T1,T2)
-
- for(var/a=0, a<5, a++)
- spawn(0)
- var/obj/effect/effect/water/D = new /obj/effect/effect/water( get_turf(src) )
- D.color = "#00FF21"
- var/turf/my_target = pick(the_targets)
- for(var/b=0, b<5, b++)
- if(!step_towards(D,my_target)) return
- if(!D) return
-// D.reagents.reaction(get_turf(D))
- for(var/atom/atm in get_turf(D))
- if(!D) return
- if(istype(atm, /mob/living/carbon/alien))
- return
- if(istype(atm, /mob/living/carbon))
- var/mob/living/carbon/C = atm
- C.Weaken(5)
- C.adjustToxLoss(20)
- C << "You were drenched with neurotoxin!"
-// D.reagents.reaction(atm, TOUCH) // Touch, since we sprayed it.
- if(D.loc == my_target) break
- sleep(2)
- next_attack = world.time + 60
-
-
// Babby aliens
/mob/living/carbon/alien/larva/UnarmedAttack(var/atom/A)
A.attack_larva(src)
diff --git a/code/game/asteroid.dm b/code/game/asteroid.dm
index a37ac4c2ce4..76005df5f1f 100644
--- a/code/game/asteroid.dm
+++ b/code/game/asteroid.dm
@@ -23,7 +23,7 @@ proc/spawn_room(var/atom/start_loc,var/x_size,var/y_size,var/wall,var/floor , va
//world << "Room spawned at [start_loc.x],[start_loc.y],[start_loc.z]"
if(!wall)
- wall = pick(/turf/simulated/wall/r_wall,/turf/simulated/wall,/obj/effect/alien/resin)
+ wall = pick(/turf/simulated/wall/r_wall,/turf/simulated/wall,/obj/structure/alien/resin)
if(!floor)
floor = pick(/turf/simulated/floor,/turf/simulated/floor/engine)
@@ -44,9 +44,9 @@ proc/spawn_room(var/atom/start_loc,var/x_size,var/y_size,var/wall,var/floor , va
if(x == 0 || x==x_size-1 || y==0 || y==y_size-1)
- if(wall == /obj/effect/alien/resin)
+ if(wall == /obj/structure/alien/resin)
T = new floor(cur_loc)
- new /obj/effect/alien/resin(T)
+ new /obj/structure/alien/resin(T)
else
T = new wall(cur_loc)
room_turfs["walls"] += T
@@ -74,7 +74,7 @@ proc/admin_spawn_room_at_pos()
if("Regular wall")
wall=/turf/simulated/wall
if("Resin wall")
- wall=/obj/effect/alien/resin
+ wall=/obj/structure/alien/resin
switch(alert("Floor type",null,"Regular floor","Reinforced floor"))
if("Regular floor")
floor=/turf/simulated/floor
diff --git a/code/game/objects/effects/aliens.dm b/code/game/objects/effects/aliens.dm
index 32ea115a9f3..c3a05eae825 100644
--- a/code/game/objects/effects/aliens.dm
+++ b/code/game/objects/effects/aliens.dm
@@ -1,22 +1,20 @@
-/* Alien Effects!
+/* Alien shit!
* Contains:
- * effect/alien
+ * structure/alien
* Resin
* Weeds
- * Acid
* Egg
+ * effect/acid
*/
-/*
- * effect/alien
- */
-/obj/effect/alien
+
+/obj/structure/alien
icon = 'icons/mob/alien.dmi'
/*
* Resin
*/
-/obj/effect/alien/resin
+/obj/structure/alien/resin
name = "resin"
desc = "Looks like some kind of thick resin."
icon_state = "resin"
@@ -25,54 +23,54 @@
anchored = 1
var/health = 200
var/resintype = null
-
-/obj/effect/alien/resin/New(location)
+/obj/structure/alien/resin/New(location)
relativewall_neighbours()
..()
return
-/obj/effect/alien/resin/Destroy()
+/obj/structure/alien/resin/Destroy()
var/turf/T = loc
loc = null
T.relativewall_neighbours()
..()
-/obj/effect/alien/resin/Move()
+/obj/structure/alien/resin/Move()
..()
-/obj/effect/alien/resin/wall
+/obj/structure/alien/resin/wall
name = "resin wall"
desc = "Thick resin solidified into a wall."
- icon_state = "resinwall" //same as resin, but consistency ho!
-
-/obj/effect/alien/resin/wall/New()
+ icon_state = "wall0" //same as resin, but consistency ho!
+ resintype = "wall"
+
+/obj/structure/alien/resin/wall/New()
relativewall_neighbours()
..()
-
-/obj/effect/alien/resin/membrane
+/obj/structure/alien/resin/membrane
name = "resin membrane"
desc = "Resin just thin enough to let light pass through."
- icon_state = "resinmembrane"
+ icon_state = "membrane0"
opacity = 0
health = 120
+ resintype = "membrane"
-/obj/effect/alien/resin/membrane/New()
+/obj/structure/alien/resin/membrane/New()
relativewall_neighbours()
..()
-/obj/effect/alien/resin/proc/healthcheck()
+/obj/structure/alien/resin/proc/healthcheck()
if(health <=0)
- qdel(src)
+ del(src)
-/obj/effect/alien/resin/bullet_act(obj/item/projectile/Proj)
+/obj/structure/alien/resin/bullet_act(obj/item/projectile/Proj)
health -= Proj.damage
..()
healthcheck()
-/obj/effect/alien/resin/ex_act(severity, target)
+/obj/structure/alien/resin/ex_act(severity, target)
switch(severity)
if(1.0)
health -= 150
@@ -83,12 +81,12 @@
healthcheck()
-/obj/effect/alien/resin/blob_act()
+/obj/structure/alien/resin/blob_act()
health -= 50
healthcheck()
-/obj/effect/alien/resin/hitby(atom/movable/AM)
+/obj/structure/alien/resin/hitby(atom/movable/AM)
..()
visible_message("[src] was hit by [AM].")
var/tforce = 0
@@ -102,19 +100,18 @@
healthcheck()
-/obj/effect/alien/resin/attack_hand(mob/living/user)
+/obj/structure/alien/resin/attack_hand(mob/living/user)
if(M_HULK in user.mutations)
-
user.visible_message("[user] destroys [src]!")
health = 0
healthcheck()
-/obj/effect/alien/resin/attack_paw(mob/user)
+/obj/structure/alien/resin/attack_paw(mob/user)
return attack_hand(user)
-/obj/effect/alien/resin/attack_alien(mob/living/user)
+/obj/structure/alien/resin/attack_alien(mob/living/user)
if(islarva(user))
return
user.visible_message("[user] claws at the resin!")
@@ -125,121 +122,87 @@
healthcheck()
-/obj/effect/alien/resin/attackby(obj/item/I, mob/living/user)
+/obj/structure/alien/resin/attackby(obj/item/I, mob/living/user)
health -= I.force
playsound(loc, 'sound/effects/attackblob.ogg', 100, 1)
healthcheck()
..()
-/obj/effect/alien/resin/CanPass(atom/movable/mover, turf/target, height=0)
+/obj/structure/alien/resin/CanPass(atom/movable/mover, turf/target, height=0)
if(istype(mover) && mover.checkpass(PASSGLASS))
return !opacity
return !density
-
+
+
/*
* Weeds
*/
+
#define NODERANGE 3
-/obj/effect/alien/weeds
- name = "weeds"
- desc = "Strange, alien-looking purple weeds."
+/obj/structure/alien/weeds
+ gender = PLURAL
+ name = "resin floor"
+ desc = "A thick resin surface covers the floor."
icon_state = "weeds"
-
anchored = 1
density = 0
layer = 2
var/health = 15
- var/obj/effect/alien/weeds/node/linked_node = null
-
-/obj/effect/alien/weeds/node
- name = "purple sac"
- desc = "A purple sac covering alien weeds."
- icon_state = "weednode"
- layer = 3
- luminosity = NODERANGE
- var/node_range = NODERANGE
- var/list/obj/effect/alien/weeds/connected_weeds
-
-/obj/effect/alien/weeds/node/New()
- connected_weeds = new()
- ..(src.loc, src)
-
-/obj/effect/alien/weeds/node/Destroy()
- for(var/obj/effect/alien/weeds/W in connected_weeds)
- processing_objects.Add(W) // Start processing the weeds so they lose health when there's no connected node
- ..()
-
-/obj/effect/alien/weeds/process()
- if(!linked_node || (get_dist(linked_node, src) > linked_node.node_range))
- if(prob(50))
- health -= 1
- else if(prob(50))
- health -= 2
- else if(prob(25))
- health -= 3
- healthcheck()
-
-/obj/effect/alien/weeds/New(pos, var/obj/effect/alien/weeds/node/N)
- ..()
+ var/obj/structure/alien/weeds/node/linked_node = null
+
+/obj/structure/alien/weeds/New(pos, node)
+ ..()
+ linked_node = node
if(istype(loc, /turf/space))
- qdel(src)
+ del(src)
return
-
- linked_node = N
- if(linked_node)
- linked_node.connected_weeds.Add(src)
-
- if(icon_state == "weeds")icon_state = pick("weeds", "weeds1", "weeds2")
+ if(icon_state == "weeds")
+ icon_state = pick("weeds", "weeds1", "weeds2")
+ fullUpdateWeedOverlays()
spawn(rand(150, 200))
if(src)
Life()
- return
-/obj/effect/alien/weeds/Destroy()
- if(linked_node)
- linked_node.connected_weeds.Remove(src)
- linked_node = null
- processing_objects.Remove(src)
+/obj/structure/alien/weeds/Destroy()
+ var/turf/T = loc
+ loc = null
+ for (var/obj/structure/alien/weeds/W in range(1,T))
+ W.updateWeedOverlays()
..()
-
-/obj/effect/alien/weeds/proc/Life()
+
+/obj/structure/alien/weeds/proc/Life()
set background = BACKGROUND_ENABLED
var/turf/U = get_turf(src)
- if (istype(U, /turf/space))
+ if(istype(U, /turf/space))
del(src)
return
- if(!linked_node || (get_dist(linked_node, src) > linked_node.node_range) )
- healthcheck()
- return
-
direction_loop:
for(var/dirn in cardinal)
-
var/turf/T = get_step(src, dirn)
- if (!istype(T) || T.density || locate(/obj/effect/alien/weeds) in T || istype(T.loc, /area/arrival) || istype(T, /turf/space))
+ if (!istype(T) || T.density || locate(/obj/structure/alien/weeds) in T || istype(T, /turf/space))
continue
+ if(!linked_node || get_dist(linked_node, src) > linked_node.node_range)
+ return
+
for(var/obj/O in T)
if(O.density)
continue direction_loop
- new /obj/effect/alien/weeds(T, linked_node)
-
-/obj/effect/alien/weeds/ex_act(severity,target)
- qdel(src)
-
-/obj/effect/alien/weeds/fire_act(null, temperature, volume)
- if(temperature > T0C+200)
- health -= 1 * temperature
- healthcheck()
+ new /obj/structure/alien/weeds(T, linked_node)
-/obj/effect/alien/weeds/attackby(obj/item/I, mob/user)
+
+/obj/structure/alien/weeds/ex_act(severity, target)
+ del(src)
+
+
+/obj/structure/alien/weeds/attackby(obj/item/I, mob/user)
if(I.attack_verb.len)
visible_message("[user] has [pick(I.attack_verb)] [src] with [I]!")
else
@@ -253,72 +216,58 @@
playsound(loc, 'sound/items/Welder.ogg', 100, 1)
health -= damage
- healthcheck()
-
-/obj/effect/alien/weeds/proc/healthcheck()
+ healthcheck()
+
+
+/obj/structure/alien/weeds/proc/healthcheck()
if(health <= 0)
- qdel(src)
-
-/obj/effect/alien/weeds/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
+ del(src)
+
+
+/obj/structure/alien/weeds/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
if(exposed_temperature > 300)
health -= 5
healthcheck()
-
-/*
- * Acid
- */
-/obj/effect/alien/acid
- name = "acid"
- desc = "Burbling corrossive stuff. I wouldn't want to touch it."
- icon_state = "acid"
- density = 0
- opacity = 0
- anchored = 1
+/obj/structure/alien/weeds/proc/updateWeedOverlays()
- var/atom/target
- var/ticks = 0
- var/target_strength = 0
+ overlays.Cut()
+ var/turf/N = get_step(src, NORTH)
+ var/turf/S = get_step(src, SOUTH)
+ var/turf/E = get_step(src, EAST)
+ var/turf/W = get_step(src, WEST)
+ if(!locate(/obj/structure/alien) in N.contents)
+ if(istype(N, /turf/simulated/floor))
+ src.overlays += image('icons/mob/alien.dmi', "weeds_side_s", layer=2, pixel_y = 32)
+ if(!locate(/obj/structure/alien) in S.contents)
+ if(istype(S, /turf/simulated/floor))
+ src.overlays += image('icons/mob/alien.dmi', "weeds_side_n", layer=2, pixel_y = -32)
+ if(!locate(/obj/structure/alien) in E.contents)
+ if(istype(E, /turf/simulated/floor))
+ src.overlays += image('icons/mob/alien.dmi', "weeds_side_w", layer=2, pixel_x = 32)
+ if(!locate(/obj/structure/alien) in W.contents)
+ if(istype(W, /turf/simulated/floor))
+ src.overlays += image('icons/mob/alien.dmi', "weeds_side_e", layer=2, pixel_x = -32)
-/obj/effect/alien/acid/New(loc, target)
- ..(loc)
- src.target = target
- if(isturf(target)) // Turf take twice as long to take down.
- target_strength = 8
- else
- target_strength = 4
- tick()
+/obj/structure/alien/weeds/proc/fullUpdateWeedOverlays()
+ for (var/obj/structure/alien/weeds/W in range(1,src))
+ W.updateWeedOverlays()
-/obj/effect/alien/acid/proc/tick()
- if(!target)
- del(src)
+//Weed nodes
+/obj/structure/alien/weeds/node
+ name = "glowing resin"
+ desc = "Blue bioluminescence shines from beneath the surface."
+ icon_state = "weednode"
+ luminosity = 1
+ var/node_range = NODERANGE
- ticks += 1
- if(ticks >= target_strength)
+/obj/structure/alien/weeds/node/New()
+ ..(loc, src)
- for(var/mob/O in hearers(src, null))
- O.show_message("\green [src.target] collapses under its own weight into a puddle of goop and undigested debris!", 1)
+#undef NODERANGE
- if(istype(target, /turf/simulated/wall)) // I hate turf code.
- var/turf/simulated/wall/W = target
- W.dismantle_wall(1)
- else
- del(target)
- del(src)
- return
-
- switch(target_strength - ticks)
- if(6)
- visible_message("\green [src.target] is holding up against the acid!")
- if(4)
- visible_message("\green [src.target]\s structure is being melted by the acid!")
- if(2)
- visible_message("\green [src.target] is struggling to withstand the acid!")
- if(0 to 1)
- visible_message("\green [src.target] begins to crumble under the acid!")
- spawn(rand(150, 200)) tick()
/*
* Egg
@@ -332,7 +281,7 @@
#define MIN_GROWTH_TIME 1800 //time it takes to grow a hugger
#define MAX_GROWTH_TIME 3000
-/obj/effect/alien/egg
+/obj/structure/alien/egg
name = "egg"
desc = "A large mottled egg."
icon_state = "egg_growing"
@@ -342,20 +291,20 @@
var/status = GROWING //can be GROWING, GROWN or BURST; all mutually exclusive
-/obj/effect/alien/egg/New()
+/obj/structure/alien/egg/New()
new /obj/item/clothing/mask/facehugger(src)
..()
spawn(rand(MIN_GROWTH_TIME, MAX_GROWTH_TIME))
Grow()
-/obj/effect/alien/egg/attack_paw(mob/user)
+/obj/structure/alien/egg/attack_paw(mob/user)
if(isalien(user))
switch(status)
if(BURST)
user << "You clear the hatched egg."
playsound(loc, 'sound/effects/attackblob.ogg', 100, 1)
- qdel(src)
+ del(src)
return
if(GROWING)
user << "The child is not developed yet."
@@ -368,19 +317,20 @@
return attack_hand(user)
-/obj/effect/alien/egg/attack_hand(mob/user)
+/obj/structure/alien/egg/attack_hand(mob/user)
user << "It feels slimy."
-/obj/effect/alien/egg/proc/GetFacehugger()
+
+/obj/structure/alien/egg/proc/GetFacehugger()
return locate(/obj/item/clothing/mask/facehugger) in contents
-/obj/effect/alien/egg/proc/Grow()
+/obj/structure/alien/egg/proc/Grow()
icon_state = "egg"
status = GROWN
-/obj/effect/alien/egg/proc/Burst(var/kill = 1) //drops and kills the hugger if any is remaining
+/obj/structure/alien/egg/proc/Burst(var/kill = 1) //drops and kills the hugger if any is remaining
if(status == GROWN || status == GROWING)
icon_state = "egg_hatched"
flick("egg_opening", src)
@@ -399,13 +349,13 @@
break
-/obj/effect/alien/egg/bullet_act(obj/item/projectile/Proj)
+/obj/structure/alien/egg/bullet_act(obj/item/projectile/Proj)
health -= Proj.damage
..()
healthcheck()
-/obj/effect/alien/egg/attackby(obj/item/I, mob/user)
+/obj/structure/alien/egg/attackby(obj/item/I, mob/user)
if(I.attack_verb.len)
visible_message("[user] has [pick(I.attack_verb)] [src] with [I]!")
else
@@ -423,21 +373,21 @@
healthcheck()
-/obj/effect/alien/egg/proc/healthcheck()
+/obj/structure/alien/egg/proc/healthcheck()
if(health <= 0)
if(status != BURST && status != BURSTING)
Burst()
else if(status == BURST && prob(50))
- qdel(src) //Remove the egg after it has been hit after bursting.
+ del(src) //Remove the egg after it has been hit after bursting.
-/obj/effect/alien/egg/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
+/obj/structure/alien/egg/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
if(exposed_temperature > 500)
health -= 5
healthcheck()
-/obj/effect/alien/egg/HasProximity(atom/movable/AM)
+/obj/structure/alien/egg/HasProximity(atom/movable/AM)
if(status == GROWN)
if(!CanHug(AM))
return
@@ -455,3 +405,72 @@
#undef MIN_GROWTH_TIME
#undef MAX_GROWTH_TIME
+
+/*
+ * Acid
+ */
+/obj/effect/acid
+ gender = PLURAL
+ name = "acid"
+ desc = "Burbling corrossive stuff."
+ icon = 'icons/effects/effects.dmi'
+ icon_state = "acid"
+ density = 0
+ opacity = 0
+ anchored = 1
+ unacidable = 1
+ var/atom/target
+ var/ticks = 0
+ var/target_strength = 0
+
+
+/obj/effect/acid/New(loc, targ)
+ ..(loc)
+ target = targ
+
+ //handle APCs and newscasters and stuff nicely
+ pixel_x = target.pixel_x
+ pixel_y = target.pixel_y
+
+ if(isturf(target)) //Turfs take twice as long to take down.
+ target_strength = 640
+ else
+ target_strength = 320
+ tick()
+
+
+/obj/effect/acid/proc/tick()
+ if(!target)
+ del(src)
+
+ ticks++
+
+ if(ticks >= target_strength)
+ target.visible_message("[target] collapses under its own weight into a puddle of goop and undigested debris!")
+
+ if(istype(target, /turf/simulated/wall))
+ var/turf/simulated/wall/W = target
+ W.dismantle_wall(1)
+ else
+ del(target)
+
+ del(src)
+ return
+
+ x = target.x
+ y = target.y
+ z = target.z
+
+ switch(target_strength - ticks)
+ if(480)
+ visible_message("[target] is holding up against the acid!")
+ if(320)
+ visible_message("[target] is being melted by the acid!")
+ if(160)
+ visible_message("[target] is struggling to withstand the acid!")
+ if(80)
+ visible_message("[target] begins to crumble under the acid!")
+
+ spawn(1)
+ if(src)
+ tick()
\ No newline at end of file
diff --git a/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm b/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm
index a45e2436b80..f1322e17ad3 100644
--- a/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm
+++ b/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm
@@ -22,7 +22,7 @@
"[buckled_mob.name] struggles to break free of the gelatinous resin...",\
"You struggle to break free from the gelatinous resin...",\
"You hear squelching...")
- spawn(1200)
+ spawn(600)
if(user && buckled_mob && user.buckled == src)
buckled_mob.pixel_y = 0
unbuckle()
@@ -51,11 +51,21 @@
M.loc = src.loc
M.dir = src.dir
M.update_canmove()
- M.pixel_y = 6
+ M.pixel_y += 1
+ M.pixel_x += 2
+ M.anchored = anchored
src.buckled_mob = M
src.add_fingerprint(user)
+ src.overlays += image('icons/mob/alien.dmi', "nestoverlay", layer=6)
return
+/obj/structure/stool/bed/nest/unbuckle()
+ if(buckled_mob)
+ buckled_mob.pixel_y -= 1
+ buckled_mob.pixel_x -= 2
+ overlays.Cut()
+ ..()
+
/obj/structure/stool/bed/nest/attackby(obj/item/weapon/W as obj, mob/user as mob)
var/aforce = W.force
health = max(0, health - aforce)
diff --git a/code/game/smoothwall.dm b/code/game/smoothwall.dm
index c9078fa9192..bcd9fa88a24 100644
--- a/code/game/smoothwall.dm
+++ b/code/game/smoothwall.dm
@@ -95,4 +95,18 @@
// DE-HACK
/turf/simulated/wall/vault/relativewall()
+ return
+
+
+//Xeno wall smoothing
+/obj/structure/alien/resin/relativewall()
+
+ var/junction = 0 //will be used to determine from which side the wall is connected to other walls
+
+ for(var/obj/structure/alien/resin/W in orange(src,1))
+ if(abs(src.x-W.x)-abs(src.y-W.y)) //doesn't count diagonal walls
+ junction |= get_dir(src,W)
+ var/obj/structure/alien/resin/resin = src
+ resin.icon_state = "[resin.resintype][junction]"
+
return
\ No newline at end of file
diff --git a/code/modules/mining/surprises/vg.dm b/code/modules/mining/surprises/vg.dm
index 120df968390..ade364ef084 100644
--- a/code/modules/mining/surprises/vg.dm
+++ b/code/modules/mining/surprises/vg.dm
@@ -120,14 +120,14 @@
w_cand -= weed_turf
if(weed_turf.density)
continue
- if(locate(/obj/effect/alien) in weed_turf)
+ if(locate(/obj/structure/alien) in weed_turf)
continue
if(weed_turf && !egged)
- new /obj/effect/alien/weeds/node(weed_turf)
+ new /obj/structure/alien/weeds/node(weed_turf)
weeds += weed_turf
break
for(var/e=0;e= maxHealth - getCloneLoss())
adjustToxLoss(plasma_rate)
else
@@ -79,7 +79,7 @@
if(!environment)
return
-
+
var/loc_temp = T0C
if(istype(loc, /obj/mecha))
var/obj/mecha/M = loc
@@ -193,7 +193,7 @@
/mob/living/carbon/alien/setDNA()
return
-
+
/mob/living/carbon/alien/verb/nightvisiontoggle()
set name = "Toggle Night Vision"
set category = "Alien"
@@ -243,7 +243,7 @@ Des: Removes all infected images from the alien.
/mob/living/carbon/alien/larva/updatePlasmaDisplay()
return
-
+
#undef HEAT_DAMAGE_LEVEL_1
#undef HEAT_DAMAGE_LEVEL_2
#undef HEAT_DAMAGE_LEVEL_3
diff --git a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm
index c496d107000..4efc0c56dc6 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm
@@ -23,25 +23,15 @@ Doesn't work on other aliens/AI.*/
set desc = "Plants some alien weeds"
set category = "Alien"
- if(locate(/obj/effect/alien/weeds/node) in get_turf(src))
+ if(locate(/obj/structure/alien/weeds/node) in get_turf(src))
src << "There's already a weed node here."
- return
-
- if(constructing)
- src << "You are already constructing something."
return
-
+
if(powerc(50,1))
- constructing = 1
- stunned = 5
- src << "You start planting a weed node."
- spawn(30)
- adjustToxLoss(-50)
- for(var/mob/O in viewers(src, null))
- O.show_message(text("[src] has planted some alien weeds!"), 1)
- new /obj/effect/alien/weeds/node(loc)
- constructing = 0
- stunned = 0
+ adjustToxLoss(-50)
+ for(var/mob/O in viewers(src, null))
+ O.show_message(text("[src] has planted some alien weeds!"), 1)
+ new /obj/structure/alien/weeds/node(loc)
return
/mob/living/carbon/alien/humanoid/verb/whisp(mob/M as mob in oview())
@@ -106,7 +96,7 @@ Doesn't work on other aliens/AI.*/
return
adjustToxLoss(-200)
- new /obj/effect/alien/acid(get_turf(O), O)
+ new /obj/effect/acid(get_turf(O), O)
visible_message("[src] vomits globs of vile stuff all over [O]. It begins to sizzle and melt under the bubbling mess of acid!")
else
src << "Target is too far away."
@@ -136,37 +126,24 @@ Doesn't work on other aliens/AI.*/
return
/mob/living/carbon/alien/humanoid/proc/resin() // -- TLE
- set name = "Secrete Resin (75)"
+ set name = "Secrete Resin (55)"
set desc = "Secrete tough malleable resin."
set category = "Alien"
- if(powerc(75))
- if(constructing)
- src << "You are already constructing something."
- return
- var/choice = input("Choose what you wish to shape.","Resin building") as null|anything in list("resin door","resin wall","resin membrane","resin nest") //would do it through typesof but then the player choice would have the type path and we don't want the internal workings to be exposed ICly - Urist
-
- if(!choice || !powerc(75))
- return
-
- constructing = 1
- stunned = 5
- src << "You start shaping a [choice]."
- spawn(60)
- adjustToxLoss(-75)
- for(var/mob/O in viewers(src, null))
- O.show_message(text("[src] vomits up a thick purple substance and shapes it!"), 1)
- switch(choice)
- if("resin door")
- new /obj/structure/mineral_door/resin(loc)
- if("resin wall")
- new /obj/effect/alien/resin/wall(loc)
- if("resin membrane")
- new /obj/effect/alien/resin/membrane(loc)
- if("resin nest")
- new /obj/structure/stool/bed/nest(loc)
- constructing = 0
- stunned = 0
+ if(powerc(55))
+ var/choice = input("Choose what you wish to shape.","Resin building") as null|anything in list("resin wall","resin membrane","resin nest") //would do it through typesof but then the player choice would have the type path and we don't want the internal workings to be exposed ICly - Urist
+
+ if(!choice || !powerc(55)) return
+ adjustToxLoss(-55)
+ for(var/mob/O in viewers(src, null))
+ O.show_message(text("[src] vomits up a thick purple substance and shapes it!"), 1)
+ switch(choice)
+ if("resin wall")
+ new /obj/structure/alien/resin/wall(loc)
+ if("resin membrane")
+ new /obj/structure/alien/resin/membrane(loc)
+ if("resin nest")
+ new /obj/structure/stool/bed/nest(loc)
return
/mob/living/carbon/alien/humanoid/verb/regurgitate()
diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm
index b8f412a488e..a06482242c2 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm
@@ -7,7 +7,7 @@
max_plasma = 250
icon_state = "aliens_s"
plasma_rate = 10
-
+
/mob/living/carbon/alien/humanoid/sentinel/large
name = "alien praetorian"
icon = 'icons/mob/alienlarge.dmi'
@@ -23,8 +23,8 @@
maxHealth = 200
health = 200
move_delay_add = 1
- large = 1
-
+ large = 1
+
/mob/living/carbon/alien/humanoid/sentinel/large/update_icons()
lying_prev = lying //so we don't update overlays for lying/standing unless our stance changes again
update_hud() //TODO: remove the need for this to be here
@@ -38,7 +38,7 @@
icon_state = "prat_s"
for(var/image/I in overlays_standing)
overlays += I
-
+
/mob/living/carbon/alien/humanoid/sentinel/New()
var/datum/reagents/R = new/datum/reagents(100)
reagents = R
@@ -70,7 +70,7 @@
else
healths.icon_state = "health6"
-
+/*
/mob/living/carbon/alien/humanoid/sentinel/verb/evolve() // -- TLE
set name = "Evolve (250)"
set desc = "Become a Praetorian, Royal Guard to the Queen."
@@ -89,4 +89,4 @@
new_xeno.mind.name = new_xeno.name
del(src)
return
-
\ No newline at end of file
+*/
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/alien/humanoid/empress.dm b/code/modules/mob/living/carbon/alien/humanoid/empress.dm
index b8853854594..867804f87c2 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/empress.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/empress.dm
@@ -77,26 +77,15 @@
/mob/living/carbon/alien/humanoid/empress/verb/lay_egg()
set name = "Lay Egg (250)"
set desc = "Lay an egg to produce huggers to impregnate prey with."
- set category = "Alien"
-
- if(locate(/obj/effect/alien/egg) in get_turf(src))
+ set category = "Alien"
+
+ if(locate(/obj/structure/alien/egg) in get_turf(src))
src << "There's already an egg here."
return
-
- if(constructing)
- src << "You are already constructing something."
- return
-
- if(powerc(250,1))//Can't plant eggs on spess tiles. That's silly.
- constructing = 1
- stunned = 5
- src << "You start laying an egg."
- spawn(30)
- adjustToxLoss(-250)
- for(var/mob/O in viewers(src, null))
- O.show_message(text("\green [src] has laid an egg!"), 1)
- new /obj/effect/alien/egg(loc)
- constructing = 0
- stunned = 0
+
+ if(powerc(75,1))//Can't plant eggs on spess tiles. That's silly.
+ adjustToxLoss(-75)
+ for(var/mob/O in viewers(src, null))
+ O.show_message(text("\green [src] has laid an egg!"), 1)
+ new /obj/structure/alien/egg(loc)
return
-
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
index 6b74e420835..1652529c290 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
@@ -10,11 +10,10 @@
var/next_attack = 0
update_icon = 1
var/leap_on_click = 0
- var/constructing = 0
//This is fine right now, if we're adding organ specific damage this needs to be updated
/mob/living/carbon/alien/humanoid/New()
- var/datum/reagents/R = new/datum/reagents(100)
+ var/datum/reagents/R = new/datum/reagents(1000)
reagents = R
R.my_atom = src
if(name == "alien")
@@ -52,15 +51,15 @@
/mob/living/carbon/alien/humanoid/movement_delay()
var/tally = 0
if (istype(src, /mob/living/carbon/alien/humanoid/queen))
- tally += 5
+ tally += 4
if (istype(src, /mob/living/carbon/alien/humanoid/drone))
- tally += 2
+ tally += 0
if (istype(src, /mob/living/carbon/alien/humanoid/sentinel))
- tally += 1
+ tally += 0
if (istype(src, /mob/living/carbon/alien/humanoid/hunter))
- tally = -1 // hunters go supersuperfast
+ tally = -2 // hunters go supersuperfast
return (tally + move_delay_add + config.alien_delay)
-
+
/mob/living/carbon/alien/humanoid/Process_Spacemove(var/check_drift = 0)
return 1
@@ -250,7 +249,7 @@
if (M_HULK in M.mutations)//M_HULK SMASH
damage += 14
spawn(0)
- Weaken(damage) // Why can a hulk knock an alien out but not knock out a human? Damage is robust enough.
+ Paralyse(1)
step_away(src,M,15)
sleep(3)
step_away(src,M,15)
@@ -259,7 +258,7 @@
if ((O.client && !( O.blinded )))
O.show_message(text("\red [] has punched []!", M, src), 1)
if (damage > 9||prob(5))//Regular humans have a very small chance of weakening an alien.
- Weaken(1,5)
+ Paralyse(2)
for(var/mob/O in viewers(M, null))
if ((O.client && !( O.blinded )))
O.show_message(text("\red [] has weakened []!", M, src), 1, "\red You hear someone fall.", 2)
@@ -274,7 +273,7 @@
if ("disarm")
if (!lying)
if (prob(5))//Very small chance to push an alien down.
- Weaken(2)
+ Paralyse(2)
playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
for(var/mob/O in viewers(src, null))
if ((O.client && !( O.blinded )))
@@ -321,4 +320,4 @@
/mob/living/carbon/alien/humanoid/canBeHandcuffed()
- return 1
+ return 1
diff --git a/code/modules/mob/living/carbon/alien/humanoid/queen.dm b/code/modules/mob/living/carbon/alien/humanoid/queen.dm
index 082431574d4..2c4ba4a7e43 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/queen.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/queen.dm
@@ -7,8 +7,6 @@
status_flags = CANPARALYSE
heal_rate = 5
plasma_rate = 20
- move_delay_add = 2
- max_plasma = 1000
large = 1
/mob/living/carbon/alien/humanoid/queen/New()
@@ -58,29 +56,19 @@
//Queen verbs
/mob/living/carbon/alien/humanoid/queen/verb/lay_egg()
- set name = "Lay Egg (250)"
+ set name = "Lay Egg (75)"
set desc = "Lay an egg to produce huggers to impregnate prey with."
set category = "Alien"
- if(locate(/obj/effect/alien/egg) in get_turf(src))
+ if(locate(/obj/structure/alien/egg) in get_turf(src))
src << "There's already an egg here."
return
-
- if(constructing)
- src << "You are already constructing something."
- return
-
- if(powerc(250,1))//Can't plant eggs on spess tiles. That's silly.
- constructing = 1
- stunned = 5
- src << "You start laying an egg."
- spawn(60)
- adjustToxLoss(-250)
- for(var/mob/O in viewers(src, null))
- O.show_message(text("[src] has laid an egg!"), 1)
- new /obj/effect/alien/egg(loc)
- constructing = 0
- stunned = 0
- return
+
+ if(powerc(75,1))//Can't plant eggs on spess tiles. That's silly.
+ adjustToxLoss(-75)
+ for(var/mob/O in viewers(src, null))
+ O.show_message(text("[src] has laid an egg!"), 1)
+ new /obj/structure/alien/egg(loc)
+ return
/mob/living/carbon/alien/humanoid/queen/large
@@ -104,7 +92,7 @@
overlays += I
-
+/*
/mob/living/carbon/alien/humanoid/queen/verb/evolve() // -- TLE
set name = "Evolve (1000)"
set desc = "The ultimate transformation. Become an alien Empress. Only one empress can exist at a time."
@@ -134,3 +122,4 @@
src << "We already have an alive empress."
return
+*/
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/alien/larva/larva.dm b/code/modules/mob/living/carbon/alien/larva/larva.dm
index 9165334ab2d..5515c951514 100644
--- a/code/modules/mob/living/carbon/alien/larva/larva.dm
+++ b/code/modules/mob/living/carbon/alien/larva/larva.dm
@@ -2,7 +2,7 @@
name = "alien larva"
real_name = "alien larva"
icon_state = "larva0"
- pass_flags = PASSTABLE
+ pass_flags = PASSTABLE | PASSMOB
maxHealth = 30
health = 30
diff --git a/code/modules/mob/living/carbon/human/human_attackalien.dm b/code/modules/mob/living/carbon/human/human_attackalien.dm
index 7d71cd3d029..64d74d916de 100644
--- a/code/modules/mob/living/carbon/human/human_attackalien.dm
+++ b/code/modules/mob/living/carbon/human/human_attackalien.dm
@@ -39,20 +39,19 @@
apply_damage(damage, BRUTE, affecting, armor_block)
if (damage >= 25)
visible_message("\red [M] has wounded [src]!")
- apply_effect(rand(0.5,3), WEAKEN, armor_block)
+ apply_effect(4, WEAKEN, armor_block)
updatehealth()
if("disarm")
- if (prob(80))
+ var/randn = rand(1, 100)
+ if (randn <= 80)
playsound(loc, 'sound/weapons/pierce.ogg', 25, 1, -1)
- Weaken(rand(0.5,3))
+ Weaken(5)
for(var/mob/O in viewers(src, null))
if ((O.client && !( O.blinded )))
O.show_message(text("\red [] has tackled down []!", M, src), 1)
- if (prob(25))
- M.Weaken(rand(2,4))
else
- if (prob(80))
+ if (randn <= 99)
playsound(loc, 'sound/weapons/slash.ogg', 25, 1, -1)
drop_item()
visible_message(text("\red [] disarmed []!", M, src))
diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm
index 04821e153fd..1e695cc2f1c 100644
--- a/code/modules/mob/mob_movement.dm
+++ b/code/modules/mob/mob_movement.dm
@@ -1,6 +1,8 @@
/mob/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)
if(air_group || (height==0)) return 1
+ if(istype(mover) && mover.checkpass(PASSMOB))
+ return 1
if(ismob(mover))
var/mob/moving_mob = mover
if ((other_mobs && moving_mob.other_mobs))
diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm
index 526a631ef36..2fa168c2afc 100644
--- a/code/modules/reagents/Chemistry-Reagents.dm
+++ b/code/modules/reagents/Chemistry-Reagents.dm
@@ -1505,8 +1505,8 @@ datum
O.show_message(text("\blue The fungi are completely dissolved by the solution!"), 1)
reaction_obj(var/obj/O, var/volume)
- if(istype(O,/obj/effect/alien/weeds/))
- var/obj/effect/alien/weeds/alien_weeds = O
+ if(istype(O,/obj/structure/alien/weeds/))
+ var/obj/structure/alien/weeds/alien_weeds = O
alien_weeds.health -= rand(15,35) // Kills alien weeds pretty fast
alien_weeds.healthcheck()
else if(istype(O,/obj/effect/glowshroom)) //even a small amount is enough to kill it
diff --git a/code/setup.dm b/code/setup.dm
index 6fa44e39477..67b3535be1f 100644
--- a/code/setup.dm
+++ b/code/setup.dm
@@ -222,6 +222,7 @@ var/MAX_EXPLOSION_RANGE = 14
#define PASSGLASS 2
#define PASSGRILLE 4
#define PASSBLOB 8
+#define PASSMOB 16
//turf-only flags
#define NOJAUNT 1
diff --git a/icons/effects/effects.dmi b/icons/effects/effects.dmi
index fbd4e4100d3..203ac1ede50 100644
Binary files a/icons/effects/effects.dmi and b/icons/effects/effects.dmi differ
diff --git a/icons/mob/alien.dmi b/icons/mob/alien.dmi
index 903e241c1dc..a5e120020a2 100644
Binary files a/icons/mob/alien.dmi and b/icons/mob/alien.dmi differ
diff --git a/maps/cyberiad.dmm b/maps/cyberiad.dmm
index 09b8f8068e9..3232b061196 100644
--- a/maps/cyberiad.dmm
+++ b/maps/cyberiad.dmm
@@ -10214,7 +10214,7 @@
"dOv" = (/turf/simulated/shuttle/wall{tag = "icon-pwall (NORTH)"; icon_state = "pwall"; dir = 1},/area)
"dOw" = (/turf/simulated/floor/plating,/turf/simulated/shuttle/wall{tag = "icon-pwall (SOUTHWEST)"; icon_state = "pwall"; dir = 10},/area)
"dOx" = (/obj/item/stack/rods,/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned)
-"dOy" = (/obj/effect/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned)
+"dOy" = (/obj/structure/alien/resin,/turf/simulated/floor/airless{icon_state = "floorgrime"},/area/mine/abandoned)
"dOz" = (/turf/space,/area/mine/unexplored)
"dOA" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor{dir = 2; icon_state = "whitegreen"},/area/research_outpost/spectro)
"dOB" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_pump{dir = 2; layer = 2.4; on = 1},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{dir = 6; icon_state = "whitegreen"},/area/research_outpost/spectro)
@@ -10239,10 +10239,10 @@
"dOU" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/transit_tube{icon_state = "N-S"},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/atmos)
"dOV" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area)
"dOW" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion (EAST)"; icon_state = "propulsion"; dir = 4},/obj/structure/window/reinforced/tinted{dir = 4; icon_state = "twindow"; tag = ""},/turf/simulated/floor/plating/airless,/area)
-"dOX" = (/obj/effect/alien/weeds{icon_state = "weeds2"},/turf/simulated/shuttle/floor{tag = "icon-floor2"; icon_state = "floor2"},/area)
-"dOY" = (/obj/effect/alien/weeds{icon_state = "weeds"},/turf/simulated/shuttle/floor{tag = "icon-floor2"; icon_state = "floor2"},/area)
+"dOX" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned)
+"dOY" = (/obj/structure/alien/weeds{icon_state = "weeds"},/turf/simulated/floor,/area/mine/abandoned)
"dOZ" = (/obj/machinery/door/airlock/hatch,/turf/simulated/shuttle/floor{tag = "icon-floor2"; icon_state = "floor2"},/area)
-"dPa" = (/obj/item/weapon/shard{icon_state = "medium"},/obj/effect/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned)
+"dPa" = (/obj/structure/alien/weeds,/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned)
"dPb" = (/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned)
"dPc" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/mine/abandoned)
"dPd" = (/turf/simulated/mineral/random,/area/mine/explored)
@@ -10302,7 +10302,7 @@
"dQf" = (/obj/machinery/atmospherics/pipe/simple{_color = "red"; dir = 4; icon_state = "intact-r"; level = 2},/turf/simulated/mineral,/area/research_outpost/atmos)
"dQg" = (/obj/machinery/atmospherics/pipe/vent{dir = 8},/turf/simulated/floor/plating,/area/research_outpost/atmos)
"dQh" = (/obj/item/stack/rods,/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/shard,/turf/simulated/floor/plating,/area/mine/abandoned)
-"dQi" = (/obj/item/stack/rods,/obj/effect/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned)
+"dQi" = (/obj/structure/alien/weeds,/turf/simulated/floor,/area/mine/abandoned)
"dQj" = (/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned)
"dQk" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/hallway)
"dQl" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway)
@@ -10334,8 +10334,8 @@
"dQL" = (/obj/structure/transit_tube{icon_state = "N-S"},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating/airless/asteroid,/area/research_outpost/atmos)
"dQM" = (/obj/structure/lattice,/obj/item/weapon/shard{icon_state = "medium"},/turf/space,/area)
"dQN" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/mine/abandoned)
-"dQO" = (/obj/effect/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned)
-"dQP" = (/obj/effect/alien/weeds,/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned)
+"dQO" = (/obj/structure/alien/weeds,/turf/simulated/floor/airless{icon_state = "floorscorched2"},/area/mine/abandoned)
+"dQP" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned)
"dQQ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/hallway)
"dQR" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/hallway)
"dQS" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/wood,/area/research_outpost/hallway)
@@ -10367,7 +10367,7 @@
"dRs" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/mine/abandoned)
"dRt" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/mine/abandoned)
"dRu" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/mine/abandoned)
-"dRv" = (/obj/effect/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned)
+"dRv" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor,/area/mine/abandoned)
"dRw" = (/obj/effect/decal/remains/xeno,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned)
"dRx" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/hallway)
"dRy" = (/obj/structure/table,/obj/item/weapon/folder,/turf/simulated/floor/wood,/area/research_outpost/hallway)
@@ -10394,9 +10394,9 @@
"dRT" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/mine/abandoned)
"dRU" = (/obj/structure/table,/turf/simulated/floor/airless{icon_state = "floorscorched2"},/area/mine/abandoned)
"dRV" = (/obj/structure/table,/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned)
-"dRW" = (/obj/effect/alien/weeds{icon_state = "weeds"},/turf/simulated/floor,/area/mine/abandoned)
-"dRX" = (/obj/effect/alien/weeds,/turf/simulated/floor/plating,/area/mine/abandoned)
-"dRY" = (/obj/effect/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/plating,/area/mine/abandoned)
+"dRW" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "damaged3"},/area/mine/abandoned)
+"dRX" = (/obj/structure/alien/weeds,/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned)
+"dRY" = (/obj/structure/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/airless{icon_state = "damaged3"},/area/mine/abandoned)
"dRZ" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/light_switch{pixel_y = -23},/turf/simulated/floor/wood,/area/research_outpost/hallway)
"dSa" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/obj/item/weapon/clipboard,/obj/item/weapon/pen,/turf/simulated/floor/wood,/area/research_outpost/hallway)
"dSb" = (/obj/structure/bookcase/manuals/xenoarchaeology,/turf/simulated/floor/wood,/area/research_outpost/hallway)
@@ -10424,9 +10424,9 @@
"dSx" = (/turf/simulated/floor/airless{icon_state = "damaged3"},/area/mine/abandoned)
"dSy" = (/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned)
"dSz" = (/turf/simulated/floor/airless{icon_state = "floorscorched2"},/area/mine/abandoned)
-"dSA" = (/obj/effect/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "floorscorched2"},/area/mine/abandoned)
+"dSA" = (/obj/structure/alien/weeds,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned)
"dSB" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/mine/abandoned)
-"dSC" = (/obj/effect/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/airless{icon_state = "damaged3"},/area/mine/abandoned)
+"dSC" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned)
"dSD" = (/obj/structure/transit_tube{icon_state = "N-S"},/turf/simulated/wall,/area/research_outpost/entry)
"dSE" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry)
"dSF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry)
@@ -10462,7 +10462,7 @@
"dTj" = (/obj/item/weapon/shard{icon_state = "small"},/turf/simulated/floor/plating/airless,/area/mine/abandoned)
"dTk" = (/obj/effect/gibspawner/robot,/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned)
"dTl" = (/obj/effect/gibspawner/human,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned)
-"dTm" = (/obj/effect/alien/weeds{icon_state = "weeds1"},/obj/effect/decal/remains/xeno,/turf/simulated/floor/plating,/area/mine/abandoned)
+"dTm" = (/obj/structure/alien/weeds,/turf/simulated/floor/airless{icon_state = "damaged3"},/area/mine/abandoned)
"dTn" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/transit_tube{icon_state = "N-S"},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry)
"dTo" = (/obj/machinery/computer/shuttle_control/research{req_access_txt = "65"},/turf/simulated/floor{icon_state = "bot"},/area/research_outpost/entry)
"dTp" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor,/area/research_outpost/entry)
@@ -10505,10 +10505,10 @@
"dUa" = (/obj/item/weapon/shard,/turf/simulated/floor/plating/airless,/area/mine/abandoned)
"dUb" = (/obj/structure/lattice,/obj/item/weapon/shard{icon_state = "small"},/turf/space,/area/mine/abandoned)
"dUc" = (/obj/structure/lattice,/turf/space,/area/mine/abandoned)
-"dUd" = (/obj/effect/alien/weeds,/turf/simulated/floor/airless{icon_state = "floorscorched2"},/area/mine/abandoned)
+"dUd" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned)
"dUe" = (/obj/machinery/door/airlock,/turf/simulated/floor,/area/mine/abandoned)
-"dUf" = (/obj/effect/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned)
-"dUg" = (/obj/effect/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned)
+"dUf" = (/obj/structure/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned)
+"dUg" = (/obj/structure/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned)
"dUh" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/transit_tube{icon_state = "N-SE"},/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry)
"dUi" = (/obj/structure/transit_tube{icon_state = "D-SW"},/turf/simulated/floor{icon_state = "bot"},/area/research_outpost/entry)
"dUj" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; level = 2; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor,/area/research_outpost/entry)
@@ -10551,10 +10551,10 @@
"dUU" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/mine/abandoned)
"dUV" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/mine/abandoned)
"dUW" = (/turf/simulated/floor/airless{icon_state = "damaged4"},/area/mine/abandoned)
-"dUX" = (/obj/effect/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/plating/airless,/area/mine/abandoned)
+"dUX" = (/obj/structure/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned)
"dUY" = (/obj/effect/decal/remains/xeno,/turf/simulated/floor/airless{icon_state = "floorscorched2"},/area/mine/abandoned)
"dUZ" = (/turf/simulated/floor/airless,/area/mine/abandoned)
-"dVa" = (/obj/effect/alien/weeds,/turf/simulated/floor,/area/mine/abandoned)
+"dVa" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/airless{icon_state = "damaged3"},/area/mine/abandoned)
"dVb" = (/obj/effect/decal/remains/xeno,/turf/simulated/floor/airless{icon_state = "damaged3"},/area/mine/abandoned)
"dVc" = (/obj/structure/table,/turf/simulated/floor,/area/mine/abandoned)
"dVd" = (/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/abandoned)
@@ -10598,12 +10598,12 @@
"dVP" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 0},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/research_outpost/harvesting)
"dVQ" = (/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/research_outpost/harvesting)
"dVR" = (/obj/structure/table,/obj/item/weapon/anodevice{pixel_x = 3; pixel_y = 3},/obj/item/weapon/anodevice,/obj/machinery/status_display{layer = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/research_outpost/harvesting)
-"dVS" = (/obj/effect/alien/weeds,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned)
+"dVS" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/plating,/area/mine/abandoned)
"dVT" = (/obj/effect/decal/remains/human,/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned)
-"dVU" = (/obj/effect/alien/weeds,/turf/simulated/floor/plating/airless,/area/mine/abandoned)
-"dVV" = (/obj/effect/alien/weeds,/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned)
+"dVU" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "floorscorched2"},/area/mine/abandoned)
+"dVV" = (/obj/structure/alien/weeds,/turf/simulated/floor/plating,/area/mine/abandoned)
"dVW" = (/obj/structure/table,/turf/simulated/floor/airless,/area/mine/abandoned)
-"dVX" = (/obj/effect/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned)
+"dVX" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned)
"dVY" = (/turf/simulated/mineral,/area/mine/explored)
"dVZ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only{dir = 2},/turf/simulated/floor/plating,/area/research_outpost/entry)
"dWa" = (/obj/structure/transit_tube/station{icon_state = "closed"; dir = 4},/obj/structure/transit_tube_pod,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/research_outpost/entry)
@@ -10642,7 +10642,7 @@
"dWH" = (/obj/structure/table,/obj/item/weapon/anobattery{pixel_x = -6; pixel_y = 2},/obj/item/weapon/anobattery{pixel_x = -2; pixel_y = -2},/obj/item/weapon/anobattery{pixel_x = 2; pixel_y = 2},/obj/item/weapon/anobattery{pixel_x = 6; pixel_y = 6},/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/research_outpost/harvesting)
"dWI" = (/obj/item/weapon/shard,/turf/simulated/floor/airless{icon_state = "floorscorched2"},/area/mine/abandoned)
"dWJ" = (/obj/item/weapon/shard{icon_state = "small"},/turf/simulated/floor/airless,/area/mine/abandoned)
-"dWK" = (/obj/effect/alien/weeds,/turf/simulated/floor/airless{icon_state = "damaged3"},/area/mine/abandoned)
+"dWK" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/obj/effect/decal/remains/xeno,/turf/simulated/floor/plating,/area/mine/abandoned)
"dWL" = (/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored)
"dWM" = (/turf/simulated/wall,/area/mine/unexplored)
"dWN" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'INTERNALS REQUIRED'."; name = "INTERNALS REQUIRED"; pixel_x = -32; pixel_y = 0},/turf/space,/area)
@@ -10683,8 +10683,8 @@
"dXw" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/mine/abandoned)
"dXx" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/mine/abandoned)
"dXy" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/mine/abandoned)
-"dXz" = (/obj/effect/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor,/area/mine/abandoned)
-"dXA" = (/obj/effect/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/airless{icon_state = "damaged2"},/area/mine/abandoned)
+"dXz" = (/obj/structure/alien/weeds,/turf/simulated/floor/plating/airless,/area/mine/abandoned)
+"dXA" = (/obj/structure/alien/weeds{icon_state = "weeds1"},/turf/simulated/floor/plating/airless,/area/mine/abandoned)
"dXB" = (/obj/structure/transit_tube{tag = "icon-D-SE"; icon_state = "D-SE"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored)
"dXC" = (/obj/structure/transit_tube{tag = "icon-E-SW"; icon_state = "E-SW"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored)
"dXD" = (/turf/simulated/wall,/area/research_outpost/gearstore)
@@ -10724,7 +10724,7 @@
"dYl" = (/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/disposaloutlet,/turf/simulated/floor,/area/research_outpost/longtermstorage)
"dYm" = (/obj/structure/transit_tube{icon_state = "D-SE"},/turf/simulated/wall/r_wall,/area/research_outpost/harvesting)
"dYn" = (/obj/effect/decal/remains/xeno,/turf/simulated/floor,/area/mine/abandoned)
-"dYo" = (/obj/effect/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/airless{icon_state = "damaged3"},/area/mine/abandoned)
+"dYo" = (/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/shuttle/floor{tag = "icon-floor2"; icon_state = "floor2"},/area)
"dYp" = (/obj/structure/transit_tube{tag = "icon-D-SE"; icon_state = "D-SE"},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored)
"dYq" = (/obj/structure/transit_tube{tag = "icon-NE-SW"; icon_state = "NE-SW"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored)
"dYr" = (/obj/structure/transit_tube{tag = "icon-D-NW"; icon_state = "D-NW"},/turf/simulated/mineral,/area/mine/unexplored)
@@ -10761,7 +10761,7 @@
"dYW" = (/obj/structure/transit_tube{icon_state = "D-NW"},/turf/space,/area)
"dYX" = (/turf/simulated/floor{icon_state = "green"; dir = 8},/area/mine/abandoned)
"dYY" = (/obj/effect/gibspawner/human,/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned)
-"dYZ" = (/obj/effect/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned)
+"dYZ" = (/obj/structure/alien/weeds{icon_state = "weeds"},/turf/simulated/shuttle/floor{tag = "icon-floor2"; icon_state = "floor2"},/area)
"dZa" = (/turf/simulated/wall,/area/mine/explored)
"dZb" = (/obj/structure/ore_box,/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored)
"dZc" = (/obj/structure/transit_tube{tag = "icon-S-NE"; icon_state = "S-NE"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored)
@@ -10796,7 +10796,7 @@
"dZF" = (/obj/structure/transit_tube{tag = "icon-S-NE"; icon_state = "S-NE"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/unexplored)
"dZG" = (/obj/structure/transit_tube{tag = "icon-D-NW"; icon_state = "D-NW"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/unexplored)
"dZH" = (/obj/effect/decal/remains/human,/turf/simulated/floor{icon_state = "green"; dir = 8},/area/mine/abandoned)
-"dZI" = (/obj/effect/alien/resin,/turf/simulated/floor/airless{icon_state = "floorgrime"},/area/mine/abandoned)
+"dZI" = (/obj/item/weapon/shard{icon_state = "medium"},/obj/structure/alien/weeds{icon_state = "weeds"},/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned)
"dZJ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/mine/abandoned)
"dZK" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/mine/abandoned)
"dZL" = (/obj/structure/ore_box,/obj/machinery/light_construct/small{dir = 1},/turf/simulated/floor/plating/airless/asteroid,/area/mine/explored)
@@ -10824,7 +10824,7 @@
"eah" = (/turf/simulated/wall/r_wall,/area/research_outpost/maintstore2)
"eai" = (/obj/structure/transit_tube{tag = "icon-D-SE"; icon_state = "D-SE"},/turf/simulated/wall/r_wall,/area/research_outpost/longtermstorage)
"eaj" = (/obj/structure/transit_tube{tag = "icon-N-SW"; icon_state = "N-SW"},/turf/simulated/floor/plating/airless/asteroid,/area/mine/unexplored)
-"eak" = (/obj/effect/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "damaged3"},/area/mine/abandoned)
+"eak" = (/obj/item/stack/rods,/obj/structure/alien/weeds{icon_state = "weeds2"},/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned)
"eal" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/shard,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"; tag = ""},/area/mine/abandoned)
"eam" = (/obj/machinery/door/airlock/glass{name = "Glass Airlock"; req_access_txt = "0"},/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"; tag = "icon-asteroidfloor"},/area/mine/abandoned)
"ean" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/mine/abandoned)
@@ -13628,28 +13628,28 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNcdNddNcaaaaaaaaaaaaaaadLndLndLndLndLndLndLndLndLndLndLndLndLndLndLndLndLndLndLndLndLndLndMxdLndLndLndMxdMxdLndMxdMxdMxdLndLndMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndMxaaaaaadNedMOaabaabaabaabaabdLndLndLndLndMedNfdNgdNhdNidNjdNkdNldNmdNndNodNpdNqdNrdModNsdNtdModNudNvdNwdNxdNydNzdNAdNBdNCdNDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLodLodLodLodLodLodLodLodLodLodLodLodLodLodLodLodLoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadNEdNFdNEaabaaaaaaaaadLndLndLndLndLndLndLndLndLndLndLndLndMxdMxdMxdMxdMxdMxdLndLndLndLndLndLndLndMxdMxdMxdMxdMxdLndLndLndMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxaaaaaadMdaaaaaaaaaaaaaaaaaadLndLndLndLndMedNGdNHdNIdMedNJdNjdNKdNLdNMdNNdNOdNPdNQdNRdNSdNTdNUdNVdNWdMYdNXdNYdNZdOadObdOcdNDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLodLodLodLodLodLodLodLodLodLodLodLodLodLodLodLodLoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadOddOedOfdOgaabaaaaaadLndLndLndLndLndLndLndMxdLndLndMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxaaaaaadMdaaaaaaaaaaaaaaaaaadLndLndLndLndMedNGdNHdOhdMedOidNKdOjdOkdOldOmdOndOmdOodOmdOmdOmdOmdOpdOqdMYdOrdNYdOsdOtdOudNCdNDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLodLodLodLodLodLodLodLodLodLodLodLodLodLodLodLodLoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadOvdOvdOwdOxdOydNEaabaaaaaadLndLndLndLndMxdMxdMxdLndLndMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdOzaabdMdaaaaaaaaaaaaaaaaaadLndLndLndLndMedNGdOAdOBdMedOCdODdOEdOFdOGdOHdOIdOJdOKdOLdOMdONdOmdOOdOPdMYdOQdORdOSdOTdMYdOUdOVaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLodLodLodLodLodLodLodLodLodLodLodLodLodLodLodLodLoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadOWdOXdOYdOZdPadPbdPcaabaabdMxdMxdLndLndMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdPddPddPeaabdMdaaaaabaabaabaabaabdLndLYdLYdLYdLYdLYdPfdPgdLYdMRdMRdPhdPidPjdOmdPkdPldPmdPndPodPpdOmdPqdPrdPsdPtdPudPvdPwdMYdPxdPyaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLodLodLodLodLoaaadLodLodLodLodLoaaadLodLodLodLodLoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadPzdOvdPAdPBdPCdOydPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdPddPddPdaaaaaadMddPEdPEdPEdPEdPEdPEdPEdModPFdPGdPHdPIdPJdPKdPLdPMdPNdPOdPPdPQdOmdPRdPSdPTdPUdPVdPWdPXdPYdPZdQadQadQadQbdQcdQddQedQfdQfdQgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLodLodLodLodLoaaadLodLodLodLodLoaaadLodLodLodLodLoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdQhdQidQjdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdPdaaaaaadMddPEdPEdPEdPEdPEdPEdPEdQkdQldQmdQndQodQpdQqdQrdQsdQtdQudQvdQwdQxdQydQzdQAdQBdQCdQDdQEdQFdQGdQadQHdQIdQJdQKdQadQLdPydPydPyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLodLodLodLodLoaaaaaaaaaaaaaaaaaaaaadLodLodLodLodLoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdQMdQNdQOdQPdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxaaaaaaaaaaaadMddPEdPEdPEdPEdPEdPEdPEdQQdQRdPGdQSdQTdQUdQVdQWdQXdQYdLYdQZdRadRbdRcdRddRedRfdRgdRhdOmdRidRjdRkdRldRldRmdRndRodRpdRqdRrdRraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdRsdRtdRudPDdRvdRwdPDdPDdPDdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxaaaaaaaaaaaaaaaaaadMddPEdPEdPEdPEdPEdPEdPEdRxdQRdPGdQSdQTdRydRzdQWdRAdRBdLYdRCdRDdOmdREdOmdOmdOmdOmdRFdOmdRGdRHdQadRIdRJdRKdRLdRMdRNdROdRPdRPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdRQdRRdRSdRTdRUdRVdNcdPbdRWdPDdRXdRYdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxaaaaaaaaaaaaaaaaaadMddPEdPEdPEdPEdPEdPEdPEdModQRdPGdRZdQTdSadSbdQWdScdSddLYdSedSfdSgdShdSidSjdSkdOmdSldSmdSndSodSpdSqdSrdSsdStdSudRNdRrdRrdRraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdSvdSwdRRdSxdSydSzdSAdSBdRWdSCdRYdRYdRXdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxaaaaaaaaaaaaaaaaaadSDdSEdSFdSGdSHdSIdSFdSJdSKdSLdSMdModSNdSOdLYdLYdLYdLYdLYdSPdSQdSRdShdSSdSjdSTdOmdSUdSVdSWdSXdSYdSZdTadTbdTcdTddTedTfdLYdTgdMMdLNdLNdLNdLNdLNdLNdLOdThaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadTidSvdTjdSvdRSdRSdRvdTkdSydPDdQPdTldPDdRYdTmdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxaaaaaaaaaaaaaaaaaadTndTodTpdTqdTrdTrdTsdTtdTudTvdTwdTxdTydTzdTAdTBdTCdTDdTEdTFdTGdTHdTIdTJdTKdTLdOmdTMdTNdTOdTPdQadQadTQdQadQadQadTRdTSdTTdTUdTVdTWdTWdTXdTWdTWdTWdTYdMvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdTZdUadRSdUbdUcdRSdQjdUddSzdUedUfdUgdPDdPDdPDdPDdPDdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndLndLndLndLndLndLndLndLndLndLndLndLnaaaaaaaaaaaaaaadUhdUidTrdTrdTrdTrdUjdUkdUldUmdUndUodUpdUqdTAdUrdUsdUtdUudUvdUwdUxdUydUzdUAdUBdUCdUDdUAdUEdUFdUGdUHdUIdUJdUGdUKdUGdUAdULdUMdUNdUOdUPdUQdURdUSdUTdTWdMKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdUUdUVdUWdRSdUcdUXdSxdUYdSydUZdPDdVadVbdPDdVcdRWdVddVedPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndLndLndLndLndLndLndLndLndLndLndLndLndLnaaaaaaaaaaaaaaadVfdVgdTrdTrdVhdTrdVidVjdVkdVldVmdVndVodVpdTAdVqdVrdVsdVtdVudVvdVwdVxdVydVzdVAdVBdVCdVDdVAdVEdVBdVFdVAdVBdVGdVHdVIdVJdVKdVLdVMdVNdVOdVPdVQdVQdVRdTWdMKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabdMxdMxdPDdRVdVSdVTdVUdUWdVVdSydSzdVWdNcdPbdVXdPDdVcdQPdRWdVedPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndLndLndLndVYdVYdVYdVYdVYdVYdLndLndLndLndLndLndLnaaaaaaaaaaaadVZdWadTrdWbdWcdWddWedWfdWgdWhdWidWjdWkdWldTAdWmdWndWodWpdWpdWpdWpdWqdWrdWsdWtdWrdWudWvdWwdWudWxdWydWzdWxdWxdWAdWBdWCdWDdTWdWEdWFdTWdWGdVQdVQdWHdTWdMKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdPDdPDdPDdPDdPDdPDdRUdSydWIdVSdSydUddWJdVWdVWdSBdRWdVadPDdVcdQjdWKdVedPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndLndVYdVYdVYdWLdWLdWLdWLdVYdVYdVYdLndLndLndLndWMdWNaaaaaaaaadWOdWPdSFdWQdWRdWRdWRdWRdWSdWTdWUdModModModTAdWVdWpdWWdWpdWXdWYdWZdXadWrdXbdXcdXddWudXedXfdXgdWxdXhdXidXjdWxdXkdXldWCdXmdXndTWdTWdTWdXodXpdXqdUTdTWdMKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdPDdXrdPbdSzdXsdPDdXtdXudXvdPDdUedPDdXwdXxdXydPDdPbdXzdNFdXAdQjdQOdNFdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndLndLndVYdVYdWLdWLdWLdWLdWLdWLdWLdWLdVYdVYdLndLndXBdXCdLNdLNdLsdLNdMNdMOaabaabdXDdXEdXFdXGdXHdXIdXJdXKdXLdXMdXNdXOdXPdXQdXRdXSdXTdXUdXVdWrdXWdXXdXYdWudXZdYadYbdWxdYcdYddYedWxdYfdYgdYhdYidYjdYkdYldTWdTWdTWdTWdTWdYmdMyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMxdPDdXrdQjdPbdSxdUedXzdVSdPbdVSdQOdPbdPbdYndRWdPbdQjdQjdPDdNFdYodQjdPbdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndLndVYdVYdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdVYdVYdYpdYqdYrdLnaaaaaaaaaaaaaaaaaaaabdXDdYsdYtdYudYvdYwdYxdYydYzdYAdYBdTAdWpdWWdWpdYCdWpdYDdYEdWrdYFdYGdYHdWudYIdYJdYKdWxdYLdYMdYNdWxdYOdYPdYQdYRdYSdYSdYTdXndYUdLrdLNdLNdYVdYWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMxdMxdPDdXrdYXdQjdQjdUedQjdWKdRvdQjdYYdQOdWKdVXdNFdQjdYZdQPdPDdVSdNFdXzdPbdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndVYdZadWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdZbdVYdZcdZddVYdVYaaaaaaaaaaaaaaaaaaaabdXDdZedZfdZgdZhdZgdZidZjdXDdYzdZkdTAdZldZmdZndZodWpdZpdZqdWrdZrdZsdZtdWudZudZvdZwdWxdZxdZydZzdWxdZAdZBdXndZCdZDdZEdZDdXndZFdZGdMxaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMxdMxdMxdPDdXrdZHdSxdRUdPDdZIdPDdZJdZKdPDdSzdPDdZJdZKdPDdSydXzdPDdYndUgdNFdVadPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndVYdZLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdZMdZadZNdZadVYaaaaaaaaaaaaaaaaaaaaaaabdXDdZOdZjdZjdZPdZQdZRdZjdZSdYzdZTdTAdZUdZUdZUdZUdWpdZVdXUdWrdZWdZXdZYdWudZZeaaeabdWxeaceadeaedWxeafeageahdXndXndXndXneaieajdLndMxdMxdMxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMxdMxdMxdMxdMxdMxdPDdPDdPDdPDdPDdPDdZIdPDeakdRWdSzdVadQPdSydVVdSydUgdSxdPDdZJealeameandPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndVYdZbdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLeaoeapeaqaaaaaaaaaaaaaaaaaaaaaaabaabdXDeareareaseateaudZjeaveawdYzeaxdTAdWLdWLdWLdWLdWpeayeazdWreaAeaBeaCdWueaDeaEeaFdWxeaGeaHeaIdWxeaJeaKeahdLndMxdLneaLeaMeaNdLndMxdMxdMxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdPDdZIdPDdRWdVaeaOdUddOydSxdRWdPDdSydQPdPDeaPeaQeaQeaRdPDeaSdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndVYdVYdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLeaTeaUeaVaaaaaaaaaaaaaaaaaaaabaabaabdXDdXDeaWeaXdXDeaYeaZebaeaZdXDebbdWLdWLdWLdWLdWLdWpdWpdWpdWrdWrdWrdWrdWudWudWudWudWxdWxdWxdWxdWxeaheahebcebddLIdLIebedZGdLndLndMxdMxdMxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdPDdZIdPDdVadPbdUgdRWdSydQPdUgdPDdZIdPDdPDdVcdNFeaQebfebgeaSeaSdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndVYdVYdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLebhebiebjaaaaaaaaaaaaaaaaabebkeblebmebneboebpebqebrebsebtebuebvdXDebbdWLdWLdWLdWLdWLebwebxebydLndLndLndLndLndLndLndLndLndLndLndLndLndLnebzebAdZGebBdLndLndLndLndLndMxdMxdMxdMxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdPDdZIdPDdPDdPDdPDdPDdPDdPDdPDdPDdZIdPDdVcdNFdVddNFeaRebCeaSeaSdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndVYdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLebDebEebFebGebGebGebGebGebGebHebIebJebKebKebLebMebNdXDebOebPebQdXDebbdWLdWLdWLdWLdWLeaTebiebRdLndLndMxdMxdMxdMxdMxdMxdLndLndLndLndLnebzebAdZGebSeaSebSdLndLndLndLndMxdMxdMxdMxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzaaaaaaaaaaaaaaadOzdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdPDdZIdZIdZIdZIdZIdZIdZIdZIdZIdZIdZIdPDdVcdVddVddVddVedPDeaSeaSeaSdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndVYdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLebTebUebUebUebUebUebUebUebUebTdWLdWLdWLdWLdWLdWLdXDeaZebVeaZdXDebWdWLdWLdWLdWLdWLebXebYebZdLIdLIdLIdLIecadLIdLIdLIdLIdLIecbeccecdecedZGeaSeaSeaSebSdWMdLndMxdMxdMxdMxdMxdMxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadOvdOvdOwdOxdOXdNEaabaaaaaadLndLndLndLndMxdMxdMxdLndLndMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdOzaabdMdaaaaaaaaaaaaaaaaaadLndLndLndLndMedNGdOAdOBdMedOCdODdOEdOFdOGdOHdOIdOJdOKdOLdOMdONdOmdOOdOPdMYdOQdORdOSdOTdMYdOUdOVaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLodLodLodLodLodLodLodLodLodLodLodLodLodLodLodLodLoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadOWdYodYZdOZdZIdPbdPcaabaabdMxdMxdLndLndMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdPddPddPeaabdMdaaaaabaabaabaabaabdLndLYdLYdLYdLYdLYdPfdPgdLYdMRdMRdPhdPidPjdOmdPkdPldPmdPndPodPpdOmdPqdPrdPsdPtdPudPvdPwdMYdPxdPyaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLodLodLodLodLoaaadLodLodLodLodLoaaadLodLodLodLodLoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadPzdOvdPAdPBdPCdOXdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdPddPddPdaaaaaadMddPEdPEdPEdPEdPEdPEdPEdModPFdPGdPHdPIdPJdPKdPLdPMdPNdPOdPPdPQdOmdPRdPSdPTdPUdPVdPWdPXdPYdPZdQadQadQadQbdQcdQddQedQfdQfdQgaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLodLodLodLodLoaaadLodLodLodLodLoaaadLodLodLodLodLoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdQheakdQjdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdPdaaaaaadMddPEdPEdPEdPEdPEdPEdPEdQkdQldQmdQndQodQpdQqdQrdQsdQtdQudQvdQwdQxdQydQzdQAdQBdQCdQDdQEdQFdQGdQadQHdQIdQJdQKdQadQLdPydPydPyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadLodLodLodLodLoaaaaaaaaaaaaaaaaaaaaadLodLodLodLodLoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdQMdQNdSCdPadPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxaaaaaaaaaaaadMddPEdPEdPEdPEdPEdPEdPEdQQdQRdPGdQSdQTdQUdQVdQWdQXdQYdLYdQZdRadRbdRcdRddRedRfdRgdRhdOmdRidRjdRkdRldRldRmdRndRodRpdRqdRrdRraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdRsdRtdRudPDdUddRwdPDdPDdPDdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxaaaaaaaaaaaaaaaaaadMddPEdPEdPEdPEdPEdPEdPEdRxdQRdPGdQSdQTdRydRzdQWdRAdRBdLYdRCdRDdOmdREdOmdOmdOmdOmdRFdOmdRGdRHdQadRIdRJdRKdRLdRMdRNdROdRPdRPaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdRQdRRdRSdRTdRUdRVdNcdPbdOYdPDdVVdVSdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxaaaaaaaaaaaaaaaaaadMddPEdPEdPEdPEdPEdPEdPEdModQRdPGdRZdQTdSadSbdQWdScdSddLYdSedSfdSgdShdSidSjdSkdOmdSldSmdSndSodSpdSqdSrdSsdStdSudRNdRrdRrdRraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdSvdSwdRRdSxdSydSzdVUdSBdOYdVadVSdVSdVVdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxaaaaaaaaaaaaaaaaaadSDdSEdSFdSGdSHdSIdSFdSJdSKdSLdSMdModSNdSOdLYdLYdLYdLYdLYdSPdSQdSRdShdSSdSjdSTdOmdSUdSVdSWdSXdSYdSZdTadTbdTcdTddTedTfdLYdTgdMMdLNdLNdLNdLNdLNdLNdLOdThaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadTidSvdTjdSvdRSdRSdUddTkdSydPDdPadTldPDdVSdWKdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxaaaaaaaaaaaaaaaaaadTndTodTpdTqdTrdTrdTsdTtdTudTvdTwdTxdTydTzdTAdTBdTCdTDdTEdTFdTGdTHdTIdTJdTKdTLdOmdTMdTNdTOdTPdQadQadTQdQadQadQadTRdTSdTTdTUdTVdTWdTWdTXdTWdTWdTWdTYdMvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdTZdUadRSdUbdUcdRSdQjdQOdSzdUedVXdQPdPDdPDdPDdPDdPDdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndLndLndLndLndLndLndLndLndLndLndLndLnaaaaaaaaaaaaaaadUhdUidTrdTrdTrdTrdUjdUkdUldUmdUndUodUpdUqdTAdUrdUsdUtdUudUvdUwdUxdUydUzdUAdUBdUCdUDdUAdUEdUFdUGdUHdUIdUJdUGdUKdUGdUAdULdUMdUNdUOdUPdUQdURdUSdUTdTWdMKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabdUUdUVdUWdRSdUcdXAdSxdUYdSydUZdPDdQidVbdPDdVcdOYdVddVedPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndLndLndLndLndLndLndLndLndLndLndLndLndLnaaaaaaaaaaaaaaadVfdVgdTrdTrdVhdTrdVidVjdVkdVldVmdVndVodVpdTAdVqdVrdVsdVtdVudVvdVwdVxdVydVzdVAdVBdVCdVDdVAdVEdVBdVFdVAdVBdVGdVHdVIdVJdVKdVLdVMdVNdVOdVPdVQdVQdVRdTWdMKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaabdMxdMxdPDdRVdSAdVTdXzdUWdRXdSydSzdVWdNcdPbdUfdPDdVcdPadOYdVedPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndLndLndLndVYdVYdVYdVYdVYdVYdLndLndLndLndLndLndLnaaaaaaaaaaaadVZdWadTrdWbdWcdWddWedWfdWgdWhdWidWjdWkdWldTAdWmdWndWodWpdWpdWpdWpdWqdWrdWsdWtdWrdWudWvdWwdWudWxdWydWzdWxdWxdWAdWBdWCdWDdTWdWEdWFdTWdWGdVQdVQdWHdTWdMKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdPDdPDdPDdPDdPDdPDdRUdSydWIdSAdSydQOdWJdVWdVWdSBdOYdQidPDdVcdQjdTmdVedPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndLndVYdVYdVYdWLdWLdWLdWLdVYdVYdVYdLndLndLndLndWMdWNaaaaaaaaadWOdWPdSFdWQdWRdWRdWRdWRdWSdWTdWUdModModModTAdWVdWpdWWdWpdWXdWYdWZdXadWrdXbdXcdXddWudXedXfdXgdWxdXhdXidXjdWxdXkdXldWCdXmdXndTWdTWdTWdXodXpdXqdUTdTWdMKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdPDdXrdPbdSzdXsdPDdXtdXudXvdPDdUedPDdXwdXxdXydPDdPbdRvdNFdUXdQjdSCdNFdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndLndLndVYdVYdWLdWLdWLdWLdWLdWLdWLdWLdVYdVYdLndLndXBdXCdLNdLNdLsdLNdMNdMOaabaabdXDdXEdXFdXGdXHdXIdXJdXKdXLdXMdXNdXOdXPdXQdXRdXSdXTdXUdXVdWrdXWdXXdXYdWudXZdYadYbdWxdYcdYddYedWxdYfdYgdYhdYidYjdYkdYldTWdTWdTWdTWdTWdYmdMyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMxdPDdXrdQjdPbdSxdUedRvdSAdPbdSAdSCdPbdPbdYndOYdPbdQjdQjdPDdNFdRYdQjdPbdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndLndVYdVYdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdVYdVYdYpdYqdYrdLnaaaaaaaaaaaaaaaaaaaabdXDdYsdYtdYudYvdYwdYxdYydYzdYAdYBdTAdWpdWWdWpdYCdWpdYDdYEdWrdYFdYGdYHdWudYIdYJdYKdWxdYLdYMdYNdWxdYOdYPdYQdYRdYSdYSdYTdXndYUdLrdLNdLNdYVdYWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMxdMxdPDdXrdYXdQjdQjdUedQjdTmdUddQjdYYdSCdTmdUfdNFdQjdUgdPadPDdSAdNFdRvdPbdPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndVYdZadWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdZbdVYdZcdZddVYdVYaaaaaaaaaaaaaaaaaaaabdXDdZedZfdZgdZhdZgdZidZjdXDdYzdZkdTAdZldZmdZndZodWpdZpdZqdWrdZrdZsdZtdWudZudZvdZwdWxdZxdZydZzdWxdZAdZBdXndZCdZDdZEdZDdXndZFdZGdMxaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMxdMxdMxdPDdXrdZHdSxdRUdPDdOydPDdZJdZKdPDdSzdPDdZJdZKdPDdSydRvdPDdYndQPdNFdQidPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndVYdZLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdZMdZadZNdZadVYaaaaaaaaaaaaaaaaaaaaaaabdXDdZOdZjdZjdZPdZQdZRdZjdZSdYzdZTdTAdZUdZUdZUdZUdWpdZVdXUdWrdZWdZXdZYdWudZZeaaeabdWxeaceadeaedWxeafeageahdXndXndXndXneaieajdLndMxdMxdMxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMxdMxdMxdMxdMxdMxdPDdPDdPDdPDdPDdPDdOydPDdRWdOYdSzdQidPadSydRXdSydQPdSxdPDdZJealeameandPDdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndVYdZbdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLeaoeapeaqaaaaaaaaaaaaaaaaaaaaaaabaabdXDeareareaseateaudZjeaveawdYzeaxdTAdWLdWLdWLdWLdWpeayeazdWreaAeaBeaCdWueaDeaEeaFdWxeaGeaHeaIdWxeaJeaKeahdLndMxdLneaLeaMeaNdLndMxdMxdMxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdPDdOydPDdOYdQieaOdQOdOXdSxdOYdPDdSydPadPDeaPeaQeaQeaRdPDeaSdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndVYdVYdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLeaTeaUeaVaaaaaaaaaaaaaaaaaaaabaabaabdXDdXDeaWeaXdXDeaYeaZebaeaZdXDebbdWLdWLdWLdWLdWLdWpdWpdWpdWrdWrdWrdWrdWudWudWudWudWxdWxdWxdWxdWxeaheahebcebddLIdLIebedZGdLndLndMxdMxdMxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdPDdOydPDdQidPbdQPdOYdSydPadQPdPDdOydPDdPDdVcdNFeaQebfebgeaSeaSdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndVYdVYdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLebhebiebjaaaaaaaaaaaaaaaaabebkeblebmebneboebpebqebrebsebtebuebvdXDebbdWLdWLdWLdWLdWLebwebxebydLndLndLndLndLndLndLndLndLndLndLndLndLndLnebzebAdZGebBdLndLndLndLndLndMxdMxdMxdMxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdPDdOydPDdPDdPDdPDdPDdPDdPDdPDdPDdOydPDdVcdNFdVddNFeaRebCeaSeaSdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndVYdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLebDebEebFebGebGebGebGebGebGebHebIebJebKebKebLebMebNdXDebOebPebQdXDebbdWLdWLdWLdWLdWLeaTebiebRdLndLndMxdMxdMxdMxdMxdMxdLndLndLndLndLnebzebAdZGebSeaSebSdLndLndLndLndMxdMxdMxdMxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzaaaaaaaaaaaaaaadOzdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdPDdOydOydOydOydOydOydOydOydOydOydOydPDdVcdVddVddVddVedPDeaSeaSeaSdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndVYdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLebTebUebUebUebUebUebUebUebUebTdWLdWLdWLdWLdWLdWLdXDeaZebVeaZdXDebWdWLdWLdWLdWLdWLebXebYebZdLIdLIdLIdLIecadLIdLIdLIdLIdLIecbeccecdecedZGeaSeaSeaSebSdWMdLndMxdMxdMxdMxdMxdMxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdPDdPDdPDdPDdPDdPDdPDdPDdPDdPDdPDdPDdPDdPDeanecfecgdPDdPDeaSeaSeaSeaSdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndVYdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLebDebJechechechechechechechechebDebJdWLdWLdWLdWLdWLdWLeciecjeckeclecmecndWLdWLdWLdWLebyebyebydLndLndMxdMxdMxdMxdMxdMxdMxdMxecoecpecqecreaSebSeaSeaSebSdLndLndLndMxdMxdMxdMxdMxdMxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxeaSeaSeaSdPDeaQeaQdVddPDeaSeaSeaSeaSeaSdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndVYdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLaaaaaaaaaaaaaaaaaaaaaaaadVYdVYdVYdVYdVYdVYdVYdVYdWLdWLdWLdWLdWLdWLeciecseckdWLdWLdWLdVYdVYdLndLndLndLndMxdMxdMxdMxdMxdMxdMxdWMebSeaSecteaSebSeaSeaSeaSdLndLndLndLndLndMxdMxdMxdMxdMxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdOzdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxeaSeaSeaSdPDecuecvecudPDeaSeaSeaSeaSeaSdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdLndVYdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLdWLaaaaaaaaaaaaaaaaaaaaaaaadVYdVYdVYdLndLndLndLndVYdVYdVYdWLdWLdWLdWLdWLecwdWLdWLdWLdWLdVYdLndLndLndMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdMxdWMdMxeaSebBdMxdLndMxdMxdLndLndLndLndMxdMxdMxdMxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa