From 453080616ba5b5d8b92ea4598ab46ddd9574f3be Mon Sep 17 00:00:00 2001 From: Cameron Lennox Date: Thu, 26 Mar 2026 22:20:06 -0400 Subject: [PATCH] SM, Tesla, and general engineering adjustments [MDB IGNORE] [IDB IGNORE] (#19339) * Update supermatter.dm * fix * clamps these * gwah * Stops tesla from zapping unwrenched coils * tesla upgrade * unglobals this * fix these * Update coil.dm * Update coil.dm * Descriptions * Update coil.dm * Update coil.dm * Update coil.dm * Update coil.dm * Update coil.dm * ranges * UGH * Update vorestation.dme * meth * monster math * Update coil.dm * Update coil.dm * Update coil.dm * THEY DID THE MATH * the monster math * egwah * desc * Update coil.dm * Returns * Update coil.dm * Lowers amount gained * this * im dumb * tesy * Update coil.dm * Update coil.dm * fixes initial density on blast doors * dot * fixes these * Mapper Tools * icon * these * Fixes the sound following people * recursive geigers * Make this a proc * Update supermatter.dm * less ear destroying * these * makes canisters not get softlocked * Hotkeys * proper return * Makes shield gen useful. Gets rid of a harddel Adds hydromagnetic trap * math * Makes buttons more clear. * lol * Fixes ancient runtime * Adds craftable mass driver buttons * button * fixes this * Makes misclicks not destroy solar panels * Update solar.dm * fix this * make them both numbers * upports reflectors * Update reflector.dm * Update reflectors.dm * solar panel and climbable * Gets rid of 'as X' * Adds account console * Update vorestation.dme * Craftable message server * Update message_server.dm * These * con struct * Update smartfridge.dm * whoop * edits --- .../components/binary_devices/pipeturbine.dm | 2 + .../components/binary_devices/pump.dm | 25 ++ .../components/binary_devices/volume_pump.dm | 24 ++ code/__defines/power.dm | 1 + code/__defines/research/techweb_nodes.dm | 1 + code/controllers/subsystems/radiation.dm | 43 ++- code/controllers/subsystems/reflector.dm | 45 +++ code/datums/components/geiger_sound.dm | 17 +- .../components/traits/radiation_effects.dm | 11 +- code/game/machinery/atmoalter/canister.dm | 2 + code/game/machinery/atmoalter/pump.dm | 2 +- code/game/machinery/atmoalter/pump_vr.dm | 2 +- code/game/machinery/autolathe.dm | 2 +- code/game/machinery/computer/computer.dm | 8 +- code/game/machinery/door_control.dm | 13 + code/game/machinery/doors/airlock_control.dm | 2 +- code/game/machinery/doors/blast_door.dm | 4 + code/game/machinery/machinery.dm | 6 +- code/game/machinery/mass_driver.dm | 4 +- code/game/machinery/spaceheater.dm | 2 +- .../effects/anomalies/anomalies_flux.dm | 10 +- code/game/objects/items/devices/geiger.dm | 10 +- .../weapons/circuitboards/computer/command.dm | 5 + .../circuitboards/computer/telecomms.dm | 6 + .../items/weapons/circuitboards/frame.dm | 5 + .../weapons/circuitboards/machinery/power.dm | 9 + .../circuitboards/machinery/smartfridges.dm | 78 +++++ code/game/objects/objs.dm | 1 - code/game/objects/structures/flora/trees.dm | 2 +- code/game/objects/structures/reflectors.dm | 323 ++++++++++++++++++ code/modules/admin/verbs/lightning_strike.dm | 6 +- code/modules/clothing/clothing.dm | 2 +- .../modules/clothing/suits/reactive_armour.dm | 2 +- code/modules/economy/Accounts_DB.dm | 5 + .../food/kitchen/smartfridge/drying_rack.dm | 1 + .../food/kitchen/smartfridge/engineering.dm | 2 + .../food/kitchen/smartfridge/medical.dm | 2 + .../food/kitchen/smartfridge/research.dm | 1 + .../food/kitchen/smartfridge/service.dm | 14 +- .../food/kitchen/smartfridge/smartfridge.dm | 13 +- .../kitchen/smartfridge/smartfridge_vr.dm | 2 + .../mechanical/mecha/adv_dark_gygax.dm | 2 +- code/modules/power/cells/power_cells.dm | 1 + code/modules/power/fusion/magpower.dm | 1 + code/modules/power/gravitygenerator_vr.dm | 2 +- code/modules/power/lighting.dm | 2 +- code/modules/power/port_gen_vr.dm | 8 +- code/modules/power/singularity/emitter.dm | 9 + code/modules/power/singularity/emitter_vr.dm | 9 + .../power/singularity/field_generator.dm | 9 + .../particle_accelerator.dm | 9 + .../particle_accelerator/particle_chamber.dm | 8 + .../particle_accelerator/particle_control.dm | 8 + .../particle_accelerator/particle_emitter.dm | 25 ++ .../particle_accelerator/particle_power.dm | 8 + code/modules/power/solar.dm | 12 +- code/modules/power/supermatter/supermatter.dm | 19 +- code/modules/power/tesla/coil.dm | 281 ++++++++++++--- code/modules/power/tesla/energy_ball.dm | 27 +- code/modules/power/tesla/generator.dm | 5 +- code/modules/power/tesla/tesla_act.dm | 20 +- code/modules/power/turbine.dm | 2 +- code/modules/research/message_server.dm | 11 +- .../research/tg/designs/boards/engineering.dm | 141 ++++++++ .../research/tg/designs/boards/misc.dm | 11 + .../research/tg/designs/boards/telecomms.dm | 5 + .../research/tg/techwebs/nodes/engi_nodes.dm | 27 ++ .../tg/techwebs/nodes/service_nodes.dm | 2 +- code/modules/shieldgen/emergency_shield.dm | 105 ++++-- code/modules/surgery/organs_internal.dm | 2 +- code/modules/surgery/robotics.dm | 2 +- code/modules/vehicles/cargo_train.dm | 10 +- code/modules/vore/resizing/resize_vr.dm | 6 +- icons/obj/structures/tgs_structures.dmi | Bin 0 -> 168555 bytes maps/virgo_minitest/virgo_minitest-1.dmm | 52 ++- vorestation.dme | 4 + 76 files changed, 1316 insertions(+), 244 deletions(-) create mode 100644 code/controllers/subsystems/reflector.dm create mode 100644 code/game/objects/items/weapons/circuitboards/computer/command.dm create mode 100644 code/game/objects/items/weapons/circuitboards/machinery/smartfridges.dm create mode 100644 code/game/objects/structures/reflectors.dm create mode 100644 icons/obj/structures/tgs_structures.dmi diff --git a/code/ATMOSPHERICS/components/binary_devices/pipeturbine.dm b/code/ATMOSPHERICS/components/binary_devices/pipeturbine.dm index b12b1cfb2b..19a62d9a2f 100644 --- a/code/ATMOSPHERICS/components/binary_devices/pipeturbine.dm +++ b/code/ATMOSPHERICS/components/binary_devices/pipeturbine.dm @@ -227,6 +227,8 @@ turbine = null if(src.loc && anchored) turbine = locate(/obj/machinery/atmospherics/pipeturbine) in get_step(src,dir) + if(!turbine) + return if (turbine.stat & (BROKEN) || !turbine.anchored || turn(turbine.dir,180) != dir) turbine = null diff --git a/code/ATMOSPHERICS/components/binary_devices/pump.dm b/code/ATMOSPHERICS/components/binary_devices/pump.dm index b731b2c3e5..3b1a28e2dc 100644 --- a/code/ATMOSPHERICS/components/binary_devices/pump.dm +++ b/code/ATMOSPHERICS/components/binary_devices/pump.dm @@ -255,6 +255,31 @@ Thus, the two variables affect pump operation are set in New(): "You hear ratchet.") deconstruct() +/obj/machinery/atmospherics/binary/pump/click_alt(mob/user) + user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN) + if(!allowed(user)) + to_chat(user, span_warning("Access denied.")) + return CLICK_ACTION_BLOCKING + + to_chat(user, span_notice("You set the [name] to max output")) + target_pressure = max_pressure_setting + add_fingerprint(user) + return CLICK_ACTION_SUCCESS + + +/obj/machinery/atmospherics/binary/pump/click_ctrl(mob/user) + user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN) + if(!allowed(user)) + to_chat(user, span_warning("Access denied.")) + return CLICK_ACTION_BLOCKING + + update_use_power(!use_power) + update_icon() + add_fingerprint(user) + to_chat(user, span_notice("You toggle the [name] [use_power ? "on" : "off"].")) + + return CLICK_ACTION_SUCCESS + /obj/machinery/atmospherics/binary/pump/high_power icon = 'icons/atmos/volume_pump.dmi' icon_state = "map_off" diff --git a/code/ATMOSPHERICS/components/binary_devices/volume_pump.dm b/code/ATMOSPHERICS/components/binary_devices/volume_pump.dm index e0cd6f58f2..c138cfcdbc 100644 --- a/code/ATMOSPHERICS/components/binary_devices/volume_pump.dm +++ b/code/ATMOSPHERICS/components/binary_devices/volume_pump.dm @@ -303,5 +303,29 @@ Thus, the two variables affect pump operation are set in New(): to_chat(user, span_notice("The pump quiets down as you turn its limiters back on.")) update_icon() +/obj/machinery/atmospherics/binary/volume_pump/click_alt(mob/user) + user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN) + if(!allowed(user)) + to_chat(user, span_warning("Access denied.")) + return CLICK_ACTION_BLOCKING + + to_chat(user, span_notice("You set the [name] to max output")) + transfer_rate = max_transfer_rate + add_fingerprint(user) + return CLICK_ACTION_SUCCESS + + +/obj/machinery/atmospherics/binary/volume_pump/click_ctrl(mob/user) + user.setClickCooldown(DEFAULT_ATTACK_COOLDOWN) + if(!allowed(user)) + to_chat(user, span_warning("Access denied.")) + return CLICK_ACTION_BLOCKING + + update_use_power(!use_power) + update_icon() + add_fingerprint(user) + to_chat(user, span_notice("You toggle the [name] [use_power ? "on" : "off"].")) + return CLICK_ACTION_SUCCESS + #undef VOLUME_PUMP_MAX_OUTPUT_PRESSURE #undef VOLUME_PUMP_LEAK_AMOUNT diff --git a/code/__defines/power.dm b/code/__defines/power.dm index ea32aa1470..98ae2ffbef 100644 --- a/code/__defines/power.dm +++ b/code/__defines/power.dm @@ -1,2 +1,3 @@ #define I_SINGULO "singulo" #define EMITTER_DAMAGE_POWER_TRANSFER 450 //used to transfer power to containment field generators +#define MAXIMUM_TESLA_JUMPS 20 diff --git a/code/__defines/research/techweb_nodes.dm b/code/__defines/research/techweb_nodes.dm index 7988bc3926..31f2217e80 100644 --- a/code/__defines/research/techweb_nodes.dm +++ b/code/__defines/research/techweb_nodes.dm @@ -161,3 +161,4 @@ #define TECHWEB_NODE_CONFETTI "confetti" #define TECHWEB_NODE_RSF "rapid_service_fab" #define TECHWEB_NODE_MATERIALSHEETS "material_sheets" +#define TECHWEB_NODE_SMARTFRIDGES "smartfridges" diff --git a/code/controllers/subsystems/radiation.dm b/code/controllers/subsystems/radiation.dm index 7c7af986e7..928bc4103e 100644 --- a/code/controllers/subsystems/radiation.dm +++ b/code/controllers/subsystems/radiation.dm @@ -42,24 +42,13 @@ SUBSYSTEM_DEF(radiation) continue for(var/obj/item/geiger/geiger_counter in turf_to_irradiate) - var/current_insulation = 1 - for(var/turf/turf_in_between in get_line(source, geiger_counter) - get_turf(source)) - var/insulation = cached_rad_insulations[turf_in_between] - if(isnull(insulation)) - insulation = turf_in_between.rad_insulation - for (var/atom/on_turf as anything in turf_in_between.contents) - insulation *= on_turf.rad_insulation - cached_rad_insulations[turf_in_between] = insulation - - current_insulation *= insulation - - if(current_insulation <= pulse_information.threshold) - continue - - SEND_SIGNAL(geiger_counter, COMSIG_IN_RANGE_OF_IRRADIATION, pulse_information, current_insulation) - + geiger_check(source, pulse_information, geiger_counter, geiger_counter) for(var/mob/living/target in turf_to_irradiate) + var/list/contents_to_check = target.get_all_contents_type(/obj/item/geiger) + for(var/obj/item/geiger/geiger_counter in contents_to_check) + geiger_check(source, pulse_information, geiger_counter, target) + if(!can_irradiate_basic(target)) continue @@ -184,3 +173,25 @@ SUBSYSTEM_DEF(radiation) break return (protected_limbs/limb_count) + +///Proc for when geiger counter is checked. This is called twice: Once when the geiger counter is in range of a pulse itself and once when a geiger counter is on a mob that is in range of a pulse. +/datum/controller/subsystem/radiation/proc/geiger_check(atom/source, datum/radiation_pulse_information/pulse_information, obj/item/geiger/geiger_counter, atom/target) + if(!target) + target = geiger_counter + + var/current_insulation = 1 + var/list/cached_rad_insulations = list() + for(var/turf/turf_in_between in get_line(source, target) - get_turf(source)) + var/insulation = cached_rad_insulations[turf_in_between] + if(isnull(insulation)) + insulation = turf_in_between.rad_insulation + for (var/atom/on_turf as anything in turf_in_between.contents) + insulation *= on_turf.rad_insulation + cached_rad_insulations[turf_in_between] = insulation + + current_insulation *= insulation + + if(current_insulation <= pulse_information.threshold) + continue + + SEND_SIGNAL(geiger_counter, COMSIG_IN_RANGE_OF_IRRADIATION, pulse_information, current_insulation) diff --git a/code/controllers/subsystems/reflector.dm b/code/controllers/subsystems/reflector.dm new file mode 100644 index 0000000000..3e691c6310 --- /dev/null +++ b/code/controllers/subsystems/reflector.dm @@ -0,0 +1,45 @@ +#define FIRE_PRIORITY_REFLECTOR 20 + +SUBSYSTEM_DEF(reflector) + name = "Reflectors" + priority = FIRE_PRIORITY_REFLECTOR + flags = SS_BACKGROUND | SS_NO_INIT + wait = 5 + + var/stat_tag = "R" //Used for logging + var/list/processing = list() + var/list/currentrun = list() + var/obj/structure/reflector/current_thing + +/datum/controller/subsystem/reflector/Recover() + log_runtime("[name] subsystem Recover().") + if(SSreflector.current_thing) + log_runtime("current_thing was: (\ref[SSreflector.current_thing])[SSreflector.current_thing]([SSreflector.current_thing.type]) - currentrun: [SSreflector.currentrun.len] vs total: [length(SSreflector.processing)]") + var/list/old_processing = SSreflector.processing.Copy() + for(var/datum/D in old_processing) + if(CHECK_BITFIELD(D.datum_flags, DF_ISPROCESSING)) + processing |= D + +/datum/controller/subsystem/reflector/stat_entry(msg) + msg = "[stat_tag]:[processing.len]" + return ..() + +/datum/controller/subsystem/reflector/fire(resumed = 0) + if (!resumed) + currentrun = processing.Copy() + //cache for sanic speed (lists are references anyways) + var/list/current_run = currentrun + + while(current_run.len) + current_thing = current_run[current_run.len] + current_run.len-- + if(QDELETED(current_thing)) + processing -= current_thing + current_thing.Fire() + if (MC_TICK_CHECK) + current_thing = null + return + + current_thing = null + +#undef FIRE_PRIORITY_REFLECTOR diff --git a/code/datums/components/geiger_sound.dm b/code/datums/components/geiger_sound.dm index 7bfa16d0cc..bc6c885044 100644 --- a/code/datums/components/geiger_sound.dm +++ b/code/datums/components/geiger_sound.dm @@ -52,15 +52,16 @@ register_to_loc(source.loc) /datum/component/geiger_sound/proc/register_to_loc(new_loc) - if (last_parent == new_loc) + if(last_parent == new_loc) return - if (!isnull(last_parent)) + if(!isnull(last_parent)) + sound.stop(last_parent) UnregisterSignal(last_parent, COMSIG_IN_RANGE_OF_IRRADIATION) last_parent = new_loc - if (!isnull(new_loc)) + if(!isnull(new_loc)) RegisterSignal(new_loc, COMSIG_IN_RANGE_OF_IRRADIATION, PROC_REF(on_pre_potential_irradiation)) /datum/looping_sound/geiger @@ -80,11 +81,17 @@ last_radiation_pulse = null return ..() -/datum/looping_sound/geiger/get_sound() +/datum/looping_sound/geiger/get_sound(starttime, _mid_sounds) if (isnull(last_radiation_pulse)) return null + var/danger = get_perceived_radiation_danger(last_radiation_pulse, last_insulation_to_target) + if(danger >= PERCEIVED_RADIATION_DANGER_HIGH) + chance = 100 + else + chance = danger * 15 + volume = (danger * 5) - return ..(mid_sounds[get_perceived_radiation_danger(last_radiation_pulse, last_insulation_to_target)]) + return ..(starttime, mid_sounds[danger]) /datum/looping_sound/geiger/stop(null_parent = FALSE) . = ..() diff --git a/code/datums/components/traits/radiation_effects.dm b/code/datums/components/traits/radiation_effects.dm index 87bc413dc0..73327d206c 100644 --- a/code/datums/components/traits/radiation_effects.dm +++ b/code/datums/components/traits/radiation_effects.dm @@ -171,9 +171,9 @@ /datum/component/radiation_effects/proc/process_component() SIGNAL_HANDLER var/mob/living/living_guy = parent - if((living_guy.radiation > RADIATION_CAP || living_guy.radiation < 0) || (living_guy.accumulated_rads > RADIATION_CAP || living_guy.accumulated_rads < 0)) - living_guy.radiation = CLAMP(living_guy.radiation,0,RADIATION_CAP) - living_guy.accumulated_rads = CLAMP(living_guy.accumulated_rads,0,RADIATION_CAP) + if(living_guy.radiation > RADIATION_CAP || living_guy.radiation < 0 || living_guy.accumulated_rads > RADIATION_CAP || living_guy.accumulated_rads < 0) + living_guy.radiation = CLAMP(living_guy.radiation, 0, RADIATION_CAP) + living_guy.accumulated_rads = CLAMP(living_guy.accumulated_rads, 0, RADIATION_CAP) if(QDELETED(parent)) return @@ -231,6 +231,8 @@ living_guy.radiation -= rads_to_utilize living_guy.accumulated_rads -= rads_to_utilize + living_guy.radiation = CLAMP(living_guy.radiation, 0, RADIATION_CAP) + living_guy.accumulated_rads = CLAMP(living_guy.accumulated_rads, 0, RADIATION_CAP) return COMPONENT_BLOCK_LIVING_RADIATION if(custom_damage) @@ -243,6 +245,8 @@ living_guy.apply_damage(rads_to_utilize * damage_multiplier, damage_type) + living_guy.radiation = CLAMP(living_guy.radiation, 0, RADIATION_CAP) + living_guy.accumulated_rads = CLAMP(living_guy.accumulated_rads, 0, RADIATION_CAP) return COMPONENT_BLOCK_LIVING_RADIATION /datum/component/radiation_effects/proc/handle_irradiate_effect(var/mob/living/living_guy, var/effect, var/effecttype, var/blocked, var/check_protection, var/rad_protection) @@ -266,6 +270,7 @@ //If we linger in one place for a prolonged period, the area around us will become irradiated and give us a small bit of radiation back. (only got ~1 rad per tick when we were offputting 60 rads for example) //However, we'll lose our rads faster than we accumulate. living_guy.radiation += max((radiation_to_apply * rad_protection), 0) + living_guy.radiation = CLAMP(living_guy.radiation, 0, RADIATION_CAP) return COMPONENT_BLOCK_IRRADIATION ///TGUI below here diff --git a/code/game/machinery/atmoalter/canister.dm b/code/game/machinery/atmoalter/canister.dm index 2a916319eb..b517d249ce 100644 --- a/code/game/machinery/atmoalter/canister.dm +++ b/code/game/machinery/atmoalter/canister.dm @@ -266,6 +266,8 @@ update_flag if(!src || !WT.isOn()) return to_chat(user, span_notice("You deconstruct the [src].")) new /obj/item/stack/material/steel( src.loc, 10) + if(connected_port) + disconnect() qdel(src) return //Voreend diff --git a/code/game/machinery/atmoalter/pump.dm b/code/game/machinery/atmoalter/pump.dm index 60f0525d71..b1719b7ef7 100644 --- a/code/game/machinery/atmoalter/pump.dm +++ b/code/game/machinery/atmoalter/pump.dm @@ -11,7 +11,7 @@ var/target_pressure = ONE_ATMOSPHERE var/pressuremin = 0 - var/pressuremax = 10 * ONE_ATMOSPHERE + var/pressuremax = 39.45 * ONE_ATMOSPHERE //The safest level you can get WITHOUT the tank exploding. volume = 1000 diff --git a/code/game/machinery/atmoalter/pump_vr.dm b/code/game/machinery/atmoalter/pump_vr.dm index bc8404e1f5..79af88761f 100644 --- a/code/game/machinery/atmoalter/pump_vr.dm +++ b/code/game/machinery/atmoalter/pump_vr.dm @@ -10,7 +10,7 @@ active_power_usage = 1000 // Blowers running power_rating = 100000 //100 kW ~ 135 HP - var/global/gid = 1 + var/static/gid = 1 var/id = 0 /obj/machinery/portable_atmospherics/powered/pump/huge/Initialize(mapload) diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index 598a0ee2e0..7b656b34af 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -96,7 +96,7 @@ /obj/machinery/autolathe/crowbar_act(mob/living/user, obj/item/tool) . = NONE - if(default_deconstruction_crowbar(tool)) + if(default_deconstruction_crowbar(user, tool)) return ITEM_INTERACT_SUCCESS /obj/machinery/autolathe/screwdriver_act(mob/living/user, obj/item/tool) diff --git a/code/game/machinery/computer/computer.dm b/code/game/machinery/computer/computer.dm index d0321ab0ed..4794d320d3 100644 --- a/code/game/machinery/computer/computer.dm +++ b/code/game/machinery/computer/computer.dm @@ -115,12 +115,12 @@ text = replacetext(text, "\n", "
") return text -/obj/machinery/computer/attackby(I as obj, user as mob) - if(computer_deconstruction_screwdriver(user, I)) +/obj/machinery/computer/attackby(obj/item/W, mob/user) + if(computer_deconstruction_screwdriver(user, W)) return else - if(istype(I,/obj/item/gripper)) //Behold, Grippers and their horribleness. If ..() is called by any computers' attackby() now or in the future, this should let grippers work with them appropriately. - var/obj/item/gripper/B = I //B, for Borg. + if(istype(W,/obj/item/gripper)) //Behold, Grippers and their horribleness. If ..() is called by any computers' attackby() now or in the future, this should let grippers work with them appropriately. + var/obj/item/gripper/B = W //B, for Borg. var/obj/item/wrapped = B.get_wrapped_item() if(!wrapped) to_chat(user, "\The [B] is not holding anything.") diff --git a/code/game/machinery/door_control.dm b/code/game/machinery/door_control.dm index ddac48b7d2..7f5c3013b0 100644 --- a/code/game/machinery/door_control.dm +++ b/code/game/machinery/door_control.dm @@ -164,6 +164,7 @@ desc = "A remote control switch for a mass driver." icon = 'icons/obj/objects.dmi' icon_state = "launcherbtt" + circuit = /obj/item/circuitboard/mass_driver_button /obj/machinery/button/remote/driver/trigger(mob/user) if(active) @@ -193,6 +194,18 @@ active = FALSE update_icon() +/obj/machinery/button/remote/driver/attackby(obj/item/I, mob/user) + //Swiping ID on the access button + if (istype(I, /obj/item/card/id) || istype(I, /obj/item/pda)) + attack_hand(user) + return + if(I.has_tool_quality(TOOL_MULTITOOL)) + var/new_id = tgui_input_number(user, "[src] has an id of \"[id]\". What would you like it to be?", "[src] ID]", id, 9999) + if(!Adjacent(user)) //walked away + to_chat(user, span_warning(span_warning("You need to be adjacent to the remote to change its id."))) + return + if(new_id) + id = new_id /obj/machinery/button/remote/driver/update_icon() if(!active || (stat & NOPOWER)) diff --git a/code/game/machinery/doors/airlock_control.dm b/code/game/machinery/doors/airlock_control.dm index f6b8b99a1f..dcab1057e0 100644 --- a/code/game/machinery/doors/airlock_control.dm +++ b/code/game/machinery/doors/airlock_control.dm @@ -343,7 +343,7 @@ new_frequency = sanitize_frequency(new_frequency, RADIO_LOW_FREQ, RADIO_HIGH_FREQ) set_frequency(new_frequency) if("Command") - var/new_command = tgui_input_text(user, "[src] has a command of \"[command]\". Valid options include: cycle, cycle_interior, cycle_exterior", "[src] command", command, encode = TRUE) + var/new_command = tgui_input_text(user, "[src] has a command of \"[command]\". Valid options include: 'open', 'close', 'unlock', 'lock', 'secure_open', 'secure_close', and 'update', without the '. Additionally, some airlocks support 'cycle', 'cycle_interion', and 'cycle_exterior' '", "[src] command", command, encode = TRUE) if(new_command) command = new_command diff --git a/code/game/machinery/doors/blast_door.dm b/code/game/machinery/doors/blast_door.dm index 86c7a691aa..e8c7b68c5c 100644 --- a/code/game/machinery/doors/blast_door.dm +++ b/code/game/machinery/doors/blast_door.dm @@ -43,6 +43,10 @@ /obj/machinery/door/blast/Initialize(mapload) . = ..() implicit_material = get_material_by_name(MAT_PLASTEEL) + if(density) + rad_insulation = RAD_EXTREME_INSULATION + else + rad_insulation = RAD_NO_INSULATION /obj/machinery/door/blast/get_material() return implicit_material diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index e8f6cdba4f..44a96fd19a 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -373,14 +373,14 @@ Class Procs: update_icon() return TRUE -/obj/machinery/proc/default_deconstruction_crowbar(var/mob/user, var/obj/item/C) +/obj/machinery/proc/default_deconstruction_crowbar(mob/user, obj/item/C) if(!C.has_tool_quality(TOOL_CROWBAR)) return 0 if(!panel_open) return 0 . = dismantle() -/obj/machinery/proc/default_deconstruction_screwdriver(var/mob/user, var/obj/item/S) +/obj/machinery/proc/default_deconstruction_screwdriver(mob/user, obj/item/S) if(!S.has_tool_quality(TOOL_SCREWDRIVER)) return 0 playsound(src, S.usesound, 50, 1) @@ -389,7 +389,7 @@ Class Procs: update_icon() return 1 -/obj/machinery/proc/computer_deconstruction_screwdriver(var/mob/user, var/obj/item/S) +/obj/machinery/proc/computer_deconstruction_screwdriver(mob/user, obj/item/S) if(!S.has_tool_quality(TOOL_SCREWDRIVER)) return 0 if(!circuit) diff --git a/code/game/machinery/mass_driver.dm b/code/game/machinery/mass_driver.dm index 605333fde5..27fe4cb0be 100644 --- a/code/game/machinery/mass_driver.dm +++ b/code/game/machinery/mass_driver.dm @@ -13,7 +13,7 @@ var/power = 1.0 var/code = 1.0 - var/id = 1.0 + var/id = null var/drive_range = 50 //this is mostly irrelevant since current mass drivers throw into space, but you could make a lower-range mass driver for interstation transport or something I guess. /obj/machinery/mass_driver/Initialize(mapload) @@ -28,7 +28,7 @@ if(istype(I, /obj/item/multitool)) if(panel_open) - var/input = tgui_input_text(user, "What id would you like to give this conveyor?", "Multitool-Conveyor interface", id, MAX_KEYPAD_INPUT_LEN) + var/input = tgui_input_number(user, "[src] has an id of \"[id]\". What would you like it to be?", "[src] ID]", id, 9999) if(!input) to_chat(user, "No input found please hang up and try your call again.") return diff --git a/code/game/machinery/spaceheater.dm b/code/game/machinery/spaceheater.dm index ab0e7b86ac..1e2d63a4b9 100644 --- a/code/game/machinery/spaceheater.dm +++ b/code/game/machinery/spaceheater.dm @@ -101,7 +101,7 @@ if(istype(C)) user.drop_item() cell = C - C.loc = src + C.forceMove(src) C.add_fingerprint(user) user.visible_message(span_notice("[user] inserts a power cell into [src]."), span_notice("You insert the power cell into [src].")) diff --git a/code/game/objects/effects/anomalies/anomalies_flux.dm b/code/game/objects/effects/anomalies/anomalies_flux.dm index fc9a63c417..7eac67e4e9 100644 --- a/code/game/objects/effects/anomalies/anomalies_flux.dm +++ b/code/game/objects/effects/anomalies/anomalies_flux.dm @@ -71,14 +71,14 @@ sparks.set_up(3, 1, src) sparks.start() if(16 to 33) - tesla_zap(src, 2, 1000, FALSE, FALSE) + tesla_zap(src, 2, 1000, FALSE, FALSE, current_jumps = 1) //Can't chain jumps. if(34 to 65) - tesla_zap(src, 3, 1000, FALSE, FALSE) + tesla_zap(src, 3, 1000, FALSE, FALSE, current_jumps = 1) addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(tesla_zap), src, 3, 1500, FALSE, FALSE), 3 SECONDS) else - tesla_zap(src, 4, 1000, FALSE, TRUE) + tesla_zap(src, 4, 1000, FALSE, TRUE, current_jumps = 1) addtimer(CALLBACK(src, PROC_REF(highSevPulse)), 3 SECONDS) -/obj/effect/anomaly/flux/proc/highSevPulse() - tesla_zap(src, 4, 1250, FALSE, FALSE) +/obj/effect/anomaly/flux/proc/highSevPulse(power, explosive, current_jumps) + tesla_zap(src, 4, 1250, FALSE, FALSE, current_jumps = 1) addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(tesla_zap), src, 4, 1500, FALSE, FALSE), 3 SECONDS) diff --git a/code/game/objects/items/devices/geiger.dm b/code/game/objects/items/devices/geiger.dm index 3c667f61b6..1e2a2ee884 100644 --- a/code/game/objects/items/devices/geiger.dm +++ b/code/game/objects/items/devices/geiger.dm @@ -31,15 +31,15 @@ . += span_info("Alt-click it to clear stored radiation levels.") switch(last_perceived_radiation_danger) if(null) - . += span_notice("Ambient radiation level count reports that all is well.") + . += span_notice("Ambient radiation level count reports that all is well. It is ") + span_green("safe ") + span_notice("here.") if(PERCEIVED_RADIATION_DANGER_LOW) - . += span_alert("Ambient radiation levels slightly above average.") + . += span_notice("Ambient radiation levels slightly above average. It is ") + span_green("safe ") + span_notice("here.") if(PERCEIVED_RADIATION_DANGER_MEDIUM) - . += span_warning("Ambient radiation levels above average.") + . += span_notice("Ambient radiation levels above average. It is ") + span_green("safe ") + span_notice("here.") if(PERCEIVED_RADIATION_DANGER_HIGH) - . += span_danger("Ambient radiation levels highly above average.") + . += span_suicide("Ambient radiation levels highly above average. It is ") + span_warning("unsafe ") + span_suicide("here.") if(PERCEIVED_RADIATION_DANGER_EXTREME) - . += span_suicide("Ambient radiation levels reaching critical level!") + . += span_suicide("Ambient radiation levels reaching critical levels! It is ") + span_warning("extremely unsafe ") + span_suicide("here.") /obj/item/geiger/update_icon() if(!scanning) diff --git a/code/game/objects/items/weapons/circuitboards/computer/command.dm b/code/game/objects/items/weapons/circuitboards/computer/command.dm new file mode 100644 index 0000000000..ffc4e75783 --- /dev/null +++ b/code/game/objects/items/weapons/circuitboards/computer/command.dm @@ -0,0 +1,5 @@ +/obj/item/circuitboard/account_console + name = T_BOARD("account database console") + build_path = /obj/machinery/account_database + board_type = new /datum/frame/frame_types/computer + req_one_access = list(ACCESS_HOP, ACCESS_CAPTAIN, ACCESS_CENT_CAPTAIN) diff --git a/code/game/objects/items/weapons/circuitboards/computer/telecomms.dm b/code/game/objects/items/weapons/circuitboards/computer/telecomms.dm index 92fabccedf..071bcfebba 100644 --- a/code/game/objects/items/weapons/circuitboards/computer/telecomms.dm +++ b/code/game/objects/items/weapons/circuitboards/computer/telecomms.dm @@ -16,3 +16,9 @@ name = T_BOARD("telecommunications traffic control console") build_path = /obj/machinery/computer/telecomms/traffic origin_tech = list(TECH_DATA = 3) + +/obj/item/circuitboard/message_server + name = T_BOARD("message server") + build_path = /obj/machinery/message_server + origin_tech = list(TECH_DATA = 3) + board_type = new /datum/frame/frame_types/machine diff --git a/code/game/objects/items/weapons/circuitboards/frame.dm b/code/game/objects/items/weapons/circuitboards/frame.dm index 19f439df05..f09434fcab 100644 --- a/code/game/objects/items/weapons/circuitboards/frame.dm +++ b/code/game/objects/items/weapons/circuitboards/frame.dm @@ -74,6 +74,11 @@ build_path = /obj/machinery/button/windowtint board_type = new /datum/frame/frame_types/button +/obj/item/circuitboard/mass_driver_button + name = T_BOARD("mass driver button") + build_path = /obj/machinery/button/remote/driver + board_type = new /datum/frame/frame_types/button + //Computer /obj/item/circuitboard/holopad diff --git a/code/game/objects/items/weapons/circuitboards/machinery/power.dm b/code/game/objects/items/weapons/circuitboards/machinery/power.dm index 083124f478..05a555815b 100644 --- a/code/game/objects/items/weapons/circuitboards/machinery/power.dm +++ b/code/game/objects/items/weapons/circuitboards/machinery/power.dm @@ -36,3 +36,12 @@ /obj/item/stock_parts/spring = 1, /obj/item/stock_parts/manipulator = 1, /obj/item/stack/cable_coil = 10) + +/obj/item/circuitboard/hydromagnetic_trap + name = T_BOARD("hydromagnetic trap") + build_path = /obj/machinery/power/hydromagnetic_trap + board_type = new /datum/frame/frame_types/machine + req_components = list( + /obj/item/stock_parts/spring = 1, + /obj/item/stock_parts/motor = 2, + /obj/item/stack/cable_coil = 10) diff --git a/code/game/objects/items/weapons/circuitboards/machinery/smartfridges.dm b/code/game/objects/items/weapons/circuitboards/machinery/smartfridges.dm new file mode 100644 index 0000000000..b8ccabad6c --- /dev/null +++ b/code/game/objects/items/weapons/circuitboards/machinery/smartfridges.dm @@ -0,0 +1,78 @@ +#ifndef T_BOARD +#error T_BOARD macro is not defined but we need it! +#endif + +/obj/item/circuitboard/smartfridge + name = T_BOARD("smartfridge") + build_path = /obj/machinery/smartfridge + board_type = new /datum/frame/frame_types/machine + hidden = TRUE + req_components = list( + /obj/item/stock_parts/motor = 1, + /obj/item/stock_parts/gear = 2) + +/obj/item/circuitboard/smartfridge/drying + name = T_BOARD("smartfridge - drying rack") + build_path = /obj/machinery/smartfridge/drying_rack + hidden = FALSE + +/obj/item/circuitboard/smartfridge/sheets + name = T_BOARD("smartfridge - industrial sheet storage") + build_path = /obj/machinery/smartfridge/sheets + hidden = FALSE + +/obj/item/circuitboard/smartfridge/sheets/mining + name = T_BOARD("smartfridge - mining sheet storage") + build_path = /obj/machinery/smartfridge/sheets/mining + hidden = FALSE + +/obj/item/circuitboard/smartfridge/medbay + name = T_BOARD("smartfridge - refrigerated medicine storage") + build_path = /obj/machinery/smartfridge/medbay + hidden = FALSE + +/obj/item/circuitboard/smartfridge/medbay/secure + name = T_BOARD("smartfridge - secure refrigerated medicine storage") + build_path = /obj/machinery/smartfridge/secure/medbay + hidden = FALSE + +/obj/item/circuitboard/smartfridge/science + name = T_BOARD("smartfridge - biological sample storage") + build_path = /obj/machinery/smartfridge/secure/extract + hidden = FALSE + +/obj/item/circuitboard/smartfridge/kitchen + name = T_BOARD("smartfridge - food storage") + build_path = /obj/machinery/smartfridge/chef + hidden = FALSE + +/obj/item/circuitboard/smartfridge/drinks + name = T_BOARD("smartfridge - drink storage") + build_path = /obj/machinery/smartfridge/drinks + hidden = FALSE + +/obj/item/circuitboard/smartfridge/drinks/showcase + name = T_BOARD("smartfridge - drink showcase") + build_path = /obj/machinery/smartfridge/drinks/showcase + hidden = FALSE + +/obj/item/circuitboard/smartfridge/produce + name = T_BOARD("smartfridge - smart produce storage") + build_path = /obj/machinery/smartfridge/produce + hidden = FALSE + +/obj/item/circuitboard/smartfridge/seeds + name = T_BOARD("smartfridge - megaSeed servitor") + build_path = /obj/machinery/smartfridge/seeds + hidden = FALSE + +//these 2 are weird af +/obj/item/circuitboard/smartfridge/chemvator + name = T_BOARD("smartfridge - smart chemavator - upper") + build_path = /obj/machinery/smartfridge/chemistry/chemvator + hidden = FALSE + +/obj/item/circuitboard/smartfridge/chemvator/down + name = T_BOARD("smartfridge - smart chemavator - lower") + build_path = /obj/machinery/smartfridge/chemistry/chemvator/down + hidden = FALSE diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index 0e647d87fd..6dcfb46196 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -13,7 +13,6 @@ var/show_examine = TRUE // Does this pop up on a mob when the mob is examined? var/redgate_allowed = TRUE //can we be taken through the redgate, in either direction? - var/rad_resistance = 0 // Allow overriding rad resistance var/being_shocked = FALSE var/micro_accepted_scale = 0.5 var/micro_target = FALSE diff --git a/code/game/objects/structures/flora/trees.dm b/code/game/objects/structures/flora/trees.dm index 9bc9117ac4..181c72abc4 100644 --- a/code/game/objects/structures/flora/trees.dm +++ b/code/game/objects/structures/flora/trees.dm @@ -124,7 +124,7 @@ if(Proj.get_structure_damage()) adjust_health(-Proj.get_structure_damage(), TRUE) -/obj/structure/flora/tree/tesla_act(power, explosive) +/obj/structure/flora/tree/tesla_act(power, explosive, current_jumps) adjust_health(-power / 100, TRUE) // Kills most trees in one lightning strike. ..() diff --git a/code/game/objects/structures/reflectors.dm b/code/game/objects/structures/reflectors.dm new file mode 100644 index 0000000000..0ab6b10245 --- /dev/null +++ b/code/game/objects/structures/reflectors.dm @@ -0,0 +1,323 @@ +/obj/structure/reflector + name = "reflector base" + icon = 'icons/obj/structures/tgs_structures.dmi' + icon_state = "reflector_map" + desc = "A base for reflector assemblies." + anchored = FALSE + density = FALSE + var/deflector_icon_state + var/image/deflector_overlay + var/finished = FALSE + var/admin = FALSE //Can't be rotated or deconstructed + var/can_rotate = TRUE + var/framebuildstacktype = /obj/item/stack/material//metal + var/framebuildstackamount = 5 + var/buildstacktype = /obj/item/stack/material//metal + var/buildstackamount = 0 + var/fires_projectile = /obj/item/projectile/beam/emitter + var/fires_accuracy = 10000 + var/fires_dispersion = 0 + var/list/allowed_projectile_typecache = list(/obj/item/projectile/beam) + var/rotation_angle = -1 + var/can_decon = TRUE + var/list/has_projectiles = list() + var/bullet_act_in_progress = FALSE + +/obj/structure/reflector/Initialize(mapload) + . = ..() + icon_state = "reflector_base" + allowed_projectile_typecache = typecacheof(allowed_projectile_typecache) + if(deflector_icon_state) + deflector_overlay = image(icon, deflector_icon_state) + add_overlay(deflector_overlay) + + if(rotation_angle == -1) + setAngle(dir2angle(dir)) + else + setAngle(rotation_angle) + + if(admin) + can_rotate = FALSE + + SSreflector.processing += src + +/obj/structure/reflector/examine(mob/user) + . = ..() + if(finished) + . += "It is set to [rotation_angle] degrees, and the rotation is [can_rotate ? "unlocked" : "locked"]." + if(!admin) + if(can_rotate) + . += span_notice("Alt-click to adjust its direction.") + else + . += span_notice("Use screwdriver to unlock the rotation.") + +/obj/structure/reflector/proc/Fire() + UNTIL(!bullet_act_in_progress) + var/list/angles = list() + for(var/obj/item/projectile/P in has_projectiles) + angles[num2text(has_projectiles[P])] += P.damage + for(var/angle in angles) + var/obj/item/projectile/P = new fires_projectile(src) + P.firer = src + P.damage = angles[angle] + P.accuracy = 350 + P.dispersion = 0 + P.fire(text2num(angle)) + has_projectiles = list() + +/obj/structure/reflector/proc/setAngle(new_angle) + if(can_rotate) + rotation_angle = new_angle + if(deflector_overlay) + cut_overlay(deflector_overlay) + deflector_overlay.transform = turn(matrix(), new_angle) + add_overlay(deflector_overlay) + +/obj/structure/reflector/proc/redirect_projectile(obj/item/projectile/P,pangle) + has_projectiles[P] = pangle + qdel(P) + +/obj/structure/reflector/set_dir(new_dir) + return ..(NORTH) + +/obj/structure/reflector/Crossed(atom/movable/AM) //Ok so this is my solution to garbage projectile code. Please god let this work. + if(istype(AM,/obj/item/projectile)) + AM.Bump(src) + +/obj/structure/reflector/bullet_act(obj/item/projectile/P) + bullet_act_in_progress = TRUE + var/pdir = P.dir + var/pangle = P.Angle + var/ploc = get_turf(P) + if(!finished || !allowed_projectile_typecache[P.type] || !(P.dir in GLOB.cardinal)) + return ..() + if(auto_reflect(P, pdir, ploc, pangle) != 2) + return ..() + bullet_act_in_progress = FALSE + +/obj/structure/reflector/proc/auto_reflect(obj/item/projectile/P, pdir, turf/ploc, pangle) + P.ignore_source_check = TRUE + return 2 + +/obj/structure/reflector/attackby(obj/item/W, mob/user, params) + if(admin) + return + + if(W.is_screwdriver()) + can_rotate = !can_rotate + to_chat(user, span_notice("You [can_rotate ? "unlock" : "lock"] [src]'s rotation.")) + playsound(W, W.usesound, 50, 1) + return + + if(W.is_wrench() && can_decon) + if(anchored) + to_chat(user, span_warning("Unweld [src] from the floor first!")) + return + user.visible_message(span_notice("[user] starts to dismantle [src]."), span_notice("You start to dismantle [src]...")) + + if(do_after(user, 2 SECONDS, target = src)) + user.visible_message(span_notice("[user] dismantles [src]."), span_notice("You dismantle [src]...")) + new framebuildstacktype(drop_location(), framebuildstackamount) + if(buildstackamount) + new buildstacktype(drop_location(), buildstackamount) + qdel(src) + else if(istype(W, /obj/item/weldingtool)) + var/obj/item/weldingtool/I = W + if(!anchored) + if(!I.get_fuel()) + to_chat(user, span_warning("You require fuel to weld the [src]!")) + return + + user.visible_message(span_notice("[user] starts to weld [src] to the floor."), + span_notice("You start to weld [src] to the floor..."), + span_hear("You hear welding.")) + + if(do_after(user, 2 SECONDS, target = src)) + if(!I.remove_fuel(1,user)) + to_chat(user, span_warning("You require fuel to weld the [src]!")) + return + anchored = TRUE + user.visible_message(span_notice("[user] welds [src] to the floor."), + span_notice("You weld [src] to the floor..."), + span_hear("You hear welding.")) + else + if(!I.remove_fuel(1,user)) + return + + user.visible_message(span_notice("[user] starts to cut [src] free from the floor."), + span_notice("You start to cut [src] free from the floor..."), + span_hear("You hear welding.")) + anchored = FALSE + to_chat(user, span_notice("You cut [src] free from the floor.")) + + //Finishing the frame + else if(istype(W, /obj/item/stack/material)) + if(finished) + return + var/obj/item/stack/material/S = W + if(istype(S, /obj/item/stack/material/glass)) + if(S.use(5)) + new /obj/structure/reflector/single(drop_location()) + qdel(src) + else + to_chat(user, span_warning("You need five sheets of glass to create a reflector!")) + return + if(istype(S, /obj/item/stack/material/glass/reinforced)) + if(S.use(10)) + new /obj/structure/reflector/double(drop_location()) + qdel(src) + else + to_chat(user, span_warning("You need ten sheets of reinforced glass to create a double reflector!")) + return + if(istype(S, /obj/item/stack/material/diamond)) + if(S.use(1)) + new /obj/structure/reflector/box(drop_location()) + qdel(src) + else + return ..() + +/obj/structure/reflector/proc/rotate(mob/user) + if (!can_rotate || admin) + to_chat(user, span_warning("The rotation is locked!")) + return FALSE + var/new_angle = tgui_input_number(user, "Input a new angle for primary reflection face.", "Reflector Angle", rotation_angle, 360, -360) + if(!CanUseTopic(user)) + return + if(!isnull(new_angle)) + setAngle(SIMPLIFY_DEGREES(new_angle)) + return TRUE + +/obj/structure/reflector/click_alt(mob/user) + if(!CanUseTopic(user)) + return + else if(finished) + rotate(user) + + +//TYPES OF REFLECTORS, SINGLE, DOUBLE, BOX + +//SINGLE + +/obj/structure/reflector/single + name = "reflector" + deflector_icon_state = "reflector" + desc = "An angled mirror for reflecting laser beams." + density = TRUE + finished = TRUE + buildstacktype = /obj/item/stack/material//glass + buildstackamount = 5 + +/obj/structure/reflector/single/anchored + anchored = TRUE + +/obj/structure/reflector/single/mapping + admin = TRUE + anchored = TRUE + +/obj/structure/reflector/single/auto_reflect(obj/item/projectile/P, pdir, turf/ploc, pangle) + var/incidence = GET_ANGLE_OF_INCIDENCE(rotation_angle, (P.Angle + 180)) + if(abs(incidence) > 90 && abs(incidence) < 270) + return FALSE + var/new_angle = SIMPLIFY_DEGREES(rotation_angle + incidence) + redirect_projectile(P,new_angle) + return ..() + +//DOUBLE + +/obj/structure/reflector/double + name = "double sided reflector" + deflector_icon_state = "reflector_double" + desc = "A double sided angled mirror for reflecting laser beams." + density = TRUE + finished = TRUE + buildstacktype = /obj/item/stack/material/glass/reinforced + buildstackamount = 10 + +/obj/structure/reflector/double/anchored + anchored = TRUE + +/obj/structure/reflector/double/mapping + admin = TRUE + anchored = TRUE + +/obj/structure/reflector/double/auto_reflect(obj/item/projectile/P, pdir, turf/ploc, pangle) + var/incidence = GET_ANGLE_OF_INCIDENCE(rotation_angle, (P.Angle + 180)) + var/new_angle = SIMPLIFY_DEGREES(rotation_angle + incidence) + redirect_projectile(P,new_angle) + return ..() + +//BOX + +/obj/structure/reflector/box + name = "reflector box" + deflector_icon_state = "reflector_box" + desc = "A box with an internal set of mirrors that reflects all laser beams in a single direction." + density = TRUE + finished = TRUE + buildstacktype = /obj/item/stack/material/diamond + buildstackamount = 1 + +/obj/structure/reflector/box/Fire() //Since they all end up at the same angle, this should save a tad bit of processing power and memory <3 + UNTIL(!bullet_act_in_progress) + var/total_damage = 0 + for(var/obj/item/projectile/P in has_projectiles) + total_damage += P.damage + if(total_damage) + var/obj/item/projectile/P = new fires_projectile(src) + P.firer = src + P.damage = total_damage + P.accuracy = 350 + P.dispersion = 0 + P.fire(rotation_angle) + has_projectiles = list() + +/obj/structure/reflector/box/anchored + anchored = TRUE + +/obj/structure/reflector/box/mapping + admin = TRUE + anchored = TRUE + +/obj/structure/reflector/box/auto_reflect(obj/item/projectile/P) + redirect_projectile(P,rotation_angle) + return ..() + +/obj/structure/reflector/ex_act() + if(admin) + return + else + return ..() + +/obj/structure/reflector/singularity_act() + if(admin) + return + else + return ..() + +/obj/structure/reflector/box/orderable + name = "NanoTrasen reflector box" + desc = "A box with an internal set of mirrors that reflects all laser beams in a single direction. This one is marked with NanoTrasen's logo." + can_decon = FALSE + +/datum/material/steel/generate_recipes() + ..() + recipes += new/datum/stack_recipe("reflector frame", /obj/structure/reflector, 5, time = 25, one_per_turf = TRUE, on_floor = TRUE) + +/datum/supply_pack/eng/reflector + name = "Reflector crate" + cost = 35 + containername = "Reflector crate" + containertype = /obj/structure/closet/crate/secure/einstein + contains = list(/obj/structure/reflector/box/orderable = 3) + +//Below is mostly mapping stuff for the spicy storage I added to house these new reflectors ;p + +/area/engineering/secret_storage + name = "Engineering Secret Storage" + +/obj/machinery/portable_atmospherics/canister + var/dont_burst = FALSE + +/obj/machinery/portable_atmospherics/canister/phoron/cold/Initialize(mapload) + . = ..() + src.air_contents.temperature = 2.72 diff --git a/code/modules/admin/verbs/lightning_strike.dm b/code/modules/admin/verbs/lightning_strike.dm index 0092d513fd..ceeee5f7bf 100644 --- a/code/modules/admin/verbs/lightning_strike.dm +++ b/code/modules/admin/verbs/lightning_strike.dm @@ -66,14 +66,14 @@ ADMIN_VERB(admin_lightning_strike, R_FUN, "Lightning Strike", "Causes lightning return if(ground) // All is well. - ground.tesla_act(LIGHTNING_POWER, FALSE) + ground.tesla_act(LIGHTNING_POWER, FALSE, current_jumps = 1) return else if(coil) // Otherwise lets bounce off the tesla coil. - coil.tesla_act(LIGHTNING_POWER, TRUE) + coil.tesla_act(LIGHTNING_POWER, TRUE, current_jumps = 1) else // Striking the turf directly. - tesla_zap(T, zap_range = LIGHTNING_ZAP_RANGE, power = LIGHTNING_POWER, explosive = FALSE, stun_mobs = TRUE) + tesla_zap(T, zap_range = LIGHTNING_ZAP_RANGE, power = LIGHTNING_POWER, explosive = FALSE, stun_mobs = TRUE, current_jumps = 1) // Some extra effects. // Some apply to those within zap range, others if they were a bit farther away. diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index cc236e5f01..8f05b052bc 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -777,7 +777,7 @@ // I_HELP: No painful description, messages only sent to prey. Similar to inshoe steppies from before. // I_DISARM: Painful yet harmless descriptions, weaken on walk. Attack logs on weaken. // I_GRAB: Grabby/Squishing descriptions, weaken on walk. Attack logs on weaken. - // I_HARM: Rand .5-1.5 multiplied by .25 min or 1.75 max, multiplied by 3.5 on walk. Ranges from .125 min to 9.1875 max damage to each limb + // I_HURT: Rand .5-1.5 multiplied by .25 min or 1.75 max, multiplied by 3.5 on walk. Ranges from .125 min to 9.1875 max damage to each limb var/message_pred = null var/message_prey = null diff --git a/code/modules/clothing/suits/reactive_armour.dm b/code/modules/clothing/suits/reactive_armour.dm index 01dc11ea18..6f61048726 100644 --- a/code/modules/clothing/suits/reactive_armour.dm +++ b/code/modules/clothing/suits/reactive_armour.dm @@ -176,7 +176,7 @@ /obj/item/clothing/suit/armor/reactive/tesla/reactive_activation(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", damage = 0) owner.visible_message(span_danger("[src] blocks [attack_text], sending out arcs of lightning!")) - tesla_zap(owner, zap_range, zap_power) + tesla_zap(owner, zap_range, zap_power, current_jumps = 1) reactivearmor_cooldown = world.time + reactivearmor_cooldown_duration return TRUE diff --git a/code/modules/economy/Accounts_DB.dm b/code/modules/economy/Accounts_DB.dm index 76d2272503..d2192b4aaf 100644 --- a/code/modules/economy/Accounts_DB.dm +++ b/code/modules/economy/Accounts_DB.dm @@ -13,6 +13,7 @@ var/datum/money_account/detailed_account_view var/creating_new_account = 0 var/const/fund_cap = 1000000 + circuit = /obj/item/circuitboard/account_console /obj/machinery/account_database/proc/get_access_level() if(!held_card) @@ -43,8 +44,12 @@ /obj/machinery/account_database/Initialize(mapload) machine_id = "[station_name()] Acc. DB #[GLOB.num_financial_terminals++]" . = ..() + AddElement(/datum/element/climbable) /obj/machinery/account_database/attackby(obj/O, mob/user) + if(computer_deconstruction_screwdriver(user, O)) + return + if(!istype(O, /obj/item/card/id)) return ..() diff --git a/code/modules/food/kitchen/smartfridge/drying_rack.dm b/code/modules/food/kitchen/smartfridge/drying_rack.dm index 03263883a0..a7e61ee9e2 100644 --- a/code/modules/food/kitchen/smartfridge/drying_rack.dm +++ b/code/modules/food/kitchen/smartfridge/drying_rack.dm @@ -4,6 +4,7 @@ wrenchable = 1 icon_state = "drying_rack" icon_base = "drying_rack" + circuit = /obj/item/circuitboard/smartfridge/drying /obj/machinery/smartfridge/drying_rack/Initialize(mapload) . = ..() diff --git a/code/modules/food/kitchen/smartfridge/engineering.dm b/code/modules/food/kitchen/smartfridge/engineering.dm index ed370ef3fd..57b186a420 100644 --- a/code/modules/food/kitchen/smartfridge/engineering.dm +++ b/code/modules/food/kitchen/smartfridge/engineering.dm @@ -8,6 +8,7 @@ icon_base = "industrial" icon_contents = "sheet" stored_datum_type = /datum/stored_item/stack + circuit = /obj/item/circuitboard/smartfridge/sheets /obj/machinery/smartfridge/sheets/persistent persistent = /datum/persistent/storage/smartfridge/sheet_storage @@ -44,6 +45,7 @@ icon_state = "base_mining" icon_base = "mining" icon_contents = "sheet" + circuit = /obj/item/circuitboard/smartfridge/sheets/mining /obj/machinery/smartfridge/sheets/mining/persistent persistent = /datum/persistent/storage/smartfridge/sheet_storage diff --git a/code/modules/food/kitchen/smartfridge/medical.dm b/code/modules/food/kitchen/smartfridge/medical.dm index 8aaf3eba94..ae7b79929c 100644 --- a/code/modules/food/kitchen/smartfridge/medical.dm +++ b/code/modules/food/kitchen/smartfridge/medical.dm @@ -5,6 +5,7 @@ name = "\improper Refrigerated Medicine Storage" desc = "A refrigerated storage unit for securely storing medicine and chemicals." icon_contents = "chem" + circuit = /obj/item/circuitboard/smartfridge/medbay /obj/machinery/smartfridge/medbay/accept_check(var/obj/item/O as obj) if(istype(O, /obj/item/reagent_containers/borghypo)) @@ -18,6 +19,7 @@ desc = "A refrigerated storage unit for storing medicine and chemicals." icon_contents = "chem" req_one_access = list(ACCESS_MEDICAL,ACCESS_CHEMISTRY) + circuit = /obj/item/circuitboard/smartfridge/medbay/secure /obj/machinery/smartfridge/secure/medbay/accept_check(var/obj/item/O as obj) if(istype(O, /obj/item/reagent_containers/borghypo)) diff --git a/code/modules/food/kitchen/smartfridge/research.dm b/code/modules/food/kitchen/smartfridge/research.dm index 2c2bf201f4..0fac80fe68 100644 --- a/code/modules/food/kitchen/smartfridge/research.dm +++ b/code/modules/food/kitchen/smartfridge/research.dm @@ -6,6 +6,7 @@ desc = "A refrigerated storage unit for xenobiological samples." icon_contents = "slime" req_access = list(ACCESS_RESEARCH) + circuit = /obj/item/circuitboard/smartfridge/science /obj/machinery/smartfridge/secure/extract/accept_check(var/obj/item/O as obj) if(istype(O, /obj/item/slime_extract) || istype(O, /obj/item/slimepotion)) diff --git a/code/modules/food/kitchen/smartfridge/service.dm b/code/modules/food/kitchen/smartfridge/service.dm index 7bececc0a6..49138c9682 100644 --- a/code/modules/food/kitchen/smartfridge/service.dm +++ b/code/modules/food/kitchen/smartfridge/service.dm @@ -3,8 +3,9 @@ */ /obj/machinery/smartfridge/chef desc = "For storing all sorts of delicious foods!" + circuit = /obj/item/circuitboard/smartfridge/kitchen -/obj/machinery/smartfridge/chef/accept_check(var/obj/item/O as obj) +/obj/machinery/smartfridge/chef/accept_check(obj/item/O) if(istype(O,/obj/item/reagent_containers/food/snacks)) return TRUE return FALSE @@ -16,8 +17,9 @@ name = "\improper Smart Drink Storage" desc = "A refrigerated storage unit for tasty tasty alcohol." icon_contents = "drinks" + circuit = /obj/item/circuitboard/smartfridge/drinks -/obj/machinery/smartfridge/drinks/accept_check(var/obj/item/O as obj) +/obj/machinery/smartfridge/drinks/accept_check(obj/item/O) if(istype(O,/obj/item/reagent_containers/glass) || istype(O,/obj/item/reagent_containers/food/drinks) || istype(O,/obj/item/reagent_containers/food/condiment)) return TRUE return FALSE @@ -26,6 +28,7 @@ name = "\improper Drink Showcase" icon_state = "base_showcase" icon_base = "showcase" + circuit = /obj/item/circuitboard/smartfridge/drinks/showcase //Showcase needs a special icon update /obj/machinery/smartfridge/drinks/showcase/update_icon() @@ -54,6 +57,7 @@ name = "\improper Smart Produce Storage" desc = "For storing all sorts of perishable produce!" icon_contents = "plants" + circuit = /obj/item/circuitboard/smartfridge/produce /obj/machinery/smartfridge/produce/persistent persistent = /datum/persistent/storage/smartfridge/produce @@ -61,7 +65,7 @@ /obj/machinery/smartfridge/produce/persistent_lossy persistent = /datum/persistent/storage/smartfridge/produce/lossy -/obj/machinery/smartfridge/produce/accept_check(var/obj/item/O as obj) +/obj/machinery/smartfridge/produce/accept_check(obj/item/O) if(istype(O,/obj/item/reagent_containers/food/snacks/grown/) || istype(O,/obj/item/seeds/)) return TRUE return FALSE @@ -71,7 +75,7 @@ desc = "When you need seeds fast!" icon_contents = "petri" //There's no seed base in the current batch -/obj/machinery/smartfridge/seeds/accept_check(var/obj/item/O as obj) - if(istype(O,/obj/item/seeds/)) +/obj/machinery/smartfridge/seeds/accept_check(obj/item/O) + if(istype(O,/obj/item/seeds)) return TRUE return FALSE diff --git a/code/modules/food/kitchen/smartfridge/smartfridge.dm b/code/modules/food/kitchen/smartfridge/smartfridge.dm index 6a50d11de8..978b36114f 100644 --- a/code/modules/food/kitchen/smartfridge/smartfridge.dm +++ b/code/modules/food/kitchen/smartfridge/smartfridge.dm @@ -23,6 +23,7 @@ var/wrenchable = 0 var/datum/wires/smartfridge/wires = null var/persistent = null // Path of persistence datum used to track contents + circuit = /obj/item/circuitboard/smartfridge //This one is meant to be uncraftable, however. /obj/machinery/smartfridge/secure is_secure = 1 @@ -36,6 +37,7 @@ else wires = new/datum/wires/smartfridge(src) update_icon() + default_apply_parts() /obj/machinery/smartfridge/Destroy() qdel(wires) @@ -46,7 +48,7 @@ SSpersistence.forget_value(src, persistent) return ..() -/obj/machinery/smartfridge/proc/accept_check(var/obj/item/O as obj) +/obj/machinery/smartfridge/proc/accept_check(obj/item/O) return FALSE /obj/machinery/smartfridge/process() @@ -95,7 +97,7 @@ if(6 to INFINITY) add_overlay("[icon_base]-[icon_contents]3") -/obj/machinery/smartfridge/attackby(var/obj/item/O as obj, var/mob/user as mob) +/obj/machinery/smartfridge/attackby(obj/item/O, mob/user) if(O.has_tool_quality(TOOL_SCREWDRIVER)) panel_open = !panel_open user.visible_message(span_filter_notice("[user] [panel_open ? "opens" : "closes"] the maintenance panel of \the [src]."), span_filter_notice("You [panel_open ? "open" : "close"] the maintenance panel of \the [src].")) @@ -106,6 +108,13 @@ if(wrenchable && default_unfasten_wrench(user, O, 20)) return + if(O.has_tool_quality(TOOL_CROWBAR)) + if(allowed(user)) + default_deconstruction_crowbar(user, O) + else + to_chat(user, span_warning("\The [src] smartly denies you access to deconstruct it.")) + return + if(istype(O, /obj/item/multitool) || O.has_tool_quality(TOOL_WIRECUTTER)) if(panel_open) attack_hand(user) diff --git a/code/modules/food/kitchen/smartfridge/smartfridge_vr.dm b/code/modules/food/kitchen/smartfridge/smartfridge_vr.dm index d9416d4ae5..c37268f527 100644 --- a/code/modules/food/kitchen/smartfridge/smartfridge_vr.dm +++ b/code/modules/food/kitchen/smartfridge/smartfridge_vr.dm @@ -45,6 +45,7 @@ desc = "A refrigerated storage unit for medicine and chemical storage. Now sporting a fancy system of pulleys to lift bottles up and down." expert_job = JOB_CHEMIST var/obj/machinery/smartfridge/chemistry/chemvator/attached + circuit = /obj/item/circuitboard/smartfridge/chemvator /obj/machinery/smartfridge/chemistry/chemvator/accept_check(var/obj/item/O as obj) if(istype(O,/obj/item/storage/pill_bottle) || istype(O,/obj/item/reagent_containers) || istype(O,/obj/item/reagent_containers/glass/)) @@ -57,6 +58,7 @@ /obj/machinery/smartfridge/chemistry/chemvator/down name = "\improper Smart Chemavator - Lower" + circuit = /obj/item/circuitboard/smartfridge/chemvator/down /obj/machinery/smartfridge/chemistry/chemvator/down/Initialize(mapload) . = ..() diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/adv_dark_gygax.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/adv_dark_gygax.dm index d9e56fcca1..b4fc04fbe9 100644 --- a/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/adv_dark_gygax.dm +++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/mecha/adv_dark_gygax.dm @@ -180,7 +180,7 @@ // Shoot a tesla bolt, and flashes people who are looking at the mecha without sufficent eye protection. visible_message(span_warning("\The [energy_ball] explodes in a flash of light, sending a shock everywhere!")) playsound(src, 'sound/effects/lightningbolt.ogg', 100, 1, extrarange = 30) - tesla_zap(src.loc, 5, ELECTRIC_ZAP_POWER, FALSE) + tesla_zap(src.loc, 5, ELECTRIC_ZAP_POWER, FALSE, current_jumps = 1) for(var/mob/living/L in viewers(src)) if(L == src) continue diff --git a/code/modules/power/cells/power_cells.dm b/code/modules/power/cells/power_cells.dm index 18c704d9c9..93be6c5f51 100644 --- a/code/modules/power/cells/power_cells.dm +++ b/code/modules/power/cells/power_cells.dm @@ -149,6 +149,7 @@ maxcharge = 30000 //determines how badly mobs get shocked matter = list(MAT_STEEL = 700, MAT_GLASS = 80) robot_durability = 200 + emp_proof = TRUE /obj/item/cell/infinite/check_charge() return 1 diff --git a/code/modules/power/fusion/magpower.dm b/code/modules/power/fusion/magpower.dm index 9d5f9bb649..c36ad77e87 100644 --- a/code/modules/power/fusion/magpower.dm +++ b/code/modules/power/fusion/magpower.dm @@ -12,6 +12,7 @@ var/list/active_field = list()//Our active field. var/active = 0 //are we even on? var/id_tag //needed for !!rasins!! + circuit = /obj/item/circuitboard/hydromagnetic_trap /obj/machinery/power/hydromagnetic_trap/attackby(var/obj/item/W, var/mob/user) if(default_unfasten_wrench(user, W)) diff --git a/code/modules/power/gravitygenerator_vr.dm b/code/modules/power/gravitygenerator_vr.dm index 1f7f706067..0d62ff83f0 100644 --- a/code/modules/power/gravitygenerator_vr.dm +++ b/code/modules/power/gravitygenerator_vr.dm @@ -38,7 +38,7 @@ GLOBAL_LIST_EMPTY(gravity_generators) if(prob(20)) set_broken() -/obj/machinery/gravity_generator/tesla_act(power, tesla_flags) +/obj/machinery/gravity_generator/tesla_act(power, explosive, current_jumps) ..() qdel(src)//like the singulo, tesla deletes it. stops it from exploding over and over diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index a465fa7ec7..0a29fdfa1b 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -1108,7 +1108,7 @@ GLOBAL_LIST_EMPTY(light_type_cache) if(isrobot(user)) I = user.get_active_hand() - if(istype(I,/obj/item/multitool)) + if(I?.has_tool_quality(TOOL_MULTITOOL)) var/list/menu_list = list( "Normal Range", "Normal Brightness", diff --git a/code/modules/power/port_gen_vr.dm b/code/modules/power/port_gen_vr.dm index 2ceae99e38..a80db0fa5d 100644 --- a/code/modules/power/port_gen_vr.dm +++ b/code/modules/power/port_gen_vr.dm @@ -236,7 +236,7 @@ visible_message(span_danger("\The [src] lets out an shower of sparks as it starts to lose stability!"),\ span_warningplain("You hear a loud electrical crack!")) playsound(src, 'sound/effects/lightningshock.ogg', 100, 1, extrarange = 5) - tesla_zap(src, 5, power_gen * 0.05) + tesla_zap(src, 5, power_gen * 0.05, current_jumps = 1) addtimer(CALLBACK(GLOBAL_PROC, PROC_REF(explosion), get_turf(src), 2, 3, 4, 8), 100) // Not a normal explosion. /obj/machinery/power/rtg/abductor/bullet_act(obj/item/projectile/Proj) @@ -297,7 +297,7 @@ /obj/machinery/power/rtg/abductor/fire_act(exposed_temperature, exposed_volume) asplod() -/obj/machinery/power/rtg/abductor/tesla_act() +/obj/machinery/power/rtg/abductor/tesla_act(power, explosive, current_jumps) ..() //extend the zap asplod() @@ -355,7 +355,7 @@ /obj/machinery/power/rtg/kugelblitz/fire_act(exposed_temperature, exposed_volume) asplod() -/obj/machinery/power/rtg/kugelblitz/tesla_act() +/obj/machinery/power/rtg/kugelblitz/tesla_act(power, explosive, current_jumps) ..() //extend the zap asplod() @@ -620,7 +620,7 @@ /obj/machinery/power/rtg/antimatter_core/fire_act(exposed_temperature, exposed_volume) return -/obj/machinery/power/rtg/antimatter_core/tesla_act() +/obj/machinery/power/rtg/antimatter_core/tesla_act(power, explosive, current_jumps) ..() //extend the zap asplod() diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm index 9ed93e31d3..7d2c9f0641 100644 --- a/code/modules/power/singularity/emitter.dm +++ b/code/modules/power/singularity/emitter.dm @@ -307,3 +307,12 @@ projectile.particle_type = particle return projectile return new /obj/item/projectile/beam/emitter(get_turf(src)) + +/obj/machinery/power/emitter/pre_mapped + anchored = TRUE + state = 2 + +/obj/machinery/power/emitter/pre_mapped/Initialize(mapload) + . = ..() + connect_to_network() + update_icon() diff --git a/code/modules/power/singularity/emitter_vr.dm b/code/modules/power/singularity/emitter_vr.dm index be4d73e7b0..c3c765b486 100644 --- a/code/modules/power/singularity/emitter_vr.dm +++ b/code/modules/power/singularity/emitter_vr.dm @@ -35,3 +35,12 @@ icon_state = "emitter_+a" else icon_state = "emitter" + +/obj/machinery/power/emitter/antique/pre_mapped + anchored = TRUE + state = 2 + +/obj/machinery/power/emitter/antique/pre_mapped/Initialize(mapload) + . = ..() + connect_to_network() + update_icon() diff --git a/code/modules/power/singularity/field_generator.dm b/code/modules/power/singularity/field_generator.dm index 358dfc7738..1ef3d7e469 100644 --- a/code/modules/power/singularity/field_generator.dm +++ b/code/modules/power/singularity/field_generator.dm @@ -357,3 +357,12 @@ investigate_log("has " + span_red("failed") + " whilst a singulo exists.","singulo") log_game("FIELDGEN([x],[y],[z]) Containment failed while singulo/tesla exists.") O.last_warning = world.time + +/obj/machinery/field_generator/pre_mapped + state = 2 //Start welded. + anchored = TRUE + + +/obj/machinery/field_generator/pre_mapped/Initialize(mapload) + . = ..() + update_icon() diff --git a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm index c49a864b7d..711a212d84 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm @@ -346,3 +346,12 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin update_use_power(USE_POWER_IDLE) update_icon() return 1 + +/obj/structure/particle_accelerator/end_cap/pre_mapped + construction_state = 3 + anchored = TRUE + +/obj/structure/particle_accelerator/end_cap/pre_mapped/Initialize(mapload) + . = ..() + update_state() + update_icon() diff --git a/code/modules/power/singularity/particle_accelerator/particle_chamber.dm b/code/modules/power/singularity/particle_accelerator/particle_chamber.dm index 4d666e12c3..8d65e6979a 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_chamber.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_chamber.dm @@ -4,3 +4,11 @@ icon = 'icons/obj/machines/particle_accelerator2.dmi' icon_state = "fuel_chamber" reference = "fuel_chamber" + +/obj/structure/particle_accelerator/fuel_chamber/pre_mapped + construction_state = 3 + anchored = TRUE + +/obj/structure/particle_accelerator/fuel_chamber/pre_mapped/Initialize(mapload) + . = ..() + update_icon() diff --git a/code/modules/power/singularity/particle_accelerator/particle_control.dm b/code/modules/power/singularity/particle_accelerator/particle_control.dm index 8cdbe0eb08..e95f4cca1f 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_control.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_control.dm @@ -252,3 +252,11 @@ . = TRUE update_icon() + +/obj/machinery/particle_accelerator/control_box/pre_mapped + construction_state = 3 + assembled = TRUE + +/obj/machinery/particle_accelerator/control_box/pre_mapped/Initialize(mapload) + . = ..() + update_icon() diff --git a/code/modules/power/singularity/particle_accelerator/particle_emitter.dm b/code/modules/power/singularity/particle_accelerator/particle_emitter.dm index b3a7c52917..354ef21753 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_emitter.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_emitter.dm @@ -45,3 +45,28 @@ A.set_dir(src.dir) return 1 return 0 + +/obj/structure/particle_accelerator/particle_emitter/center/pre_mapped + construction_state = 3 + anchored = TRUE + +/obj/structure/particle_accelerator/particle_emitter/center/pre_mapped/Initialize(mapload) + . = ..() + update_icon() + + +/obj/structure/particle_accelerator/particle_emitter/right/pre_mapped + construction_state = 3 + anchored = TRUE + +/obj/structure/particle_accelerator/particle_emitter/right/pre_mapped/Initialize(mapload) + . = ..() + update_icon() + +/obj/structure/particle_accelerator/particle_emitter/left/pre_mapped + construction_state = 3 + anchored = TRUE + +/obj/structure/particle_accelerator/particle_emitter/left/pre_mapped/Initialize(mapload) + . = ..() + update_icon() diff --git a/code/modules/power/singularity/particle_accelerator/particle_power.dm b/code/modules/power/singularity/particle_accelerator/particle_power.dm index 07de6e3b60..3de313d796 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_power.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_power.dm @@ -4,3 +4,11 @@ icon = 'icons/obj/machines/particle_accelerator2.dmi' icon_state = "power_box" reference = "power_box" + +/obj/structure/particle_accelerator/power_box/pre_mapped + construction_state = 3 + anchored = TRUE + +/obj/structure/particle_accelerator/power_box/pre_mapped/Initialize(mapload) + . = ..() + update_icon() diff --git a/code/modules/power/solar.dm b/code/modules/power/solar.dm index 2541b2307a..382a746b56 100644 --- a/code/modules/power/solar.dm +++ b/code/modules/power/solar.dm @@ -62,7 +62,7 @@ GLOBAL_LIST_EMPTY(solars_list) if(W.has_tool_quality(TOOL_CROWBAR)) playsound(src, 'sound/machines/click.ogg', 50, 1) user.visible_message(span_notice("[user] begins to take the glass off the solar panel.")) - if(do_after(user, 5 SECONDS, target = src)) + if(do_after(user, 2 SECONDS * W.toolspeed, target = src)) var/obj/item/solar_assembly/S = new(loc) S.anchored = TRUE new glass_type(loc, 2) @@ -70,10 +70,12 @@ GLOBAL_LIST_EMPTY(solars_list) user.visible_message(span_notice("[user] takes the glass off the solar panel.")) qdel(src) return - else if (W) - src.add_fingerprint(user) - src.health -= W.force - src.healthcheck() + else if(W && user.a_intent == I_HURT) + user.visible_message(span_warning("[user] strikes the solar panel with [W].")) + user.setClickCooldown(user.get_attack_speed(W)) + add_fingerprint(user) + health -= W.force + healthcheck() ..() diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index e0e5a363d8..785ac1e596 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -413,16 +413,15 @@ if(!istype(l.glasses, /obj/item/clothing/glasses/meson) || l.is_incorporeal()) //Only mesons can protect you! OR if they're not in the same plane of existence l.hallucination = max(0, min(200, l.hallucination + power * config_hallucination_power * sqrt( 1 / max(1,get_dist(l, src)) ) ) ) - if(power) - // At a power mult of 0.025 for range, this means a 1000power SM (about normal) will reach 25 tiles and be putting off rad pulses of 500. With 0 protection, you have a 10% chance of getting hit. - radiation_pulse( - src, - max_range = CLAMP(round(power * 0.025), 5, 50), - threshold = CLAMP(RAD_HEAVY_INSULATION - (power * 0.00025), 0.1, RAD_MEDIUM_INSULATION), - chance = max(round(power * 0.01), DEFAULT_RADIATION_CHANCE), - minimum_exposure_time = URANIUM_RADIATION_MINIMUM_EXPOSURE_TIME, - strength = max(round(power * 0.5), 50) - ) + // At a power mult of 0.025 for range, this means a 1000power SM (about normal) will reach 25 tiles and be putting off rad pulses of 500. With 0 protection, you have a 10% chance of getting hit. + radiation_pulse( + src, + max_range = CLAMP(round(power * 0.025), 5, 50), + threshold = CLAMP(RAD_MEDIUM_INSULATION - (power * 0.00025), 0.1, RAD_MEDIUM_INSULATION), + chance = max(round(power * 0.01), DEFAULT_RADIATION_CHANCE), + minimum_exposure_time = URANIUM_RADIATION_MINIMUM_EXPOSURE_TIME, + strength = max(round(power * 0.5), 50) + ) power -= (power/DECAY_FACTOR)**3 //energy losses due to radiation diff --git a/code/modules/power/tesla/coil.dm b/code/modules/power/tesla/coil.dm index 66034e2599..1fc16efea2 100644 --- a/code/modules/power/tesla/coil.dm +++ b/code/modules/power/tesla/coil.dm @@ -1,3 +1,5 @@ +#define AMPLIFIER_STRENGTH 0.2 //Each tier of capacitor increases the amplifier's strength by this much. At 5 rating, 100% increase per relay. + /obj/machinery/power/tesla_coil name = "tesla coil" desc = "Balanced power generation and zapping." @@ -15,20 +17,37 @@ var/power_loss = 2 var/input_power_multiplier = 1 - var/zap_cooldown = 100 + var/zap_cooldown = 10 var/last_zap = 0 var/datum/wires/tesla_coil/wires = null + var/zap_range = 5 + var/lossy_transfer = TRUE //If true, we lose power upon shooting the next beam by our power_loss var. Only comes to play if power_loss is > 1 -/obj/machinery/power/tesla_coil/pre_mapped - anchored = TRUE - -/obj/machinery/power/tesla_coil/examine() +/obj/machinery/power/tesla_coil/examine(mob/user) . = ..() if(anchored) . += span_notice("It has been securely bolted down and is ready for operation.") else . += span_warning("It is not secured!") + if(Adjacent(user)) + + var/power_calculated = FALSE + if(input_power_multiplier != 1) //Greater than 1 or less than 1. + if(power_loss != 1) + . += span_info("This tesla coil will increase any power it produces by [((input_power_multiplier/power_loss) - 1) * 100]%.") + power_calculated = TRUE + else + . += span_info("This tesla coil will increase any power it produces by [(input_power_multiplier - 1) * 100]%.") + if(!power_calculated || lossy_transfer) + if(power_loss != 1) //If set to 1, we don't lose power upon shooting the next. + . += span_warning("This tesla coil will relay power with a [(1/power_loss) * 100]% loss.") + + if(zap_range) + . += span_info("This tesla coil produces bolts that will reach out [zap_range] tiles.") + else + . += span_warning("This tesla coil does not produce bolts!") + /obj/machinery/power/tesla_coil/Initialize(mapload) . = ..() wires = new(src) @@ -42,13 +61,11 @@ return ..() /obj/machinery/power/tesla_coil/RefreshParts() - var/power_multiplier = 0 - zap_cooldown = 100 + input_power_multiplier = 0 + zap_cooldown = 10 for(var/obj/item/stock_parts/capacitor/C in component_parts) - power_multiplier += C.rating - zap_cooldown -= (C.rating * 20) - input_power_multiplier = power_multiplier - + input_power_multiplier += C.rating + zap_cooldown -= (C.rating - 1) /obj/machinery/power/tesla_coil/update_icon() if(panel_open) @@ -57,7 +74,7 @@ icon_state = "[icontype][anchored]" /obj/machinery/power/tesla_coil/attackby(obj/item/W, mob/user, params) - src.add_fingerprint(user) + add_fingerprint(user) //if(default_deconstruction_screwdriver(user, "coil_open[anchored]", "coil[anchored]", W)) if(default_deconstruction_screwdriver(user, W)) @@ -68,8 +85,67 @@ return if(default_deconstruction_crowbar(user, W)) return + + if(panel_open && W?.has_tool_quality(TOOL_MULTITOOL)) + var/list/menu_list = list( + "Normal", + "Relay", + "Splitter", + "Amplifier", + "Recaster", + "Collector", + ) + + var/modification_decision = tgui_input_list(user, "Which tesla do you wish to change it into?", "Tesla Selection", menu_list) + if(!modification_decision) + return //They didn't select anything! + if(QDELETED(src) || QDELETED(W) || QDELETED(user) || get_dist(user, src) > W.reach) + return + + var/turf = get_turf(src) + if(!turf) + return + var/obj/machinery/power/tesla_coil/new_coil + switch(modification_decision) + if("Normal") + new_coil = new(turf) + if("Relay") + new_coil = new /obj/machinery/power/tesla_coil/relay(turf) + if("Splitter") + new_coil = new /obj/machinery/power/tesla_coil/splitter(turf) + if("Amplifier") + new_coil = new /obj/machinery/power/tesla_coil/amplifier(turf) + if("Recaster") + new_coil = new /obj/machinery/power/tesla_coil/recaster(turf) + if("Collector") + new_coil = new /obj/machinery/power/tesla_coil/collector(turf) + else //Should never happen. + return + + //Get rid of the stock parts that get added by init. + for(var/obj/item/stock_parts/C in new_coil.component_parts) + new_coil.component_parts -= C + qdel(C) + + //Move the stock parts from the old coil to the new one. + for(var/obj/item/stock_parts/C in component_parts) + C.forceMove(new_coil) + component_parts -= C + new_coil.component_parts += C + new_coil.RefreshParts() + + new_coil.anchored = anchored + new_coil.update_icon() + + to_chat(user, span_notice("You modify \the [src]. It is now a [lowertext(modification_decision)]! You close the access panel.")) + qdel(src) + return + + /* //Tesla wires do literally nothing. if(is_wire_tool(W)) return wires.Interact(user) + */ + return ..() /obj/machinery/power/tesla_coil/attack_hand(mob/user) @@ -77,58 +153,72 @@ return ..() -/obj/machinery/power/tesla_coil/tesla_act(var/power) +/obj/machinery/power/tesla_coil/tesla_act(power, explosive, current_jumps) if(anchored && !panel_open) being_shocked = TRUE - coil_act(power) + coil_act(power, explosive, current_jumps) //addtimer(CALLBACK(src, PROC_REF(reset_shocked)), 10) - spawn(10) reset_shocked() + spawn(zap_cooldown) reset_shocked() + else if(anchored && panel_open) //Doing maintenance. Just act like a grounding rod. + being_shocked = TRUE + spawn(zap_cooldown) reset_shocked() else ..() -/obj/machinery/power/tesla_coil/proc/coil_act(var/power) +/obj/machinery/power/tesla_coil/proc/coil_act(power, explosive, current_jumps) var/power_produced = power / power_loss add_avail(power_produced*input_power_multiplier) flick("[icontype]hit", src) playsound(src, 'sound/effects/lightningshock.ogg', 100, 1, extrarange = 5) - tesla_zap(src, 5, power_produced) + tesla_zap(src, zap_range, power_produced, current_jumps = current_jumps) -/obj/machinery/power/tesla_coil/proc/zap() +//Unused. +/obj/machinery/power/tesla_coil/proc/zap(power, explosive, current_jumps) if((last_zap + zap_cooldown) > world.time || !powernet) return FALSE last_zap = world.time var/coeff = (20 - ((input_power_multiplier - 1) * 3)) coeff = max(coeff, 10) - var/power = (powernet.avail/2) + power = (powernet.avail/2) draw_power(power) playsound(src, 'sound/effects/lightningshock.ogg', 100, 1, extrarange = 5) - tesla_zap(src, 10, power/(coeff/2)) + tesla_zap(src, zap_range, power/(coeff/2), current_jumps = current_jumps) /obj/machinery/power/tesla_coil/relay name = "tesla relay coil" - desc = "Designed to move power around rather than just consuming it." + desc = "Designed to move power around rather. Creates no power on its own." icon_state = "relay0" icontype = "relay" circuit = /obj/item/circuitboard/tesla_coil power_loss = 1 - input_power_multiplier = 0 var/relay_efficiency = 0.9 /obj/machinery/power/tesla_coil/relay/RefreshParts() ..() - var/relay_multiplier + input_power_multiplier = 1 //So we don't show the examine text further above. + relay_efficiency = 0.85 for(var/obj/item/stock_parts/capacitor/C in component_parts) - relay_multiplier += C.rating - relay_efficiency = 0.85 + (0.05 * relay_multiplier) + relay_efficiency += C.rating * 0.05 -/obj/machinery/power/tesla_coil/relay/coil_act(var/power) - var/power_relayed = power * relay_efficiency +/obj/machinery/power/tesla_coil/relay/coil_act(power, explosive, current_jumps) + var/diminishing_returns = 1 + ((current_jumps * 0.1)-0.1) //The more jumps, the less effective the amplifier is. At 10 jumps, it's only 1/2 as effective. + var/power_relayed = ((power * relay_efficiency) / diminishing_returns) + if(power_relayed < power && relay_efficiency >= 1) + power_relayed = power flick("[icontype]hit", src) playsound(src, 'sound/effects/lightningshock.ogg', 100, 1, extrarange = 5) - tesla_zap(src, 5, power_relayed) + tesla_zap(src, zap_range, power_relayed, current_jumps = current_jumps) + +/obj/machinery/power/tesla_coil/relay/examine(mob/user) + . = ..() + if(Adjacent(user)) + if(relay_efficiency == 1) + . += span_info("This tesla coil will transfer power through it with no loss.") + else + . += span_info("This tesla coil will [relay_efficiency > 1 ? "amplify" : "reduce"] power transferring through it by [ abs(relay_efficiency - 1) * 100]%.") /obj/machinery/power/tesla_coil/splitter name = "tesla prism coil" @@ -138,6 +228,9 @@ circuit = /obj/item/circuitboard/tesla_coil + power_loss = 2 + lossy_transfer = FALSE + var/split_count = 1 /obj/machinery/power/tesla_coil/splitter/RefreshParts() @@ -146,38 +239,56 @@ for(var/obj/item/stock_parts/capacitor/C in component_parts) split_count += C.rating -/obj/machinery/power/tesla_coil/splitter/coil_act(var/power) +/obj/machinery/power/tesla_coil/splitter/coil_act(power, explosive, current_jumps) var/power_per_bolt = power / (split_count + 1) var/power_produced = power_per_bolt / power_loss - add_avail(power_produced*input_power_multiplier) + add_avail(power_produced * input_power_multiplier) flick("[icontype]hit", src) playsound(src, 'sound/effects/lightningshock.ogg', 100, 1, extrarange = 5) for(var/i = 0, i < split_count, i++) - tesla_zap(src, 5, power_per_bolt) + tesla_zap(src, zap_range, power_per_bolt, current_jumps = current_jumps) + +/obj/machinery/power/tesla_coil/splitter/examine(mob/user) + . = ..() + if(Adjacent(user)) + . += span_info("This tesla coil will create [split_count + 1] bolts, with each containing [round(((1 / (split_count+1)) * 100), 0.1)]% of the original power.") /obj/machinery/power/tesla_coil/amplifier name = "tesla amplifier coil" - desc = "Designed to amplify power moving through it rather than collecting it." + desc = "Designed to amplify power moving through it rather than collecting it. Has diminishing returns the more relays the tesla bolt has passed through." icon_state = "amp0" icontype = "amp" circuit = /obj/item/circuitboard/tesla_coil - var/amp_eff = 2 + var/amp_eff = 1.075 + power_loss = 1 /obj/machinery/power/tesla_coil/amplifier/RefreshParts() ..() - var/amp_eff = 1 + amp_eff = 1.075 for(var/obj/item/stock_parts/capacitor/C in component_parts) - amp_eff += C.rating + amp_eff += ((C.rating * AMPLIFIER_STRENGTH) - AMPLIFIER_STRENGTH) + input_power_multiplier = 1 //no mult for you -/obj/machinery/power/tesla_coil/amplifier/coil_act(var/power) - var/power_produced = power / power_loss - add_avail(power_produced*input_power_multiplier) +/obj/machinery/power/tesla_coil/amplifier/coil_act(power, explosive, current_jumps) + var/diminishing_returns = 1 + ((current_jumps * 0.1)-0.1) //The more jumps, the less effective the amplifier is. At 10 jumps, it stops increasing power. Use something else! + var/power_produced = ((power * amp_eff) / diminishing_returns) + if(power_produced < power) + power_produced = power //Don't let it reduce power. If the amp is worse than the original, just give them the original power. flick("[icontype]hit", src) playsound(src, 'sound/effects/lightningshock.ogg', 100, 1, extrarange = 5) - tesla_zap(src, 5, power_produced) + tesla_zap(src, zap_range, power_produced, current_jumps = current_jumps) +/obj/machinery/power/tesla_coil/amplifier/examine(mob/user) + . = ..() + if(Adjacent(user)) + . += span_info("This tesla coil will amplify any power it receives by [round((((amp_eff) * 100) - 100), 0.1)]% of the original power when relaying it.") + . += span_info("Every jump the tesla makes reduces the effectiveness of the amplifier by 10%, meaning at 10 jumps, it stops increasing power.") + . += span_danger("This tesla coil will NOT produce produce energy.") + + +///BE WARNED, THIS THING CAN CAUSE MASSIVE LAG IF THE RANGE IS TOO HIGH /obj/machinery/power/tesla_coil/recaster name = "tesla recaster coil" desc = "Extends the reach of the bolts." @@ -186,21 +297,21 @@ circuit = /obj/item/circuitboard/tesla_coil - var/zap_range = 6 + zap_range = 6 /obj/machinery/power/tesla_coil/recaster/RefreshParts() ..() - var/zap_range = 5 + zap_range = 5 for(var/obj/item/stock_parts/capacitor/C in component_parts) - zap_range += C.rating + zap_range += C.rating * 1 -/obj/machinery/power/tesla_coil/recaster/coil_act(var/power) +/obj/machinery/power/tesla_coil/recaster/coil_act(power, explosive, current_jumps) var/power_relayed = power / power_loss var/power_produced = power / (power_loss * 2) add_avail(power_produced*input_power_multiplier) flick("[icontype]hit", src) playsound(src, 'sound/effects/lightningshock.ogg', 100, 1, extrarange = zap_range) - tesla_zap(src, zap_range, power_relayed) + tesla_zap(src, zap_range, power_relayed, current_jumps = current_jumps) /obj/machinery/power/tesla_coil/collector name = "tesla collector coil" @@ -210,18 +321,20 @@ circuit = /obj/item/circuitboard/tesla_coil - var/collect_eff = 0.8 + power_loss = 1 //Doesn't lose power. Instead it uses collect_eff + + zap_range = 0 /obj/machinery/power/tesla_coil/collector/RefreshParts() ..() - var/collect_mod = 0 + input_power_multiplier = 0 for(var/obj/item/stock_parts/capacitor/C in component_parts) - collect_mod += C.rating - collect_eff = 0.75 + collect_mod*0.05 + input_power_multiplier += C.rating * C.rating //T1 = 200% T2 = 400% T3 = 900% T4 = 1600% T5 = 2500% + if(input_power_multiplier == 1) + input_power_multiplier = 2 -/obj/machinery/power/tesla_coil/collector/coil_act(var/power) - var/power_produced = power * collect_eff - add_avail(power_produced*input_power_multiplier) +/obj/machinery/power/tesla_coil/collector/coil_act(power, explosive, current_jumps) + add_avail(power*input_power_multiplier) flick("[icontype]hit", src) playsound(src, 'sound/effects/lightningshock.ogg', 100, 1, extrarange = 5) @@ -241,16 +354,13 @@ . = ..() AddElement(/datum/element/climbable) -/obj/machinery/power/grounding_rod/examine() +/obj/machinery/power/grounding_rod/examine(user) . = ..() if(anchored) . += span_notice("It has been securely bolted down and is ready for operation.") else . += span_warning("It is not secured!") -/obj/machinery/power/grounding_rod/pre_mapped - anchored = TRUE - /obj/machinery/power/grounding_rod/update_icon() if(panel_open) icon_state = "grounding_rod_open[anchored]" @@ -274,8 +384,67 @@ return ..() -/obj/machinery/power/grounding_rod/tesla_act(var/power) +/obj/machinery/power/grounding_rod/tesla_act(power, explosive, current_jumps) if(anchored && !panel_open) flick("grounding_rodhit", src) else ..() + +//Mapspawn variants of each. +/obj/machinery/power/tesla_coil/pre_mapped + anchored = TRUE + +/obj/machinery/power/tesla_coil/pre_mapped/Initialize(mapload) + . = ..() + connect_to_network() + update_icon() + +/obj/machinery/power/tesla_coil/relay/pre_mapped + anchored = TRUE + +/obj/machinery/power/tesla_coil/relay/pre_mapped/Initialize(mapload) + . = ..() + connect_to_network() + update_icon() + +/obj/machinery/power/tesla_coil/splitter/pre_mapped + anchored = TRUE + +/obj/machinery/power/tesla_coil/splitter/pre_mapped/Initialize(mapload) + . = ..() + connect_to_network() + update_icon() + +/obj/machinery/power/tesla_coil/amplifier/pre_mapped + anchored = TRUE + +/obj/machinery/power/tesla_coil/amplifier/pre_mapped/Initialize(mapload) + . = ..() + connect_to_network() + update_icon() + +/obj/machinery/power/tesla_coil/recaster/pre_mapped + anchored = TRUE + +/obj/machinery/power/tesla_coil/recaster/pre_mapped/Initialize(mapload) + . = ..() + connect_to_network() + update_icon() + +/obj/machinery/power/tesla_coil/collector/pre_mapped + anchored = TRUE + +/obj/machinery/power/tesla_coil/collector/pre_mapped/Initialize(mapload) + . = ..() + connect_to_network() + update_icon() + +/obj/machinery/power/grounding_rod/pre_mapped + anchored = TRUE + +/obj/machinery/power/grounding_rod/pre_mapped/Initialize(mapload) + . = ..() + connect_to_network() + update_icon() + +#undef AMPLIFIER_STRENGTH diff --git a/code/modules/power/tesla/energy_ball.dm b/code/modules/power/tesla/energy_ball.dm index e2130406f1..fff31bb094 100644 --- a/code/modules/power/tesla/energy_ball.dm +++ b/code/modules/power/tesla/energy_ball.dm @@ -58,11 +58,11 @@ playsound(src, 'sound/effects/lightningbolt.ogg', 100, 1, extrarange = 30) - set_dir(tesla_zap(src, 7, TESLA_DEFAULT_POWER, TRUE)) + set_dir(tesla_zap(src, 7, TESLA_DEFAULT_POWER, TRUE, current_jumps = 1)) for (var/ball in orbiting_balls) var/range = rand(1, CLAMP(orbiting_balls.len, 3, 7)) - tesla_zap(ball, range, TESLA_MINI_POWER/7*range, TRUE) + tesla_zap(ball, range, TESLA_MINI_POWER/7*range, TRUE, current_jumps = 1) else energy = 0 // ensure we dont have miniballs of miniballs @@ -158,12 +158,15 @@ // L.dust() - Changing to do fatal elecrocution instead L.electrocute_act(500, src, def_zone = BP_TORSO) -/proc/tesla_zap(atom/source, zap_range = 3, power, explosive = FALSE, stun_mobs = TRUE) +/proc/tesla_zap(atom/source, zap_range = 3, power, explosive = FALSE, stun_mobs = TRUE, current_jumps) if(!source) // Some mobs and maybe some objects delete themselves when they die. return . = source.dir if(power < 1000) return + if(current_jumps >= MAXIMUM_TESLA_JUMPS) + return + current_jumps++ var/closest_dist = 0 var/closest_atom @@ -194,10 +197,12 @@ /obj/structure/grille, /obj/machinery/the_singularitygen/tesla)) - for(var/A in typecache_filter_multi_list_exclusion(oview(source, zap_range+2), things_to_shock, blacklisted_tesla_types)) + for(var/A in typecache_filter_multi_list_exclusion(oview(zap_range+2, source), things_to_shock, blacklisted_tesla_types)) if(istype(A, /obj/machinery/power/tesla_coil)) var/dist = get_dist(source, A) var/obj/machinery/power/tesla_coil/C = A + if(!C.anchored) + continue if(dist <= zap_range && (dist < closest_dist || !closest_tesla_coil) && !C.being_shocked) closest_dist = dist @@ -277,10 +282,10 @@ //per type stuff: if(closest_tesla_coil) - closest_tesla_coil.tesla_act(power, explosive, stun_mobs) + closest_tesla_coil.tesla_act(power, explosive, stun_mobs, current_jumps = current_jumps) else if(closest_grounding_rod) - closest_grounding_rod.tesla_act(power, explosive, stun_mobs) + closest_grounding_rod.tesla_act(power, explosive, stun_mobs, current_jumps = current_jumps) else if(closest_mob) var/shock_damage = CLAMP(round(power/400), 10, 90) + rand(-5, 5) @@ -291,21 +296,21 @@ var/mob/living/silicon/S = closest_mob if(stun_mobs) S.emp_act(3 /*EMP_LIGHT*/) - tesla_zap(closest_mob, 7, power / 1.5, explosive, stun_mobs) // metallic folks bounce it further + tesla_zap(closest_mob, 7, power / 1.5, explosive, stun_mobs, current_jumps = current_jumps) // metallic folks bounce it further else - tesla_zap(closest_mob, 5, power / 1.5, explosive, stun_mobs) + tesla_zap(closest_mob, 5, power / 1.5, explosive, stun_mobs, current_jumps = current_jumps) else if(closest_machine) drain_energy = TRUE // VOREStation Edit - Safety First! Drain Tesla fast when its loose - closest_machine.tesla_act(power, explosive, stun_mobs) + closest_machine.tesla_act(power, explosive, stun_mobs, current_jumps = current_jumps) else if(closest_blob) drain_energy = TRUE // VOREStation Edit - Safety First! Drain Tesla fast when its loose - closest_blob.tesla_act(power, explosive, stun_mobs) + closest_blob.tesla_act(power, explosive, stun_mobs, current_jumps = current_jumps) else if(closest_structure) drain_energy = TRUE // VOREStation Edit - Safety First! Drain Tesla fast when its loose - closest_structure.tesla_act(power, explosive, stun_mobs) + closest_structure.tesla_act(power, explosive, stun_mobs, current_jumps = current_jumps) // VOREStation Edit Start - Safety First! Drain Tesla fast when its loose if(drain_energy && istype(source, /obj/singularity/energy_ball)) diff --git a/code/modules/power/tesla/generator.dm b/code/modules/power/tesla/generator.dm index 63bce099fa..2ec8768ede 100644 --- a/code/modules/power/tesla/generator.dm +++ b/code/modules/power/tesla/generator.dm @@ -5,6 +5,9 @@ icon_state = "TheSingGen" creation_type = /obj/singularity/energy_ball -/obj/machinery/the_singularitygen/tesla/tesla_act(power, explosive = FALSE) +/obj/machinery/the_singularitygen/tesla/tesla_act(power, explosive = FALSE, current_jumps) if(explosive) energy += power + +/obj/machinery/the_singularitygen/tesla/pre_mapped + anchored = TRUE diff --git a/code/modules/power/tesla/tesla_act.dm b/code/modules/power/tesla/tesla_act.dm index 16a5669ac2..96c56cbe8f 100644 --- a/code/modules/power/tesla/tesla_act.dm +++ b/code/modules/power/tesla/tesla_act.dm @@ -2,10 +2,10 @@ // Vars and Default tesla_act behavior //////////////////////////////////////// -/obj/proc/tesla_act(var/power) +/obj/proc/tesla_act(power, explosive = FALSE, current_jumps) being_shocked = TRUE var/power_bounced = power / 2 - tesla_zap(src, 3, power_bounced) + tesla_zap(src, 3, power_bounced, current_jumps) //addtimer(CALLBACK(src, PROC_REF(reset_shocked)), 10) //schedule_task_with_source_in(10, src, PROC_REF(reset_shocked)) spawn(10) reset_shocked() @@ -15,16 +15,16 @@ // Overrides for behavior on specific types -/obj/structure/blob/tesla_act(power) +/obj/structure/blob/tesla_act(power, explosive, current_jumps) ..() adjust_integrity(-power/400) -/obj/machinery/nuclearbomb/tesla_act(power, explosive) +/obj/machinery/nuclearbomb/tesla_act(power, explosive, current_jumps) ..() if(explosive) qdel(src)//like the singulo, tesla deletes it. stops it from exploding over and over -/obj/machinery/tesla_act(power, explosive = FALSE) +/obj/machinery/tesla_act(power, explosive, current_jumps) ..() if(prob(85) && explosive) explosion(loc, 0, 2, 4, /*flame_range = 2,*/ adminlog = FALSE/*, smoke = FALSE*/) // VOREStation Edit - No devastation range @@ -33,13 +33,13 @@ else ex_act(2) -/obj/machinery/camera/tesla_act(var/power)//EMP proof upgrade also makes it tesla immune +/obj/machinery/camera/tesla_act(power, explosive, current_jumps)//EMP proof upgrade also makes it tesla immune if(isEmpProof()) return ..() qdel(src) //to prevent bomb testing camera from exploding over and over forever -/obj/machinery/light/tesla_act(power, explosive = FALSE) +/obj/machinery/light/tesla_act(power, explosive, current_jumps) if(explosive) explosion(loc, 0, 0, 0/*, flame_range = 5*/, adminlog = FALSE) qdel(src) @@ -47,16 +47,16 @@ on = TRUE broken() -/obj/structure/closet/tesla_act(var/power) +/obj/structure/closet/tesla_act(power, explosive, current_jumps) ..() //extend the zap visible_message(span_danger("[src] is blown apart by the bolt of electricity!"), span_danger("You hear a metallic screeching sound.")) dump_contents() qdel(src) -/obj/structure/reagent_dispensers/fueltank/tesla_act() +/obj/structure/reagent_dispensers/fueltank/tesla_act(power, explosive, current_jumps) ..() //extend the zap explode() -/obj/mecha/tesla_act(power) +/obj/mecha/tesla_act(power, explosive = FALSE, current_jumps) ..() take_damage(power / 200, "energy") // A surface lightning strike will do 100 damage. diff --git a/code/modules/power/turbine.dm b/code/modules/power/turbine.dm index ffd2303f31..2396bc04b0 100644 --- a/code/modules/power/turbine.dm +++ b/code/modules/power/turbine.dm @@ -330,7 +330,7 @@ compressor = C LAZYINITLIST(doors) for(var/obj/machinery/door/blast/P in GLOB.machines) - if(P.id == id) + if(P.id == id) //This will never work because the ID on the blast doors is a number while the ID on the turbine (if set mid-round) is a string. doors += P /obj/machinery/computer/turbine_computer/attackby(obj/item/W, mob/user) diff --git a/code/modules/research/message_server.dm b/code/modules/research/message_server.dm index f803a3ad32..e969bbd9f7 100644 --- a/code/modules/research/message_server.dm +++ b/code/modules/research/message_server.dm @@ -56,6 +56,7 @@ use_power = USE_POWER_IDLE idle_power_usage = 10 active_power_usage = 100 + circuit = /obj/item/circuitboard/message_server var/list/datum/data_pda_msg/pda_msgs = list() var/list/datum/data_rc_msg/rc_msgs = list() @@ -137,7 +138,7 @@ Console.set_light(2) -/obj/machinery/message_server/attack_hand(user as mob) +/obj/machinery/message_server/attack_hand(mob/living/user) // to_chat(user, span_blue("There seem to be some parts missing from this server. They should arrive on the station in a few days, give or take a few CentCom delays.")) to_chat(user, span_filter_notice("You toggle PDA message passing from [active ? "On" : "Off"] to [active ? "Off" : "On"].")) active = !active @@ -145,7 +146,13 @@ return -/obj/machinery/message_server/attackby(obj/item/O as obj, mob/living/user as mob) +/obj/machinery/message_server/attackby(obj/item/O, mob/living/user) + if(default_deconstruction_screwdriver(user, O)) + return + + if(default_deconstruction_crowbar(user, O)) + return + if (active && !(stat & (BROKEN|NOPOWER)) && (spamfilter_limit < MESSAGE_SERVER_DEFAULT_SPAM_LIMIT*2) && \ istype(O,/obj/item/circuitboard/message_monitor)) spamfilter_limit += round(MESSAGE_SERVER_DEFAULT_SPAM_LIMIT / 2) diff --git a/code/modules/research/tg/designs/boards/engineering.dm b/code/modules/research/tg/designs/boards/engineering.dm index 8a70f92bcd..9d87e5565c 100644 --- a/code/modules/research/tg/designs/boards/engineering.dm +++ b/code/modules/research/tg/designs/boards/engineering.dm @@ -116,6 +116,16 @@ ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE +/datum/design_techweb/board/hydromagnetic_trap + SET_CIRCUIT_DESIGN_NAMEDESC("hydromagnetic trap") + id = "hydromagnetic_trap" + // req_tech = list(TECH_POWER = 3, TECH_ENGINEERING = 3) + build_path = /obj/item/circuitboard/hydromagnetic_trap + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE + /datum/design_techweb/board/secure_airlock name = "secure airlock electronics circuit" desc = "Allows for the construction of a tamper-resistant airlock electronics." @@ -360,6 +370,15 @@ ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE +/datum/design_techweb/board/mass_driver_button + SET_CIRCUIT_DESIGN_NAMEDESC("mass driver button") + id = "mass_driver_button" + build_path = /obj/item/circuitboard/mass_driver_button + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE + /datum/design_techweb/board/automatic_pipe_layer SET_CIRCUIT_DESIGN_NAMEDESC("automatic pipe layer") id = "automatic_pipe_layer" @@ -404,3 +423,125 @@ RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_MACHINE_ENGINEERING ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING + +//Smartfridges + +/datum/design_techweb/board/drying_rack + SET_CIRCUIT_DESIGN_NAMEDESC("drying rack") + id = "drying_rack_circuit" + build_path = /obj/item/circuitboard/smartfridge/drying + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_MACHINE_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING + +/datum/design_techweb/board/industrial_sheet_storage + SET_CIRCUIT_DESIGN_NAMEDESC("smartfridge industrial sheet storage") + id = "industrial_sheet_storage_circuit" + build_path = /obj/item/circuitboard/smartfridge/sheets + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_MACHINE_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING + +/datum/design_techweb/board/mining_sheet_storage + SET_CIRCUIT_DESIGN_NAMEDESC("smartfridge mining sheet storage") + id = "mining_sheet_storage_circuit" + build_path = /obj/item/circuitboard/smartfridge/sheets/mining + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_MACHINE_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING + +/datum/design_techweb/board/refrigerated_medicine_storage + SET_CIRCUIT_DESIGN_NAMEDESC("smartfridge refrigerated medicine storage") + id = "refrigerated_medicine_storage_circuit" + build_path = /obj/item/circuitboard/smartfridge/medbay + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_MACHINE_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING + +/datum/design_techweb/board/secure_refrigerated_medicine_storage + SET_CIRCUIT_DESIGN_NAMEDESC("smartfridge secure refrigerated medicine storage") + id = "secure_refrigerated_medicine_storage_circuit" + build_path = /obj/item/circuitboard/smartfridge/medbay/secure + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_MACHINE_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING + +/datum/design_techweb/board/biological_sample_storage + SET_CIRCUIT_DESIGN_NAMEDESC("smartfridge biological sample storage") + id = "biological_sample_storage_circuit" + build_path = /obj/item/circuitboard/smartfridge/science + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_MACHINE_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING + +/datum/design_techweb/board/food_storage + SET_CIRCUIT_DESIGN_NAMEDESC("smartfridge food storage") + id = "food_storage_circuit" + build_path = /obj/item/circuitboard/smartfridge/kitchen + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_MACHINE_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING + +/datum/design_techweb/board/drink_storage + SET_CIRCUIT_DESIGN_NAMEDESC("smartfridge drink storage") + id = "drink_storage_circuit" + build_path = /obj/item/circuitboard/smartfridge/drinks + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_MACHINE_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING + +/datum/design_techweb/board/drink_showcase + SET_CIRCUIT_DESIGN_NAMEDESC("smartfridge drink showcase") + id = "drink_showcase_circuit" + build_path = /obj/item/circuitboard/smartfridge/drinks/showcase + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_MACHINE_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING + +/datum/design_techweb/board/produce_showcase + SET_CIRCUIT_DESIGN_NAMEDESC("smartfridge produce storage") + id = "produce_storage_circuit" + build_path = /obj/item/circuitboard/smartfridge/produce + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_MACHINE_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING + +/datum/design_techweb/board/seed_storage + SET_CIRCUIT_DESIGN_NAMEDESC("smartfridge seed storage") + id = "seed_storage_circuit" + build_path = /obj/item/circuitboard/smartfridge/seeds + + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_MACHINE_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING + +/datum/design_techweb/board/chemavator_storage_upper + SET_CIRCUIT_DESIGN_NAMEDESC("smartfridge smart chemavator - upper") + id = "chemavator_storage_upper_circuit" + build_path = /obj/item/circuitboard/smartfridge/chemvator + + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_MACHINE_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING + +/datum/design_techweb/board/chemavator_storage_lower + SET_CIRCUIT_DESIGN_NAMEDESC("smartfridge smart chemavator - lower") + id = "chemavator_storage_lower_circuit" + build_path = /obj/item/circuitboard/smartfridge/chemvator/down + + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_MACHINE_ENGINEERING + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING diff --git a/code/modules/research/tg/designs/boards/misc.dm b/code/modules/research/tg/designs/boards/misc.dm index 1ac2da3260..e624943428 100644 --- a/code/modules/research/tg/designs/boards/misc.dm +++ b/code/modules/research/tg/designs/boards/misc.dm @@ -325,3 +325,14 @@ RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_MACHINE_SERVICE ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SERVICE + + +/datum/design_techweb/board/account_console + SET_CIRCUIT_DESIGN_NAMEDESC("account database console") + id = "account_console" + build_type = AUTOLATHE | IMPRINTER // Simple circuit + build_path = /obj/item/circuitboard/account_console + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_MACHINE_SERVICE + ) + departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_COMMAND diff --git a/code/modules/research/tg/designs/boards/telecomms.dm b/code/modules/research/tg/designs/boards/telecomms.dm index 738fb6b59e..7c57f5dea7 100644 --- a/code/modules/research/tg/designs/boards/telecomms.dm +++ b/code/modules/research/tg/designs/boards/telecomms.dm @@ -74,6 +74,11 @@ id = "comm_traffic" build_path = /obj/item/circuitboard/comm_traffic +/datum/design_techweb/board/tcom/message_server + SET_CIRCUIT_DESIGN_NAMEDESC("message server") + id = "message_server" + build_path = /obj/item/circuitboard/message_server + // Telecomm parts /datum/design_techweb/subspace desc = "Complex components used to construct and repair telecomms machinery." diff --git a/code/modules/research/tg/techwebs/nodes/engi_nodes.dm b/code/modules/research/tg/techwebs/nodes/engi_nodes.dm index 98c2678b18..8583b6c72b 100644 --- a/code/modules/research/tg/techwebs/nodes/engi_nodes.dm +++ b/code/modules/research/tg/techwebs/nodes/engi_nodes.dm @@ -107,6 +107,7 @@ "tcom-receiver", "tcom-exonet_node", "message_monitor", + "message_server", "comm_monitor", "comm_server", "ntnet_relay", @@ -200,6 +201,7 @@ "large_light_tube", "floor_light", "electrochromic", + "mass_driver_button", // "crossing_signal", // "guideway_sensor", // "manuunloader", @@ -236,6 +238,7 @@ "smes_cell", "grid_checker", "breakerbox", + "hydromagnetic_trap", "tesla_coil", "rtg", // "apc_control", @@ -377,6 +380,30 @@ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_2_POINTS) announce_channels = list(CHANNEL_ENGINEERING,CHANNEL_MEDICAL) + +/datum/techweb_node/smartfridges + id = TECHWEB_NODE_SMARTFRIDGES + display_name = "Smart Fridges" + description = "Is it the space that makes the fridge smart, or the fridge that makes the space smart?" + prereq_ids = list(TECHWEB_NODE_PARTS_UPG) + design_ids = list( + "drying_rack_circuit", + "industrial_sheet_storage_circuit", + "mining_sheet_storage_circuit", + "refrigerated_medicine_storage_circuit", + "secure_refrigerated_medicine_storage_circuit", + "biological_sample_storage_circuit", + "food_storage_circuit", + "drink_storage_circuit", + "drink_showcase_circuit", + "produce_storage_circuit", + "seed_storage_circuit", + "chemavator_storage_upper_circuit", + "chemavator_storage_lower_circuit", + ) + research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_2_POINTS) + announce_channels = list(CHANNEL_ENGINEERING) + /datum/techweb_node/cells_empproof id = TECHWEB_NODE_PARTS_EMP_PROOF display_name = "EMP-Proof Parts" diff --git a/code/modules/research/tg/techwebs/nodes/service_nodes.dm b/code/modules/research/tg/techwebs/nodes/service_nodes.dm index 1535e72af1..465339da46 100644 --- a/code/modules/research/tg/techwebs/nodes/service_nodes.dm +++ b/code/modules/research/tg/techwebs/nodes/service_nodes.dm @@ -117,7 +117,7 @@ "gps_exp", // "automated_announcement", "bankmachine", - // "account_console", + "account_console", "idcard", "idrestore_console", "guestpass", diff --git a/code/modules/shieldgen/emergency_shield.dm b/code/modules/shieldgen/emergency_shield.dm index f6fdcf6823..0391c351c3 100644 --- a/code/modules/shieldgen/emergency_shield.dm +++ b/code/modules/shieldgen/emergency_shield.dm @@ -12,6 +12,7 @@ var/health = max_health //The shield can only take so much beating (prevents perma-prisons) var/shield_generate_power = 7500 //how much power we use when regenerating var/shield_idle_power = 1500 //how much power we use when just being sustained. + var/datum/weakref/our_owner /obj/machinery/shield/malfai name = "emergency forcefield" @@ -37,6 +38,9 @@ opacity = 0 density = FALSE update_nearby_tiles() + var/obj/machinery/shieldgen/SG = our_owner.resolve() + if(SG) + SG.deployed_shields -= src . = ..() /obj/machinery/shield/attackby(obj/item/W as obj, mob/user as mob) @@ -131,6 +135,8 @@ pressure_resistance = 2*ONE_ATMOSPHERE req_access = list(ACCESS_ENGINE) var/const/max_health = 100 + var/obj/item/cell/cell + var/cell_type = /obj/item/cell/high var/health = max_health var/active = 0 var/malfunction = 0 //Malfunction causes parts of the shield to slowly dissapate @@ -139,21 +145,39 @@ var/is_open = 0 //Whether or not the wires are exposed var/locked = 0 var/check_delay = 60 //periodically recheck if we need to rebuild a shield + var/power_efficiency = 1 //Inverse. The lower, the more power efficient we are. use_power = USE_POWER_OFF idle_power_usage = 0 /obj/machinery/shieldgen/Initialize(mapload) . = ..() + if(cell_type) + cell = new cell_type(src) AddElement(/datum/element/climbable) /obj/machinery/shieldgen/Destroy() collapse_shields() + if(cell) + QDEL_NULL(cell) + if(LAZYLEN(deployed_shields)) + QDEL_NULL_LIST(deployed_shields) + . = ..() + +/obj/machinery/shieldgen/examine(mob/user) + . = ..() + . += "The generator is [active ? "on" : "off"] and the hatch is [is_open ? "open" : "closed"]." + if(panel_open) + . += "The power cell is [cell ? "installed" : "missing"]." + else + . += "The charge meter reads [cell ? round(cell.percent(),1) : 0]%" + /obj/machinery/shieldgen/proc/shields_up() if(active) return 0 //If it's already turned on, how did this get called? - src.active = 1 + active = TRUE + START_MACHINE_PROCESSING(src) update_icon() create_shields() @@ -161,66 +185,55 @@ var/new_power_usage = 0 for(var/obj/machinery/shield/shield_tile in deployed_shields) new_power_usage += shield_tile.shield_idle_power - update_idle_power_usage(new_power_usage) - update_use_power(USE_POWER_IDLE) /obj/machinery/shieldgen/proc/shields_down() if(!active) return 0 //If it's already off, how did this get called? - src.active = 0 + active = FALSE + STOP_MACHINE_PROCESSING(src) update_icon() collapse_shields() - update_use_power(USE_POWER_OFF) - /obj/machinery/shieldgen/proc/create_shields() for(var/turf/target_tile in range(2, src)) if (is_type_in_list(target_tile,GLOB.shieldgen_blockedturfs) && !(locate(/obj/machinery/shield) in target_tile)) if (malfunction && prob(33) || !malfunction) var/obj/machinery/shield/S = new/obj/machinery/shield(target_tile) deployed_shields += S + S.our_owner = WEAKREF(src) //So it knows to remove itself from our list when it gets qdel'd use_power(S.shield_generate_power) /obj/machinery/shieldgen/proc/collapse_shields() for(var/obj/machinery/shield/shield_tile in deployed_shields) qdel(shield_tile) -/obj/machinery/shieldgen/power_change() - ..() - if(!active) return - if (stat & NOPOWER) - collapse_shields() - else - create_shields() - update_icon() - /obj/machinery/shieldgen/process() - if (!active || (stat & NOPOWER)) - return + if(!active) //This shouldn't happen + shields_down() + update_icon() + + if(cell && cell.charge) + var/power_usage = 0 + for(var/obj/machinery/shield/shield_tile in deployed_shields) + power_usage += shield_tile.shield_idle_power + cell.use(power_usage*CELLRATE) + if(check_delay <= 0) + create_shields() + check_delay = 60 + else + check_delay-- + else + shields_down() + update_icon() if(malfunction) if(deployed_shields.len && prob(5)) qdel(pick(deployed_shields)) - else - if (check_delay <= 0) - create_shields() - - var/new_power_usage = 0 - for(var/obj/machinery/shield/shield_tile in deployed_shields) - new_power_usage += shield_tile.shield_idle_power - - if (new_power_usage != idle_power_usage) - update_idle_power_usage(new_power_usage) - use_power(0) - - check_delay = 60 - else - check_delay-- /obj/machinery/shieldgen/proc/checkhp() if(health <= 30) - src.malfunction = 1 + malfunction = TRUE if(health <= 0) spawn(0) explosion(get_turf(src.loc), 0, 0, 1, 0, 0, 0) @@ -280,7 +293,7 @@ /obj/machinery/shieldgen/emag_act(var/remaining_charges, var/mob/user) if(!malfunction) - malfunction = 1 + malfunction = TRUE update_icon() return 1 @@ -289,10 +302,10 @@ playsound(src, W.usesound, 100, 1) if(is_open) to_chat(user, span_blue("You close the panel.")) - is_open = 0 + is_open = FALSE else to_chat(user, span_blue("You open the panel and expose the wiring.")) - is_open = 1 + is_open = TRUE else if(istype(W, /obj/item/stack/cable_coil) && malfunction && is_open) var/obj/item/stack/cable_coil/coil = W @@ -325,11 +338,29 @@ else if(istype(W, /obj/item/card/id) || istype(W, /obj/item/pda)) if(src.allowed(user)) - src.locked = !src.locked + locked = !locked to_chat(user, "The controls are now [src.locked ? "locked." : "unlocked."]") else to_chat(user, span_red("Access denied.")) + else if(istype(W, /obj/item/cell)) + if(is_open) + if(cell) + to_chat(user, "There is already a power cell inside.") + return + // insert cell + var/obj/item/cell/C = user.get_active_hand() + if(istype(C)) + user.drop_item() + cell = C + C.forceMove(src) + C.add_fingerprint(user) + + user.visible_message(span_notice("[user] inserts a power cell into [src]."), span_notice("You insert the power cell into [src].")) + power_change() + else + to_chat(user, "The hatch must be open to insert a power cell.") + return else ..() diff --git a/code/modules/surgery/organs_internal.dm b/code/modules/surgery/organs_internal.dm index 4ecf5320ce..51d4ece474 100644 --- a/code/modules/surgery/organs_internal.dm +++ b/code/modules/surgery/organs_internal.dm @@ -198,7 +198,7 @@ // Organ Detaching Surgery /////////////////////////////////////////////////////////////// -/datum/surgery_step/internal/detatch_organ/ +/datum/surgery_step/internal/detatch_organ surgery_name = "Detach Organ" allowed_tools = list( diff --git a/code/modules/surgery/robotics.dm b/code/modules/surgery/robotics.dm index 3b224290f9..3c4d80d640 100644 --- a/code/modules/surgery/robotics.dm +++ b/code/modules/surgery/robotics.dm @@ -583,7 +583,7 @@ var/okay = tgui_alert(target,"New name will be '[clean_name]', ok?", "Confirmation",list("Cancel","Ok")) if(okay == "Ok") new_name = clean_name - break //ChompEDIT infinite rename bug + break new_name = sanitizeName(new_name, allow_numbers = TRUE) target.name = new_name diff --git a/code/modules/vehicles/cargo_train.dm b/code/modules/vehicles/cargo_train.dm index 19a3e60c58..632055d5b2 100644 --- a/code/modules/vehicles/cargo_train.dm +++ b/code/modules/vehicles/cargo_train.dm @@ -209,10 +209,12 @@ if(Adjacent(user)) if(on) stop_engine() - else - start_engine() - else - return ..() + return CLICK_ACTION_SUCCESS + + start_engine() + return CLICK_ACTION_SUCCESS + + return ..() /obj/vehicle/train/engine/click_alt(var/mob/user) if(Adjacent(user)) diff --git a/code/modules/vore/resizing/resize_vr.dm b/code/modules/vore/resizing/resize_vr.dm index c877d4e5ce..3c7c394c5b 100644 --- a/code/modules/vore/resizing/resize_vr.dm +++ b/code/modules/vore/resizing/resize_vr.dm @@ -350,13 +350,13 @@ tmob.Weaken(1) var/size_damage_multiplier = size_multiplier - tmob.size_multiplier - // This technically means that I_GRAB will set this value to the same as I_HARM, but + // This technically means that I_GRAB will set this value to the same as I_HURT, but // I_GRAB won't ever trigger the damage-giving code, so it doesn't matter. - // I_HARM: Rand 1-3 multiplied by 1 min or 1.75 max. 1 min 5.25 max damage to each limb. + // I_HURT: Rand 1-3 multiplied by 1 min or 1.75 max. 1 min 5.25 max damage to each limb. // I_DISARM: Perform some HALLOSS damage to the smaller. // Since stunned is broken, let's do this. Rand 15-30 multiplied by 1 min or 1.75 max. 15 holo to 52.5 holo, depending on RNG and size differnece. var/damage = (a_intent == I_DISARM) ? (rand(15, 30) * size_damage_multiplier) : (rand(1, 3) * size_damage_multiplier) - // I_HARM only + // I_HURT only var/calculated_damage = damage / 2 //This will sting, but not kill. Does .5 to 2.625 damage, randomly, to each limb. var/message_pred = null diff --git a/icons/obj/structures/tgs_structures.dmi b/icons/obj/structures/tgs_structures.dmi new file mode 100644 index 0000000000000000000000000000000000000000..b70485d5d57a75c95286d6d2367f5e0ee1806c0d GIT binary patch literal 168555 zcmagF1ymG&_&z#x3Wy*jAt4~rNViHzcXvuE-AkiLcXxLPNG^zgG)RMVcS$TP%N_jw z?(h8XJ@=f;IkU{{nc3aX%=)v`VlrcHUI#RWM$r}0swN(!-k0tzVlXi zvl^>=<>nQ0RTKQ64Sbz*7ylRM^A{VQd#UwFoo(d*wj+f228ey z_3h=*i6xyH(rXSTjssBXEhX>E^yA8owKk4M>tbN~zPE_=O|1*~xy6l*rwgZg`rdAJ zkBgI&l-pF1E^Bdort3ncK7uslr)K)z#B^;f{DUB8RG*F7)P(G)OHJ}}bqY2qA6}NA zt$JJ~j;}eYh&DUWXtCX{QJb{Bgidftzb3dq-L5qkwei*uzm}0iUU;#lnwkh}qafnz zQi(M_o+mEj%}$`!#FyHvk*T6GtBY51B3ur>$*rSK=S+8}5Z?^B{kN4(k)JBG5_HA$ z2R$129WAz7M0gJvjDwnQ8I_{BFsyKe>DE24qHLd4PkzWY<>CGI^FWa6=GAP=m>EM` zuCftfTh751^Y=?x0y}X(5ib%aL&qMp#dmJ^Jv19#yinbzGf3YV&0euT?Ig5`*d#|I zc`cZSmu1>^oGm39XIuA`3s0p?p+SFCv;HFc46Si7#CXm@V65R_&t-~BpU=L)F#Cs0 zduCr3dg6g^1a71!Lv27i4(~U%pUp6|NHWY(%Lqe>HD;; z3lemPF3z3TnA*a@`cziy*q$*qJxOXKWuH=P49I}CkE5-pdHfu~uRf2u-{a|L`7}-u zlJ|>Wd%m^C{wI=)Qm#-?whD&QdcasBXW@k&N8!Z+xaooW3*dH3TX^BhU3k$0Zp1u= z7ZyDGiYDBHEm#$0WQNm9#=gTJzvZ7a@^p_6bm~pwO0%FiYH_#KaFraKp!0UCEUpgQ zEfxK4e0oW&NwvJOcX}${(bnn6nKQ6DOOz2ooky|xtMReo)fm|wPrKi)Nps3n zy;oz_6!hL)4Zu4S(^`gzXpM>)72Tse`O(k2)n#7?05pK?TM2cKjDvRH45Fz-K1935 zqMAtc5Wr2aBV{ZeDiPepWTsBEh8`)$BPKg!nnw}eS3%*pV`ja>=#uwS}A?Ii0|d&Q4r@d2Wtl7gw#tTeymEYk7IOQE^LoShJBB zzsA*M`*KT@gL|gvRfaPbDJrUdcb}ziL_}odc!TYX=|ZD@Nl8ge_@@q&Zgjh)HnJd; zpr41FHE(?1h?G}XOFKJr&(F_~O)NfXRf2Sm>gwr@kB7;wZ)6-An(pUhHUI zR`#@xg?aVDtJZ#>ccu?A)$+*R;pAwxuDL;5-_3UezH8p&zp&1J%?^iURV~G{!qx z7cWTq%>x(KkBRPQXGzigKTH%cWH>G~R_2@yr}J$)w^q?nY;u#7l!b>u6R!~;IzHLy zU!`DEvTM+1KrS!_ael<(XjU$a@!BpL)ShGONbdMxzNI}~-r~76+I>r_EX*|k;Mxj` z(-UyK-QXf93VKYYK^6Eo(qu~T8}T~B(5(z6lEqK;C|+QNt5^HLk@MIdF>HheM7*Q@ zg!H->F9IppKO~Y`7Pt4#+nl+SmHo>V>krblx@VQ$E3E7oKt}Wq;O|t8`}UUodU4%d z56hszq5Fkw+{a;GF#%IHN64CVeHA<&aw~gViUT6A8 zPaf$415O6D*x%oOGGc3E0{~sd1gtE&rWZk7#!_qQPgAFCHAyC4wB98iHnze3W@qc& zrYqeqQbC%on=RtZ4(A&_SjZf(}FYL&VIYki}4 zw(ce}XMk4AmQuOIjI@>V)`fUc+9@(R@MWbS7UhjZB4YTXOE1o1QR*9gRxc zPh&h*68dgFyP~9Ofi2&b2n9w7S6%=avqU}roVmut;89~EHY(Lf_YBVHxYwqW=s11H1u zbB8Vd+%>yRv^~1*kIkx##@MQ8EvEq7?0r5?TeypS3^#I~Gr-T_N{-a>Gac;h4AeV1 z^1G9U)OALR>cS@au_IA&tj)~K25^Lggq~FBTZW*B2M$r6)XUq?nOvkz9gIs;hrAk$ zF(->q-D$xyn8;OO^{SAVVREs7Pr2mlPrO!E2rJs}b!|a6C?0#wYFPB4le|X#y*1mN zQkc)}@#S@Em!l@$;Yj62eMJ4Y9ON>-{a z4JPs>%O>M(fv=7~;RoJez2bd%P$;3N&xK{*b0lBnqD$X~g?pQ+PO5I58ZUB*y`(qR zEks5}CIE2xy>4DDEqi04qT;Y+MbBL{l(1eQ159-M^9#{*eO>_Ym1HD9D~TXQ6b;Cc z;_>0(2sgeLXuEq%!x{Q{g`E;X*qPz#?uucA=y?WsT+T6KAj!*qUnydghQfxSPH#o6 z77ZA!3$C*vOVUCJmpVz>4_Km!VkyhVVfXLj6XlUYLnGKAB+_7*q@Xk;wLlKS3m7FRv;qabo~{GJF%*o%gWgrYA+`f4teAp5GcJY1#W71t87gMqfK!c@JTj_mb*ldJJdyVT8?JYhh+Q z($cC3bXGPkWf^y&nrbRYZ!k96;a)p_&v!}k*AK45-}w=OqoSb^5*z#YnWzu{>Ys?R zvX?*&Yg4)R^~q`k-&=^YjlEuO&zPSvHu6}6xZIar0MqlC7?%CIWYMEHqL zoH84k8O3x2RF?_$g}3;R?b;en|E8e6oNNjL@a`VJupH9Mqk;|R2cR|mSsZ4Cuo|@- zPgX_ZkJ!L|`xXP;VfCAGSD8-lkD#kjM|4n69u9DBx*%9$*EMo~K$ZGYQ2~$r%BH>} zRtlZxCguK`8XCFn?Ubyntg_qsb1N2r-QeM#CCZyso}n9K+z2iXDYI}UCibt0uP-w~ z$+6e1NH`OvSxX}b{N8Djl9PwS_~$dvxq!ya)V-oN8XCk|o?EH2F!27@SJ|RfxBA`P zWL(3z(-m%&HKqbDFWvM7^a9GtNUQWd$HvB{n9fa2p#j>049HKdC6=q~Q=VY1aBzv; zo8J29ZaUB<9#>)$zj^ZpYoIufNe8xv{8^`DVSfJi*~;4WYF7{j66ru5>`(aVfE<=k zqn*QM7r(Vn-se)vx0P>wh~#8iz_ZiU3YZY0?wb@ zvMXMShm0-xrM7~&Ay9QdoGfHSe!%L7*w1KYF+LY%?4JX5AsQy%)M(V06XzxsFhn)^ z{(O8h6yATI7CV4!Q(5o2KV8w6-8A$2H}dbrC{YXEo6Ex>dRdR^Xyg+~v4t<2YRn(; z#1|z&oYzUJbsxjIJGhNWoZH#YkD+H?KWA?lwfd6VFlC6bnxxc;xz}qmHIW+F5-nR@(iQYlb9P%+zbnxL;}%yX zXbGy=MQX}Y5@aac?4xRL)(bwfc7}(V%p$|DV`BlfK$u{Wp<5SVLkzKY@`5*gP7NWPu#{^?<%Zp^O3L^ql-e46b^b)BI zkcu;tmgM@-?okh{Jsr0*zF4qxa8TT%Q~LXerk^kR3Ywo!$4;$Weo@!lJf|Jn@bUW2 z4-i*UQu^I~D!A3?bb-XMcu0!Nz>;m*=B*nxx*bwh#@P(>=yCB!)8)GHe=3A;U8*fr z$y`qKPFC9u1DBxz#5sF=d*-0lvk)C5)`Zbw4bjI*TkPr?WaJ^Zfi}_1k$4vV=5KFX zkvdR)+OF(ES^6-LL%YV$0sk`Q*Zi#4a)CxUH7UHUoTj>#7{;$!mC_eUSNksO%m*tc zWR%50;<0*l8xOzqn9oQeW__jhGVkHvXXD;RRf%Fj%*arj*c~pxNIhX!8+f65^vnF- z-@;}*Wjpudrh~H8FSKqT_>LFBgz=3v=f3G?xA>B^UlpMALJ&hiS$H5Z_M~B^8ReUxtnB; zDG-&R5^ydQ7N^JBmXgc~4~z|FuVBMr93Wo79iErd+N!5pYl>D0>K$)y?~14?3?4nd zbMAV*z~~gW;TpEq^k`Xk@A+-^Gk@}$m)Vv~;eo~+q*{_F_OE6HQXgS&o_}}%fE{zm z+gl7E;ms7`)X@9t;C$&8f?O`_e7^$eV9vI?Bar?ZAvSXoR#&>{Xl$Hb3U(c{LB&@; zJuuaqExvo35sa6GDY0PNj>+5}x&5f*nx@|n*N5Sv2gzbBIAi&byRve6 z`uwGya^0EaM>J)_%U3bTH8}1!vk_e`Bgs3g<7eaRUvNbcESeQEzYChrQis{z&e3F^ zeZc5Aa1h~bvIq+g$HwA#mAG{diomDu46%Q`==Z5%ml=9*Jw1McjQsQ$A(C8eJ5z2c zq=1BwevfnqiJLHogkUJS0>A>CuP5c6v^Bi+|OBGV>qk|#Yt@WfKZ|Em6#6>P7 zf;sc*ezWN`8gkXX(@ce<{o55glYH=0I8BtgU>>R8&VI-(nO-$grNxpv+cI0yEZY{FJNMs8GZzIT z)EaO$6<7k5NPiZF3zr1)7)K%DYYQsekSED==Cl&D<2j?I%i5DSng&%lRr6uoCfmsX z*7Fk?uCkXt$}W_2UnKt}orKDnr#SJuFED1jM~@iL@a77ScMlGN1+bTn$id8?Uz--n z`nibR9VnHrH%5LR{jRoKnI8fl75m9|bU&z_NsULFFTbp^O0f%_|MkHk4lXb&$l0F`ef4L^}^}Z;e2T5;B+3g ze|0qqyN@;Xa{+$-l*=V9k$Z4#JlT{{8OoB)n;IKPna^VK(nE^m0@TC`f6p2ww5+0G zCnS?i&q$(m0ph+5tLr6Qf~Ko%K$QqyW_-Pf3ZV?^)y4OWTj0QN+i#`%jR zMeKh`z#!~zQo1oM_)aCxty(s*rBC0%J#zV2$%aKOCZfuglX2&oH@(Owi)TEK?EI>L zNPQ;1BkRSxgr14loFWa#Htp>7JzP^F>4Os&gJ~dmS1w+ooUUYMWn~p~QqefT4t8Zn zm^!n=8dzIzT5Aqj&K4+86-@fT*$3cE? zBT@D(9l^9ED@BWG@pm>r*yrbSqU!3J?6o>VNE_721;1XuO||J!L}j>^3oy#zV1fzf z9JVfCUG>|x*Cir-i5=WZCXaSI-r14S4s-;kT5QQPqg^GN!66IxH!W3t`6r~EpL2uH z3SDZh&%A_Bei0#2H~8!&kUdoqF_b!YscBRr{LPTZXB4k+>$dJFrR0uZ>R4j6r7owr zPfUIPfCG;nJxZ97?MsY;n46S%_nE+mXx_%<0Z@bE@QSWo{;UTvKGpXC$NX^ zKb6GtO;96$v9Bltm<|+Ef?s{wt%%ito@4RE9-IOUXUBM0(=d1he%Fp{M-H?p>(8>( z$|s$=El}muQCXnrX0cv*os1ma<&*@^{FeR?dks_{!?5~>vQdsiiTfzHR52Gi-$k|c{7E9&(6ha*}CMg47SZ6UR9M<1J{^EvjebkfMex}_xK15jgp6Iugj8#Bf8 zHq}%THryV9F$lA;q)J)&DE6b_SC(AiBOTf!)Xp$h@z{KL0Y}p8N0$rR)r#HOPbEqx z$pjz?dcfmKexK`)Kbp(RPHyjNb7%p7u@2#MMN4~@CoT%nEU~qi9zX$}Sn<=OSiv>|Ks?bquQ+(4k5Rky66(a%D5uihuNd19Et+QGykoak1n<>8$70 ztb1teXK7eXBEH4op_61bc(k=X;p@xqStP3m?h~gGrH`yJ zzZLi(h>3}RgU;{f_zC>aLA{QQ=S%t0%pbrT6`u{OX!FDG<{BIr80c79GDyZBjbrSp z7KgxL0svZnj{px(f;mjS$4s%Co&(F+YL%AoGyNOnPp`2JXULf7m`*e|m~WY`7dJ^# zd}=hrD_dt$Mw{!p2Z7n7g{e)Mh6o&B88+fRwy^Lu>h6}4M;I5FZFOfK$rMUf>)YGg zt8v*?1;iCxU#BI%;xufu?W|LgtZXIG8TBNK$=K#rTXea@i1QV%gwzK#LDz`R0$w-zVA#a-nATZ|xnHO8kSyzXkOv z5?!>#^Nk1fKk)^TDEM9!zl2y5s<7YO96`OU%BOd**h(VqrYWaa!P%ivee;vismey< zW#xA1KwV`z9vvN>Hq=i4}O}ADzAyUwHXN8bH+0&`yQxhlhu)ZEfH1 z>e=h6v8Hm<7T}6H3E=O5-uk>{Wh;xD;d436O#A>DdXpd&nsJV9W9_BqJx_{@-&6B& z@SsYO`D}_tr2hG+S@~wcTt$-1Vl01wdM^%RD8Yt-Hd!K{d;~Z8MSnQ*``kbpe&NvA zS_0B9Ic7xK*K_xYA9XrLq1;5sYHj>pUclhfk+-SRp*C)Pgz&1%0TTz%S z(COX?VH6wPIo{A<`A{lMEjDsG`8rw$bhek)vmF;JvY=KkiWFbt(Z$NV&yt51#$oWp zFI!g0ow|{NA+uo9MErAbxy)xPFe>@w$($n*AHH>;9P#xYKCYi6CaGD9SS7jvbtY)S zp`_a6n0-Pi(~2X=B??yc5T*i6RK0&DDn03-mu0Ky6<0psgF4nu6+9Bgac?&9=^MoQ zcVWXSMxOf3jPiY$oQ7zcIw~}>C2aAvS9d{UsU+%Zxe1=nyb--y z4BO9Hutl#|06?6bo9rhl)E2HUus3((@!*ZNAkon-*u|~~aJJdCojuXxMSuFo$=$s+ zp+Z%Hc?(HFRlE|0A|NOvWbghKIVK_Ni?qr1*Hfmp-I|Z9KO$xdS{!ZfCrpIz+`Zvn zhyR%w&p3#N5DmM&pme+CEOZO642d69GkJeV)aZ7oYgfM5iw?rc6}v08o9tHoVn{hr zC+Qpe)WH9>>$hm=uC0wRyUkukQSBlF-(KkfUw{j>m-!a~9bMzrw61iSF>n2MUnj=o zxutV=_YVH;&SxB}PB0N?txFuWh}b1M7vrVGz^Cs1Q$je>^*Q20cm#fQmP{Nm3ON$# zsj=htXM<(x-(J~9jUr)W-KVaq{G!6g^YI{}j#39UQB5Y!N#I9kDF6R{{5y?0R8=|& zq~QdcUunjoi4_)2Hud!@x^Rq1%kFh#F;>#93G7Guke1xQoh@*}^dbAKm`v5JVa z0Ce%rPYc`pfJ&k@QB z5lt&^m-{P{iOz#QKGzj>%QhC=>^vKHCf;9FuJoYdAf%*HJBxckfRXqVdf-WqhHb+2;#>8XT7gh=s z1jUieXLuIwikaQa{X?;#$luazabH5|;Jd{;9BxK!>e0(|P5p~6N-M)nO9RVS6Myc!)a?K#-u&WW2N8>_6OPvbxw19HRLx8mJMf)$N9$3D?b~z?bkn|0;zvhk zon3vV;!`v_4+YRsqm$M?u?JuIA-P|D-#l_~NVI$KpTD!y8ee~G^x5rDQ|!Ov`!nvl z!557lp1A+pUb}Dh52W)XtRcQR34@1%zx1P%9mGOtHQmSJE)|C0p?gg8MEW&%0kk2H58l3&bT z#GV(&6QejpLsy_D+YoGzq-w+a#m;xsVfeh)XD&f+0xm^U)tf>g06ew%PMxA19AU%FMxe^Idi92n|T9FXV?KO=11HH#3#)=T|*m2~t+H%T^YPuSod4HA28pefmZ@Rc0u zeR!3P>3!Lu(wk)H`ri9k1EOu6_59!|wb)tVlIaX3ONbEG@7deu0+*8W7W(y0x>T!g`0;EsjN2l3f zyUhjKx1Bf(CC>pLm-&NUnF;$VHdg zxy68jIO6ps%TaqcoBy7Y-;r&1PX?q~_?Els*`t5A9sv*XXZ?Otl*g2z35(@3WQrpG z^}7$%kEXPO=x8|nGz!`*oQ}Xj(4Mwd_oZ-g+mXGlMmK+&<=_+h+mo8= zk0nj<_8nbbY4Y8ly^E%o{k^ATP~7ke+hco@TmnsyZnoCZZ^OO1ecvKt^|E?#WPsRl z&LXmY5HSAR_WsHZgU*r3q_C;DkGt+K*G1dvsyr%mAI^YO<%86@9xWyqT);yfjkoxz zZ!zjuxD&)f%2?Z5^ zi68wd%&k2XikQ}t6oZQ?O|GpG%TLpZ%Eq+;1-W;}wexa%%wHWouIPQl!ton>F=IIY z9%SvKilYgeEDa`+NEYGx&;zdd^Gm%Y=0Po0AOd;AN>`$cH%uXhTy z>=F+WJ3R#~BE6I)3|tIrw;Wu4sO(`s`g;R(Y6)=@k?**w8&YeN<|gE&eBj3uz5BRw z+P9uGYiH5ZnY(QNbr?#iBvJvCtkn%V!sBj^)+MLM-wU<%9gchi-OmR&8K5JF9 z2es87o(8wcWw#yfn~2_nLp^Q9Dwj<8AiKouS=+^`UrO{@y-xLe(`f{x@mb)qh+mU< zQgzE_Zs`QY>=XqersDqk&#z_ShM-F*^of??+}hn{_dUIZ11+~G0?@X z*)H}yP52}mn*Xi-&C!wY3L4OLOm&|%?S}w zR)e|>D5x_ubaa?eq+${>E0`o?W{MDScEdUzEQ_WZ8H}0)MyWzJTG9bA_pgD0B?=3jI-1dBV)9aQ-c7z~(Ml%u~Gi zyz3s)`h-56>iTR?19CY=I`!IDYB6D8FRex8;`j7;0AG{*!ywt93pHxr2wCI*r{t9v z{!uc)$vS6-g#2@6Q9LmbO1rf7$+aQZ)fHdH_WAL+G@=DwpP9$3+xTW?$EXL_M0tE(fdZ|nOwFOvlT!CDm-^eh8Vn}v6`1e(=-X{Tun!hfTE$a zWS7G#BhiRKQHZ1B_5;vvgP5`gKH&Ngg*b~;mrJ~@3x?#_U)%9!eW)#q41voUegXZF zKVgiX8@Mx8kxo77#{Hu<;68Vm{FKQ-uZ3m%1l;R2lyM!u}kO&{6@ z;Y7R&uHP?P_-D31^8mWyp0unW(`9z3x|o<9Q4@5W%$mkWF&`kZ$z2828PtExCl9;U zF!6%FQPMgFa{KVTiVPYwA5qzoz}e1)hUsD=Ci*T}asv#hqdUZ||8@tAiB}(kGVr~i z4(Ac8M}>jc@n$joIb5jboWXG`Z7#^hre#cof4VfW0B@9`}%t-|1s`xB+;xHCC+e3A%z#rVrV&g_XMif8PO z|JiEeE(`68?tebHN4|ci{z8Y-I1}>r#Yk)51_w9;euAN4N26&iC-AhraZC&O+g1B9_Q)Ycgu9~!zPnYyLPy5!Dd7sY%p8vp+ z70)s0&3fAy%BtNgKeJc!ExI{2fxFh=TQ(2RrqTp~?KOANq;~!gG`+vRVOtfi?2Rs> zfX7ao3Uoe*hY6RG;js)>{c`4OG)2MGg)8)pZRZr6FmNDX&}=JG(M(i#h#~_G#G-)s z^FZSwqfeQ501mlLJHT-s4}~E9^rO55jiFD$9xDSGI78ZB4Q>qr#9H6e1B)0&$!1TX{FWg_^X#DqEGS>)XqSc$JxckEcT;S`c z0vl)Y|85fBV|+>4U?lN33hyM6{5@{Rp}28C{5(B7t=Dm5GYW);?JD#2b0 zW4x9N2OnU#k1t;4z#C=|1K80ETIRmarSchGB6rHnagiJsjaj@Z}Ke^KTT>SdyDyAEz>iJ&Md(b3I2=j zVt&-$X0%&K!!z4srNSwJP=2_Bq#n zTMGUfY0-Ia&3HvW?OmN|a>0p)u!ml^2ON+B%N~c|_45~J@o}Dr!|Uou!|0jjW%07I zJ$BI>U(+l|wa9%+^na;uMvwgA`I&!`1JzLf$ngu)!FFfe>S-$2l~GKymQk_h`w*ynnGaMo+T72u>t*(p%xPydE3N(<)8^$pDEh+JFG^#w*T!3E9c>bZx<$n6Np%3QNz>x*AT~eT)C#lmu}h=%q)(NtD|Xo3 zjIA#grGLoZVo%gK&c|o|Y1_;DqoQlyL+rM3q932bz3=9vef}q`w;tDo{X)@g@#J6> zf~L#-5-62&*{L`YmDI)l?*?>kgnA-m9w)*qu_Ra=Jzv`UCPlH$ ze59h33QJXzT9}XtV5%EZH(TCJ&uXFMEu{rLUUBgFH;nbEy~ogPVCP$&1X za0dw}em^N3PR_!;_d_B(PX6l99oyfu>H^v>u=&_G#}4IOGkP7CzSg5Gqu0R7d^(iS z?-15Um=syve3A7F45zpishU-#4wBXLuQuGAA-1qKrcM$r2QZAh(qd&j6P;KFq#K_N`S zPW>fV1Gy+fT)5Vl)C-;?-BKb;7yEg{3r{PVU0aZMSxiIF?JNTi@H+mKI^4#D4BSy4 z{2lr3QiunTi<3>IDyFKc7`*vL=l$~6kmqCFg%!`!YQA3&oNK+htnAGDKUs*0A1nZ} z1|(b2_y2EA_`S3CfAr(uGO_zp6;V7##30|c?do@A8%CDi*`ch3YXacU+1>qH&h2H$ z{W%|@-(ws<_iH7p|-A(Bw4-+SC39OXG*%V>|Jsr;87d`DdoJ-r;dxD)E z|AzlH>6Q097(N)l4^;Ws0S;H2M`Xf{O=k!(geen8Wy@25E~2J=k-D^a1a-EY9jfwN zHqPaC(de^>g=(Ymw9C2{ADYldE>cgsiTXrcZMx-~diJn3u2_rx$}`#UrF-g(b)|;N%KJqPs~e2E5>>(qVwSY)Uhqh@eX!rMnRA_WP%(@6pxS z%s}-E5Oo;|!Y#iJf%1_3z5bL3Bd`7Z#^*M5WE#}CPaBaW*k^F0pBsVDzt@Xi_ufGF zGjbm@oMzKI&1L8Y9rCb_IjOVG3rzNqqMG55CPci z<|WCH$EL$(iwlJhuIlDPFAsY7gA|fIO=qQZYc1qwRLSV`6v@0&w8G7UT7uTJ(W#vp_2W>+3{X!ZZf)> z+~RFifS7i!(o4_&Q>`Y?;>Id0ZrN!Ij^7v4zhm$H1{R$2aQ+Lw(wF7Q^jKX--B<|Ij``H*SyaD#4ief#Yd9pCd(2Oe zHvM?FIJfRF^2EgL%zH@FH_IbOA;+;-YZfz=R^EobFB;)j4}5#s8&-;%Jvpre;rw&C zcF&69pJ?kyz1V!%|Gpj`u4Iqde!ehVYqbO~6_TWc`U<-(IUQP=WPy~I5+PD8>P)>7 zhtI_EA!#MxCuif0$NWI}H&n;I><8y25W~K(T66;nU_${v zNt!VM6&8WQj0&GO=e|&j&?-*N1D`wEK#Gfe2K=wJmUuB+f0ufT)OE}Y{T#?HTw!K+ z1ObWH%H_Xl^efXfZKp$o=lw)~I8swKC$&)o&kR!F3FxT^+Uq;OTMnw z_6#W(AXCZ|+ z3T*NM%Oi>xVE5=%q(Q-5%=2>$&K{0<{AW0inaSG+P@=yjv7qB(R(7*XX<*+ZuD0sj=mBx>8d-J=kKmqS?m671k>#xof@`i zd+bGK_WjPbsotqa&rN6jfD0fMss7!**!7Fzz4q?m?rFrUcKM!vt{4(&`08&twyq`L zTV*{hz9U(SumI<6(`RlnRy_w`w`h#Jn_E!@1ui;wVgY4 zNsJP^CmScju3S4s2DICSMvbsnj$75a7(IcX#LBUueFpmaYFi>iUusw>i+7!c@a58q zE|R_52}u(#YOs}-v9evpdrW}Yx=r`9@>`Oyp^Gp)zZLuME+J2`Z4bl{=VVG3frazE zT33+(z(kNMpOo;@SEAbm)?FK0kV+2eE=>URVqp6FP<9Jt*D(P^ zP~I33{OJ`izvLiy`!t*5VNgGyUc)w8X27qRcw$Ay>xad2W4b_$+{_-m!t- zdh(>Zkr%DWR@z{dwzu>~rhT+`EgGlTPnPK=iKV$qkC5gOM#oz(kM2823FP(|!MZD_ z3`#wG8cWzSAqbU5Vq#Q?RGf8s#+#XoZ!_%r-w8Ax?gLrZYIoR^k>QduuFzjqf2xka z!}=DZF7|6QsEXD8bmjNeP>Qp)rs>Sjckb!Xv31BGYtzptoZJ(OAazZp`a1qBZ#gT0 zi-XxZ*oekHuiY9V=2>E5qLVd^pWR}*SKFECmVXB5{|O2TmVu)8m>Ez@107iJnO+Pl z4Nc7f|Ht$ej4Yu}`e5NgK69ya%fR&!R#^8^S4;FbEc-gbYcr8`sYfnJN~%vv#72f; zu(}0YVET8^ESDpjW9cj6z+3%PBandB=+7AeTEv&Ue|}l4CSr+^POV5WH%tkA^K#oy z;>U%vHvh9;>o@*Y+UGDC_iZG0(9(JVVdBI#h>M8ELdp4%M&~@Ve)@BMt66#?x2z2N z@bJ+3!v|TxZKK9ETz~s!gGIaN*J$_V+mNkPE7NVgCWqmcD&n@In~QztHTTwghjS8J z_;6RT15*y1GQNK=wVW$$*vWSYV^Z<4yn2V*3k^3-L+!T{5)5yd!_d8a^(97VSeVeg zqH9)8+s%)T9r=y)R@HRVwmw9Qp3Q9XRq6@d+=a0|_HaaW{uHGE;iYd39x(}Xx2(wFC?%T()sXCT*&J_Rj zyuVIf&>JIvVf|;*Dg`@ey9ZwA(AMY$5re8P8Mi|2-5i^N#Y7VL*@0pr-=|(pE&D9| z;?+o7c!-vi_3X$qoiQF6vZUoq^{B%m6IG_12}?eyJWpA(lc^Eh)Z~>zi~c0NVinL< zGnoAT8L3n6HVPSdTHVIE#xqKs-SJg6cx`g-IWh2Ho^2eYc3=YpaJIAP%#Ud{e`;_o593T!*r+1U}VVNW@UxbqVOa=^qlvD>5ABda!ZU|B}sKYH|>6!*o+4BsTG1x2*P??w5S$BaBsC=^Jq6bZpxy@l%oveYA$r(3 zzUqV1dQvX+dSpQ#3y2jt_PGBW%_lD8S71E)Rs`O$U7y{~>2uSGC;%ux3+4W;zYbOdZQ|K3 z{SbSuIy~f0{G2^#SU+mo&R$^`hU6x%9nOyySZ~#}W$mlN3os>Lg2vB7skRf|lhOjm z_O-N6bVqEm?5qXxNfl}E?+3QrIA7)1j62!)eq*-i@KlIp&|2al6uwhI12FwaVA9bj zGKi3!jT!v=y46GP_AhKzmQaO`Z{~_^c8iQz_XB)-lFg&>bI6^Ue~0boVDV00B?rTw zhVIm)@26aSz@tq`5;IYIS9js#ExdPmz77o#^P)C$uLIyKXg2e?6+4) z7|kXNp@Pud0@?aR6Y|r8r$_!gRQuMyH8V)K-h_EorN*^tbj(AkT&+S*&y|* z4C?0QCUg84OL$<~&SeI;4okK_{jef!t9`Zd_NOyQIVYbsQJvTyph9oqTTV2$8;h0* z^%~p3k-&t~sCam4j8f+5H;XH{rvVM(4I6QVlPEPfwZ+Xl*&tG56-6I!LDSc>W#=fO z8F&mfyao9iP*hvo1YU$73qBUdGy%qx)t(~(|7(EOGY!N)3#Pj^SU=v|ll1g#h8eD$ z!=5c*^>3e>*x9{W9V{p>AB=58Lk0gb-aJoU7WmGUGKeSByrjpAeO#a{E+>F*y?D^` ziUY!l;vZX+`?2C?$RM^Wcbtp=8=;<&!O`8{MM!+kwZ8YcmSht=fN zrEf~PgX^ORO4))bj1n{7;as4XcZ(IA6lAl?te+S$a?4nlP!h%7GKToI{#ms zy=7Ee!TLQM+=>(}?rud&ad&r$Ln-d=1S`ee-QBflphb#16n7}@4#}JL-uwIX|Mbp> zEDmcWCz+Y^%rpDhd(TM=#HX)m2gKteWONWf4E;u+hd=kjy+J}()9X!{ZdX4?7IT4P zo~5>!(5mRwwJkJbd(XoYrpgd{eK1M?XdR1WZp1#3ClUw!PeTL88%#|4Uyo7!UD4(N zrmfKB0zALCSk&Im=OI)#yShrE0P2S8LIN;8y(yha>!CG-~3VCwwsemv!Xmz*a~jxxPQD#J*+vUs+6xei=L0#pzb zm|TI@fdwY>VyF(`2dkp@pD~8#28-226$p!LLgnJentnE5&OA;-DHKJfInKs1ea3n( zC5XoptcO>Au!q;7`%OjBEy^8&K+z|`AOcv37sUfT8Hlto2dLb8mV3RI7oH~~fNS;= z)j*t>K~1nXbC?q!C|4So3dP|6BIlrv^HJV5(Ap(QLT)+d2Pcy_zt>xxs#gJH=D%3= zIZtq(3Cmid`*TNYD~}obpEv&{JbSzdevNF2g@%o;H8+K!7ut9weViB(EhajF^twET zmy9Fc;k*jgkFDFyu_9O-g9&9kHja)mDk_-j_6SR}vq{Mq!yR~EgeNy*H}pjCAkbAV zW2p8WH2>H>yiu0*XctB6MoUa_REMWj3Kh(s)zh{iLs>seV<}r)^-=jmg&iWn-0)wp z`M&^l{fj43okm?nC5rpm8iLa7Uxe`;%W9%~t(Bc!Xl12b>~l;^45LQQ@0LEic{lsL zpLt4&2mj?mqa}zCAcJ34m^`o&*M#5(d19gIq7>Az0U9f?Uzo<_n+q9Ggug*GPtl88 z_R*Fv?R%4Bj#}b1oDL}2<#{6cUORci5LdzaD8G+8iy-jr_hoYSe?jCbkjKDP$hMrr zMZ5=mLT%pm`iLp6e0Act#c?&SvQaKeCTEd&;{6xT?y1z%iYpJ^kOEt$l(aF<{LA#A z&nI+O6MlE|{JN{a-jIvQB{BpCThT+2bZO{R23DB-VzB!ml?wT6MA}%!hk0r-`9C2t zum}LD)QrmG-CQIv+4T`q@_G~XI{{zm_M`o}if{Kl#1=l1&=7NZUBg@Bq%JYu!g_p0 zx$g=#AN?=?`2DjAN zD(5l2XT+WQTcge8Bp3P%wXS}FC;E!$(@pJ9i2|5`+8;o71IT0>QMNW^+dtP8^2r5o zeg5Bow8F(_JYm5fVMhYsG0 za(@giF}r@%C^4g-JOt$5lcg<}6iYWwROvIT(xY4VwlUzLBt_v1}BSx(|-Gn3MNMR21E95J^$nj_-$vUA*f z1-=ZZn&`Q+0;J!W`gV$_tK^{6>lg{1Yei=*O32{ztmZS&1pO=g*^Y^gU4(?hZBYXniburB$g~t;CTHC@e(TZn&a`5g(4W#{OGDC>bmDijAIHV zs$RcXpjlC-ZEG+V=0R2u3|~nUQ4!q!mWOEM#Ot4(#^~#ynDY<+ZS`RfyCpx%f^+-F zqg%}3#^`nG^MTP?{mHwoCq=u@elJh#Q};#zOnvk%x3k7?+PWWrP$t^m@`{Y7gKy&u z3us$|Sp59OqbV-$Bk(9zb;yxCE~m}lS@$OU4=gkvzke7VR9;2;Kj;$y!0Ud53*9s| zDNp}^3Tp_P@c)N>wy2v*K@)L{{Yg5R{G{}g7ud5Or_e#k`8U%(4=4_N(UM%#7NsA+ zeu-txIyd-hTH|mDA07Cn)&xq*A@Xe%afLwXq2${KE$9K+f*#>sDJ~R5y?)z&zRBIj zlAT;YuMq)57~~9XBb~7%EITd$8n1Gp(w8}&hiNEA|Mvq#Oc?t9g5S*AM$Y6|I>>8) z4WTbx_P96>%m)7l$AY+C+L`j&&-NU2K%Y8E%|mF={v3U%(xt%qYnnmC%;mYv4>+9Q zGPGrFB7SF^@hF%x<^w)9h7hf-t^Ed%+|3ZaVu!9>BVFaeWlWqV?(q97Blkhg9Rw(I zMaUspjy+4$9(h3UV>J}7_)o4g`In)(^lWS=_&Qo8wI`wp-hQjS(_uqSR;mn|4G(&#yn zDdiRp?eM^MN2NCGI?P@?_laoQb-IRA#vgvbLh*8Fi!Xvb(u@qWYXnzzzm*3TF!07D`d0s{hG53ZiDiR$pUldv=Eu5=lW%L<%eli&UfmLq&u#36;7oF)a4!c&$& zN5E=|cR`r1FXj|~z=NfOhlOc#EGX_Rif34eC5Z0{S~@zWJ;=z_VjDsm5pwD7P|a<%gPQqxs}ma zpI7M1HbWt0?SdK^NdbA=)dZvcPP=c#imLDC=iD+SzTNXAb_f|)`uTWbf9fIl5ZFF0hQZ(n5L9>F|!!)({ET<6smQCC^;vRJiuBAH86s6jAlK`YJ2FZsCnZ`6*hSK~CT^8a&}u+Qv2U3&_lkMD}u$JDKg z2@)+~uG?-^Z53C-`D?U5qVpMFHuEmQjYhxP2JuBVEO9JMLeA>6u##C-9>$WX+dqkd z^XQPNbg4O29>TW7t3cZN;1^`9f9)62PQ=nMV#a!()GbU7Lp>AfS5@Iz!{g-nS%cKN zs~ye21P$T*rPRIWBB{j>Sm~}ljquFnT5n^R^A>1*6q*HExNhuVB6Y7oeUvp&!@5yNA{3aKkTRVBOT{q&@ zzQWqTRnAr?D>0+)!DT8?BpPN(W2v7ld@OqrnN4xk?eP88x*Ad9rBs%R&Nc2Wl)*T~ zK<3w9sI4l5pNu%^BR26Y;2-hcm)8MKSPYJT*DCF0n z%}^QsC%kq*FlUj1_nW(_&_K+|bG0oG4<`8g$qbad?QimqnaZGJMUj>hpRFo9KD0A_ zpK&C(m=izd#5AASlDz@tz0V8r>ZYQ0lwRvWrO`3OO30Gi;QR(!ufY_xwc_}r2BBT= zjKIH5l#yaXYx(jbePc*UL-e{O7Jp4Ijlp#wf6jT*h6+=y z+kJw4JI;ct;cUzsMd_Efy^#9;8or%&;hje@9Pr_#nPHstk0@F%7-$Q^mg3N^A0KQ@ zMzv~1Ey5W+Q)b9eW~y8&Wf>VFvhmDybeObDT{mkasdj{xZ8-wUl2wf+&S&*fkCyGs zGe*4rx5{q+TKt}ha=5+|y_XR-jIzg_l$cnl+|GyqJ8Sm=ae4n}6AJ%`3`&et z-@*5n=bKrT1Gm?&uuIf3an%YJ>OZi%;8BuQRmDXa5RfClaG%+VLkE=IMkt1d{gOy0 zMIc=(ZJTUh(Du|W{{+;b!ZqlOMnLh&dy8`wYOVK3kER}TZ7FEp#+exYB$Tzy4J?o%#>Xc`(C4o_N_LEpsp0#^D+>t8ya zm-2DLXSC&c=esHh7;q6n{@vSF*GzEdToN+=LSHD4reoB9?Mc=i0B)LxtEqnmJNLt8 zPOAF~lRW;q>ho&d9viwkluY&=ycVRce|=m-WYF;4tA@=l&zGDd5goySYxXxi;M=;LGLa9_Z2P_` z#gL)(&cRPE2A07a!L4KxKLc6xq+u&z6tIKJ<9>s1(+EcbxY;J8k&iZ_OYH0{{=ZO?iR_HjgS3 zPtks++l`g9-qN!rDccP<%~N0f&%$NuUDRjzd0UFe(&@H7x%a! z*mWOL4o;IOQ^^~o7qO1GeFd?9=!zSP6X^}M6J0sUtqse=H%_~_PRw3f`_|la`m77E zBw(~!bo~W-J$3X%1s&aJh}>$_{Ji6NAWamrlI>Vp*0t>TZs75)qzhAle?>j*(h{%y z{OUXtQuJhu!P=Q!^}-J`)k9Nw4Lj3nYKc%uGID5&->lH%INvGkm_VxuGGr>=t*NDH;znT9-1F1ObA53Wt2-f3JLriGQu`=U3E5Lkb2YoCs{&$Ob_6@mLXx-Xxtu6OJ6R=$N z#Z~X27T}^*>BZJrF>}B%RpSbpn_p;30ZlP_WBc4?SjyQEVEP^)v4|KVHuWHZw8%qa z|11=g@^quJ{f-^XGp+bB24#^fXnmTCLqH-8Y5hNY9%wKPLyY zruf}$`3!$Mb-_KT^h~au;}MA>dcl~baFdkb=3cY&->u&(JHPRWIj>Jycy@Yv8yN`McLXEq>+5SU?`)Sub+xxgVEX@&c&b+Z{HePRyztdtVX@Zm zCm1XoXkns%?=bVs?ze?ja|L=&bZ3&Z0G&Wm0ox5jm#IikuEq^*ZQs}fE~9Ejfv&DN zki95Ki3ja(^PsJ|pGnRz7rS{POREfd(IV!$Y+n$TQ=j%BeV74QyO1CN%U>Mw5B>+6`;j$?i|>#+_^dlREZ&DZ=_$b zd5{r~&nKqnYCA^|*IIdAK;KWT$HrRp3iIfX{jw`COio zR1GOI3Z^|(N{$6s1E2D1XrFO!LR)5c(4p{CSxO$JW5Ib0Ew^N07H;wk=K z3|k5nXmCI(HRZkRAh|FTHC={4NhZhJ!d3#aDh8cvhXV5`Oh*?O^I~J?Ty5!z(%1$1 z8ZS$sLn|V!N7m2pZ5l_j%)g3EBIa9j-_*_)SQ93xX}q#`zP6N@--67q>(sMuSQ;TM z1#Ie5x__oUvj_JUjfPxx-kl365Q-)rXz7ph+(3=Xc5M7q{Eu6tQLNN(zxzFY`+i*O ztBPd`1d<~mAu)`;m3~J0E%2^@1=Hz069*BgiQD@hR@~y=s)f67$+Xm=foku9WMJCX z0tD{v?k~H~0|*@bFZwtFB;tTun2AJsC$tjqYHA25zoO6jaH)dXO=Y zY@dd8Ef0K%G_vS>zCJ5zoqxG!a@Tb4#FWe27tf^;#W|J23CE8Ydm6G_H;;>t7AxS_ z8`3_pwp8oGTw{AG&DbYQP-IeeOO#S8lGvRb-q(RjAn_&9$yeOpP$p`c?L_LI_$mF) zz$bKgTT)^AO6SW2aF=JTg&fr>ujiQlE?T)HqElWzD&Xd9%fK5}JPaBO7Do+734^7qJ#gF47kkv!qK<2s% zenY@^`|SN@w->3`Gv67k_;If#@rPF{?jQDTIsFZ0L-im~91gv5V21N{zjJhK8ZVjj zW-o(`IecjmHqsUa>{O$qZY-Ak;H~YVnjP-NJH8Y$Bh2#%wl~y) z_E;Ty> zpO%HQG$H<~S$7|YV;eIk3!XO$9~LjEs8)fH*BDd5NvRu9>nn%};WP?JI*ukzAEW}) zuGHMr6w=aS_Pg5yeQ04(Emj^^DmgS(ns#Iw8L5Z{da%O1Z(s;#pbYIhm}Y5Y^IknQ z6X=uB+!{s>x*U85N;3}7O^BC2ry$6-BSaudOz+5epv!Z|6K#M~E!9@;lLVna3uMxn zX?$nJ4DoWWg;-N!{0PORtqtU* z2QD4G8rC{k>$cM`DL)N~44H87D(k%>_AXV58@xvbdD-_Znt>vqx@IFr<^Jqi<&*w~ zx)hbQPFMly1MbR%$sHlp2kZZF0ZI`qLUmxN855D^4awArDpQMQ%io9{f9-P9xl)BG ziEkDCn(EAUI8MQLr9X6_)~|9$l)jJFS4`#=FAa2sOKHbh_3k~GvbnK-`Inv;e+7TM`3|3s3huVFw!q>?_iJ_T z><36AAw67X3GfE^kwVSs12xzi%Zd3a-(?g&`w5y+ zZP7Xh>=R5ahR+dQy#?VjWOX(rc=$h`GAhw@uJ0^1HvOhs4kyV79;{B{eqpt|9Buh# z`czq9n_w!598CuZb$)yDS<~lRi&hS)X-^SI4^AUfF5R8rPx| zS46P4uCn01 z8hlHHyeRlw|27abj7+@~8E| zqmSDfj1eLc37`rZTOEv%fG?ngM<@&;M23k5IBAZNMq||X^u$7Q2@(OG+KAu3e~XH> zFMoZg4n*ZgX?=0cYzq&0EQq zRY58T6-szq`1d%_uGXnF=v!*CY-ngO4Qwj3A&{#ubs4s_;Umm1YoKYEB$Ws)sLlQK zwTcRF(Gll;QuFD_iB)C>3W76FSqtsjn?b~#e%91Fw6#!pxak=SsYIbxu?Q3FyD!<< zdm{R>!=-%M4t!r~2Lo%fix5p#a4s@{~#3rgG9tMSQr|Ti>8Ie8Sv~}kQv-v zr80W0mZSS9gH)uE)qawsza7CgsD`E~n43vvFCKM<3Y8mj=9aQ5Ct?Y7nw9|-Jkf~Q zO)9nwu+=ziIjWnVXNa8{;Rnjjn4@&&CNh!X1o=6T)Tc7!zLsi!<^P%H8@Yi;b(9<< zhU?kPtWB%EB8pIMCRG)LPT}jk{;qgpiifGgShRl;!>)Dkqfs=T$k8Ja$v&z!$woIC0Wb;?N)ISij&kuMj-dpA;ZZ#O!eEn zu>nQhkx%x;8ijbtM5%L3MK;+zLKd4`5O)zQw_4L|UXd@>F_%mZIig%kffEW6^N%HIG_!i0nVbm0RSnr8aJ{emk7gXnjs@NCrARt`u zq2$E34Uck^1ipnq|DfJs2kQ|E>=HR|hOM{k~IYrr7j;Ln3yoxSZ8^4WfY|cIne9 zd6BB#<6Au5_J$y6lKuNP?_qA|xGt=?2I{!S+^hUbB6;akmn_(v6&5aw3Ly6-fo<0eX_ zYw^Up<$Y>7ipQ+Ui_RGLEn$F>vRux;atWJ+>Mi)O>xd==J(~=!*p8Z3tG!pOcjiGWyhtwIwBGpue5Ch*ft`mbvFFgO| zq$J_}I-!KX5O@Y$L54;K)rZ!d+NcL2s(DyS2XU%S8CWx@K?{lJ7AeJ-&WK4VD*P`{ ztIBlFHXGhn&tOH|uJ^W32cBiB$*PFM3CR$tQwE0x#ERF&m-U)&7f)+Q4iz3C!rnh>z_)KyIFFV{Oj;h zaJmoidnK`--IX%lz3g(>QypTrI_lAWxDs?`!zNLR0$PCqSR?xrdi11*$xJ1eM^`;@uDlhSae88$RD2yk|l?GtU~UlXr>2s%}XQHOaK#g z<#7aRXk-7=Qv-)lXd!110metw%wGsry>cyrvR`3w)YL5VgK<50FDQE%c9WRD*+r{w zMvU~6h$B*kC~m@vAtYyJBaa;_(}U?;a5@&qbX$cQuaz$&NMS#alsK!0veQ^=3LX}R z=)wI0RR5AXWh+6k2tkEeB6L576uhZDqaoJ@qJ}qd3j`{?#kJNCG?86&5bPbxP57)+ ze24p5uD8mkV&-r3c5h=QlP8jUSgl!$Re z2`?!orhx?hY6i7vGD6a^NK^SazwQ{M#qiw)XSCH6om(0*GF54?1Zkrht|Gs!lo z^Y!1FE>h^6DTU3C`LMbH3VMBgdv|~5To24YOOYye`ta}vk3~~pWe|{0gQYOm7dUcK9iJD6(*Ov_@<=7Yo z)~Lk#6>+NeeKZSfXTFIp-T}?!6{yDl{_dk1OJz%+JQ8%P@LUC$Z-W~d9Xe1JYqbq| zYlokTEPonrK>Fu%(3M~d8$9%^5KxBZOpzc=!LoLU+=mkTpDkhtHQ9!vzU=KEyP@xHPZ>XJ(_~=RVUFT#C!-|=i|^o39PilZS>YMZI~rOce|Q-e zjZzP3i}ADq7rZeuwMZ$i?cjEUF0R}VY8#oq9Tcbn;FZma8o?5UFAE^2jFy&zB~lGj zYeqq*<$XE=m5_SVxK!;#p;@fIV=t$9XSBv>(krID+ba&nyHJ*? z!k#cVB6Jf+z*-yOjfe{tZXI3@6no!S9vH@9Jq>?#-rt&-fbvmm^G`1o#iu#gL2lj( ziUa5PoVTcH^SE`xFiW?l2u_F0bZyUht7JYCu&srvgKIlX-pwu2J-?h9_2JUK!dM{z z>>GluGz=c=oGvY}6?N--Ta>VWMWSNSLE2$AgG;kgVp4*J9Q2H9yB}@!kr=JGHzS$> zp|FcqbBb(lN-Q~|S+iNl;A(U^SH;I@;Zq&<_m!-2R^LB5`AGl|YCJA{ zBM%0WekG*I`DRGO|DUM;A?dqb=DdoPK9kHem@CvPd*2FItVmulSQa*E#PCE&A~}5d zaq(?dj41kz$IT{zvOIIJojx3!?7xs4uS(cJ;q9^P)BAY`Z z0XXgOm~?oqMk}uslCT#pD7m);Ts#{n~OzQdczIdDRQt%P!`V# zKWhRhmgT(Y5>8zHFc`pr6&sKe@uyNxc6(ezm(b$&b#}3@-gom>kt{ z7Czr$xV*XUoQ~15EX_eo6=RLWb=?e0R{V0Y*|dF8+}+22{i*6)!wEb;xSpQ1*l9<` zV#4_aHM_6Zt}b{}qAX5ziF507is6-#?~+(pyYAZ9pJh}Jn9!|kq4RxBz_kWQ1! zfj*0a<07NL3C=uPjOCQNtN9ZBOQC~_@c6fqI3aeAE81JHcYD2Q+fD@1RWaOlA9BYO zwX@<_ED|Mk0OlR{MrFlzE?CDTVF|@br-$)`X)tL2^H)r<X!Fau zA~t%;aX4WeHS8nn|2(9XB3o7oiBrUjj?nEdiGYV-<&unfrfaqhzhp}m*(4#XJpOw< zeo;MGidBzi``_I?QQh6$905ipjQ5k97F^%wB85AhE<234u9GpQggjMfS=S+*_So^#DH3bz zxz%&!#M{Xe0<7PJ?@=9rS?tvN2&97kz6(z;2*QIB1M^1U~&{7<$iRp zwT0;>fMTt_+9aq?qhtg8w+PfxO;XBE1mDlO{g^JKDX4qd#9MW~!Z1(((`>t&S zM_su;@F+ zzVC|R=!c)~9vI>JP&wp=f`f_h-!izS{;8$5-vq#h{668si$w{bqKCN={Q#F&J4~P& z^j(-;y-J-c_6swk41Gzx8Z0Vw_FnV!;!BUY(+VZ`8tRDTQ?49W7_W=QnN}7O}o3Qt^jAZ_5UUnsZ|5I#Rc{=2rO-{a)J_f|3Ul1 z_Ax0|6ye>J?P}aN;a+oTTH$pGD&Zr;e_A6!5Nv#d)UD(7V`HsUUz|k=ZIXH{v$|ywcfL8qI z*fkpumJx@qe=*v!$9rHApiHCdV5lRo$cH)uGi@d6AMh^P@5+Pa^LYGe%=O${e!4*q z-TOYJ0ALHxvF@0x1bj}jpBy}O(;!ZJfXD3siXGSiYFX!(UR-Q8E+#2VxJp03cVbd* zF1OgWcpE}~5cEuSnBa?pmS2-vXB5fL6pWwL>B-1nHj!+1Y_ob=HB&zbNCbW96(B5b zDbc-#FoUj`yRXi%Rgh;r`zBF^pYzR|LHb{ho|b6zBq7f$px2e<1NXy3;U#(q{}HTk zC)o;L%zeYo(8U_$zVnm5K-jGr!rk3nujKDF#w4?+w?7ytC?q`uN&okoUxTV~7_oPY*yLc>zNzi^(a5)CWYAQzuZ~5nHTVMsJw;AT;phOkDe1&qPEiI;NSrJM~0J=nN?hBl@=ngER&it zvHXoG0B`Q1P2Ko7By}2cbR_u%!I~rVD_mK+1pl7kU+!%9<_UUULngTxJa*hXS!&|- zc;OZ2gW~IJh=5PV#xl?YMNi1fQH^@bU+^_I2iMVG{>-26)OMahPdu4D?{CRDHhcM1 z<;GZnfFKv(OR{~mDqF4z#M zx`&79!*t>DhUp=&O4|Ppq;&)_>?>2%$I@%zx`o~)0`xEn`jwkv9sxa4N!i=#$-@uZ zC6OVcKB;5wgk`8r{nuquAr<1M4@Xpqi80ju)8&&ZLh@5uXTZ<;BNx9Wrs$jG0A^nF zhngm+qH8Zd0~yeI&10gP9$dT36BSYR3=I3KzApK1#@iz$qATT&WhVe4E$|w|(d{&r z4J6Kpy$Q468O!Si9nar=4R&d`Oum3uy+UKYblN4R31tf~Smwy8hnAA2twLX4{Ygkj z+`s{{{2nLoV#!5fZ*Om<$ETlMA(O5@BOZMUOXW5|od>zRSZEhe=W<~fsvqRwEppg! z995h+-F2m+LI#_G>-mH0Ku$U1v={bZU<#d3-T}h|B~9LSGiZq1_hsrHLTm9}_bT90(-H(DR6;ua&JzjEM zdAAh=&&O!7)lvagcvhg>!{#81$}#!jFox)sb4PUUyYcKZZmHvgF*z@+^T`rcS!$v+ zhz98Zks@aZAo_7h^k;+rd0=6EeFwp@Hrg?5apGWg&4c{*h@-+b)*wD<#!cc{i!Dh; zygGnN_YJtY#>N(V%KB86he%ADj}f0^sthhNZ_7cIdI!?Nj?CXvpZyN5A( zg%VQ;l^0PrX9g5-WX@Z0eCY$o9{_Crn{Z1_DgjqXKCIaBy7Vcv8y}Q<{FPvZb6X#c zaUndDE0xR^TPw6GqgMYG)kFF3>d$_dq;2(+yn)b&F4rW7dAyoEL}iE-1)ehYanW^?}N~=|bP0C*;s?li)|lymu2StjR(R z?x>`{NEszdx{!q}lUCSaZ~pNj!vLYGQ<-i9kF_pL=tF2%tjr}%ZVjl61>F6I-YRQd zpuQ_{Mn1xAO`hjV(*GjLLqnOCxI9F}!zFeB{(|s5ipCJ1vlgJ3$-+_WmN1W4-i=CT zwTOgCJr6tO2z*|FqZybU02fsU!-+7CC2nwl^x>AnCKN&zJ<$@mik{;=JiIpuZr8vL z7T6U|IIPfuX+>P+jqCI)Q2T;$4qm)$`YRg2U!jOWk00T|M9$9?W*w)y6Wy+-qbgq4 z{WpNk@sAtTuXhsy=kNe@=8ci_`7b_+IJ6WAqREfu941VFpfMFwL{+UwqP~=^DjF0m zn0y_Jq3;vfd>UDka*yXv24{Qzw~sXP@$#x_KGLXU)Uk>@u@j;ku|iI!g6~y6Rme8b zyOke#dYImz<OI8;QAg!e}tj1gj%&l%EUeXPsmX6#$2ZtW+d6qRZ%NN~jp zlgsd{9)j^I%90{&^r^liS~T{FuNpwbE9#eZwwtgsb1c16#1C&Ro6={RhDrFA+z#Q(x^fPT&w(Mo=F z$|GN*1@u!{Mfh>oU}JIxvR@O|^9=f~an+jH=v-dITyo?|R0do(LG!si(t25}^GE-9 zcjvScf%AK1!{p*T2zGKolR_v`CJRu9z0 z6ms3tCHcLiQbm*Q0#_D3qk~dv?w6$XY-3Uwr)Eo?;`h%DvTv;vM-C!(hAe?b!@jfE zbTHBF9-iTok{N-3Gb(w0HC~xNhiNeMd`eQ-i9*%Mx{>;W>{J5tzu*f`LJO5)8R|7v zt8pr0M|D;bq9O1J0sH4A>#haV6+m}up=}=p*u)pSprdy?UzoGEX)U=~_GBrq@QL*e zk(~xM7*QaaEUf$7DmryW1B*RRTK3EUAA8TXc5qjCD~5^922$XyWuEulROGb<0({by z-{s6e17?S;F+MF}hK!5Oy?xrt{QxM*mMQlvtO9+q)bTk!><&6PrF^a?^X#g_rS3(H z3EWRXQ8!I-V8|Z<F|iP=Pq+l>(nd!1`bn$TP4IcrWrQ0KOrA<#;_ie`SMQLjUrApeEn{Mjr5PQs|y! z{dxUlnTXfo~6AyvJdRb9O0)NGEj8tJh&1Wv0*SDXI>AeqlHr{U+ z8>LM`#ZVJ3FMEywIG7?Y^*xaNww|v@LRm5ftrPmb{3C;l zi${zLQGA~S)UrR%>n(kQoV35VU*>MNfNq3;e(YM|?q*=w2zv?>wYWv8X&PP7%~~R( zsb;C0I%Y4WLj`Jwm$P@gRNTJW2w}&g(hQB%=aXuoG*Z%O1#&^?6PoLL#s@vAaG|vm z`n$e2_$&Ehm{8jL+uGVf$D@>FpdEE?V4+s&cj+)>$uhS@j=~NbBsD{&IcRt#lFUrU zmi0JsywSuiFs1v0ENBv3eh&Wl1(HU3WIwk{M7D!*^7>r*oo*>a`1NLX`ktQauN3+8 z)IM9-pJ-)e1zPs$9TEm}SiBd$yNtVZHyHYR1?C8dj`M#pGbrr;dpU?$-`yPp6*`*w z`Vxz-hQA+fGwsjcRmOE;@>nmqTL7En1q0$BPW!ti? ztu}Br>qu@v`QDoqu9;zRYP^yg3sZ7%HTJzn9Q@;1c{n&P z;$q~_u+7z+w;cp-{D)<7qSwX=EKLDyj|xD3j3BYtd&SF0lrTFMSg48$cq1sUgB@yM z#1vpbdq?FzSt>nA65vCxK~{|&9vt*JJed@0Bi{xw;j^_bZrOPVClbzdzsJyo+h=uX zaP?EO_t)D%vH|=VP$2MzGW$S}({Zo>qxJPceKv#Md*B7!OaJS=3Jb4_h}Rz8DsaPp z>0{pGiDg4e%e)?}+f}T9&)!BVjelOBCBOg26uNA$%l;h|78$BL$xairQJ}(KR^*|s zV3f!Ya`YeMfV1yA81_K@6?U`hANuvLuje~IR9+;j&P&Ee90@Y#ARYa*)+x1F{ zl#1c>K5rfhO;W;(IbMl|M6leiFtzNL0NCvxh?cjTJ{AIstoWFmxwp zXPa{s0u4=n8HUO*?=MKVK8Pu5dtfY94CUzZ)xuV|uj|(vDsP12%RBUcy_`B-XWy(xr^#s|!WPXC-Ld;}h8jC(xfHLMXOuMri<;n}HleIlV1jw@w#7$FChE*!T%Ov! z@~`l2eZ=-*`y!K)KrU$hN$?mkL^iate%HFb{UvtjD#iSx4z6TqOUsA;*_VAToxiMC zOE@v1B`1uT2@BcIa+9ZOAO%^U7j#YBONEeZkj0?2A-Y#sws^PDU)KG`{LG1%ULs_D zT%-K(IV+t;?$&hwz?im)y#=?@Q5&X+>2ka8tIoHauv*B{2}k{<;&80d(DfG zwp@g3ptmn^YZtFV!xyKna!351tD%mDY;rSQ*2TmMN^03H{RcF8@!(m~D#mu>lReQLKyDHjqDyO3tsc2Dt8Q z55UN|;M@m{Gw0p=E^`lk{ad(Ql z6{i%};!dErdnqo(wYU?YP~6=qt_6Zya`XM2bMCq8=C7=*H_6N-Gw;lPp8eT>TbN;`)LtTYi!svbfl)SuDbVc8ln+c=$#~w+F zetL%#SSltIKljvcn(RQ#tcUJLGD0UVx~vWLOrwg_1GuS~&;4;qb>qs$Wxj<2ljYCC zo8tss-lTgIY@P~S8=_}NiVTiOgaBag7$=wwF#0i_vIR3|4{LdV(lF&b6 zS~`CKU%b7&?a52nkZnhc$Lz79Kft#Gpjj9Z-Y`S5>Pd1Sqm$XdgN*DIQOPG(w4#w1 zW(swYvM|1zp~6!ME5}bzLc61<{CIGVVCgd8(LMXsXgPS2{^OB5@Dmpd^X&%j2F4zf zU=a|v``pRrZ|BzFS`dT@RYli7rAZvtkNH$xL)9`e-=m4m$$Uy0QbCb5F`@VObQBas zjuH}qciDTu2uGp(TH%Jtq!!Zd%yH;itYsGSV{|W{E=r?t{XoAj6B<;J(gMtkrTkxj96Nuk3R2M6Z@45J0JE{Nrb3sFd%Qeh$8u%WSEA>h}$J*w|1mcoHfJ>s8vxCjN` zq2S1UhBj|l-F1x9@}&7^45RN|A|m~XSKXmUn5)4|qz~lHk4NXOL>gcB{q`s@mO8npEr9Ak$GGJ#8-EC@mqWS^C6i|tPtZCH&r$ZjMV$u{PaX-NEN%^|K z)yTKk8uK=*k%nlKsgdFkkPa-iBt9OSD6Q%|ZJ1+xLw!G8%WsMw|7l}|>_9p7XD$`` z@Q8F;Qq*6>l-Fc{Z0;z^Ca>qNRgGP;%NxD})?1=fg~x7i@-_clGXP1~jX*8p=b!U`W-FP*+%H?iNI z3fb90Ti=Dx-eQr-;Aj>uVh0%Hbqw(JsoimDS{#TkRYbQ8GVck`kELG33#fwbjLh zVC7n}<^0L5>*a7CJf50#urI-Tn+cOkHQOG2$#3ST)$w;mL7An}_9y?eO+Q#z`DK~c zom&*=E48$%ftIq!S1ZkAR`WwbeKPttL&UcMgZv)czKA4V;1m*4?vPzt2F0eI3-PNB zD@vm^Uq>poo#53yHwfQ9G0Tu(C^CRA> z%UpxQj}(B0@{yl~Nl!Ry8Z%AfGGH(B4C=AvRYr~QA%=T0n%d5VCnsVRPK!p<+-P=3<$)hdBrtcwRe36KoNlY|JtRE$Ua)=5StAu%6=fUXlK zi7H70Q6IgSCG1NSh!x*GTDk(oXRrm8vyd51x~0moL~JD2h|V$t>D?#nogk829)m1ru=@tf;Z1#t%BX6*U_k!F9vXfmWBK>-Q-&i9gnBTbe25ynrJa%#?zJ^QK5 zQG^Epb#aI$rUrG^$fh~MP{l7Kk(IE%M}gU$Q@A$0J}3zDCCFd{?c=^eWSD`K8h<}O*g>H-2~cZf=ug4h}yW-$>p zQD8AhSf3=~J2!T(-kh~m5+Ws$MT6yW1$pqYIF=>0hku81BUc)en>{R(HPQH@?eh8e88lwxOpU3*y7fdMVGbNxt#rQbXdk&5x)BF*o)-2#}0F zsBYa#@WOET3u82zU|QyDVNZv=WI#%^nhL5vG=%l}I5L7Q#8#0Z%JK<9R=uShDAu3r7Sa_;aZ<1ZtsM7i^Qs z1tY~Nb9aX|Yfe{Lsc}p-&_rp4D2tb5u-8JLZ9#IYJ|C%3dsob8wI7$#$0%=ce}sM5 zk+!P5tE$K5i~wcadBfSm7vPJY@B#lH%pw9NLt)PQV0i2SZn+;1WZNHGTO-$ZsQf_j zOpNLJ3y0-r#$&|53NEXI1QP@+SB@zJu}~acOLgB_0=BC*N*ymruQL zW|hW+4Pa$$7a;~jKX5LqVtDvFT6Pn21{&=FX{^+=e=1^je6o8}GuIVQNO++v{T@DC zR&m3fMwOP;u9Vd5F4A{QTKHt>;GRDMXF0V6T<0Q#pqtkKeA9sA!L-RPUIhrP=ld$7{!be#=DJ4(#PX0Nl*%sC z8zf?YxhwG(5&OnpipY9I$dgUH6*7yfCqw?7!3Njsp3#=@oVNgGeGFd* zC*XNGjMw8);-MEY6arqcTYbpB2ie?F6Sn;wMB9#CR$EJusABowQg<5Z*Ae@nb8*vw z2W2cIIo=Q0<5Hx$!g^db(axi#3Rt%{%y=3DxqDe;6MC@QEe2T4<8zm-20s^?bl*B~ zZd?zxLyk3!T*KON^pR*OcbPo9Hz^W93Ac=Dl3{q|>luHUZWrU|;luVycfHWFuykm`c!@F1j zELXBhuVg7L)QvQv=U|0S%SGpWUJ%(AMZl0E&d<^e;$ij}Ss&|PvXJ+<4B;q~0gC%%B0Y>x` z#0+|G$OfAVxNF3W2kjq|{-H{D7cR<}z=g)P>~}RchfhqXz8uI)WQkocsw%&o4Ak;U z3*LmB(;*HEK45UMDcFnFbJhz}@kV4TfWRs)`B%+a2L6Yo%||GG@}M9*p> zRIEz_4dNS2UJp^Nf#!>Y42TPYqz&Ge8y0>eHdswf&A+RyJsq2TUcw*c z0lex4-UtPrQfsTmPR`DoO->f@Qr*`AjpZ|k2zjw=F#i8Z)74sQV2o*L6?Tmwp9v>B z{VSFrF~)euh#<*dCgh!(q{;{s!H}4|6^F*0+o%){6=e;?l_(4|CU)=XKBcL=Mbjud z@ZIh^0c$^hxnhFf^-j3&|H#_*^ItE3)!(qP@`p}Tusm2bgBSS=Hp=BI_P;%Xp--oc zTx}H{}cY1spYv%fS(F=W;wep~}o5r)SgyZe4&o@hRac57+Ix znT0#g_N>=wAgceGKB(;}YI_39JY&vPA_}*1wJ13d>i)jPlA2q(mmE6*9rq%)z?#yA zOE>~hLj<0jDw?k-J!goMbQKIX`phY6j2Z|wHX=RgE}FMnaKVq|>&|;-dbP-R^wTyc zXVzKGP&y7v{eN;1@(cN=X)O(LcLK!0li@HwyfBU|7(9aBV<5QBdqbH=;jdR!`|q<1 zI#+kse{`d>AV%V^s)lQo+pR4vm$lyAm^4Ud=jWb(I~qLxui%&q&ON6uURfKZ9R({x z6Hh?xI&X2ao78xNSh=DFxUh}wVPu2AOGKZ`^kkb#6!eHuzX zq<&qDMxsceS6iL%(vmD!z{k`dTFJO;9eTPbc}2$~WTr#^p=OqK=SMrC51ae~DCkjQ zSFhgUgl`lpzk^WaZ{9|&(OZSghrr;eat+H(l+qZ5`B_z`=5wQ+!hjpM9J-GEl0-hm9~;*fVf<+F^UnB_SH_ewQEVMkLXNy*5d3lH4?? zHK>;=QXiIsE)Jq|aA(o{;7%PB=lMR)l2`VRz)I#Hhr9ci67a}Bye@botA6c&J^`QG z1%20paWc4y*Pe0c#(BXcMim2c%8ZgF}@W!777lZzy1G6WrF^9Y_+D{!bUWc?gX=OPGuD@AtU<> z`v3h{zVILG&oE!%w{dlQ6b+r2?~F^bjd2q2P^Z$W;(&T31_Ltg0AuuQJa z`|;Engpi5zIpr*(E{NarC2CmPJS8(o*qkNng<&3~4P9%I`0cGoQ2A+&wQ(pA>X%gp zUBH_EqN?wmHrel3nFXIhgO1WC`)m7`usXA6a_6)2zb$Zq4W3yJ&pb4D0Z}m}Q02e+ zc4XYo<>8J{kq(U&kLR@LFY&P}=!fl^Eu^=CsbcLTPRg>X8h+9}Rq5C5IGDXwmf}lZ z-1fABaRHbW4uGdKGw92dH|Ib-LC${miau`YXnxf9l>Z?S=njRl=stsTwo^Qq#3hp% zWpXzT-+=T!zYufV?BiTzzGpS1-%3qezwlWDZw{H=+3U3vP?hB{EcEkF^{3J2SN40k ziBc&vbRIpqj7u0oY^X(GVwpsiB#lVT^*OSQOA-}f>3oFFggOd$<=RL{aLrn~X6_JD zwSWjU=7mxC`}dJ2a#|jqK9mFD%+!uW z5VeqHA%`1Bmg{2@Z2m1_QfN2)@BIZTaw$-7(pM&)q(L|*r2iW06jnaD(lbxk_9xgX z@kJyJgh?@dT<-Of4Tbj_d=>8kDCgx^9uaC3Z6yQ>J`;PtUpTDl-O~25A5|gvHKN1r zq8ChYabEq&a;j6K*)jNzsZaEIyfIAq1Ln^eh22b@f8(Of0cB!lIwoVyX~&IIqHFD3 z&n&PO-kKLUIKlS+uDD2kTXOI)=HS;i)oJLF2eijHIxDexMZ(uc*KVAHMrAfz#MX+Xhqx5*4@Rx}c z>!2D|Zk>3LSM2#yF)GuH8s}KJDB+$m(({( zO27*oTEI2T6KZ(CT<(qu|Do{{mBJyn`Yx67Pn71yoYh{4M9>xKyNTJkf&avoioQQz zmb)-9tO@1Ky8VbLm;}Ch9d5BMdkr%5e$2V zQNRH|qAjL=J-S%}R6bEuen&JfRiN9gU3KUlt`Vr!-lOUeM0Nvynf*3uox!v85_9MMhF@Z!0u}sbpRC(TO5CtCUxrD}?Yn?Y!T1_$3TJJ~|m^ zTWLhn8YATH|33kzmxekGK?_8VGLByf|rNw7^Zr>jD#1$j41*TBgcHx&?ub3 zV9}^9@lM+u>-;9!bdZN1V=-YuT0oSs_h`0lbBZaa_2aheMtZdjK>gh-3z$m5>hZYb zibI(N1JG+Vp^3A1pFO#a*E)?xfnow$s~j1;wBp`u{LP*=^*`t9-VE3-R3p3GdZ*X1 za1H)iL_aU{xzfRxre8c4UK{)^HRfk@16e{&PE5pE*Yt1V`-y0&#)n-a6?S_j_lR9* z1xnr{k!jRExCdBG)|jCvAK~5)%QD%Ee`j%GJoTElc({~q4ZYtm~`Bq`R|(-xdc z+Sko|lR%ZU@2ULr5f8A$ZnAraJpzLpQ5aQ{Wt)<_HGnA%hAG+vDjt71pAW$ro{q;%fu=u{7H+sg*N*+1+F-BxG`F!wUIB%g&Z7C(QSBUbz zV6fe6iC#|*@SJH^TOq^5?gh;-;;B};G}GyreRJk^|F+qYaLy-Trx5ZaSIryy`y(cckp)rm7tQGNu%&MyIoYSfIWK!temOaUP%O=A0>F0?<;o-ku#_4TnXlcsKe+>8q@pW!HAU$QF>Q}tWtsi#dtpRQdtfFwk~ICH=xaatF*Y7j~2WAWcM{H97= zz7MvooY?ZV*6gq1yDd5%v#ukZi0@~InD9$(@Y;cqyV&~t9AYDHa~KmFT$mb+(4n;9 zA9vmgW~qNgLmNjcl&v@*V~|FBKW15~iIP?rcW)7)`Tc!npH*);=Ptk&^DZfEPg&Qd92)@-~33@rm&h2SGofN5m>=hwNE83qex`u5ZuOR?V zhZbw1i6k|v<^B@=A)VqDmvcf|Nzy@o&lRf$OOARc8Yq%Cq?-eF5GrU*26hV3-}!5( zbfN(*wwmgrl6X^vVMrHR(YbW8sb@3z(Q zO1^#t|1W9qo3nIQIy{`P*k*aZ%nS7-ta60R+$v*mvj>uadJ6%zbWNY$qQxywNkyUS zAXxaSlWfbO$GXB^(o2H55(_@febLI~JumY||LMr12dp;9cc&Pp=ahj6WOD1)BHw6o z$46%%kMcpDJ5BFW)$hoXk`X4iItHj7QD6 z@9WA%r9t&~2iQzgLq0~Y((mAD<@%TJkIK&;^_8hBKgE~mTc&uj%c72EQAhtf4FRnF zcxNq(Is-9XwPO10{W7UYK*9et^jzQrL!`yr}Mx!&jpq4Ey=6`p%QgX#E%f*W?h+l z-dv-;y^X14#~}?F-~t>az#+5pD@*tn?ak;BjKEf-e+%C|0iA;E%umT~oFdl7jJqapqm&wbsR z^Z7TTFnDDkqI|y6qcu+czBWm>3vGENnZPXS-F!571xo`4##E#19UwJoKK)%KZM+c{ zh}AVZzH3;q9+NsnvO?{18nZv2Oh;i%il4^mcyB+;C6k~c%NSv?;?}wDJVI1;?(i2u zToga{mT6zE_=+HV z;Ek#*hJfCoZ_qcbw%k)Y02a4E4OB^stIX%uTK z{&c&}xAFUL0zi3O$#1zUPFQ!LNu(;nbUyBqyGd=5NXV@~KK9@xF$KCSZHCYvDyxu4 zbd^aG>922JYC;5QtihT62r?)U2UNZ?zC4)He8FW`M{d!cu7qX-hbyxCK$W-msC)Sc zT=eK{<9|r@v_I3X-T&Si$@rzoP{0+ zduL&oP8VkoMJRgim zCK~msW~xYmVsEtz-r@qb=9Wj}wOJ}1y+g$-LzSC?~jt33H7MD&#Y7I5Y z{zWMU1kn>ofYFmD>5#eT8L+{ZQL+{qqR7hzVwr{G@g&sWr}MACM{N+Ca_ zE8rPe>{+Y`&TPG@)ID^%RyBY+=~X>?9NW(7ZzhWR$^8ok)Je}h3qB&$ux~jcOy21= zuD$P<)r(tf8{Ar1^t)AcD|KW}e1s7`DjiU*2E11$9@mLsnb^SS%kCKG-te_Ky6~Nv z+7`QjA4b|)3nYBEahWVqdjd3}J3kY5_WrDV*!1l3@~+*6`%I3)FW3joitmNze{GB_ z#~GvjV$pfCNDuLm`lE`-tb#mS%NA&@gOJ0bQVv{b((rhFEGGCket8QhLnY2qJw zvhcDh{|hW2EK)uHz=30#`YWN18$q=A*HC{uKM6u^W25Cg zrA5u53ML>8o8{qQvLHc0Wa35^!rbN9SP&qGp~0T0_nrU1u1(RYfADbMzCq*H-C--g z;+m)VCi}MztX7#zeTkf}DcVD$)pghxc7}Wbo18-Iw2k7TA>72GvJ3x09PH~@DvF5s z)os)&R6MqG;DY>k5L8S~GlRW4^C(+^{-AmIVy<&qMk|Y79)!hdfNFriP$QUhhoTN-~ zV|h7#4wAr9>!~^69Q*dXx$WGQJq@-;{W0mWfYN$(n@?QEfim|oMMY(1cCa7X@g>#v_^zNs#uZhkOMp6`?YitLe{oP3 z29xzTaomdEpIcnIyqQcU)AO<0DaZLejHCJ?@x6aoNVk7uubY=lf5Qu?Y<+!wx>ehP zLx;{EqVs*$jJsTfpltj{nLXvCw4^Y5&2c*fExY$64gi+RxY;RQ&N3mrlAj$z0|&r! zmmtIM$!$*!5g5D}IJm@o+f$Z^EQpmvJu1@*_McIm$9caQW7ZhH8408D%B^MAcjUp= z#2VO2d^Di%aUDd$AD&E!491WPUc^(hH2d278Hhb@_K<@3dG^B@_jf|8F$uk&j#M8R zRl;ZEu#onA)oyvILAt7Atf*%@-5I{F`Cc9hkBG1(1r z{k6n&MDz?(WP7qYWNS^C4)s?f6lW1mDQ3qJ1esM?sA!2Sigx5>?6#cg*4gHdFpjRC zs{b2Gc-F_m5a?x9#W`y8w)TEv@cH|0-S5!sG{0h$>-#rl6mU) z~Pe8IN4@TM(ow`7iXb7OXinEVFObC5Ua`!?*O;IzN;MlK3(t) z*O|1d;cjU}VPswAQA6=SUM@FX2FPNWjJR@a^JQ;La#Z&A;SLRmkz1_hWl#E!UT+(s zLmmvO*ZX7=Z4k8*(6;iscr7d-0^eU_D-GhEI^rm4BDi$GhRYWLa2(OjaAwAyDQ!>r zL9%x)kqwwOdwGNj-F0!A5idiQoO( zc>OzV_Uz^Y^dW*);pb+l{T=1QBcq}mfOl~zJ&}ly zwJikNc7N>WHYGa%BlG{nLxL>EeDNDOy14i8+IkW>lPaB~aH=p%jpBbSLR`yS(uHbj zC=X^IU9kdU3A%beN$ibcZM%jW_db25agV4a)~_LopxX#5Cgj(Dixwq|fbqbM_k)95 zcFL9bpHy;w5j&-bQSavmLWWSYL1()t@4Ixr5i-n-;Bv|g?Er2r6(nAT?uY}Qj|#`jD3x;@9o5@It~d{>cg{Ud;9O^ zwCNokhy^@J1D^O9n>D^B_eJ(&N6mU$5;2qodji;GEbBF{k@TYg!^;Jj!kiy!ykyh2 z52x4ZBc^+nBOdG78Ej5p?<&nh3O>2&qkn8Yy6*W) zLX8pQR2_VSDswr3{zE!-9l%at{_mf0<|ufgRsN-nP%6PQuOzq0cAGM5Vg`kp@L!u8 zIl6+%b^r1z`|ag;*fcUt<`CxGtoHh8lIJW+<@ndgtSm^1nzWk&>f|JWBKe^#dIz%% z)3r}c=gJ&4JGMb4E1n9WbPf9v8i1mg_5z%pW9*u&<+!hM_ zbi+SkTA#K~;a0EHll-nSo6-0wUc?Gl_nQb8>_-IBr(1Wo&?pM?6eNysFHPF3vDw8H zB@(8pEG@EyQb2Mg3CZj@imW^gp zv(24x6^NId7(kD}q+lb)WVPFx`^8d6XPWHTLB{5+T=X;-4GNbbNlI2#C63-@e)|2? zB6efzKg7{l>j1v?&siC?Q>5HbPrJ(#Ygd`Q-&9vFQrw{Ts;9pizS=AeXDJ*&7HAT2 z2PTb3n~ocP_14l6a!+F%J4NRN5-L){OMU$_s8Ba(MQ~5Ib5mQ|3b=3>mQ~A*5Hx*yWAfDaagbj~ zc>I$x{P1i5mH#<2@aynGY)b^>DXJ~SkT$xW&&IGlj%1^?*bvC|Z+)>OPptr7^ug`> zh#~!VnJZF+WFRr>`n*X*0uM5V1rOKKj<;PJ*bXsv>kSIZC>LnE>jOJfT!5=bnju?TqYt|rd@ zrc2wd{8#ahto5^&Owc8ZI^?R;RdfDK*tDZ1FXW4=VO}JeZ59Q!>+dEsi65OJ`i31e zej0TH*fa2arUg3aTZNBY64HWIN3II=Z_^aiNgSnhtKKirr492FmEOdDpZI8ChQrPA zi&&xgtKez-YOWP(z;Wh6sl!w0;BRTwmiyB(wcP$Bz;ucr9*npAFd^YvxDr*&BPrXH z3XnNaqi3wVaBBme0g-A3^nqKp;p2EE`hcb3r-ar_HNCpQ%3C$ql&+iw#P z;EFp8o6*zP_d3lfZUknFp z(kxVGu~yrLi1AgGVkwv;hsU)$G$;flsa}s@Nwu_SCu_I||7k|7`W+RiQ+Z;so&RzU z1l)5@=GU(w7j7Ic1uy8-MD1Q$CaHr{9v3K-Xo$hI?Ev@M4O!gZ*s=d~sYO=C|2Px6 zJ?s#uRxJq@OKgfKROh5c#?3efoN!ZaRyXxDHl}jObz3nIoo@>NGo7$CMy^G?Up5!S zf{C1>FyqEW_erhdIE2nU6D4#b&8qUx{dv(3dXO2y6ciMEgX#XaA9+G`>&3l7G3Oi$ zocs~*l-f%~q7bca@Pi11*dJ5xvKe z5afDENsjf5IHaoZF8^5&tC(Uct(ksAwdHsESA#tI%_3W8N=vg?>>8YLU9Rjk;kI{< zV-alXPVkeg8<7pM$J3RSI=uTN(EAK)kslgB925qCT*WZ!RRTl?`5RyKkhZ` zKy~$FDOA1PL#FKPWKppQ4)3G4HRD}q2*@6#T}W;9CI0GsrAgPRyRF_-I$q)^)q=Lj z|1lXcI#)l1gVB4j11;(}?!2PBt+(=LFM8C|H>ywXY^+=uOt?^=PB2?VK?e zLhshgt(n!u(@p5(epw!H+Ue)qqVg2sI{+LXF4F5I`%$X&?@28`fGC)Qnk^97t~n$- zHw9PPI9QXmW4n0*%y>y1Nl0Gg>h2an19;$Wdd`*~6vsU_xa^o>DxwVI9Ug7ObGv2g zMVTyan_DMGuy7oyw$C32hU2LgvG;^4@djQxI)X*7cI zE}hc#2LwM420+Ts286F)=`K(3K2K;ZP_Wzx5r+}<7O8ovpGsT^o7Zyj*#<3wFT=rx z7D{@F&>!XtPIrJ;-Zrem$70DxKcZ@SO;?FB*K@JX>+1c3- z6Ny2*{&{cDm*_x*^qFCrA+>i10?7`JrdoE0ngf`Yodd|0e!m4{LMnuVv3t$>I*Z<- zPjYbRm!9>I5~p4^YlRESw1z7in`B_yUvTsBqdQC&HjrWVpht}W?Zn@+e-vy^{Dia@ zV~+8l0*6c}Y$eP}Sd^3e{8||l*)kBGMJDg{MiX`WB5{Y;MmgM>ZK;LsT<&*23HBF< zHz{ZD1#@H>-@<)me+XvbGX3iqcZ zLz>aQAbvRuCwYC?0`HwNd&Q4RM zcy^V;6WgdpeBQcK=P5J!i+XRZW26khqlq1)DR)01A@@(3f-^l!=Ug`MMs4G;tfvyA ztCEmDNv&K4GBr9T&u(|QjTm9YOjfkIcOfyw6nHhLK>ZaC1L6oRRSa(YF6;dAsa}_x znXEJHO;CN)DXF%6>qC8?m(rVzMrPR!jS_AMCel8G?y{Y%i8!bcq4|d;4c_iwrCeKc zWw$>REohKBCXMOFwrihCFS~XV(a;KoV`5x1Xw5Rt+zrzFbg{|uCbmW{MX7jzc`d;! zJiY?#mDShTL<9tHb^+KzVbRULg=(ITd=~fS@r(X@E4XjZhQvr?5E$tlR-b!z+7@hI zZ{0+n9 zQl{w^T4cGnD~z8O+t|p8$VrUUy|n1+L&&l~CPMPYry;8EN{cE~6aKE~Cbo$yC1S)n ztTNKa)4BKH#T8puD3_{L7f8+oUvyA*!I<8J`{+3 z$|CmYet-kVF~*8vFIyZ#s#3##(-=uP{T@8idqOU+ffw0Z8ZTU_Z3e(?)=f}q@f}R|6YD?a?Z==1L8`hfA({{0GJ9gXJ54E6+s{8 z!nXPT7>Q6)b@9S%-PFYJ}J5+=uLcrPUhcota6rN8HQ__20*eztn$j{{yD`q8k`Atk!Dx{Z>wlnkdU4klVGm z4=k;9u~k`sz!PJxu-RWB;Dr&@U5rageiV;N((STgB-0LhYL7EY7bcocuXDejLP$Kj ztG5nqy9sNoTPy>by{EF4S(t7`JmB`p>{Y{{h8#5o4L`FedYsx&dM;d^(sIIPxnJsy z&3z2lq{LlYq@<+ccA7t}nA7t}NDX_BGpn9BM5b=vt5K`1X4T~ca8x`=r_x~JBMvUr zdS(c#u7*SJr-Ir^;((3M+s3*nAKI%Zis37_SY!n3>5r@Nn(~QlOtvuCvz_YeU4na= zVB77~Tc(6t{B!)bB=)v)r~h#i+T9QT#}_8%Pg2+O!~#b-gpOr!-b3Idhu7jmnJe5v z-rLTzVDIZrru6s`$qPKwo)dQ~@j+;VAyhTJ6%CpXd&w8*kthnP7&*A7*m^*LSGvsj zK@Om*2C+%=5KF|csrOMZA6v^d(>s6B!9KL{Z9KTkfQv4SzzWV?GL6L3_)cS*fnfE1R}3`_ z4{wx!fu{}YO*$PH4?Ho9wvJ@p%RL$O=k?RJF~jPrUyw82BdqcMK+{XdJMZwmhk?|p zG)>8>lwQL?5+io7Uq{n)w5Xsrn~g-B7)4)ZDU)o8GQV=}{BC@jXNZI1b7{nL~oYN-a4?~|!4W!ImIQ8`Orq|YD(-(Aa?rtn4E+`vM zT@O7+VN~J|QX&lH0%_-G^q=#snfE_cmu+#>x+zSw-ZjsHej&HHKn>~00B3cXa8TH9TA;7 ziXwr%auf?bEM`JZ{(6atH5P4P)b3_T0GXZL1QzZ|aZ6Xjx1aKfJFP*dt(T)!br$dv zGlE_ZTp#7-dGaOTPrUxEADc?N%qlPU1d3Q&TNlH7TULF&9U;nmVR3VgJxZ*X|M|%H zkg-DpS{lV@2Ja^Hl)-m+s#Au0+1UHl)8oE#lh}XjAKaCS3O_-dKkn3CqVQDwK$oYU ztnhI9FiCyQPW$apjIA-?UOVSy)LTPfy>}8rIv~)x>Xd&!@-)?T$;A8bGwc#qX%vCg zdkIc$3h!R`m~Bx3KMZnm`+hLG3OGrUSk@o>BmQkm9F*&?mhRf(S$+WBSeEBn){pls z5)8V@YSm{6-?;DWp`2vi{~Q13l09bm?ei+dVViU?M#XZ?r?P5J`{Y#!gqz=GGj4Y% z@r$J;5}Zgsw7pGjC?p{$c+}bBdu`3e$r+iq#GHR#cO?A2{L7Im$jLjlRg2844^WIAU~@ccT5%hHPUY6?*>r@HtLzaN&$ z1)^v#7O4P?1N*q_7s%h6OumWnGZhS4ou6DsSKnDJl!-huT7F?Ztm~xZ`R(hK&@J{0 zTpKARSf}6P;OS>7vpF;DDpw)zxq(iGrAEc)EVB)WoBdzh|srb*bT z-SYcZv{ZHn7}7cTiL!D`%D9~e>G%QrkbzR7G3K}t`^E1wF?e|7{aVnVuwfNG{M9V^ z%Un68g?TiSaa2WQuZuT7^%Dpj-)-%wA~|`pAi1dI_FwZ5p)!`y#opbD3>}wHgk06f zuYZ@UkzyX4ub6Y9*_z&1zNK0g7RON5e67=nAuO}Ldcm?7%V!16p|Qz{=;^Z{F_l^q zj4WY0fLaq=v@)Q?-w4syz|OmQ6r3}wBj^5m8WoVxbnx{@`2zb=d*a?xp2p}=s#FPa z;i7RA27p>=8raH1Hq%Z4K_z@xfCpc?V1jQ$Q{yAKiC&gkee7~4tGdUSz#BlpiqtLm zt*0j0q1XIYLB{Y!6Dj_8+CydLsOiBs1vDNScQ&(^1Wy027ofyYGXrSQKg$m9gNIhM zoxF+8pZ2%60v+_)ZHL&X7+#It%HqIUM`kO5M`j$|8s3+Xbaz0+3c5CJdJyip3 zJe@LXKaqz0ySwk2$PO6V8dMq1wZ}V!+4Q`!`sO{5t{gI&(UZQ;y(u94BGV*ZAC_Dw zb&EeUeAZ9P_$T5hdBDv3y@`oa$W2E%+p|FgbxaD_SH>p&`bOn3LFLt^yc$MCCnMAL zI!eQv@#_B?b3N`1b{h};XhNA1nW_&xRRz7mn-KU!8v5@}zdCWrOb|&j@R)*(eBf3_ z%2zH~M|=+a9*A;ummKsg-F>kCt#Nhkx!4Su*k+5?`=0in$bjgkKq~@&cVb|FWUre5 z$hr{Urj8gY^bXTeie=xF0FBKe@=#2s+c#`}?i`I|M|&_{v#h`<12XD8CWOqgV1M9d zTr-cb>_5zh0DkS=ApHf$j=j7xpJv|&La-pnkZKq;(L97-&+T@K?8Jxcb^-J)?_Fm_ z^TP|tpr(Iaujn2Vg98*1DQ)?{V`X)VmrBz7Y02L|ZG;mU({2v@#_#Ewb`4FM<;p2a zhJ>O>df(Z(^71uNt3dtwP~Kn3Fb@$U!6ia=tA&E&*XW2yYPMaOy zUv9|iJ4L8ZH~;xD4E*BGd_u7mSDM0^Wb>LRoWXSV1*hW#%)VupZuy9PVa#EdDoy$w z=G+ZP*_SA1jdTIE6F$vKghF!_DsMQ^>3u@dIk!$uhwOLA zKhPF)4+&!jDf0>CHi=fHdVC;~DVqlYnw26jrWHL)|7QYBHZftpRYm3N#qW^Sxt=U< zei8AlJmdv8mlyx{208DHOtng$^YYkH!7{RM0&hkoDfCt}iagNyB&*IJ7TF4=75Ghr zWkG-y4^0EahOiQ&po}@@TM3@rVvxv55%=W&<4s$i`8HbJ!P{9oZRv*NSsJ6SfZ^g; zrQ62;u3nm>`R{5S+f_}{bk~2yGb%Fr1@^BpWKpvW^MG@r+p6JGOegs|DKrC*igM%d ztU{g{cJSJ9+EaeIa~-VXe@)`)eUI7A4R{~eq)(De;e-p1<6?f+c#iG`N|i(+{Au>B z?P=y)Dy~~IZzS#l4{R;e+kF%nrkSg%ZM#L?OA`nRZOWM5TjnRw1_T@Dt_p~ zDXnu#lU3r4cM2PjwIul1J;}!3pjjTml5QKydc}!9xfVAh<8VgF6YX0RjXG?ykXI7Y%NUF09XKhock%pdmr#Ki`4M|3QJmyGuV|O!(0p-dC6JaDEnbj2>tIIZ zbwmn7fwg(ILq$q#k7YGruIlEblPIq+%L_LSS<6(z`L-1M}Hh zIaO0(M%-4E)6^<}L8~!liEGrD=_JFo7CA?R%WWl*vy)dj&4nnd@0GoQ=d}m` zs;R1o=46o*L~+*YBO2GA36(R6-5{#Co>?ggBF7Lty`yMjWwqG}!Arlb)!OX@=FA#A zHo1GQc@+p<#_-RAaE?j@nVNo$LJgpnG(FpSKhaZX<)f^^s^cnKBvk>a;j(l&hWxXS zBmfkys-(!K>rFrNvwWt|B#9r$(%ue0Plbv;(>2l?*ET(Q2HjP-l5lY$CP!iJHYzKp zWODIu^%hTCS?Wssds3LjiQEcGg zXn;9bLH8|!Gh`(~QA$?frReWH?u$IJr}fK^vcG8AC>f}9@8Q`+_?O4PtjtDX-Iuqr zIQ+1=Igma^#Vg%9t^)FDbd0P!OWdCEvYlJwWW>OI+_VPOUU)y#T`nB^Haz@!Jk|&HSoZd2(|$J~UH@)> z%TWwH4uIkl&jHPQ%9@-e&{kq%4brAh*mP`LC|GH_Fs3llMP}=tVbJM}{l2Eq?s|bN zWEYtnCh#!C!`BH6{k^X5*u<&Tjy?JxvVq2kIzzns`-0}hI6wL7z>NlVc*! zaFw^One{9qk!z%=d+a8$X!jt*G_5EFOc$mXW7>!rV+cKL6oR~|Vhp|ywKk*3a>pnc zGbgI=P$grPY?TuarHGQ$_g)EYuf>e$ zv=YA02%?Nl0i8qETxf%BWj;KIe!Ei|{x{?rh%>7HGMGS?2Q1MEsHULhy7l?-AO*gH zH$53*D#y0Zm6qQrq8S`{lw)JS1A-4;X$*eT@$$GltzA_|GL!qZQPaHfcf`@TD3S=S zIoVhw1-Emzu}P#NJ*yNH` zWmZ!PxI~^GDC}S}J*6yc#%LMU00T)$ga*w;g^YVCY7k?62^iw*rJ-6yFdzC7e*C~O z(+*5Tig_=c2``y2Xe`K|cccE~_z&|GZ{E=NV%a~?4i`x7$e?Ry#xEM$q1Hk1chE(r zikI^Em|-M6L^g*^{u-7xd-adI1ANxBc=)MNe1KCWfA zf1gu}CsHhN%N4IC*3gUnY&R67)Ok8w8*X2nxLaV*9_6;ta;lZ_m@Dnlk-a{%B;&Fa zErK&6Eni(-6rwn7KCqYQE$3dPF#K;>VwsV7GgNDTr`bZi*}_*G`Ois0%xfzf=jcWD z3;{vmx6vI)d54rQGv4b~plOqN5m$~M)0vqS@+EP2_&bkG1+5)=(H-^428a`WS}qPH z5u3o649gb=G{CbLAgk$Kq+JV;tG4LhD6<$dT(lSMTuJvs$6fWw6?4%i!UhC z79d%z%_FW1$w;JboK8J90%mu z_5{U-yZU9&S~1RN*egakm1#9GU+GA0M)s03{7a1b4t*htdo7H%*M}-7^2Hn<&}WnI zf+bX{Eq3pAUz8gGhUJf>vQdV^M|>_&9fQN zwofx(D9PWyFQjlVP>E%hQhVEXI#i|wnXzsTUFZ~XT>$*W`jI_pzt#(r~s3=nqb)5yb68_y5_My1^$%75g_ zBAeqFY#D)^NZ{-XM~kv= zRhg zTz>wWfD6^Rh(S%C)dpt7;Y{&&pwPDiZExNL9t8xm356_5&p^W0DKS}D+^zFCYu3dt zDURgC6&&)By-B3DA=G%73@4bPI|G&71NqPydL-I}2G~U0U0+QX%MLB#f{H%XrL+L| z<$8BT?KCqxeDB*qxe(DX{4e9b2774|9e}Z5A?hNTVxb8lDHi1KHT+sAHpyCmbr7$Y z1}{?2!{sx98Gnb=Wj7O@L$i(EOY|wJ{8Q-7jpxpwc-#K9!sX6RQI*1FGC1}v&qs1r zYPImIkjU2@a<8<$&G3Q>2#Q)~v^kL+>)=c&$$+FEbra#e_7U>Luoj?7eztErWKYGR z-$wc+hROFYI$GR09f$aLSM~ zY1@OCB8?&TV!WeSoTj>*Q~jKuQCo8^>Lq3}Eldv$0YJeAriZtXA&}Lf;2)wu$~H?f zFC^C^dGJHh6yDEjiY^Q@{=nD^T5Sv5kQC~CMLs#ylrmhM!1bcN-`n@Xu_*=wU+e|o z4dWD1Tf31PX66{$IJI(LA zS*zL34~-z4=N08Ph) z0Av`}N0#xB>I@aF2J%}%MGd)*cMLuAcd1`LJD?Uc&Anbp$Y0jzL+aP3r}Jk8Cr!KS zJMZ?$4fzq!(doX@HM6A!Fm8F-#D~@<>o$AOG9$>7+uKU0OBp302MRTJyg}m4-J(Z~ z28BE)b>-F36kfVOHqW^~xAkF)`Ni2Y!dgHdc#sb}X$DL%S$|mg-A@|4do*4FwAu(X=?h6agtT>JIUIA1>)~%^lgs#va!4HNy08aGt!@Zqzmu znJ_uJ+b*`&ZQiG^b{6NyOdY=V@zPA7OyQtku4F+&!~dTIRy$LDd=Ge4gdD z$coT&Fo9cpb%%Wcgs-ltT??wu5_Y)x7m{8H92OFx36EE$x=$E5xN4X-F|>i53k35= zLfRjym;TzcoMcQ*e`+|&aOKEYwIZAppPT1E;Ue{QFpd9w_qUG8k@zBj^yJTth=MA| zM}l(WL>Z*xkW4qM?Y0;&ghx`zq==+N!GACoVm;Q~I~{~~XLPlAy|~@e%SkKV{_|!( z?Ef1&DQuU0M21a-`2DFlKafe?2RQJW_*DWv{(YW(&Z7QE6T`$Ks{s+EY>V17#qWnn zFAFrGh?>tRpllVzJ4&S^JsRoC;bEhf>!7erQ$JJkIR-D$hzqpGy*=73E%Co~Q}F~x z=IN(J?G}5i$WX&L@tZAY*nnNEY!vqWJ2w<6rn@Rd`7OB7vxv?px>Bg?%jCV!dlxnm z^&Y^Rrr^Ps=|sty-odrm?p%nr@%mn?==ZfXF-VW4I|wdupTo85e4;Y}Yp+YRs;&9S z`i|_M<8gk`vFa-}OonQpf`N`c5QtV!O6n3qkF@G%MW{Aj8YP_TePHnkfwtUSNVrJV zgly#Z^M8dTt3&ve;{_@4m~_;1D;IUbBJ3@)Ju02&ie$n#opv?U;1W(702vo^+Z z?|s^*ZX3Gl1#INM6D+=AOs`6uHx~ z`k_{i*sItBdm=M9(lt=JJfeEFkMPLmAN*SJ{SDZwe-%`{n>}BO_^bYz+4^b8EAWj6 zA=K;aiSE&A|Dt1tIMDGiDFu8FsZ+mv{Nr2%9^Ok#OxSW!1Ygj#qqFOefdnN&+et?e zr^{^L)Hu37s!5WBiY$35zov5VG;xqPOMcN@iu5GV0K$^U%D~0{0HcIQnl@TfF3IXw zYE|kE_|xDQCjRw@dWH|Ymps-;wm)={s2FG{<{J#cMCu!PGKol`hy~S%rh&G!MZj6P zG?An#MOY!WM8zbs(SP5U{ha1g1!o;!W^jk<7tSU!}$gRh56<~DNZy0lLYOvu^H$bVm2Q3@sz&sky>u!aIv%l z9LoW;`y1jW^-|usxKQ+(-w0}#JJi7~|v%4>M&P+WKL^e4gQKzJ$ zHsE0RX8v{{{Kt*Pj%OG_0&5XI2IsHMShbps6iy5Zc?FufHos z3u4F4p4EpNra`Zgt$nn&)f#csPTL1tnW|28acaHv?xyK6zC<{d67*~iv^;yb*WEwI zeG{=Z_ck^V86#*)ym^|#;1RTd6_*#teR!ZGUX0)^}28B0=}X!Hu*MG<8` z$WG-@0GVj{626rA3~OJn{YBMWzNO^okL>rDV-ap|)~VN)iu!#wsz;SUX}j*eI}!~} zPy7Hlr)nRF|In|t0?6?3cJ!A}r5IcfI%eC@O6s$NVikHRfJt5o(XrtR}oiQ={6bbNTil&wxyz5)zD$ zZr}9P^&#CW7w)2E5vIer9(yT2CsUl@X6|_ab>r4IF-(Kcy-{nW|lGFcZazK zO-(iFbe|RKIdMIT2}pj8>$&^Z`S&>bUs_=54>O8(_#@9VTp;Fz4kwco05|b#3%d~n z5-QiR3N+sgz1OjOw1?jK9;5-odKrs5CIZ<%h3CDdNIyP-lRC27+36aLn+fTss%C0& z3I7N8&ve~ev5F3Nv}~zN5IoUabxFt&`EWE^q^`KnHIJA375OP`cE5O`!`ZW2OVR%> z&>XGR_J1q5$${h3fMAkR=B6V-q;d@Q;XhoM@meUAFW2Bb67nx~N*Y^3P~l<5r!{}# zsawd)B5m8N*AtAu(nBH&3L|%{pH#`s+Zy1Rm=Vb6KqhBcZ$Sc>x&YHoXM(N(DQPCY zonAO<+|l4+QVjvlFg+#bJjY!XI7VAMTjD4w-uld`ZU!QsiJPS^u(N1QCqHXD%=?G- z(a1}TI8NDUIMoQ@{3oFI-Fr4v;=e6(U%3^VWx8a7B0Z-YBAkaj4-P?jZ5%mhj(9rA zc(1Bf>hlvlQ?!Qk8v8VSSlc0ANZWohLvEUl$zQ-pjnMJO|3nC34Wg8IiaMrf^94j3 z^w>xT7BftyO3Oc2&=Uhmz4||Cs1vLAB-w`LHC%#0fO;Qij>;W@#qke!Pm@Kq7oihI z%~#EIsYclK7Lnd3oH_Ht2vL#OKkpEdYzXB0au_N-?;~EK=7fBKD2u~*;Yto_Rf@-6JQ-qhr!4 zjzd*gnDC48sOwsX;eZTnMxJqoJ=T}0_;Za;ymHj7IV?hM2khTR@)AgO03s!=bjYMs z3(L#E`>o>IuZ;W7C`VqcR9Tamc16U(@H!DHA3jY~s z|EB;6J1)WDG=<21O#dH%eluH0y{9FZ=e(<WGDYaUY{Nt{C#5}Mm z9zL{Jjgi+i+QZF27kEuorP zRh6(ndo4#gM)`z3*;$RC%}r*ZFwCp}h`-nq^YH&zkFDWTP3TPFEtMV+kY8})!N|JJ zQ>(oDUss?Yz8YutXWfUunV8i3w!NsL+VuAl(*J+N-f@m8g3kh`eO;gNg6juddAk(o z{}}L-vGE0$5ym`fR)O3c+zG`OV$cES0_Q($5}i^o#_V}ziy`zE8O636O-07OA!Nng z-~aA(`MSY9kcNTLjP0@g;uk1SCb@`twisJpL4Wn zc>EudD)qvDcrwu%nh|2brGGzyYzdx*CH;7i3~ws~C>~jk8D1&`8J>2zQQn*iCTJk* zyg3B|TCRTBXVyLSS>xT7K2gWbGA-jFtp?Cpxkf!t{P!_Tfoi`0en+@d?nN1Sw3iD; zx5qXn-rb8O&|Y`2L2y*HN7qqCJkO(#UY6pKo*Lmt*TzWXj{L~ssLyj`(xd>s)wh$P zBLWuUpSpV)7%T^oFn;Gkqrp@qE&9ZBBvk(_UwiF;&jt7g+nayNgAbj7t^)-rBsF#73EGmb>+9sd7Fy(jsLB>=0IYXrWPsksJhDK_TD{?V20XXzqn z5BNE}v~sLaSEkB)T$v0Ro=8)eqxw4AorcL#O4{g%Pg?mf<7DrtT*mhQg6Ic{O!~M~ zg5SdRmiI&S;LVf??P>t196ykvR4xLvqTcc!j9zh+AGHg`*WI1KBFFF4qgX-ui+#+{ zKcrj@h`M!*_m~akCuo-j3_Rx7NY%iOD)yIVS)KY>=qJCFAVU*s@2_JYGiL$P!5_%x z>}eiu`?!#qFm2UAGZgRY5*8iNho{0_xtSIAiJUWPWBxB9FW9N<6X)Ri>mQ+GH=w-N zz*NK_Qxlfo5&{`q65dP0F2@H^Z&`Y)Dzz?f!;| zjb?jO()-!}1?69^F>++oWXC;f_0FzDez>iL?`7RrD z*)5H2HSHsq#JqlkN-f1Nd61hZ@go)iNt6Lw!;dz6g5xYa7S`N;bzgLgl?`#)30-%F zaPY_WN&W!bY6*x>8p5UM3P|+OM7`_18*~YZM%3Tj6eLj1vd$eAYxWiTfef7H|o>Xqk zuX|{i9oZ)d#DFltdgfs2(Y#|}BL8ltH0JTrKM!eC-wKu3pXEH;Oihw~NJMP9isrS@O3tVn*IeJ4ky(&z$6N+%JZ(W zxVc>$47DCfE!x{m(%9wqBWSoZi;vI!ilmL@usT`^2V<(nsNQ9SE{!{Z`!y3h@uOzp;YdIYqGr1sU>njJ- z(wGk}r(M^!{$xQ|^gD!Kr^g>9MZFh}_OPFZTh%_^5J^2@);je>7)v`8U2f)1vsH4L#9Vk-qvB2F2r~lGK$T*-?N2Ai?0?d=SJyd4-Vw(`!-2C3{ zu>cve818BF5(_w|{gCDK)LBZMH`xSFSk(G_GwD|vTxAN9to_AcKUMnl*Wcx~<~>-l zI zJL;lj8oXbP1sXb{(!5sx)OMK~!p7ASz>>f6O7{R=&&7=2Kk2UtHa$yQc73~(Q422= z!f{-=u(2VRM5AUT6YFQ#^hh&JUdmN0f_(mGnk%%}pQa?yxM$SRC?f(CZZq{qaC`x` z7LcKKA58|-Un7=XE?QF)gP=6_B2^+cN`FkM{di%qPbe2EsM{TyfmYC$2VeDyjFOl>y)IzuoEBI09QOu}`#O{7VoP;ZbT0%`mp+lLql=Ho@0SJxJTN;5+zt)BWxq zv#XsG3GWo+Z-hBOijb4FGyWN=WiW5!t~ z&8d|rj?)KT`V?hil|%J{evQ!I8nFDXdQ(J9EV^{?_qRN)`yvK`b9bIhl(1A|R21I* zp|Vg&e$!`489^<1d#8XKVJxmB=Xkkvx#xe$s3OzJJOU5yI;|sQ?a+uv>#v6T)fw_Dx;5 z(oh2=T8wpcy6M9nZHrZAnQ%*Xa(!`e(PZfK`sRW|8 zBRXXsl4b^^l#lP}nt)eWB+S&Pvn^u@<-ST{46_I5lKWc|U7akPC~WfXBOizbq~G>W zp|>8TZ=hF?Nv!0IMMO(3y|Pjre;&33a$TuwuN+nMAT{BOP*hG~x(~Uc+QpavKfYdC zzVsF7eY2Z7H6?aYR#PInlrpI3J+B5+SN#n3Y6iCLk8}Qn5tjvJL>f_FXeGJoM4flc z^UC5pf5?}#k=+PTt+mvgIl`n<+1I29vxq^8j+fYe?}TMG9%{d($U#%Bs$T`>-d*k1 zgoS!-hF)>P&S3o(BFJi`UZPTJek@CXLsx|7_>v~lb2+n=Lgo+^5N!B;R|;N^(O#k9 zeD2${Zo#=HqsmY95wG=x_3j&C;yn)rP5WWRv#Pn$FNaSZuaoJS7!6!QEKi7uqoOa( zA@Y2+*J;dxXLCvRtS$E=!$9=d2|573Ec^q z7Qs}vyt_}O`|nIU_8lzfXx0$m@l;>f?Jj_$Y9KZVTmvjks%eMK@yc?FH_Cp%-n5#I zpSD(}8>Ghj5-Fkf?yF@ztL`=aQ*^&16J5g}Zc?_S`qogWK!?XlE@Bk%A@MoLc}7M0 zc|XryPYKYZr#c-Mr~8*)@mFceIsooz43Uq5l%^9tKyfPL3ii5~`&;*B5dpQyq|CbVsO}xUSIxTT-Jar1VfcmQ`g|QHJ2BTf z{N(|1XiE>9a6OO1OTa@SSB z{p9}{m8_06hJPV9;pfiGVXi5{r&)V!^F9*OoEW8FCx|dW*sI{^3u+21X7nT4_Ir{i z2G`m4hY+T?r38A6iiPRlcGtm6h$Q{iE$J@6wN;;`*n=(3@UA-aUg+5XANMUU@&ra< z@z%^=)z)*%AD=gxBl)b#<9?KsMQ#A}#$7gfGY{zq2FMMbIr*Zl{Zze3r7F4$GLlDY zFq__hA7wBo>7FINl*7lYe$%1WRt9|~b{HS?6DIF#leoY3P2YJAif>Wdd417+c-n>C zU7C_!k}Ke2af8!36@}k@%_~mPCV=M(vOZDdyfu1r4S7wQI=~+K;rAQBjf>>eO1{7w zV<38m@58HSQptGA#s^fcYnm9I~&ZW(U?$O>3j2(aCWG<+9_t>c>^I2Z$ zhoB6JR?}~4XO_pUMyu}>@!BR-WnJB*azb?|KbzpCWsH!vHKfn3fD{%lk&(0Mvr9VG zQu%8(zlj&{$YBO@c^VDfoO?U!XV!Fyd!`M>90N40!U>xq8k<3Xurap&VBN+|hv>>% z`(R?{iM}uCai=IsJm?a{4!~bg>OV}H?o(}vh-o<8p;2&=$%SB zFh35ws4!>x&w8X{lf5}hc^ahA>7#MDDS0}K5S@+u9>C&5Bk)Txtt&#=pK^=(vqRO( z&jdDm(uKK+Zq3V|>mpY{@Fx-1zq>s&g?eH7H|PzsT@-Kmd=vQru2*Cv3ecy}m|-X? z&xK_x!S~VM?}qmD%kNWFChJ;0^f-#hamse5Dho^Hdi0GJFgY^R=Vw^$MHY6!OBJ#M zH_q~1AaS9{94#brqd-Aab+Cvkho*x2vleL*`RG+I=K(>`z&A(H)pK}SJKu~Byam7Ldo{D1QfSoW2>kD?}gP`9$L z_u$+o;R8gi`r%fLm-6HB3Tv+GJ2VY$rvVCtK$d39^Pr1Mv{@RvnL8)OR(e{04+A39 zRM?B8Bc;IzE>aZ!a&8kr?b=3nuQi zo8{~1G3ip(*e{KX01TpYSgfGbpzY@A%~)7t)*rMiOPIRK>wnV|F3Dr~WTx|^Z-LA? zIK=GZ@)^0E9>hNH+*X(fR33PVVI%s6wL`NmSwmUvUM}RfE(KK`UHyeXmwrlW37Qt!T?H?0ip zERQa`JV%tK_tQ71oe2Eh@;jZoVN>;wA&)lG{xGMAoc)u3ay+xJ1y(rk{zDX!U%73i zg3d=6pT&f0eYAdd$Y-B54&3_ms;D#C@)@@u^E_o^zL|+df-mkQg?t~VXa9O@y^<-Y zA#j}Ys6z}+?z);jb@{&g>_AK*Et`83)ji0%OGF~z!0df%bk;pi&&93RP> z@HD*o9IuL}hLk@qmBBme_$~_lucG9dz=lwpKJ{T&SX3i5R-0@=p#l6gBTsI7Zje|` zdt7-3vZlarL+Q*ECRg*l&h$w1n#%|x8@0u)f5>xfxBQ?#Ydfp_5i~9M4f%XAxjC~HJ?1XGw%$f70gD-`&*V+`VUQvq$`6oz{XbfC7v93St#XtK^ zSe}n7isxe>J|5BmGhBziCC6au$yOe|2OB%aCy6uV)2w~fb`p`73=Q)({Z%zU7&KzE z|D$zNjZ(tyq-1Rz(T}*K>m**L@j**xP<_WZ+L3Rgd{&jaE#gGr|9ZtE{F*$}=Zjk8 zJ{23+>8H?7;Z0jId`zE**a5VG4=-n-Jy`~>UpcAWU+)~*A8=mI`gG;j%l-TbG&yJQBYA>Z$6OkTo)13>?iw{ib=1ph3 zKyPc}sVSX56FjXBp8%IMkl5(4apo~#Ry}DaEZX@{)x~)D@SB6v_MvL}$fGv5jLrMU4sva}6eTFL>j`-B)% zIyob}TuPLsR=HU1ZB+z)MM6!vA_hKPo(X|6yn{FA{xW*uWh_#ov7Cr)>%s2m@ChIH zUu>7?(bx2AI}7YXgrtk3todlv!aX6E;sts4sf64gb5nCo|!U|IzI$_U>?~uFIE;nvTngqKwNN!i@`2O|O8*a1nsv7K- ziFhb{f%y7yD&y3GYm<(*T{!%Rw&T28S&G3X@LE=J7Z-r-758fkl@1X48(VcMsBCn=ch|{Co0$^SjLv0w&LSJRpK^id*1~Tc`^x-R-&{_(%os=z&!6b3_#r zQ=n;NY4dBs)$wkQJala(eESlbP*;X2`xK^}+E0$Cm`2f8N5OKlu)C6=FQFm4s0We) zQ-`cFD@8Al2W!}H=d}~|nVqro*kZ(Pdt@kV;_645UQ-E$7bC}~5h+bB{M|nS-_Pge zx)l1xCSH$wJVL0YagN^h%3&_UDv(g(6d>z3y@Om~RdeEV)gq{16Y19#h% z3R5cQ*9^|gNE;8F8xZ@Ms6e#!Gdwe&W|K6)K7I6KneU8U z6^+Ks1X0E=F_D}Z@R1JPc0HY=x#&<>B(M8`f?5JVG8;1^(Z`QVE?|5aceR1lZPC9$ zntu-y>fHA-&)@!wPG9^gi&j)2evZS5NM_Oledsxg%znR=5&$QHaEc%eWNr#*0~$F2 zQ=j_#o{slFn%h7YJ*%+J%2@?-!p8IP{*ZO#XbA1tyQ=mdjEjBJ|A|; z4?r<1LXX-RbsRhmP{ldN2sBdirh#kLPr(NbbfGdu9b&UA2JTh%;^nyS24E zC@_>TJcgMGSXQ5B8rg1RU00zuw-w4D>&Tb3-S=W4BrPEAF!&9^AO73pe5h~$xuq0d zyk}gwFfoQ+YOhm#suJ!=N?E%pd@*U!D19RjAh#f$ z2wKnb$d3WSxcGS6;JdVX_qqx_FVQcHEf?F$ZtX8dIhTVDh7VsEcj9|2j0N|sB}{Mw zSMUmE)WBe$-uNac5`T+SEcph=@eVUJ^^Lebg7&v~*&zrH}8OPwhn1DR7 zfU|=_Zm0d@)WI*q%CM08S#hk>?wzxX9x}qN{!C27Q9okcKI1nuzb=cgb$f8+-ZsAq z2OO2XXkh|J9EBk?HR*?mURdt+WOnb|0LLH#F8FzPw;|MRq-DO5u2S4x8{w4secd7O zL|n>M3VCN+@xVs$tFb&+P2!g_L<-}c0T6Brpdh92<0(n63#&7MH}_!%h>j9%eyi-* zw15^$WP6!2|FGAIdb$`>k&7ADi`*8HtPmBPe)2TSmig{j2sIAH@$$6}2Ef2+q30t> zIuEC_$dXP)eL%%Lw%0+N;ZKO-`ZU=kJ?7^t+|L=+PZq(^@T0xR$-=d9OWj9hLcdt| zxhP9-h=kwS;mo_fPOGQ8p4QcKNm(P6TaIy2Z<#K$c5` z-~{mf?6kF?4~jxe*5eZpa_}ixTNRQGyy{Lbg2tv*%dFQQU}|WO{{<=4{5vtcC+4C_T^ z3_oz6nE|G_{&+EYLAnpd-7VV5#H)i+@OH;lRaaXN51_wDr0tCtU0+VINtAlTwzD2B z->5Gu&|Ex6Uoc-uIrjH=;e-F6Z9N*dEV+1^s00Awf7mU#hzRmkbe+FbcezUR>Aprz zp-L)cVO8H~oR+r5G|6#0wZNO)S`va@1l$rX4%-m5%sSj`+U7^(WXxdmR>9fdyWh-AwA=i>rNsIC>$Vr<}+Ei0lk(!NPe*Dkd!*;q=Sj>{Pm(TvSh| z30XF)1Ojq|WY<-}gj{pxP2r|YHIMA>zK`*+48`2e>Y$fyeYknC5)4sq;ju{kdOk+5 zX?ZP?kHs^?^y#H2g~>zEy`#-k=J^j-zd4AQmm@h~8hy`*9m_QYGhX3oi`Q&Qc~{+M zZdmqei&h6R-e1M<$1?c0V!0?htv?B<4hI zb0$r*IR+{&mDjr+vDH>4nt)!v+0zHo!(i)(hTrwei%VX#)mO2S>)e|^K{0I?o=1}i zmqIDJbeyjz;Iz+3+T?;sIlI>?CWM#h>y4|g z7NwkymKpjQ6QJ6Cpua)_*dY@O$DhK&!rq!n(Fj%<(Pk_R2=7Zuy0{bxY=;pQ6ghM; zH$Dm6%%4!w(hjWmp?=8G$~tLb?cesMzw+LC+t}o@@elUA<1sQeUaw^#j(gL}J}-++ z*@lz%M9?ga%HSH1D+9s&(X3(ZYefVLLwoz~-M~p@`mkSQJUPR2LzB5rp1w1(j3xA5azfA!D&)XWWj zTqg`dQk4r^f@vQ-G$lZSrx6+*+Rm}XV+O=v{O$QI0RfTW_sn_xH6u5e8o|5c{btr!Zl?U20Ucl0(v!qb&S5TLmy5$u z6IXNd%h*0H8=PPuK-K1Rb2j~x#Z$fkL_1J3(LRSeLHEh{#nCCpyRlvfFb>dKH{R zq;K{k`%5^~Mfrh(N|(P6Mv!-FnJUY#MfS1*E4N8g+qC|$MsmV)oFDBpwbn0E_xFZD z3PDc)ZFJl41pD>VnCnI| zyWRxsCow$WX#EDfReq~O<-Qj+@#=1e`A#p`)qZ__Pii_HAu*yyjhwX-dAVxAuD};% zA7QGcsE)e86(9JeUMn_^R{i2Ja=(g%uC?!2U;EQ^ms}CH!e!n9%P%o<65&I};xA4$ z-EjXQj)T`(!V62JLM##c19iv~PtA1R1VvT^SR7xL{KFDwYl{o2a*6QP3#`>)mFpM^ zLM_BWf&&o}$fw&j(6CM<*9+Aqg^t!HdVO+a5G?&3o%+u&*iqzE3ZR*u#LuICDG7;n zXha}*99t3kTo(JL?5Lu!*Qb+-23$Ml;tnXl)+B#{XR%p6L(&xkXXck=@{EW9d&(Mt&$EkfjuYS3}A3h=t zTu?id!#=IHo9&BB1G>vZE&M)%!b~J1AOBv#_`9KC3mq$GXW{QCZ&sMg3(6Kc6;(hz z3n5I$R)Z(Kan)dNcvdDs)(zB03{E!(|*e2GgJ4QfsDRG`U&I{eX0`aG5}%&DEMy zZXUU(n{~F~s|OL2-xl0aZ=9(>gjU4dmCdDJ-!>YVq2Jz>T#L2`hp~KgB?5^^Z(3M& zVDR=|oPocRNW_ZmqSfNtKcSlpn7Z|wQ~gmnTJhdg@HPm00!L7VY%Z!=+*Tweu3=Uw z-oFqEnWfCjk?O_eyAK{Rb`&v~yQf*Bcf5yUSua|9`Zg7O+!_;Cl3g|_H?w^hYW@C%Z#{k18na+83nWl-xfZ&a9b9C%9Ga=e zH)pAt>hdOk1Z`}%t{)7lLT#D&l!?vXhofD9yAsVd0o`-(vIpn|BwQHv%KQMYWyl%ZN zY8_Osz-~T>*NMZ2_lto_g_SZVlZW{ySiGRO&__-HFO{-6qZXT!h@!Wjb8HJ3OUO z9ay;BZMK4`?7MQ?_lfYrUiS!uucY<;tG~F8349#q0HyT2DI#2l$e_jW%DaD$i;ZJk zswghRUYJI|YWGF`;}FZ8Ssm=#X(X#c6Q}F_xj0Qwa}?C<^5sy$g^n;$Css-ju7wCz zdL^kIVfnzro|(e^qAyxiUB{nb?{{#IwscH*HnA=!5jz|ARFX^|F8{Ux(GrRld%lYE z>th6&0-~#6+hMXViJ`nO8d_#Fj~mUf=u_Lobs6;8r%`43S)epS{?J9@~GrEW<8_w+jcHqYM%3EwTN9UY2N zaydn9b#6Rq`7?;B)#9|*H!zEjlX+dm-wBK;EcVSvI^6$8!?`vN=5kLK2oCXP;;WKVg4U zasF&3z^S177^{WdB(b4m1m-}@&`R7?_BkqlI#_xwgIe>(kA@(4=X1ux+2$+^`^yEzjaR z#W5@qgb0)<`X`qvI6rJ77+ft~`S0c~T{^-Nacq1wy9?q@jX&+7p?|5QLg36`S|gb+ zTg6qdrOtBY*QaPpjoRV6-AfbYv@E#<(5J$9cXkUM)Bfb%{(8PcMs(n$aK`-kG`&{12O z!dyeWRLXn+>$PwNR7Hf8T$R9wMdM|^aH8AYTDxmWb7`ryq7@GfszwQnj;mJ~x2hm+7DM7p(t8>bq zFd9EtK=-{1I;!$$^I?Rf37hknpy3+={U6GC1qovRhY`f%#^xWhP$hT{5^0a6e|)G&?U(z;z*d{LttEN(&9%8U37DuN>24Fh$4a2#)xoEY ztoAq^v@~G{6exp-xS4st*YF)|D89^M5yJl7UEIUltvik9_ z5(dR`2{*9N0|3hAT>XU6cxY3qM@37slJ=f}^{>4)zG+6|+ZQYi3sCKgxPpYa{_e04 z;0ae(JZqOd8*bO?|HIW+2F2Ai-3~6n1Hm=82MF#GT!OnxAZUWykl+^F-QC^Y0|W>V z+}&Mg=AP%R`u^Oisi~UzakiY^y}MV-O5dK_$R&jAfv-p7k_SKm zxkSAT>zrt*k?)9X^nZf)-)Vs*3;2$_T`dj|V-Uu7_&Vdp`0x8q6#lzUtE}6ANi4q7-5~-P$cQaMXl_#V zHrHhIs&AVk{!2Jhcxtzm0SEfSe;3?yoKAL!3yYQ*)~dDJ1xo%LrK~nc7g0X_hAWDM zno&;2Oq1xsD73b3x?4-2%W6WT6vBFUxqp=#;2vi=>>24#tN0913Yj4dA#-O>CcKPR zQf)(tJ?c1N-l;a+t3+Ca;fWQd1RB23IT;~c$8SFhgxo6a^IZ%B^HvuO3r<-6lLPxMWCkW&q2Xa2( zSO1dwi_7Tg1az65;bh?Wo8m>Y`-6^D%L#`%<u~^*>&D=-~!J|7wUHt1c*@&H4%Ufoh|U%k4-G^SR+X5|GIbbA_vX zb;DweQHT4}?iJ<-Asu|KrA}y+_8m&V@VMPu#uRAhD}U5X8eo$F(-7(wcF% zSmvWiM)41Z0N*=Lr?`Z2$^+`30H@ty&t>732&tys9_)nh1bPH{Q{@-$Zqb++K}Ik7!aRx6PE?H0(Oq zBxD>0QA8=MZ*ds4E}_gYNyvs}m}FrNnyoZDbX(YQ{HOwr39Zsbb0)X}G|CT;|GoBR zhn360x2l`%C)JAhpR`k>gw9(BbkGo<16%1jwIDj_P(2sHJDbaEy-ewPZ@&A#UM(&e6Pr9?nde*!yaT*`k#< z9UH9k+=>Yn#dTEE0h?n3+d5z(oIHQfq|R+3VV;=Kt-#ZiM{2A?4}ceO1FEuqbS1X2 z`}Y3C`B}`JX}s5N5D5whZb~A^Z6Q3-PLV)CuH7ffSD&zRmzbF%hkq|MGl#ccf5LVf z1AC0Q`prGPd0bJ049XPt!ZT>L?;A^C&=@nHwqL480q;^^vxI!CSJTFfzWDq>Z`gJN#y-xA_Z^eBO;QV(p$dmbyN zt~u1-L97;CZ^8O|I%KL=RUsMc?U*Oby~RI_UswzgK}g147VpHsTb!tm4lPb^sG#i>6Gvw`uZUH3FzuK~2DPaG1q`dMad4v7geoqI@a4*@|(K~GnDkbRe z9fA{#RJUi}y@4GbGJ*N zW(fWo3F2`l`3^EufKBJ}^x+q|5T}3u@sn^zsK@}+e}{CV zx2k15VjvVdRCFRrb$xRe9OHD-_qXl~_Ioh4Pcj6u&R25z-|{zE6ywY|>!+UZYZmS9 zr019i0dfHiRk{cpvPHx1(FS?(SRZ)uRA7Z+NhV3qs@ZXTM1{^Wj7nUr0@6D$z;$eK zkl8%`anbNCbB=5!*mw2Esg(&vXbB@E;V+CI0(UnT7x71o$!xfVIm;~xR(SYFOrd)m zTJ!r_z5p&a#KW-ZjjTUE+H4P2kpAJ>_XRQD9ddrHe_yXElF*-7n%nBytzkw6#>iC* z;@TG$gj1<4Ck_9bG#d6JR%c-j-Pv&2_ zz&0o!eO0@(;R381a4%_Y@9wpy*lK1m5&Z7v=jZp;2P7@5((u&K!3S4p-EYw|a!vyE z$8S|5N?}qlB2Q0gZQPcYp0NR%r$5lgdHZTZ??~)nGIj}Hg~%3j@T{wP34L`*!!trDSL$*>ym z$%WX(aI{*aSLDly*6*olzL!PJyH7?aa!oUZB1z~h6s#}_Sw06EEy=@lhnxVl4yD@q z{ol&aL=}h^{29z68!9wgcHr)M8>avf0BWu9VA>AR>d|Y=7@VAmz6lfJp3PnO(+FAp`&la+>i!;w^WR7 zH{6W3?BoIOMmRwADv9dXQrplUB%(6X!o&o*Z0}>H*F{2TK_6RMc!W8U+{ny-P>LS90gL#)H+Yv7=4WyFYF1wSnv{QwKTO7{9p z6*;MDJ_{i>t8dqwEWn0FV9gYtiz_}@bu+(Wj^_MxoBsnz3`qua)t@PvRrn3DebN2L z`dZr>?xo&@JrT+%RJ2Upj#Rj z=(XMRd@Yi)e$7z&*N#YkF=l<;pY`_&uRc)w#AeXE3FzG6ZF6Vp#8bmrAE4xSi`^dG z;$;ZI^Xb6mLqjV~7lpg%k;qMn-91fV$-c#afZM*IDORCpW}_rK8`}_jzgaEQn+6Sy zyZ0Qgu1)h>=ZnU^6p#~H)HgoX*7To+S=H(ENXVA%>_q(8GfTxlWd6_*bt8lDNKX-r zeJ{C;eY0pzuxcXQ=m|_U)C9E?v2aFUtj-Z4GaHn%`y5B;-!AAfwnrdt3dWbmYXz0B@z6`kT4sXQg2_nmHYG5bN{Tz1 zoh)`x{ORkHz`$Cr*w=bp2d*lWY++)-KEIWa^baAtRX;opsLq;&8c`BcD3K$bJu9l=rj(x8?%<{{Ff&F@)pPFLVk-s~ zE*dc1$h++cMRr=zQOg@XdX}`Y2kuEF!WkDr<@;IdeeuJO+ov=>`8DJVfwd-Vq%LJu zrOvB&4pjO^UKsx@BijMh>~>R}8J7R|ROyBHz$$elT1k9Uq6I04N~c}aD(bO^@&pb^ zyrXdPZNf__m60=ZQMbjJ3zO$$rOe-LT7?!$yFo{cVk&B6hB;!|DRdqt3c;DDtXs14 zFs@M(BO{3{oTzAf@gjAZqGZor9)d#kzM~;4-L5X(D3YII0zFYLIVQt#N5RQivj6p; zgIN3qvivCNLl=$xl#d?dYM%dSh4cLbKQDf5^X&op_SXA7CUU6NN051lu=skqU@HE- z(~fMwf|NPsiW?cm4{HsHrf$0}HPPZ1HP}H6M6`kXE|;0zHq4v7roFVi@@BE%9*&I$ zmS7xHUgI@}t%#lECNc)Gn#swlhfGS&T$3hl%T7b!1D>}$LaaWM3G$%TZ%>BBbrVyj z8B;MwO?UR6&~Kw_#-Hd_u6tLJl;-+A)(=zPwl{F`zFEG#ID4;W+4L<-b`?d#H#=_E zd-bCiV*i8Lq@qoZXYlh$cXndu4$XV!p1*rduU0Cw9FYH}WALsGaCX)Y+lS=ezQph^)1yri*vaeFsOGC z&#-)jZ8n|Q_PrVA8@{tU+Q#yp^AlS}LH5s2MO-xr`R_T#wM7SACp7%C&kUBYX*+7P zAn}GV1*6Y3Qliv|A3;vAstJQD0-4zr4cQ_|=P^1V--Bp4eRbDUgz-6pBq1!lRx|R* z)Am{hQySNkjk!6ENg9^3JI?<5zC>IPkx1&;1JO$PS?MBZdrb*-OlvKh;6T_oHi4Ie z-dF{g;#u|#AwA_c&*H#2hopbDn}DL%_D%*Zl(~9BZ3$|br}p&g;d^NhA!+FIAH&EE zJFYI&pFo96pPS#|9&a-r@)y$hX7S=R6nxNem&gz83@0MX>z(R~d{oH6G&^7YsDh73 zRH+}Q)t0PLOb30^#pwWZK^V{HGGG_{y1K%bmpZq<9p6e?#^5DUGG8x4O(lfAjwqY3 zzYveh{)70gO$zyY{oSM8lW&2VmD+>j7r<-RFFy9N%EpngAXEF%YzzJGnUcdGHYPW7 zAu59^=lizXia$Eq4lPIV;_{2!n$-<>gQQ-t*B)jWB(7w4pi@p8VO##qkZN}=h3Rsm(C6%wy5`sj4+`X zChuT4Mk-(hy=?L}UW!v-dSQ1)tzqmiVK5b%g?Ke*Th>YQElbaqfJ8l)yN-)7UP^+{fBZG>YNDWeWFEqGG!2N{CqPAwi8Xm*l}uOd^CI?Ge{`|i%DgZv!%*ve zdDm(8FC{kL)I@Up%{^UVW21gvWzybXIy;A|JXh3q0@uSF9m9B%fPiPSx>lP3Ms*ts z0;}qzlk!S)>d-ksXlAqu$K;;Te zk?~h;il7vE>4XS%^)TW>?nwM!8v<)Vf3v8cW{GpXe8dYF#}U#|gI_p#xmy3C{l)CF zl5BvUE;ZKcx1EoyV;9Wx*o=H$%xBcLp>P9q%(||g3J(fvORMy06<(4_`E`1{B}B>J z3%45lKUp^y-KEZ9z~1?_NH_N8rwRlD2o)giS=TxllbgcI!K^ivxif`u#Iq3FbMFh8 zCwpWoIi*$6sMigiMFTo^L#=NUx!{WWctcgv7}mvx;z0B)tv}_!sZT&fC_QYIUgHog zDSv&NzFMT-2$dPNr&GO7&art(ZWccJBZelk04Bfo$)bKZsqrGEcp9sylKz;OZAYL8 zazAYajbN#^9Uvedo=Ub~6juQ5Uv?kh1ficcKjf|cck^cQ$9d~!iwty@wXA!yWP9zW zjoM`UZ1b$&5#@}qihC>9P9V>`ZF5^+;}mW>;f*kfh3- z6Jie0#K5YODpKgJ;z-8sJ27{0!8LhVUIbB@GFAh~k(O@#{COxgVQx~>rdFh z*BXR?4RK#PiWOc<#bSo+bdLd3GG8k+?nsurY0j9l!%J`PJ}aH=%NwzKBUJ+`26v-* zZZ6U8-q0)nO@Z!@AKTF#t$f!UXtRa1|EW6*tFT+sZ#zc`@&`~pNe1n?C5yH(8|g7v z-vIWLzR`!@t+&w?ZwU?Ei+tG1p)yHTr6(>{TfjrwhEtTFK91cEZSqWIc#;`^*K1SG z^sfR#Da&PtsBMi|vkXujF5~x=S+bmT^~|TkM{JLEDyBwObK)syA4 zs>cf^-)g|vnEX)_xsZF1@!N|y%%zKebqLs^kEVwWi$)D_8YBIrAy*C}af?GfmQoKp zE8dsU5RD%X3e&Xz95y%K6r>6m{+=KIF$}@Zski(EAel01ovvGlj@yQTA3WmY3e%fAp!y zy<5*d9xu15f+JYg9az>M;2TQs=iM!+wqWC@8;Aoh@=^M1zezb=Jz72KJ1#`aPHFZ` zT+T2}q7-^GY^G$2IbKX9b)ivMH6<;6o6CQmAEqAGfv}~9B%9>feOr(5(CMph19(l% z>91RWCaLoBj>AXG>4$HjmyDIzew*zb{kweDF@DDYM2VW&1FK``x%J`OSU}~5pZz;j z>L-45TBk}I#}O%IsAn2x6@K8y2mXRIYTUDZEhZ1a;O?~(Z;)q76L5=AUu3P#z?rDe zNmF!j(@H(=ngx+=PQS%NQhEv=|*eim_2rH zz;L>6bWFM#TngX+dzpp`7z=R6Tuly0LPQ1rFBd>pxFuqERv_0dBRdZHa5g>t33Q@S zDU+I+8P)h#qf4gH^7xk@H~+nNfV0DwYdiJ~fti~t z!Em|}yVNKT{o~K4MweOGv_3i~obP+aF_`3D=!_k4D+FQDe;a_a5jKxJPg7Sf+4P}3 zuLE5cJm9g5 z;-jq$7OK~$wcTL+YgI#bW4v8o0v^1c(bnfQg9__}M?<<{1@R8WI zzkNK9bn1dl7xZ`t__=fn=cbIqK0BE4IQFRQ_%yxYR5P z{j?AsoIvmvpl*$ckj56g!g0trROZAz6QfAa$Qap0!7G6&Zc$?O3q-QxJ~Hy+_~D_j zPeRp)dYrc;6H`)Db#o?U8euX{(1d6(|ECq0uAH?A*`%1E$3P9HVJBOZTh^AG`%6sd z7nmX+7=LU5+J=cumQcgz`Pc*kDJ`L&MhU^WtqcX(OSUIoH1Fmn`8+`6K=pZgPj<+8#|PL7PN(%wmmV==ia!&W zp(a>(AJDpq5R`za2EUj6r9=X)<4lIKFCc${LDkPL3a(@L9x)DbN-^<*$HpmTgkK`J z3xqKYl_>s1ZuMlo%t*^=y{Ph@&%C~E5_9%C=_zYDV`Q?ed}ahKE^C{z6ZQ zD31uf{2{50OXU zA5W{4>#RD?+)*JT9qKp4tYM(jGLe)-UxFW*SAg!kJM z|Gk7mDWNNoPiwkw{~jtkuXlQ-h-_h-1XSO~KB9$R&t8zy))8xuH(BSJ@^`5zc^ z!&5ztr|wjmb7;S#A2^#9GH`!}$qEc_uX`<1=}hAZaLz`0eSiT%;E~PCUOF&jk1YRg zcsV*XN;r3Na+3es?kH0IuNKm8tcJ(5x>2{up05KZvFu8`5C&$5`pp^REef5`|L=kRlgp_YR#L=Z}%C0bZ!r4j68Z26&55`N8aZX&$+$;KfmfBN^|GpzXEiQHy%fK|$73c4k zxc?!B|LbMSEIXL_mQoekbo%e;c2F zO4tOLmbC-QEf)-BD1aa&zn1+0&pe~VekF7^TEehjT}JF+AQgaOU+skUG**6_JX3XV zSsdxk(NX)gJ{L+o&Wi=on^TNh*NC3lTKt`*F@`*ylN*F{oW>jDmSvw0GW}wP1}eta zYJhUHeU?QTOV^J&*O1Eib&X!}=W?ATW=c=({_k-Q#48m&7iQy^^x7r1fUIS7&@?T2 z-ufUr-IIg*#3$;%@v(vu*5-)#y4>(k<0g8&QnemymJXC7NZ*eYghHEviILul^C7nj znqOnPQlQY34GMEBcy$;-Ao0=+oZrVJvOMs*DdG=lZ zUT+pO$Lyg(cOg1oIhY_;QyYPq=@7jlIxvyqyF>YMnosq5%JOv$8)p4g+_fEGg!h(H zNPO*qE)Z(h_?|8WOcclVbhy>+pn&cEfO>^HO>p6Q*&|Gs)sCrZyp|YRhGc|)X|=4j zc|5b3g!`T29LB!kf2Qtu^ivuz>J=S8L?z#X-N(`UL<%^MrtOGrqajKR0UIPiM!*S_c z1_cS2R7g-kxlw(I1ZoO>QWB%}7&T*mp7w_m55=-yXTrk`a{nOV3gaWz2~nvlCQDD$ zU`BqbZb$N&uE~Mp#2QM1W7cJ%YeW;)O9}LJ$aH-2fsNP)xZo(vkg8Gt1f{rqJC!DK z)KHo;Bdprg0E7&O3qwr;v=cDsrSJmt`Yaa?-B|)U8(e7ZCLWs1@$@>P5Fj#EV-Q8{ zbowDPFRns&D}PE>z7Bg#uE!pufYcxSv3ed>D4m)Ap>fYw^O=0!#pQNDR6OU! zx`CLfSPMNK4e<@zf{^LZWe})KXhWSnakIeeve!|-!mQ1`dAb5#{NmgrvGRzn^PBQm zNLs@|?qkEode%>fZTvmK1z3!FKc}Z@OBC9#nl8=TbAO$> zsy4lq#aS%QkoB$$`TOxbfArpVxKX^H>1Zi)a4pVbwxkS$o@BIK&iH$+xLCo|iZu2? z11jNncvTmIbR<4)RxX2YK*GFe#BpN`Abx4|653uSH0M4L1N=99>SpMs`EfG(6Wmww zPsx>3Qq7M3=t}&S#8`TtLRiId5nBm}+pvUIBZP0`-*d?Pn6nO)`W$Q9AVC`-6}P2k zxx0*{G~H+sA{8`8KX6oQa7O%8VM~%3_iXuwl^2JOH-2h20tB~9!=;OZjpq@DAf==uc3_Cq7i#u3qRM%g*6Y*q}X2Uem1)jSeg zF0SLnLhAb|;o7qJerI`w=K|{RQx2!M?~J0%bxcp{jfNh!)aCtwvVm6tbEaKgcrmqr zveDG>nKMCUC!D*rx)68SSBWBdF=2Yr-ul{vEQ`+d`MozVn#S~Xlc1ABA|d`%z|5@av`GtecCJ+^;5UoTm(#x=t}G8g zW+nPVnFM^LYiDJQE=Bv}*)cM@6e8ZM})Ss1^PvU7_lgc4R_=qw% zyI12KD<`&75u}>#pMo{ z`hb~lYR5~ogK8^SN|k$W%3Tj)tzr*-|E&N9rGzv002Tjuc;Ly8u{Merc#0RtK&at! z2iSupC%35<7MzVj;_Ob6N$IWJi<)(7>8qe7sZ`UWuwhBET<9}KZb zuena^zCJwv{HNnV6oi9MINjHI)V9#p0D6_clo+1*`xjp7%})9rLEVNQY%<&}LFp-r z_r!&%H0_^`4W`NrR|hMdAylLNT|!vLf_>luzx}0;wRuSY$H)0sBUXny&;5Haeu$Dwh=H4 ziq*BWUyM_~8xreeQdc-iKhYu8dSfl$&_D(PCA>Z5*DQ4M2losLj2M}8M6M9X8w-1c zV1Rzaj;E`7oOIwTADtfJK=vZ%WB1s91tZAG2j8oTL16?o^S}Y3FTv#O82s0G#KvHq za>yy`-QX}^q1@%xV>8_7>knhoAt^5xJlH=N&HV1(*&sVN8NAzO(q%tq6$idy$NZhzaKB`H<4_lm-+pA zQ>5icMx!AM@E93JI*@N~x*8sfm7N6aL5?r|Y|EKtdi}TdE$|?QDePf3juo5=(hXou z#0`q@Aoi`p+(@Z0p6QSJ=jhi7HqfT~u?w(>4{V{u%jFLJB=)-k>og(F8HFE>3hnR? zj(~XUk8c7&JN{@R?qoljoGf)cqty?UKxP;=b}@n9u~cbsnQ_(Z9muo|8W-ftWFLasZB5)}K@1C+gl5nbkWZ6Nc1~WZDo& z`CaYo#hXAJQVbm5#{=x%R5UVyQ2P|jgZ7uaRxXe(g1dnq%Ignm|6wBg-vNw~vG8X6 zO%sZAA1TP<5h>7wu)@+jORffV)0Fse&~tk+8*jtEc*8gusRJgl-s2Hs<w`_-UNB~L5%-0lJ^eIFQ4QhA4 zF9k?9A3;D_(`5hsK+*eewB808g-ns<(Y4l>Ca`mY4+X8Ok7xH%3s{E8hf!}dUDAd$ zz6D!IhL+SDc6^^Eo%*ZBi`lWH0OQOMZES=|Ax#46Sm{?S{p+l9M@v%eA%~ zgp6o7%!osyw41&fRk01F#gw3I@DZDQs(voK_!dUYpM{wb$&n0l%l%FXcKQC38pn6G z65()U&AXc+Xf(@({nz3fb;v1Si$CptE@>#%@E=cWX>d0fjsVYdFjh;S*m)fOX$I!^!#YX3oai1jv!cnue8UV6x}2S;iEK3O?&JRm z>a}W#*2%`L(r~i5wiI38SvjZCqzxK{-Rc{ajD2gX?J5d{2hCLdXtl0$qd}+>!ZZHi zB0v<#QCZNLj|dMZE&rpOI2X(2)N1(@hfGCH2RU^T%i6;;OR1M}p@V25=*VMG~D9 zboNQ6ZjTX!^B2=o85vB4no}OFo0BRx2zZqf8*jN>+&L|mq;(aio)65fhj$l47Y5pq zNKXELi>4iUxy0@g<>zHOM&GE*NcuDf+1e{s_Tv=9Z22428>|#Y{w!X*27$7*EmYq> z_6$fxnNqoA@J$3MSLaeMNLlF8CGbbKf>cX{+Qg!PQYi$~HRc~qfIrd!Bn5b%L;N0zk|O&yis zqzgUUjzG_N-R^&ir>d8y)9cv$)(~0;YhVx;6LTqjuPrfALkvgx#T$X`e};9-y8u6| zMxX9F{-1mNpCeGqR=RNB^VN^>@a7tN3ctRt8#A{int6VoSK)8+3A#;CPalT_V>Y20%`#}9qyV=6qbN3ul8 zAK`#m0vH0C%z5J1TWiWa3aAgt9;?y3HNWy-S@{`%Sf`o}^j97w=cvK|Ada&_!T1rt zK?7q!s~K^Yrt~B#`h$UhrJ$CW6Wn}*fVQXSdjT}9?~7K2Q5iq!zREa;@bN(mBu{X$ z#};7H*9@e5Yc6~$L2hc2rXbu0Xzg#rq~7Kh9Jp^0X{I@CbDe{az0 z`^Vu0A^Vxe{V`}15!_e}qZOnW9`fuAPXyDvz-TA_+tunxaPPQKj}nh^0a#4Rw-mIPkI`h)wIo>(0< zEE>5=n+IN({rQuqGClUPFY+H(u3t9jeBY`7u9*2$e!7~!O0hi)>&&#HpK_YI<|GIe zaJs@ZISDDkW5@Rti|&WLJu#JE2d2Tou0O;ej*o?-$HGoMhY>&$eDs_CVFzU)GTf&b z|3grcBB2@dul>J>i9Zc54ob*RFVl^G=pOuplrZMiwC0)A@Td$&-a0h%-WTQb3fK)l?dfQu*fFR_)z5yeBtfb)^KyyTD($KE~ zumE%@AD<{BFpbY24J(73Jp&_!rXQy;@k;gs+cZK4s~MI3u=|&iId=7M)rib1995{Y z>Z*^?o(P!y{L*gp+rPx}c*&hG?t#~Vh8UIy=;6}?USHSM)yqPqx205UT1eW(n5%WG z2%OtYeQ)piVgp=kgb<9G%o?NE7QNiIKC{BKCH0cgaYQJkI@n8wIGE?nI?t z1;xwWTNMfQU4Y++2VqmA!DzM)q2zY%{^%d@KImC7{|t{@bnHKmWTPohj8VaFMI1VR zY108CD|Z+t#92SVIlm3kkUUy_B}-GImXiqf@PDmk`+OY}8XdFI(*C#rq<}NB%AS0B zGw~CI*G_uz!^U`Bbm8Fr>SQ9`?UUH^RfYvnT|Iz`lsAfp4A0yd7)aQZgS%Q#yd;8MRE@=zXNl*x_V3ZdApu?L`3ESuA$CA{) zxj(65-)05MAEo}aj`W&l>;ots=Ega&45m|AQG?#fM35S(WV{BY!SlH~Pog-kHKh(6@Xf=VBQf(4p=zg^~Op`jnK*OcN>!n=Sf$&gYzWg+$?=ihpZh4&n z*wB!H?l}*wn;5@$FJJI_;B4w|N)%uTa3bp$X7rjC(8oJFV@^=ofzw2Z^KhHrh` z$F87RqU06Pd`TeUwmluRE$CSU0Kl>&)>3xlh5$p7`QY-J7j6smv%*qw0D zsS9lu-;Hq>@SI)ySSMb0cdb~4zx4(TZiIlo0hELU6bB4TWsa@?APtbICdHq`0Qi97 zvRG6JV|RK+0`UYMeq4o_3+zCq@vy89gN$87fUw|yk zA|q&Zv!H(MGxFNTx`JCm!i{p%PaiY4?K!nUiSp}!VJZ8zRzB}n)8Ro zJ5N!gA@b5~;fBdi=O_SM4Ntc@HqPshOEe7?tA0g9G^f3IPkb=?NA+rK@KQK2D7H|P zeCm>)gR|H520>fht%No9cT`kia4!*&3-fGY{Kj8p#{@=cJ*5?8fozp{OcrcLY8*J$ zs%{$F1aX;UaV80Q`K#2ubX)VMdW91htwSv85puG&2^@OVr6i!1;Z6`4KFA9^4hK#N zFtR>Lc`Hx`&?Eh)*&Iu8+sc_0W^#6$7A&^RPhmU1v30R^6)S22!c-aZa?DX}rv}p8 zp&)MMquZHEl#4cHu{lpprdK%Y?cM6LaXyO9Kya(aVweQ)+BJgsblv+~sE=4p{FFv~ z%uOQp&#@^45^QY?S;r7!ccg3#(%-aXvY$|Y$RV|o@iMwdRtm7A2xAem%5O=;p^uIc zz3=F!jWwadPt*<6Y%dlUApZ46CG|=AvP2v>efYhJN(`&tjw!#f7sJ4rPs#%U3D?Yx##~tW&uq&<|!D`9<(@UqEG4(Eht_TEj{R*zoCxS@T`l&5cGBJhe9bDU+kDItI5lWYh$U zS-~QyBshmy5Y*q61kdoyH*?U}*&N)ua& z^C*pK`)T&6!%v$++#;$e1aLtFFU*;md%hS*uh7rS0paMQ1u&OcI{kAOwJSFAtWlCG zZ9XqSQ=RG+6R4NFAo1aJnFcOEOc46)mL(Q*{UN zuYb%1q_-O&n3KrbxGqNpAxKQL5lteX1AqjpWx6jF(f*2oAdl2Mo+#+n$FEon9~t3& zpL1$(r|8?-+l#NOwqxLC*{>&u7Lb<>MZHwonq0$=Bo9~*N|#~P>OXP0vy8zw5D7M0 zYPrC)LvofGPs{ziH)V$p!PK;7@39WZkh!<8L-K~vTuPMvLB^Bfi>6dAD7D5kni2tG zL?L~@8$GG!Cb4NvU`L2Q_K+;eI5m9H)$#w6nyj1%_~$?pZ^%&sOhZW&P{K2-Nhi1K z&-!H$UokMOiEr>rD}S8xBnLOLK1opXlxSeKz&<`pavV|Li)Sore+Eh3$pU$Y)#9fUDaUd z9OeM0Id3x7|86X3sq)#<3g~I><9d!czBPw|?d!D;N1OnQPQ?_h!(is;x>U&VLk6wi z!cRB`a@(Mz{b`P_{#5`U(o54Z^F-(?49Xq+X@38k!#JqoTiH}VMcwfL_+9!hS1x78rn|uW-!OhO|w?l2n^C9Xdm18Cf#L>j2hpC z?OQ4R_b3tYF1Vw;h=0_r>?RE6*h5s2FL|=+k(5?pV&|^_r{JvnpMjFpPSjGtl3aOG zL}WivfUb|i$)PVTh9pKNt(R`A-(AG=08qP}a?Ht-XQ*unoo>TGmRp1{Mmdz!)FTQhH$j zbOf9nIs?SA!Vl5-Y-_6sDi*6Wm&&x`uKv~xo>cjn7`HeU3I3U-vSd^k7baNHyNuf} zM$DC81{I}gXG~>e`}Dmd)zi-X{_DJ3g43Gb;Vr5S21N>{rqN z-$*FS9AWvl(BEq^%E8W7%vSq4lIagm{)njcr$3j==DB|@@;Oim46&*YZItH&VV zVk~s;v3)2h|3t_XYoI;WDSM13iYDCkBJ!c4akjJCE}N&xx@l&k(_|co_s&h`=;#i4 zd-MSP3h*qZ{<5mP*(VJ|ac2-F7<*!?i7>adI{flN92<{b1)kPs0%EIhN6OM-MWyL? zPwI`VGsiz)*==`nK8YS?$Vd_#l2hGv{6_ zQf_YX{>^dc0QB9T_>Ae+UR`gBtr?PX0;%R~_uy`^y+cJ+8(u{Rg3x{$ws4od0+~LM zN+smNm;&arlYmjDimWsdA?#VyHwTnSi7~wfSXm&q*aP-y#1{&Mr0=3b4&?FM#=2R~ zJEQvb>JvH11!{5Vndtc?zTxX0_eAo1u-+wYAU=pp04lcWAQ)!isxgea6r>|JjP)nZq;-C83REbYI8D zciE(ff^j{}=XOoURBMmK*>`$C;{cI{d$Ia-vW7Z$yb)UWK7wYX*qZQR<@hcydS*R1AVB2|!3Z zL)jFr2Mv^H`iPi;Gll6qfGFOJsc~{axFB*rC!W6y7WTAGMD{-UYE@>+4ot|kdn8Ye zk^;%^w4__}(!j%PIQM7n3Sp2K5i*0|FT?<^77_mKiGh*>vf5u!g;L>jJ4M)nxLAQK zc*|4Rx#sJdqxqnDve|}W+kiDJW>hspV$S&5_r8X|KJ2RUq;7|?^stX|rou_!_wl39 z;VpLxRzLnfy52e}j-dS#Zrm-nI|PCScZURb_ux)&cMlRgxCM8I;F91LEO>Bt*V)dy zzxSN|zO(z^Om|OrbxqYH_ui*!v%l_a2s+Fnqn3fX5N7%qDl0y_YX}^vspeK0@GLUM zBmjpAzEmhG%--6)!O{cTFA%rK93R6nNKAN3vT}co5j_vCu7r5le>f!X+V$cnvjFjY zc902PFmpn|0jZ*hUM4E!!v0p~$BWbsk1OujDJ%vY-<9It^Qy1v*&= zWd_1%?MGsW-5ryTsVHC?ab(xgAw5b#vpaWAR))=9qg@Hp)9V72v|Riy#OF34agitL z_*f=KOEYY>M%WUXAPHh+xq1K8J0?u^bF1WM%c~?9h44?@O>A~5G;KEGE)aU2cpw?j zV-LfWyRu~Ajl-0auUrOafhPI!&Oy^zQ@?~>0K@86pR>IynKE05>xuV5dYfI9?~jF& zpvYzhwUVo#AG!-S@j}?pmCYnwOjJGcwYz?GzEyiI9gK=#fWv5favSfDce8za>MIwe z)n(h?GFEYV&v+)V6zZRS6)yA?10tJ>t#QO;0o9k2PGN>LAN&2btOVo=Ym6DX*;#moBXb6*rnG7%oCl zA>nP<1OcKcrW96|i&@(V!FiaN$*N++Q&r(SHs2F+Oa#SS;#5o~0j{?>L z-N@xrUV1qLhqkdlX1{LTbb~1fAepeIKKs>3=)gzfhokw5LE<+)L~0-f&sn$==vnU~#)Ppyo%{?&N9J*)NU^&Isp?e&laQ6zSe9mEQXnt{v z)>a-<$0V~^VpZzCoyP>&J#6SSelZ|?E#g}#Zg=Xs09)=<*Q(0pYsjKp;LM1Lm8Wwx zGJA#Kfea!Vu7HzUPGacqLx4b;cP50p5s*gaIRwaxw3Dnj-GlEqhtp^z6+r?@ z%iqG&iW(L-S%5RYsBZEcX@it#MeAY?08#w*={gi%t3Mq&& z5`g(e5jY&R9*Xz%#EFp|)gB;f3PK+p9*PPik?MIb0&=dOrVCU-IDgb6tRQ{(qIZ#u zM8y9MC_ylAhI3{QKU_aS=_N-UOgv6Y#_8Xxr<}2lC_niBsShNY9~bT*-~9bQd1%96 zGm+BL(%P5-I|Y$?j23-jK_n%?-CjamkMV=#ah_Bm8Bu<2-~`Y3xno?6)Xo&78myM> zH#9mi0ODBS;wE!i6#dmbWJqPU@Dep5kwQMiqKLgs6{&%5Z2P}h>+%VK5^zqQ=7RTT zAEr5Zmb|OnnlbbZNGdj;e26Ide}*2dlh1G7LXJi(2J8ysJw;JXzo)$wi(G(^>1u`l zSA;;2Um+R1n2klekdI8|`bnWjb^6~Fc&ln25Ey5hsx{yVW5P`P2wHe=zuv}6$5(n$ z>c7Y-3E3xfAt&P#AG*CfJT(=i@hZ)OIv%e1ZtNzRy8K325Q>u5Zsu4I6GgW-58AL` zpd9&Tsvs6y0laAA6ah~|ekL*$;uo{}>6qe5S!Z)NQttz<`YPO65ZM~8UZCLdsjx%; zVOC^Q+sCi9Y=Ri2m?Gd_OO?9$;o~%)d?fuQ!bJ=M&s0bt7+}Km?iWU`zoD7&HnCBA2>z}Qjn;Pv8f^c*J}=tj^QKg3 zdGwjct%iT&OUzbzJ=M43VK}k8i;=WfOvFHf>SN#Tsh9i@e2}1*Ophvzvhu^M%v@@h ziN%WvG6kcCuYw?`XHdX&S+nxw)#NIjLpqBbK_aqTc(7n-(sh1GoF4PO+55%q@LIn` zTi7LbuBS01*N3*Y?V8%eT)FHZDjb{~(G<+KQ zoxwOEFq><-h5vNZyjKKc`jEB zWzk?_t?_>8P~g)KS(<{ATyxaTrX@Ccg)c?EvPG{SuHaSoN4|8J_XC{kN!~N&p+GPK+d9t z5GOwzat}P89gRN3e=c$v!sB2cz4)t&i=#>=FXLX}+lA|Mg9s^XK29)`Y4w}Fz;98? zZmsK1MQhV|wXHOf!}jE9bnMQv9# zQ+@pXto~2Avl`lcu6-I*vUyo`wY}TtZC8)88MZJ%APDQnC>rp8eBwxlS3H6BhhVC^$3xHaSUX1(kM{| zl;_Mxc>~5^aJlOF6*jof~eNkNun2 zLl4O(G&0*pzUa|s0MtMmHwbrEM zf8vm`=I*y2l6f@#nOZRG*3u5^pM;<^8MtBF@(c7d)ad_2xN}H>^$8b0K__k!unR%+ zS!v#6@5RCSgp90$$E4YwdCS`;Nn=8lSp6s>_eq72obBzjdDyO|zRbkJNwZjel>ApD zeB29tgDNK0uK5L1Rju3Kw%KbQki2bNO$GQ@C0DYkjy}dlyJteT%4epl_el{HPJ_5| z(;mhM1T9o8B_4KoSGJn_l)t=`KAOfw7cCu-X8y$75*+L0cXz-d`BFWL*8ex={rSU= z?%C=18;;&@NHJPDTH0`D?E%X5X@*C~@5|&2eXGvECX7i*nFY&JEDl_`wcEGhYP~Vg z+z%9s(pLY~eh6Wbx>;Xs9L#6Zu9QCM*VLy&xZNZ*!tBX7op7uj) z<$XExeEDfUn)5QYc6CemH->VstOrnvMi9)2yOOY+I?9Nh%46kbkpBfU6p65Af}xY` z=pcXJiQWos(5?7C^#WTrB7pUdqvu)5hj$ArUEpeQUKntJl?)t|i$c5|duaGnWuHM2 z{zDKmB8$sxi*2)*6GWuAPM#<8FPW)FuaGOWws_8>ff2op@#-k)Gznd%X{k;0$mRbIh~8emS)0@3sfYSft_@i% zH0!twhBH_4i!9ETI@)2APr}`pzw(-DuEI$F3@;J6kpP+{*++Hhj5 zFD@slzx?vOI2$6>!TKER(Xucz-tW%=w$k2vbL|MAu=PedbExUg3z1Ue-NsF>5TgIk zGzsEvAiMelRq_C0g^@nSScNJ63xoj$U(L#JP-}E7E#)_8B#i zhPzmW_;p|QaIki#AwC4WRIyeX-gO5QrUwPyj=k7s2fSoft>sz&r%=PaH@Lo}V`h$Y zm0o(7rzQI4=XFbgUDE7d-vFg#V%tyUz_*f#JKos6g80l=NSV-6(A@k z=5}gM@x34DT=23;HneI_xZHn=>e@ z2;`#Q$osz~HCr#1RBrFyemFbm=Y8=oGKBwcSq-&f)X@LEtcJiV0H_^3dZGQH#ASLH zPeqdODq<PkZ$7WRJ^W(ShR>%xWa6=+L{jgQ9z%jsF0gOI;D8 zJSu!t*qB1IA_G_nkbXFY_YWoJeCEHfR$gZNQ=iwn1t_hJbA0`0noFPM_QsvMY8&RB zZr9gE#9u+(x!u$7lq1L~VRb@`;-2xBA$!jq$7K#pWVYlli#;57RWANV56nST#AL&d z8!p{ixxV-QK#%BPJ_=bhJU{wRO%ZwZuI*i)`%{JPx~i8`$jvUoj}tHzy_uswb1_gc zXxMNvI4KO|Vj$T+>=D&MxI`9An;HAOk*+cl-ZBXuD8^ARaluO#f&&6x57xIU{jM!x zrZ2}uT8$nC@zIR80s?a1y%WF(S;Zc{ zJ%pAHiq1!xz>gojWmUMA@9+I8f}#c?QODG_Ht)U8;=5r3V-_I2n~_Tp+&M1dA5VvM zuV=Y;0zQfid)Z$3Rgh<`(}y{^{-^cY)7-Q|NH0f(>CU?U^YZ=L!l{b%^0)7Q9_K>uO2HhglIK%6J4794?*I;nK-g3Wn)PPJj+`IT!}G-kz3-kH)PK={C_6 zqpbEke~$~0kQ9(yE_r7h$+-V37D46wS1hu1RQE05YkKi?<3jT}3I=*``eR#F&GKF~ zBn?Y1!pEbt3a18=hzx}Iw7k6-iSK^&QDXc}@&7Fh=?xJm>M*a6kQ+%2^#PIpF+E5U z)(vsxYB|ojw+EAXpZ3m>tPq^#b>QUsvmWHVX1N zG27QP1!wTjH*bs%TU_6(iu`LRu1A0xY~ZWV@^*B$@6=!!rpwknvHK#v-^Gz;M&ys| z%>q{cRRB)fDUjH*Y@$NeZC2!+Yb9*^0o zpMjO}nFX!wVw3l1j=eAieljvr3OP`0aL0FZALL!+vf+BYun^s*RW*0C<|k(8`?6Yj znA83HPi@%2i%+v`iiZ#md>|-SN%q`PZ*;G}21!0k8 z3`%z5pM-EwuaA9axVM({npPv0pa2*jo_C8{Rce;#kKadp$mR)%N4^TzdSt49Ug%Hw z;Ru%Us3i<+cdytwNfgEkcpy!r!*TvOIvU2bYff!e)2|nJ(~SKQ0}cih#x%vALKa7B z=H4wd3iDOuVS)u6?=dF(MvC(9l(?3gYMT_<1q6KZD#l4ZD~)8cb9ufFh`|A=l?-Z= zWXn9C>O1nvfBjk1#3#nJz#so`SGKF|^>dTR7>(PQU%Ph&jsz&U>;9cVjNJuqe4t>o zk<2Ff1PP|)xqtHhL6TxC%RQDQgm80)!AEh4ryd5<@ynPx8+;|Lk|#D5#2ZiySz1Jg zHWe<=qAJ7Uowna9RlM4l4nMgI7CJ#W{&|%>?xa90)pvRN{?!PRg|lh#C(5*6c{^)3LOuj;>K;Ld$-`1;P=NJ)xh436MS-BJ1MnL^21Cp z_?-p#R_beL%{Kw|e?hg&D1Jm?F0)}fEO?4~#Bw4B1`J6;tYE#_?sm@(U!I!7l7HID zFD)M&3Oqm!@JX>Dwf2Y!ntzelyK}&HN!2fe3OpK{W@_l5111=tn#K*-tD0SY$JA<_~-L!!_e{9HNpWf-7X-=)x`k#h-u#R+50&!;7;!LA7% za96=Bu%=^c51l;c9ezmd7oS+tLj!egYS0{pd;l@Q)?1_U>6t3Re~d6NrT5e&*ks`r z2~z;&1Tq$naooKIyz5Tpdr$pt%VC?7{t3+@H>60wpOr8oq0f?rm;0S&SGI06o~2@m z$8n**f;iGDr(#k=Hp^VDqP)tb#&jMCZ~iECo#@i6(DQ=rW>ac<`#moiY>bTMC?%!G zi8nO?Y8Vtn!zV9Z-%U1>Fcbjj-HNaWE0N%OE1SB(nzkQj1C$x<#*}IrAs#K2) z`ZB87#mw@uGS%=GtZY`BW1fp_UtXSCP{6XMzO}1P0UTMr@h+R}xOw=t-F6J)E8Cla zb>(-INc0>Z;anCc{V$;PQ$}4^r}%)e4)5&6g<2(N4VF1V)2tTm5x#fTGsZ=ecOr`!2g#f74i%C|nNEmZTw^rPLv@%R%uc3yO4H681Y zCqnoey1O);HRku}IQVplw~s64t$`BYKR2Y!3h_<0#ZkPPBD2IbEm8a^r?o=GeIi(# zq(iG;(XR!HHqXRJG2(Wi6VUOeSLKPX%@1a7(-Qk*__4?FC~)gL~#obDr)y{U0lnh(*&1h_-@!8KBT?ktRCF^g}85X;sxt zW6ZW`WY-v!AFu(i%es`~I)P0oqgCP#-@>E zwV;la7AG5;Nc^dy>Sf;F{-nH0vrJPGt|eGiB^nu##tw=$ z)K9K25p%rDF)3ZZgRfh}!r@yeja|d{jJ>O2`r!_jNta2!yS1yeyN*3R!pl58OAjXK z_wbofdoK#A(sC{wmJ(;Fdi%p&F9$o~3KuFXHgyFB4w!Qj3O@qMU|FN;cyf93w%}ki zPkCvj7Kz2tvuYfkjvlMT5GJ%*>|ak{#JY|H3I*oA)B8-gyklyjMT{m)oN_O-AyAQ< z{2b9-P20lSW*}vGaFJOJiFQ;%^bhFQ9L6J~x4H2st=389GfCi2WM3-V3DKRQXM}06 zU_hU1Qmv#Hpk(QMZ(5s9E@&NXhfRBE$VT(QV!QyLXlX&w!F$&yZ7FK**60qQCtZN_ zm8{#1lHlRG{`GasoLj@JcOGOAU?o5ur|(EZcsHEPFtSdD!$Ff@1-@7c3+{%~?Gq|s zm9Y1X63IU2HC9+SjBZSSYUy+>rJP=1WouTvBJA!uppyF62#R!didkSY&n!|4i~pEO zoD$XS31r*1cIi_T31W5G?z>spaw2Yraw`0t2#{$udcJ<5NjCkMJh$!q)l6eCorKcd za!>bd(Kf;zbK)jKXj}1j^^~j{`$U^V_}}r|eik^uO5L`*Rd5)ON|OzMsO=l z``ni5+K~=c>WCPvYhyne=%sZ%PoSBqi72~YPm7hs5j)SGJfa!~QD-blCqxr@tU182 z^Gdz$7f#C4urx`)Z~olj7{^6p2K5$H58zQ(H{2e`$_2BfS*s2YCu1@#@J$2Xn7VameYrjTQ-eT3v4EcS^!G^7jp3{LC37(iO0Oa<@A7jhjvIQ|(UzNkk}0*ksjXkxa&F$em`K34z69 zmi6VgZLw$LFSZwn;z+mIieKGN$M+bDv>(q^Z7@AoTl4Gqf!al>n^~=<-~PP}>M1Fo z?WqT&?rX0eyo4d=xpUrqZ*a-jxeS9!Q04LW2Nl)6_dQSjfl_gOIN92HXQrLJVRmyw ze4Q9q7|-0UCLbI7S75kSo?LOk{?D85|4I!78V0^OaZHHeh*DLnexn=Swy;PtA|g~s@BV0t%oU#e_CPnczx zgVnj%B670HL-*ZS>DE6eO77wZYy=(@sx1T0VnO(#f?E-ExD+LoU@P^=;ppqxxbS9M zTvvW3xBZNXQ*_m`?26e-om;2jOdIE13Ua$$m7AuI#846j(_di`gP3idyT6kGehQed zP~GyoE=?{ zLfTap?4K_>uTk!9YHotcs?}@52BS>o_7oDW?z~}ffN!lhUSOjOi!A`)U0T~ONX|2{ zY^l;Sxo<6z0+%@psj{?&UOC1YavUk96lsF>?cMr1<9DT;A$-z0IY8M!hm{+j#8N_a z#-1*RaTs7d3f*w__1*+#UAYh~}B*_dn1{DzV_H(>7?zv+}#6Q%% zgT)G`4&8r!zL;i|LMu7W31*)@RVFMDXBHZ?#)s&g*=_epn}4)-kH7}J>$mDr;p`cC zCw|3|?KSe@{@Cb0IlgU}yDfz>fd**8h{CpvND|uyTvbYi9p6qaoBxi@oQ9^@j3+0z zPSe08htLmV=JJ`VN_?Si+26k)@_gDj3i_jr-L{_^bU&OyLJWgDlD5ZNFn6{ZtN&+6 zMzwt~r$g2nYVcQ4vxGBah2b)$-A9r|VOQf)ef_oXK%lP1NFpVJJ6VqrF4|I^ImyMD{bc2eNL|Y`ljNs+ zC~BY}*NzPE=)wF;ZVnG_@cg3p^i;kJpfK=6$i-I~duH zq|oQ}jd>qSP~x1NKPe1JjUyIbdbKt|ds84zAT-J@v{+K4Uk!;(6?+>tJKuM_n&e2t z%fQiD*F{^?T-mXh>4xwFTurQ{6!|o(hNdBoHIe3Vc+tj9ZOuzMb;lcKk|U3?f>+9k z%jht@m4+Vhy&P6_pG==s94*pAR=P|m{567JBERlwOO2n!t7_Q3=SmES!qKGE$6$V^ zkq&RzTUxG;JoXfZ0D-iXccg4QpClBt&Xd9qDWp^=q|q8gS`H}82|rPzE>E<<^;RhD z)|nKt6G8nQziYm*bIn2oF6#2_KI??obUTfFgh#h67M%32_oClR)cHJI8#scDShBbE zVTovh6a$%P|Cr-u!I@mizZsW5E?-~u$H|V?I=B;(ncrrQRf5~uq=CmHFUNhV9xkBW z^eAL<82s=C&_8)4C$ru0Zh+YzVzwX%r%e1V9r`sgRzD0tWz#HeL@L;zfXkzoa}O?QjuBexwrwT9 z1c(foLK)9|5I`$_pI!jSYIb*q$$VqegbQrgL34Jz{n(HI71&AcxDhU&z6%7Vt^XMc zFDa@3@|49{lQj-f5~(5>_zWCa_{_^+?A`$jO?LxXSkKh9?oE~2?5v)kOSIFoQzd34 z7+Z@8?DJ#Bl2Ij4f^r5#43kWc#=ET>1bjCkR?qsLD{s}$ma#~LSo+(Jm$$a}cy?5V z`9n`xm~1t)4H1Cx!OLKTRdxdhEU7swb`BUir4P2#)+}$WL&X_B`n{65i|&%NEn2u} zu(*+ATw%b5$q%`zMwB*Y3pgAPqwA-N-T#a~`+3;X!bXt%_h++53uYLjpIbsqhnwzx zLT4M=VP&cOd>`B*IszdAdwSg2nU39z9{6{12t1 zVyD9F1(SVYxje$Jio{N#(undEOmTU-=F5Ai)0`(f0mw^kHWL**44|DPvyc@ax_62~ z3ZM>U^>dS~Svn1%S0Ly=6qu-W(bh+g1)30`%GPs{ESc6$TeI^*-;7}iNh>`?e!%mqOJreAJu9=)|$Qy-9-MNLQ5-Q>!oK zvIIC7Rs|7;;^q?;4u50dZVM8fsa1bxE96>UVMz>@E}nJ$l$?BxL)3sPN~Wd$6^RSZ zO%t7#D9i40wL_Pd&q9kX(IWzmVeT;Ik-#DUV{W1SEX$18MS05+2H<=kWifkAIN!h6 zeuP#?_Yo)(c)h{nFuwJWY%hl{?@PowDDd5F6(i&>=*+7$EE``PacfH3v747N8$T)y zFrU~Z>vm~kN3GAU3-HQ`B}jrwHP7OXOEPmQRjY6D;esn_f69GRO#Q~N(M2HV`KR-s zk!F|e;@#^gv=iT+b)WrR)Wb6W2Wml)Ox`=6-}xtJ=l9#rYik2->(mj=-7{qvmMjnX zS8Ic3TK-pqS~X5A{6Y|4*o$YR)0{JAcmG=Jk`mJe*q-02&T+!8Gf%@$#LdW=MvtTz z9>xGrf9k8w-*`hxrni2;YjxPSGtrs3un$o9{rWU`VLS075ZKE$ttq#5}^qFqqbU%VvV{w`4{IGj@Xt+ZG2Zqi;@(pf~msN4LNz2jm< z>E`rNz(qv=XFoOT%z^8t^+8*&o|FdNuPs$-6Baf*_CJC&b-)j#u#J<*Ei%;g3yL9)GV zE2|R+YOb1A*In52K*B?gwaUL{OVC54o62*u!~A+`zA2lf^&l9y>toO#7e31`u{w>Y zh}^4G{PnzZog`9C37qd^2lPFr`43L|`xZ%D1%yu~DC@b(D}~dgjmZo}b!V zJh^Lp-5oq~c{FeyrSHdK4meKfu(0V`%FrY3|Fry8sPM?HQ&Ifu{<;%^2b7yRc5mh% zRpFio+Tva(!`*R+$sAOTTB0pf4GSN2d}~Ob)zBg!eiz*#HA8K&zO#hjwPe5ki4G%n zz;XWU&5qnpUXR1C4P^zjTlOF8jn4;e=xfxHaBYd% ztDUCfI)$@@QoY@g?siLLug$9La_2t5=Q(FLFQEYqWP$!rnse9^ro+ z&5%CkZC}qLSQa0w4e^~YO+0*?)zl(_`V$_TmAADOzKJ1Mf?}j!DK#8rib&2biKnfJ zhr1B`QRk$Cs{lFWrM^JSqD&GSUiuAOD3*SOIRkJ`a^M+cWoKi4cP21)p!#7W>}+y? z71D%(7IC*Rieibi|HzYy&z5L4IF>77)b0GBKN`)ooSAV%v`E-*8r)TG?^<3y0tCv= z#o@jH6msn1V|4WW?6TtWsCw(Cy8UI!Vfn}>R`2xm8vbPZ^&igt2ua4qJY+wqA_wU_=8{-i1o3foO*6H@wuoM0)iqFnJbMWx=9A%ow`UH`;=JIanK0ikB zm7EQ{4NXTWo#(Na8Vs@Y^@-cU5YgV`V(ln-jL+t*+Y$(+Ef=_qV=D~Yj7I*6gF|&~ zp@o}b?@)KZ+tu$_4D_@bIS_`cAV`HCx@T8ep&(&sG}*7Q1Vdr(tsd=rD^eD6 zWG@Ez57^F}b$ef+U0(c(p9{h+<|E6>F4jx(`=#S^iDLSBL&xDK`6~rXwctVZAY3MD zjDjoNwog4zW8+MuF$`;T!EdWH^gKolfolAaHPP4eebrOF?&lBLyAZpFt-_5C zW8i~WsW>7WrTnMw8VITOmc6yP!Y_H7Ct`U59WMhgGt%o%5)l#_`EQZmF-8-mx@D^0 zZDbmf5_BGn8M3bVZw8gQ(3{mKn+#8tvSrH>v?Gf{DLcxX=%dB`F}aE9??sPAHeV)1 zr**&exZZpH5xfF9&h+sef4RlRkk5YYh9pO49N)*y4P;hsP!SU;>N<1pKWhX4A0v@X z%ruI6c6z6CpMwT?igJYVODq?cl?2(Uny+yPFHd|<@CpqHlHRa(Hy_IMKQHes`9p>} zNdRWj$W3_su;P6PU$@y>DedDB{#g|^jmDkLtsK$d0KpEm<2@FSPOr#-uceI4sn_EF977klVw zvW|jJ-_P$+9H+qj3C3oi_H{ibAq@KL?^ZV_a-ZiP9#WfDLK@aRYD1B;ruPLC8^rce zZai`YKA$~Gi1FTn9-?uj?a|=kC*;Z6g8|4y!q|6jS z?I0l8FMEB^Tf2EC`Z8fnZt&Dh@8hvo)Z5#DF&!&Rjc=thSD|Fz3c9p&IT?=e9V0VG5519v?Rv66bA5pdRDM&tC)Ums zqAWg{JYNp5QL&8FJa-*K)_N|3u>r(Ei4s#xE(&=Bz}zSWZrj&4R#e|~smZmtQIj@# z%6+j!Al49yIr{VfV)eK3JwxNhm(?GoV19xR>hORm-(AG`wRNiwcsY6Gn+SBPylL== zBVj6?VQIO`Wis0wg2#clsoIPC`}s47Jey)RYc5O08>qDA5)snc-Dmx5hq3RP8k&US z8f_P|SRq{Q-`4MaenZ{h2Z%hqJT0X|HD$&#&T2 z{83t>0ndq-tuu$x)fyS~koKW;8mqbM#l*SCMu8pM|0F znzsqC`MruIQIz%*w@fMVNq8j3b@z?%S25Ty$Sc%y$4qI%5}Omn=^U2y%Z^Twx+MQ3 zJ4S&?t(M`ke0Gr(B59iW(GP)G*7y6Vgw8I#pWXNBP*mO4$R^lrf@j@4n2omT(XGO_ z8KT$X9a(JT;@(FztXm4^iWuO>tT1ts$~Ik-c$AfwNkr8DYl_wD54k}ZFh01}@bYQR z9-NR>F8Cs(?E=Yy!jRj{+PAh!YZ|GKM1|##<@TPI;y34racGufoNkn{7#{m-BQLc zXo`a>LX)Bi(0^fN6vIsZ1a9B!j#>N~;0X2h${aolDu#*f+cIir$njqx@t(@RM*1@C4B7$e{A`YoxXBBy+V?NXXw*W%Awh!(wis)az_-TOt7x$$;WK9f#8 zlcSLa%;9F6lRdwZQmNh0uFGyLw6G~4T+_#|qO@I$ixLlMSrw_%X%szQo~<*?XA2O2 z<^O$&(z|ZJt^}sq#S1CvUE)873&$itB>4W4O0K>9{)V=Y-I8MvjohAVn{L z0j4g#_QhV0pIy!euRaI{1nV_|(5_o=`a8`{*o<6A`Osy^6Q0ZteH;z6yjk?( z6Z#>*3FGDR@9VopG8hBMElSCaT-sQg)uLC;k&_|HfBUpclAd&e_NoXx|HA(YpJ627 z@rr?;&ZcS4moX|;q?D?PAblzCniZ*ra07HO!c1dRVgD+3Lva5L0`tSusT9H{ecD`4 zt1VsbU%n2N36f^=&!-X*n;=FjeV!*-9sEESbCU@(>%NI1aXessLNdC~BvUxBwDlC5 z;P2X_`$f@(vh3jY9?Haw~s2}q`MVn}7R#Y*apdrCGN_Nw2e+vD>NJcOe2wq5xcnIuc%l@g@obJlm~HzX+@ z_~HutRX_00{-LoHZ=5p&A+|lCYaCqIps=)Csx(@{78Y$f1p_wn3zdA|Ki^RITIcaj zD>k8lpehl7<~wSdM545SXX-v`6!r3qC6lJkJv{;kyGbR{$JcYp1K~4B*Vq|GZJy0z z%ujTQ&5sC^Zwx;Ew)*_LBQR7cofayv80OARKXf35;K)YJgE(_=jS-9z?@zcE zzzS+XSL3&ZC+lR%!avuPRknFv^S)z6@6A`Ol*+^{{hsmnnf~i4D8Ouo^o#ma4gV>^As-!@zROxcvnFiDIPb z7LxIu=Q0@G-0lc8S=qsdC21sp(M9oyMzf__yDinn87R0w(FGBIZ5sig=fy4y9FQ(f zF)1PBzj~(rs1sTF8{GvM?cO244{EoSp`^7Z8?E?NDu_LqA`4DEBf(J1fFm5_JK;61 z0_et{svBC*nFeP;-xK`1@mI~VTiO+vr(0@qZoDp0t*UO0BP8Mi1hlW z79(EsWE|Oy$?PeF_=)-_H3S@LdcL`G)#kiP>3{C|-%J2IPj_&gaUqv~Xl}Mi`Kbt+ z#q2i|7#%xMdKZ@ugFX7x^!l=&S;`ddC09;-uomCq1g7z$KF24%Gni5; zi;qiZGHSh_n_J7pEJh~NZygK^Yua72uHjxejO>t{lX0BqZpIs5&B#g=w0ux*P6}*w zg&=R$=4Qjgw<35I5E@x$MI4{_)%0X2)szk2F=!MWuYo(%qY`vWetCrMu6gQay?TN{ zB``nR<>D_YPiB5wld>d>oc?cAzY;-U#%luE20iR&eI7;rO_7CsaB+fP16XkZ_J2l_ z{tRdaWF?0?Mq>&AUxWH}L1Lwk7<=Y9)wF{0TcBDYf}CT=O#)_);L6$X>Ns~M6{=jC z$m2eTfvb(KXfgC-*#6TrHoQ^>RgL$H5WCq3XANtYooh+M&p5J@uGdpKL!#uB*@gQ; z)emp~@gzw7(oe^Wqd#fOA)e+!!M|%}GtgaM`jf&dY}a0u^QJ#T4GW=ic8fgz=bbqD z6?Ly}Bg8!uA%p9pmngGbv+jEk*ULZ+4VB&_=!OpuJfe{~mx2}LHlkX$!- zFx;IgYgSj?R|~9?>+y!h*t8>o7ac4e?y-ODt8f52#W0(;IKSBSw7c)(xbT1^CSx>} zx<+U4yQv$GkBnv|B)qYkz!k!F`bxz83)~_Db_5PDK85Hr&i)$21PCleo-tGnwdN>^ z1mmxg9)xyfeK;czO79eL4LOuH>xSaUlb>M}rxEocDgl?6kRgmzUR^olbYro-fcy~vcK?xB8>0rUJz!m zXba@)0FI@yZ}dn*sC4Xzay=?tl<9M!7-2daciuDBh3WHeh+oP&`Co$4e}TJBcoBo3 z+@HLA9JkFZAJQ}yoWtij#J5w=f*)qLkzAI)wI-uOET1de=UBf?23eQBrO8jS|=*!5$lm z{QL%>k&ZaZLRCN7K2QWLPdEs+mm6c6a(U>R#`72_o&!Ewna(yc$ zYyEu@5g2-LN?D-Z_R^dG`j0^Cf6rvD&2rbT@faTMLNoQOfE)JxZGaCZFrYmiEK5kT z^ke?$PD*Tzn+$M}ae>4C7p!w?;J|mhf(~$dD(=QRN}22ZQc=RUrwzt#DN2~}vzq@T zHo@~HQPUgzQOY;}E((YP9q7WN_Eo^Y8|df5l!N9F8@$B;zjgS&vWAWdj)po87t;}U zH($>yJZ;c2iUGU^QV$ymM#{!>#;z#oCxl#NSei**O2*IxjT9)=e-v(hT9=OmRe7Gh-`E z7yw@Atm)_5Uzioh0GPfh$`mAzu%wGfy%8WW=)0f@WvlnOBMmZtA@W1v>;@sG?x6Lw zsYg|Kb#X)qUWkPbY{oy-2{4w_hm}C0l|FS&g|m#6$=?xxP-A4beeKj<{Z4S>ttsTO z0^L(lv9W$XoOrS7H$fb;l#4oAzx_$0L5Zv*Q%hK&rG3(tm8@zHO*)B{m+SjvYbGx- zv9^R~DRdynU*)UA=LI}PArwC*>eaU-Azh`31(l1c?1yE*(@T^g%kn|XuKnlMbC9RW zuC|5Dz5LWHZg|?F7Q;%1^*uYh%J;*K0{$R?>2pp_jP8@v&FxXawhMZ2l72St z)Qu70^N3RuV0%-XYP!&ng+d2)D-}Z*pGroX8 zvx%}~>FGh*ylV%iOd8J~1r?>S*c=!{m1E|h#??6+n7cGGs0W#smA>7crhg5+S1weZ zn+m@T=cjbp=-+%$dr&O@C{FPJb-r#!I<@p$4J=72EjO&J_E5cpmQqn^%@ur-9lRs# zD`gi&EjE5*^Oq74T5s7Vt=0kk$I1G+&?JLCzr01^s+S3pLT> z^yvHI(w6)}0l6Zdnev{m@YXk$?nT`Vr=@%8U`$;G6}S0|TG3n-&@87RP5{~in0$(p1$&>9^CIv742 zuQV3La{{8y-@PnM+^%vCkH_`3=j}hSlTqBXE#oLW%IEhpRVt;K8`;i zxKd)X3urab=4av*o^$TzM!Ok z-GL1Zy+zJX-iMWP6P-H1X|LQbzr5WSr;0E+hI!|zjI*fX6ihB~qG>ywV9K?b=XvoD z52Iz@IXJzCqc{QbvDmH4%M z%Qb<^!y~ds3EH*Uf^brHqI047z=U>BZAZ_t(r(g4Lva}HE_p?>Put7-KRgutQ&vyC zAX;auzog72tnob!>6^KUT2t}(`1sy`uPgr1v}$J2F$vKXpfrBdA5wz*BUi*E-DT-c z9H~R~+MlZ#(PU*3w*HYV6X)NW|KWAez%cf1v$fhsqTiNG?j-9?Dj2Py{Q}Jy zF4RX8ABw8g%I;q8Jyb{jdS&T;jw1Whp^MRj4nXZ%+C*dFBz-ljsV0{^Qri8T8_F$!0 zK?&)WmhSHE&Y5}F_ttOy|Ld*w7VE;S;SR&>v(GvE?C<;bE>L^K0&+{<6QI6w?JIM- z%{&pYi;CXMF%&f+RfNAbm^r8w?3ljteN%&yF}=G3b8?KT%T%w!E8%44{~BlYRh^$w z9oYRGCSP2{LhX3}ml>pw2rM`ln=ml=Ytinm6P0SlW3h;`{87!Y-gzEAnM`3m-u95H z_%Hosy%eHCeZ&vuznG^hOpdeyH*~s@NmEKh8Nx>SdP7smun%3@%)0;Tt|pF9@PTI| zmnXT+hQ7gRo-44j66VA1GOJo9F@SO0!6LR9(@$zSpL%urr@grQS4y9Q3RXZqFLYi* zA@8b_WjIk>KkzIGvPY)ZJ-TpQn39b^d*>in{PC8#*w7`EE=1D;C=m|~!X_8#U*2{B z1oig%IR%?G4`)ks_3yf!1g$1@wTjDX?ss<_{-nOSF2U4kwfw~Jgu{e_)^W|%;^=+| z{a2O#mqt(3gSjK;10-pN(EW*?H^tY-PB<@kvPF%Y)r_<9Z$^;>RU~0}xl!J`n~=D5bSeDq|1D@ZnZi3W)AagL0~kVAU0>Yi<%d)1iffld}!OI2vX=po}W0sF5zM$yzO{hs;Pm=BFgYb zHOG19c~JOJ^o1W~p z{9NE~;7JUGsXK+2qrY;|_3gmN?TBsZ z^YVD*=lLHR_ukbL<$8TzwnfrWHho%%7f&bs{TzJvF~1@9_#$5T z_x$5sg4DO^*BF-_X||2~m#;h~iX0gM-I`6Womd;}VvgiS-6i%b3+s0Ew=5vDb8^EQ zsx9ASME{SxixoBIpIL%^2 zb1CtdIXGy%*&CJ`;43+9ij+GH%Y(v=)+Qk@9rG_YKm8hm1RhuT3b=;4KXelZJ-pg2 zMPVgc_r&Lyvi1&8_YJ?yKr=7M3A9p?ctduy=yj$W5pa+kAi6ONQZcwe9#BiK!35I) zo>tP@^xLChJYXK}A2dQO&Z1NmNffZ3R{JlZ`=*d{#>B~)l!8>1&f$_?SeH_w##Lf$ zg*OJdU2SHw1_;v7Z;z{g&muS}3kSJNKg<-%CbwOL$-L=*iirVC4A5cA!I8AhV3u#d zX{ER1=n;E5qeiF86Qo*!Nh~`#7F;skuYG1?j=$-e=00OhkSR^lG*>mP;)ErQ1Rit1 zL4HhFTZR7(cDncgQ&jtIO4uSL;=*y~9yf;oM;RG-bYHonW!8>|EgC$6G>{y%I|0hk z|3_+!bD!U1X4%ZwP^e20n&0&!mwc&g_ytG$JNLDO%XTy6`= zE&pwv!JnXcDt2D?TJ+(`B_Zh?n|ONxG^mrDO%(g&EM0lbJMRT3awIOok9XLPd#gv< zu0+VR~}$PAygu$NwHf;%40-F_KK?>$FQ83g)|K4Xn=iq{%$BSb#CaJ3;Q7 z$~diO%Q8Z~CHrW|DU!kli(aaRxgP()B&tZ_@l@j+9$xW@LtHhJhn@AY{cc|n@Ta-c z`7z}BeJqK@?Rh3`cX)aqMuu0_{q0k%pz5VHb>Hf)07ss!9p&Rb(dB>#l%?TLTUtw9 zRdgG_*IBvRhWXpK^!d64^ED46L?Q%i(~Ug{>9d*X+P81=miy$+BTC({mh$ENDJK!he7rD>2^*B1kQ1nOr@5Y*$tCRk@VjFJlldckNU% z)H)E`>*r)C>!k43!sXu#E^aWpGYVyX3xkh@{$yDp%44qAok5nxk(V2`dI_dq34u`=94#lM9qi_5BnDK4hm$*?p*36_PR`L)LR7oAs@lP88%}(DFvxB9 z>3wojLbYl-3yQ>o(F}F&vNBoSU-b;UEeKZSZ(X{cc+g4aOZ2tjC`c#@di{F2P*=13V!VKXZ z0yj=j@wnYd7bUf zi0%r+?RT<&Jip1fx_~UIg&EJ;VopQoLetz-G9BZHv)Dy9NeEN1^|F)m_2*lj;O(1_ zh={Ml9&f<|hfZMnim3OwEFS<*xfwxnE0P2?WbGz1&bafI_7w&^)`cuPWGC{{eiKMr zFW9~)u6Le90<+J{_0&81z!P@XY}GXRVpcmhPWZPb28-U-3$5f|dKwpFu;wBZQEvNW zFw3`2%=lHSdL>|xbPh-~dtRuTPSx!Bkaj-$rn7l7Egpzo*V$}6l5ohZFgE>>R`2T=_hK> zLx}w({rw*+i{L}Nf`eG$ujJjty)x~kWw$AQ-P%O!Bq7N#T8KW&P?Y)M#BO|5 zSh{BeJ&^m;3&!K>@o6M6j-)Z5SN`@9_pZ(+=<(U^M$D8t(yjNFbn7ql7L6|-&YWj0 zA3lY`C7LfzL!oXK1wZPyw6LTEyo=QbCs?1#U(j@ypo+3|8;w7T*>yDJ2BpD z!x?L?p(&T0);#@vMqMw#3!={F3FC6W-&iEVL@uZfu4uHcW||C`$6_|~0AfLb(Pnjv zoYr(dAN|##+1l;#x0qrzlgG?!Bc)C0#FVFm#@xU$(&^y3yH28>p-=J#S_m6#%Re}; z90t-bvaB$q!NaVla7c1rF!RGXQS{03tuTNZ4^ecRUjeBRXtD(vZF_k2o&G*~{*i^>Wpzn2IVuBSkc z{V(d3mNU}eP3JOZ`qpE_HZg`rvuS(zpf##Q)5cd_gBeyN%qrb3aO24sk|*D{gWBZG z?+-*@H>Jb;J4)H^ch*bkMltkc0he->*|j+LqmKx*c*vjGuRG~4_Feve@fi?ON0%#i zw-5qm^=CH6ktFEsZ=}e0dOVS_a{{Y5XvI?@ABHgledcwo)|>q(|M8jz$akGr7G<-+ z9DopPht0r5Uvi@6gQKd_KUtkVN;rrXg88$og;k^KrIwy!0Vi+r>EC9G$f~gnNU*i zg8s+Ny_%<{^f^x?olE1s+UNlMv364LVi9dWJ5JHvjq7^NwQ*OiLt)jHy8|sGDJt4@<*<( z6Ds?U^$_SGwI91PjMZ`ocJn(WJa$yHN*-A z3EUo=!opdq9T(QR`+d>(apu2A77w+vAVDJVvViNQsOWuL)uA)kzmab^TOz93 zdIYRrC%2*qC*!mF(DOBIW%mB&;>IZO$!IwY0P0TngckmN21;R*C95*FXWHy(q|GO2 zD9vP_v@DB#Z4UH#moAyTOIg!OzK3NdPq-{hIDbKY`RBRAc2|#uB4aR<3Dx3A*th;z zj3rTW+V3?&V&9=zVP89}h!Q2=X=o*lcM^kANd5E-5%PH`dCM$A1zaC99gGHWU)gH{ zY~Gpi`G>eK|LHDap0Md$l%4X0d3^(mc82Ot9W4A{KwE}A{1c2u(z)GVv90+KXvOi( zC%-i#(*(P;L9{I1nI~k{#boY=GBPB^TEx7i%u5uSXKrPu2O~^zm;Gi&4y+a?KlPt! z*cLF8j*8{{y$I4+LEegmX13}%f1|CMni`LXyFJZfzW_}=JXGKT!#}F_+-}mUWt+b zXXm{Br0B(cAaKbC3cLyfF4vccJwYm1>`rt$NDWGG4tX1RKP$m6$@-qOa6=mFd&?Zs z%<+r=sQYB!{i%f95pb}w%q+zx10Z4na$2v$lpdGCxiH(g;ZOTIm*G`JZDNMQyRO5c zMh&E{d;&tMzlc33mVCBt|K6- zFw~|T>oj()gj!a}ao%dO;I&oA5q;NK2&{W4OoQg&ln)k>QR!8eTXx5P?D%&gT=L;A8utf$$2d6c`Sx_r52a>! zk|#X~sVEJ>MAd|>|H{HCR_`B%epX8hmCyA|5B4#CdC;ohYJO3L)W*TvB>|@$7=U41 z)8e9`&ihmFn3<4~feq9jK%0I-5b%R_H5HYxDZB2yiDI)_{mLj4vF*#f31(*IdMo(u zu1$`dbW_HsHt=r1aL;Dt^Tg7#nT=4tiMx|M@kX)Yk+VCMB$&!;=Xc)&nQEv5o=F(h z8U9lp?1-bBe(C_%74SPw`+`g%VE6=nOcl3m#}67j84lXCn|xz?+(kn-)-dK^y5+Ib#w9Y>QvK z=Hq()b7Q6Q717c58rO50$m><7x_P3|=!)OG+gvkOKc5-&YTM^P7WHa#540U5<|5iC zX73C7$Z=q&B>X$hg=AaG zF~bdN`&N8rjKeMI_v%FY16<`Y0(C|b5+d}>NLq5Lp{NX|KR${}-mWg$uitF(fAqGr zS9P_tWB^hM^!4;UF5yAE>z7ji=N5mD?l5dp(fz_KC51GpmeTyTcc&D8@TrGSQp54F zcnTUCzHf-ZRBfd0iNq@xpqdwk+xc5~CeHHs^_jW8EEu#99kx=hM5F4;ApKK2;v%z;+Zu zKeibxj3*U4f zYFEeA%pcm#w77%7HW-62DI-TM9~uY+7NS?dQ%(;KSj&GcwTevI==xNz?DbB$mgYYL zMrX&HXjRRlQ1Z5iA5wj&#ON7s8ykjRQK)9yqXMDnmCaAd4SZ(?W)8n`tmB?3=wFr8 z9~VHW%{PRTQAGfs-1glU&6*T8W=zCpkY!fQ?L%rSLNc=itJmx+x>|Q{jpP$;c zxKWcI)hm`$mF7Va5(j&o5i$sjIpa z0ta61CMn&p1xWRa$T$+Jpo@PDFP{!+p%#BR$@m?WNuy{}orkG&%*xiTl$Zl>JboSv zpVu`nCnLW)qIJj%uKhsm|wF8r@7jO(;sFZR2T~(92@I%%pdB|_f;=0e)-n;vu z;b0B@XnXgJP$ZN}N5bfym2pP8N%q`da-Pbkb*uwvy(g|F>6^Ml@s;Hn1aJ5PEXW64VvL0Whs#gb%rw`}Y1{BOe zYb)=^#C)TiuEp|TyGr%x7g#SLIUy3{?=YEM?5 zdV!glc~d|&*Knzre^%xaxB_f$Z?8kD7+>zFZ+TMMqj1waRxvh;kd*wWrsH9G+B6(E z8)x9d@mSiGuDD%35+!d3;f`yA$O^{gABe)$2oZDoWt>F>1hEG zQzE5GQP}dc@3p&6u>_DxY`HyTY5WY{9rc?`tV(x>@nH&J|7_n<)Z#Z1p{$(qeXY{< z*?#@xOAiTQxZ;Xf-f~Zn3(BEDO4fyXHQ-JVu^*0J`2G8pkD-SLziN);x7gfJ`!BlJ zoBqD@%~MWET1osOB6sPnVphA)eGhkeDx=u~;@TSKuKc$DrXj7JV8I?&90KPTn=baq zN^hc21_Et9k4=gulRLS@P%VcD#w|nwtmx5?Fn~>HJ5|tn)-zlX8QBev4X%PrrC`7!aSg@jfT$RHC^_6d zQ@z6Rg@G)=pk+kMca?B~<@o|)s0czrPTFt%EVMFfL<+X2HggH9wV(O$SN8Gs);+vV*@L=no@2KJ#|- z#w)8E4M90<$nPqCl*mjNDMFANP;mDy>!PZ=FE$55RZYDuA39%6x=AApGDo4&IV4zD z&tjM!_xw4Ho1bTE2EV|g62}B|e>;#ds-%aez2vi1avxN|?L^={&cC-Y`O)@UlzMmR z!@cjr%|+8{gGlFE*B$prvuK+Mg?b1}DiHLhm#E2aCqM9VLw+=icy`vQ z5?kO!r=MsK{^OFoRluK>jZbXOq6Kl<5^r7IhjlEoC>fnIm4$ZJxR`3#OiVmwnnVMa zSTKANdWl=zKyT(5wGGJ;oVC+!nr7gubC~0;biMI}pKTcBP>TEf9GPBmZ@ki{&u`qu z^BVeiq;#}00wK$e8%Z$<#5(rQFaOlA$JdM=`ob_OdO(fBEYM|zHWDN-W3%kRZbkF! zx?ktXzkXXX7CR39qxKGUGYwMM-qbU;=65|_4^~IL20PmwZF++eQxvUG@m77*?;`2? zciE52(V=z?nMRaf4?3>4W3R*QT|Jtgc^*OkX4qnwtm_Y-=+|ggCV`*8L$WEqxC6gl z{8aL8GXeG(@O5QkuQ@$7(7Sh$y{&F^1md~FN56URrE;N!3WBj-AjJDlkXQT7=imEN zv-As-VS}DK*s51tGW!ZlK2Xz>ez3>+i%y9w^_US@eAJ#~ZzojMN+-}nCC2Y}+yWuz z`4oS%5N(hEE?(su^Bd47#kq35cdEt6%E`CRLWMF%GL1wo^-068_;2mN(VlyT;sRfL zq@v7@pz_5Wk+@kD;8H#qsKjmNYJ1d>zHQ3qnn7@Ls*Py`QAuX5M7AAVI_hLiWNe+_ zA&y`xI=2G#!yEUvu=Swn-}B%9Vbk?6p>nbCynkZOj~&ujE*F*Cuv`7SVrFU=%fbm1 zPba@(xmQ95s9qASQ4?v4S0~vd3?H$xEq$2*`UhUpno1E9xQk2^vB`=3kxRw!&QQMC z&QwO+$Z}@cn;Fp*ZxqWFoVK0ShXQI?eHYek(YXnne3V3?L3_`e3v0_wxYy@#Y08TX z>K1tT+Y`bW3`Gc~QMcn>JXk(iwi7hQ>u7S5ekjO>?LNznSDH_(TUaY|M|dc=H4#EZ ziuFCl$??)6_B=ttiIXu>$4pD`cc%!UqPzMBzF?j zk19a>UN8?iu&I%0P8$8Umw|nqRbFva#bv*R7AT$OhqG@{_j+9V?Oxs(5_jZ2(}rIw{yR^Be^4IhH;)yMtD|Hp?AAJI9-*}rgi6cbIg%dJ^$3>`SxqbM-H=@F`TVta$R@e9Uhd@oG~MTvynYVf@mT`}Am45u2u z&qJ5!D4!reG-=i)~jCLyitITv!0H?8(uX3cNIP_|lwVkGZvEDD`xO?5bM|GuQ? zG(PN}VwDm;HR(TRL;l+1Zh8Kulut4{15c*$$z_V{;RZDVmCCndF~<$Mg;6l1W!Qg2 z%>XejT4h)#cXG@2S@-(|9TKX)VDTo@p_a*Sj!}pm$y?=7X{6F>eJd%%;`w%Fksb2a zDw|w-?yao!Rq2s$aUO81Qn46!DT$L|?5 zhf88ZOj`OINw-FF9(_|Re>~%WeBZAm;+cvUn^6xiFX&rInuSksJCmqCBUNCcqbnf! zg-PQf+R(ZGJQ?B+y)YY=g;NYxd}&D5u|m4K8TyX)Q?I0#NFTqGJ@*wE>wW{idmh3+ zZiKsU?~$!zM^pYjT+bj~Eb`cD#boAG(+^t+32s?_g~4f2VP5mf13 zbho#?Qo$$~*CVBi1Md}dlHq(wQf;W06&v?liwLBHgBZlc2ZC|hZPa%b?$9?jwJbN~ z0dqslKN^bA@&zI-DY0S+3f`h!7QZ{?PQBTx zYj=ImMSo{#Gq^KMDQ5f7cqEf`UoJ5E2GKPKMbe3tc6fN z(zMVuWGb$h0yJ9Ua|lm8DV%b=f6E!fg|?k(Zn&yN-1_ z!Gw8mCr<}&>^h?^%2$(jXlm7<@^KY@mrVU9|1m59vf2)>@-Kd;ZBqL~TjFZ*YVlL~ z9(*JN?Q*M_>bsvH1Z&2_VgvX~{E#zz`%#+o*XQ)l`mW4h99k*+R%KSB#g3WdxZ5ux zn>V7xUR;|b_V(HC>}31l{hL~@NzR4^E9 zcXwC%IA8PaD~6c_lil}95ym32eg-$wTa5xKA*WRCTYDseB0Rd?zfZXyXMylb{@g`Z7t;=HjI{p)>v@Z9;`hlLtkVaRh;rtKFyc+6FQI~(MQPLT@B*j zS50pq%4q+3U)znh8Sjd%Al{AnP8?0&+K=>3BBUN4o&RzMXMeK$C=J;nMg$`PbUlk$xrgelj7j5QR=tk+b|#L~F1NoMXs4 z(Y;FVj(Vdh%il^{W@S{1xoq@!ZJy)JixNrq3AAdyJMq|~CE?K|nzvbxA>KAr(je&#R|e3vd^}ynG-;R4fJTn zFaXMf@9Riq;3fiIP&s>Rch~z%+smsfxnvzS`$E;H_YV(aGcysx^M=1T6{$yCTU#58 z#&!%4AaCO^_4wE}XMwkEoCaL+Ha{+3ju;K%d(I=S?4^gBl69g3ITDqHp6n@~C}1e`$N8H-FSO;fkyH~0%#4N-e*hhO>w5LW8*_vMpQOJwERoFncFBNDm2 zLW`RKuq+C#23MAUQ!mXT-%bSJUax0@Wr#vshLM1aNqb+b3Betd95`z_2jV1fqh)W! zXEW`Q2@#XUVFKHi`ds>q{9*(?1xcTHkoxBsblHE5+Ad7oBcqu3+TaIm$|m>2@W@L4 zLnE?(KEuM!Df{!Y8@K|E?747WxEM#qO6G%eQ@7P$1T^3;(1FIU9Y&TuQ|}wzwV~(j z(~dAzjIH$4S$iJeg}!B+%=~J1-0O{Ot1D}c89!R$d%}N?1^CWvnw}3L&i8$ETnjy` z>|gV^-hcQ7c z?&`F4tnD3ORf2RR<~Bu-T>c2$hh_2^E5zAZu|oh%u=?V>w8oKS=MrAG?9pT?b*7ll z=gs2?UD3Yn?aleJ;&%W&ByB~6V*%K#2$=gzGeY+;&~eJjuO_SGM;x>t;yw!R3?Q?P z&FGj=4TCc$W989m$&*|zk$OL_OMw-=jxHi*l+J*fuqyhCJj{f=(^=?bawzC6W9Pv3 zgD;7zXRdx5R{6r=L4!uF8mFFPtNrVl_#HK);o^wlZphvYB&`+kt?e}*d#)L{Ox#c# zr_vvb!nk1N%MB05JizTkrNmf|jzcCYFpgWMjo0?8XqaN=pR?5qi?X!BZ>5M00Xj>jSSiQ=)L5mN5m{{C*`rq|Z^h>^@Ql zmkNLv>-;q(mRBZy7s<_grb>$&Rf5mwIq1W5#R2OddDP#213>O(HOU-yJ5yS#rK~f$ z4-NI(%eIhU#UqlVZaZA??MWpy#A{^m+DmOZdC)!VRg;Vd>v3%fE#AYMFIkdiYc7@_ zBVlUR`z$(j43Fl#7cWhg5!Q@M;gWaD6?*}Q?;<39YOUVoXIqeuo{vW4jmeL2g=Gu? zn+u_{BhyK{{Ul!6k~eMqq+uQ!k;!4w>OWk(isY={mQ7O_HVq-v!I<=q0i)5}NF{F0 z_5Cixd(;v7FL1ly<>_Cj=5()p;FDXA;|v@u%EVU(UAYe>8n2< zepO}C7DrQt6RJHK`fM;YfMj~=X2QzsY+*yA<$TvSDlK=ny45=A-=|hQL4N{Ka4o!2 zT9GnDjm@;jrU(4@9wLsQ>xu^##hg1x7W1Ob3{#{UaJgm?oev~DN|_Sw$qgH57t9C}X}Fh(B#EM={~h*sME)c5-8X`swAev5 zBZTiOzOB87>^U8;&1LT+BmZB<-8PQ)SE6i#Q&W7d}aPP!-5q`sZ~IvW*q1b3)k?N;|_2)t;Y+Is?w3siOHCbaHDhXg+ z^U9%zq+j67r{bFX$bbfW7wloJy~$eZLQ+Tx@=_L?P*3J_s=?|EP`RP3mFYn4kLiO8>=g`@om> zHxg-db|Gr5WRA+n36=PQ^Imj3zaM(yy=&unBH<{Ou~ z3+4<&`sK$Hj%wJsf_I6!^f|S^%)9N*f*p#yy5~&0?Fi}f4w4<3m1V)Qw98HHqZ(h` zqflfy>x4r!%bWo2)K@smV!^8|e+(1b=$g&7foYUL_;k zK55xY531mN0o_zG^mihdNWfw~bIVRB8$a-~K62=wazxJ@PmxX@NAyDDlGn-AMYB(c zlZlcM2U1Mama$TW#Oy&adi3^$Fy^E$K}y(YAFBoqwkzq!*TybuD1 zFK}6YBnY6r3apy8f1?x&_w7~nYBjowkxqjHUs?lksHi^&2jAVtC?wrADt*XX#y6UK zT^MJI?&^d+%%OTt)jRKTGrL!y_og)z-<6FzVm|V@M}gr*%w);Kaqk)s}E6aC)Y{p0gO<#4~22ZCI#p;=+c_YSifBeFxo!{ z{}S$i9J@8Uy;z2w}J%K=Mv3lMVJg*C*p$vDSspsG)z`}ebOP`Akj4Bp9FN$O$M8U#C zLVTC~3(<*P`9Wdo`so03JiZVs0@W6|GmG){s;La-odzFr3Tbc6GgB73w$K6$6TDQE z=x=W2IC|#MRyB6Y!p7RzPOh=r&#HyHLpP=vC|LkxnIJODB|#=(_78=@ubI$OGCuKy zFgCEwn|?xiPKw6}Sm=G_S!?e<<4Lx3^bfv@5ZG?FnMz#+$Yd1brEx53Y=0^&?Y-=^ z*TFmS-7;pRz_cPDmcd*Lio=WeEW8)wB0f%}9nQmF3kxG)(4qa(p?LM@a$SzR?9sah zF1>hiqbxl7CPIFbrIdlC>Z?bhLG9;yuAeo7HZ!Z6!dNeJ86p*}WnaW4Bmdwjws?nn zV^Qe);kSq`fAd6A-;VMXSAJ$_Q9BRx67oh^VB995?Sy`B7BgDKH>zlE1F9tZHG}pQ zj-iW!}s%^H!>D$3l}P&RFB;GOcp(u(6;b(bq@tzPz}B7#~9deo+34t z53+^&(&Uba)!vk~oRmB2XP-T_Pgdmp+#ev!NJjLTClvmhbkrT@jxkAu9lcb3>>h2Q zqDJ`b8CA}HjnKvp7$m9!*^dPwCWSK@Sw5 z24~{xs}QdFwb-x6H*9Fyw7-ypI4O3Wvc=9BpkFk9fA=h&RuZ0kLLZ9Ri0PwgjsD7~ zi;1H_OoIJD35MO0Y=|j=?X2E}lRJpWL5q#zn!ts)9Dp_9rihi0ZO~{gaYEW~?MJ_n zE>|ggYtRhN7owTHx?=j4>bzFO;9aa_dve7;fi%L)^bjPnI$LE_d|%uo_n|>3vCoZT zgEC`xd?UeGALX58aqGAtZ0o5wz#URDYM*y8eCd)m!z=2fvRB-S?8|h3Pb29$$Afet zqI0EG8TGwjpllD%XT(2WDF!9TKL=<(tq#NMcVn?>#s@WV-kWh`&^|(8bT~BxI^-C9oz#$E{lC9(j zb*kwp`bHfuz5LNcY1iv%=RRVyKay9;1`{)A8RpL6v?8VQ2e8qPm+dFoR}rwah?SQe z9hcRQ@9TFruJS!&9ptxlH= ze$(c##1)y?_NH~hYdqcFh9CZi3y`I+IPNgX+Jhk$#?UnB*TptG6cFYhc_f4uAsb0!nO$c$Gr zbBN6T*}Ek3!^j*+6=OjcJ$d^L2j)|y*(y{hWp|eEc)O`&)0o-DWFLO7Gz0b|C{`@M z2Bbv=pUn6ryDJpwFXaQmJz)fFZwjyr%_Ead`zX^sWlsYq4Jp&AS9)Cek4CZAh-BnZ zCcF$spgkUysrMo6)$dA3#tMeZUZi0-|A%eUvC}uDvGAP0g^rmvjXR% z-Q_3TT_dE)S_doO52B$%ge7Xtm}LQp>(vGrj%6`s1Ogh?)=c3M5p37xftgiQL5&A^ z`1m@92=vxp?cSzqFDr63l5y$RzwdcXxv@lAaFlFnN(c&vRqDSABS1}Lf5yY{Mg(Ac zgYmpTSem9=D=TApaH8(8l;E^KdG#|f8!iR<-uF`9dNkwo0p!(>jl^-zdYE`F9W2bb z_ff(FZ)p^7epIj0jN6F%bY9${05-PzjOVm#B=uOUGJhIGS8+wnKF_xik>D~mUf!m1 zP|$8gb2h`rA-JHg^hKcp31o?G*cAF-`q`?>2xvlV z<>Kja0DdDLz$7r@0ROV{LgcEl;_KtJ77JUX^ld<}!Kx{`Wu~~$n#vV9V7PWShYZy4 zCs`U`#a5aUsM6h&5Mq`A#)>(Q&PcI{Ece<~-QePTL8eGS|l`7$3Z8!MW zqYal`omkx>BqWQb?MHP?rEWZ$J|S+cdvqo>Wj!`!>J-;$a;!T@Or)#$Ka=`C4I&# z(Zl*11MkQs+49CYae&zyttf}&4S;%R@HV{FeCNoUN96zw_IF|aNYw`jG>#7aBzW7) z-d@FiL4vRn$y|M_t!s_<_eRL4mk|i)=5HF2DNx%|1-&;IQ0HiR7kg7Y{XU>{1kGPL zBe)F4R}edOvrz~KTdPCGVW@mp&V7UwPM zVx&YH=h;K(Ac`J$T{Pg$__{Cq>S+D|u|LuH9w-wQJ~g0m^0KoD*AF`KsER(>^ZZq_ z%6xy$@QLeEpKHcnmXZjXdx(3MC~@2f$c9^@0UeGV?Rk5)MFs_&_;sdFe`u3=02@)t! z*PLrZTlIdt6kX*mH4;wdBl}+NZ9VeK5rneY^ei4xQ@y~xo5YZZi_Id*_n14;1uGWu zrLvd&Xh|`~9q*LE-RzA*@WKZ}6^>f<&yVL%=<)(!0UyBbr2j5t;QDYbM8fadbfq;Q z_Q7(Fb{ntB>x764vd{2CuNr-4B&WB+q`pE{1_@9@t_xff%#?yqfi~|L%<;wg7ONh~ zO~mT%GXNWp;KS)K%(q+WeyaR!WB5UTdxIkMoSz#fd+P!@=nY2~UKQ#>WpOQ?ufCY! z*-U=cxIs;VeA9K~7_1LaL+WPL6g&ZMeKr4NvBpU z@u|O+(}CP#0UNR+@``y^i9yxdJCUyAkVdI!TV8_`gnD_tf8DMgx>O5ksaw~5QND8p zO`)_R!{Y8B+35SI>NJ=TO_EAp5qTXgbG*ok#~46~oh-ck{#51V*ct0x;zt=v4}ZG7 z^yNrlmothmhTNQQSJl%Zg$V25ovY9M+-z?mhWMXsPh7OC6Hfh6A>1Gl`ayVtYwe2N zn2yCjkE{Od&a8y#i6H9}eqLNcz$~UQwec`@I+pMIt$4pX>WB$$2a@za3{S}V={e!P z+W;i*%G#8G!cdroVcw(#Ub1qPtW}FQ6aqJ!(VeFrl_Gy9b$GKNgLq+i#(eyF>fB z&HPb?s{I%fz*Ibb;)8yF<)eOy5N;d>UXWH%#usTiRB1HVC_hP4l9@GwFj9R8WQ$}f zrY_r$+d5SZ)cBh{Q6Rp;*l)(Tz^rw4MJ$)AFQ_mqT*(H}sY|7Tq?b#X zO07@=+d7(1UbKpPFKgrly9WBg4*NLIE{o*6%jif$2`&1n)}qH5S`mnQIT)Vn)c^(RJ~MHNiYgu!b@s+Sb7`G-x#UNJgXw3&uiy5 z!(~iso9{3FQ(LY>mx232p^PqNaIM09C*4EN9RtErYiDaZKuD7_zTfX?)+9Fr00y&y zKv$Ti)ex2v%KHfaB%rUf){blQrJyniEA&-G*~f0b>V`|c#Wqy4M{PAQJayhfytdB@w7C68%l5)hsP%*BGQM)-eB9vH{(aMaZecJI!SO~% z>}T2>r+4jXE>q9MS^JpOz*pdb+04l+;C_DBnV3w$XV z!Qi)h!v7f16m%FMuZH+be0}`#K`trAAJ7*7@peerHP)5*dA(^H5r6|as;u6U_Lcy$p45+T@_-?F z2;-v0PfdR|Mrou6X6oM7<-p(1*L|Pb4NqI|vZ&eoh+fg>6(lTBAvtwlNfNyuc^BH>3_*)Gy28!a5f{}1`(V0`0 z)Z|XxQ`6&|>lf^&aQEJqs~7LdY`MG0?sDa+wv@@zm7F9MK`O4xZc@1^J3T6{Ot$-L z);JUnxNw)BDk8r>qv%Q5>v`XXGOoyV>d#SCnLq8$^&mgR;%sROZ7RPsr+?n|I=6P zr+tf?n-=}OJP9m__9w~x2S+CdC;caFmnY0QfLdFm>P~hR;pcNpPM{pr+5q*Igg8ah@Wp$0-`q+RelEigTd4 zJS+~P#!J+Rb@fkoK7{}-<9RAqVuP%2%Q49Nw+>dH%(#Tvmv8dPyJmTGV@xVvj{ zmln6;?(SYRxDG%`>fd1Nl?@Tp6VhzD+KaAGU{bfo(AK!vV$q_UpmIlNJ-a#^Sz$K> z0HTw~hHft}iSrqe6<9P+J_5|PH`)LpLwkGQ{LOFaGhb`q`}~g30YzLwD1Z+S)qA9r ze!ci1TA^>Sn`%+IZ{uht?+c+lz6s zch;)_YN#8?x<~2DZ>AR~c(f`=;69J2sUhL-;FOk7hgdDzP5Nd)vviEjfmFr??&CX- z`eVv(bi_aMzw~KWcFK$Om3z%wty)sV6PKsIdl&fPk|?C%&*B+4LYxkbnJZTzo*W>_ z+?*%{nqgGzM{CitWHm|ZLNcR{h^Iu|DaO!@TrWY{z$%-NVgLkTDqr~9_mBJ9}7zCriQdA-bTrz5A@qSL0; z3;A7Bh%X(t4Io*s9!pPVj%SkD6Nw~*8L(SEX+WDe#!ewKczc4p2}3hgA-p{DQ)=}y z^9?kN(vwmB#e=IXqd9}c%YxeXJ&^DrD1MdqS&7v?GEibluoZtXA7$0r?4Sq0Rtc6p z7$(j3)FVRsXLP#5MRT9!u^h8wqc26M1@ZfgDY-Ck{4>Ofb{R=42($YgGL)0p72=fT z&zAD@m+2`RPW-ShNF33KdR#8(s^<}Ryk<#IeQt{~=w3qT*qG+4 zm&O(h1f@>=hM(VUEWHivUd*AvnLwkB%2=?>>dj^J&i+d%%P8+OM6=-RFl+d*68v35 zVSfZR&OvnoN#4#aR+YH{EYf^E+1?&?IiHYZIkQqH=<&?eTvs=lpc_!+Aj6UCcO1mt z=@NY$w$6ltK|$JvZ;Qh7x@ih;7|Hk7s*72A%9d}YVq8xu1He!IRYumspe6I&jO4pN zqN(4XTjoZ$7gzuuX2h+B4$drsJ{Af}ei$QS>KP>pX6CVwPO~&yGI#-%R*&uV4HPJjC?uzr|^j*yRjiB?!h&Mp$x&af-OFIY|yf*%P5E-33uqGEjZ3 z`yeG5dnh~`EQcsQ_wY;@FU;u+lNuBk1E+E)o{3qQ_!vw=U8@mfpdt^tO!pPutf+<675#^ zqT4k1#9BDukxi%00AbZTr7(LCYL&V8g;57-^G+!N@d=3*XPNAiYRZG&#azf;sXF4-@)%ElcAE{r%eh1g)z228wwUdkhXo7S?yeq0lQShuOENWSI zHC)&FnF=5r@oRs^OD6VLJd9*=prV@_IdVrJ;v{3zT0Om~bWo_k_lO<~RN;GMOpXX_ z@J!drl3v{jAD?ceqKSea1q^)n^=cR*)Vo!nMI+ir}9 zaMeiwzw0X;fJhSkzkxlWB}~V&aZdFJTdCZ272>LXtHxN-cvXT|sO+Xmcn2^co+^gX z9I9cZ??GSGeXd%CT}KB&kx-YKAjWEp@PTD~Z6&y4|3&vE*Q?>KQ#Qr+23Dzl#;d_=R%k9b@D~Mo~&pMPEBN9kOzIiWg8~~G!l7sUZ@t* z83p5?HUXljwfe83kCHLvX1MY! zAMsk)Lq=1L!E#yxHDpDsoRgM`^Ro*nm%j$CvS67wwn2t2UV|jD`aEJD+b`>8?0r%K z=g75iUyCO$CtmJS+;0HTD}Xu~Y=ykuDolo-TQ2OW73|VEnbZ}e%f@(T8@!6S2w6EJ zac0+3RX;?dns6CTYQ4mBxvbkI5Vx@vTD3aLd!5{@;fn1MOxrrpzbwfsNfv#Sj80YC zd96xT^W%xzELg0}q>DDRrfc~AZicNcMj)xL)+QM-t=1F|hp4)!#aC2SkFUkxxi@vo5gGp9cIdf$9YYoYg9%Cxp20fY~DRJ)LLC zxuf3Y(+uimyqO$0Ro1Q#tT>;hq9Hv5DCqUl_=s2gc`;}VU%y!o>rf!~KoSfj!;fJB zqnZC=WwR&*Hu##OjN4TE=I`?)AQ%YLRihrz?4UFvz1aOPnYbS-h9Q2+cIiuA+hm1-E`4rW=3n$_Ow|VgMS>b~%>{PpVD?#tx-WguLAA3L z-pC2n5dRszp)W{Ge&}PRkJ2r$lK6Uj;r&gDhee)t??4bHMC_6vTZ;H=;**$vT)RnO zdtT}Q`&1mc(&_2<)7ykO7)hl@c!5aK&MYq?|0w${0%_woG3j8UrLygkqW%bNw9!bW z7eI^`)$g*2zR(nZ?h6SbBh)4eSR#G|M0O$aJ!O(E06Heep!sGg2WfCWmpwECW$>*m z{SE;|rVma-Jy?0Ir1Y0#pLIgF@$d(9acU@K;I7+R+>5b1RFiVCTV#6X+jr4W{z*C? zG7=^^9qj2QDAbP0Py>IPM z-7u1e7#mP?T+Sroq?EO)BscyXg*8|KLz8!W?}6qE6yChMyJWq8-nLth2dH7YV2p5K-Hz>rx@f5 z)5W>O$VWA>(nb0cMp(0zmt24dJ)Wg>;#r*xSf#f+R-$uUj zJ!my!U;637JG5yFk?rqsCKFO3ylw%aQ5DlD&?C!EY*=W*+v0-6^L7iqk>|jg4RHUu z$vUHIp>DJ$jVpiw=wzOI8L$LMlB5*abh}Z>)81ALmK-R-Bkg`hHY27vaGWjD*$YwW zx5vPi5$H8T5t0;81eCB*hkeBD5||D9eOfnGa4a<4SgSnMOywsTi_E3~kEcA(RrG=~ z9A3E$mVDXON%~ala^RN;Nd8@I4}BA?{Ss;scBRhMmppBh5IUj|Il=esyA`nc?HN^x zCyLTMR{}9S0VC?v^NMn^hrSrMZKVYGxL)`X#NGvMwatx5`a~bP zi23Ubzv)Y1u&=1C!PkFa`sddU#^0q~ox5Ct&xDK5Tl-_Uzk7GNYL~>|M)IH9c4v0T zMpm+;Ml$0vy5&rI+U$4s$XRvb;0Wh&cFW*3YCX{8g+x;oC|m z7VWSB5!lw@YT1F*vgz-l<({vfsL$z*wSzN0Dzhw^g)&uwHLT&OvZI)1He~Hd+(K_d zP^qb$h5+#+xnYPQ8PYLkZ;Ejku$xj5Vw@!g`r#K?UoT8u9moc0)2jx3U?f>)Hv9p3 z9t>M5Y(u^L-yEwEcreY-4`B#3kU`fPb%rjXNJ(mNb`Ed4X$@t1N{4&Po2=3{dXPqS za6$5_IET|v1oritzS^V^;K~?Rn}9)gyJ8p~+t;HP>pBeP5M6!}Nh&#A3083b5i4AI z1b=}dCxl)L^jsOa8}0g2vf<`OG) zVx?V&`V6VAsF@?=`^slKTf;r(r+nIvA>zvY4m&_dTx9UEvfMUsoVNDYd_TEin*Y_bEVB*2OO zxPBg6#~>1n8I=6t3IDjKEMlge)?ic~enP0vCuf)Qc>+f9tk)2L$V|X7@R_817eA0) zR^P1eqcZEq(yu9K<^lHE1j1NMfH~*iG-S#Ez!*U9jVS4A^CptUAz!Lv3hs0p`%Kdfh;m^+=@XA& z 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 literal 0 HcmV?d00001 diff --git a/maps/virgo_minitest/virgo_minitest-1.dmm b/maps/virgo_minitest/virgo_minitest-1.dmm index 67d210bad4..284343463a 100644 --- a/maps/virgo_minitest/virgo_minitest-1.dmm +++ b/maps/virgo_minitest/virgo_minitest-1.dmm @@ -3669,10 +3669,10 @@ /area/bridge) "jC" = ( /obj/structure/cable/yellow, -/obj/machinery/power/tesla_coil, /obj/structure/cable/yellow{ icon_state = "0-2" }, +/obj/machinery/power/tesla_coil/pre_mapped, /turf/simulated/floor/airless, /area/space) "jQ" = ( @@ -3854,8 +3854,8 @@ /obj/structure/cable/yellow{ icon_state = "0-2" }, -/obj/machinery/power/tesla_coil, /obj/structure/cable/yellow, +/obj/machinery/power/tesla_coil/pre_mapped, /turf/simulated/floor/airless, /area/space) "lZ" = ( @@ -4433,11 +4433,7 @@ /area/engineering/engine_room) "rY" = ( /obj/structure/cable/cyan, -/obj/machinery/power/emitter{ - anchored = 1; - icon_state = "emitter1"; - state = 1 - }, +/obj/machinery/power/emitter/pre_mapped, /turf/simulated/floor/airless, /area/space) "sf" = ( @@ -4540,7 +4536,7 @@ /obj/effect/floor_decal/techfloor/orange{ dir = 1 }, -/obj/structure/particle_accelerator/particle_emitter/right{ +/obj/structure/particle_accelerator/particle_emitter/right/pre_mapped{ dir = 8 }, /turf/simulated/floor/tiled/techfloor, @@ -5243,10 +5239,10 @@ /turf/simulated/wall/r_wall, /area/submap/pa_room) "AE" = ( -/obj/machinery/particle_accelerator/control_box, /obj/effect/floor_decal/techfloor/orange{ dir = 1 }, +/obj/machinery/particle_accelerator/control_box/pre_mapped, /turf/simulated/floor/tiled/techfloor, /area/submap/pa_room) "AI" = ( @@ -5367,10 +5363,7 @@ /turf/simulated/floor/tiled/techmaint, /area/engineering/engine_monitoring) "BO" = ( -/obj/machinery/field_generator{ - anchored = 1; - state = 1 - }, +/obj/machinery/field_generator/pre_mapped, /turf/simulated/floor/airless, /area/space) "BU" = ( @@ -5399,13 +5392,13 @@ /turf/simulated/floor, /area/submap/pa_room) "BX" = ( -/obj/machinery/power/tesla_coil, /obj/structure/cable/yellow{ icon_state = "0-4" }, /obj/structure/cable/yellow{ icon_state = "0-8" }, +/obj/machinery/power/tesla_coil/pre_mapped, /turf/simulated/floor/airless, /area/space) "Cd" = ( @@ -5541,7 +5534,7 @@ /turf/simulated/floor/tiled, /area/engineering/engine_room) "DZ" = ( -/obj/structure/particle_accelerator/particle_emitter/center{ +/obj/structure/particle_accelerator/particle_emitter/center/pre_mapped{ dir = 8 }, /turf/simulated/floor/tiled/techfloor, @@ -5960,8 +5953,8 @@ /turf/simulated/floor/tiled/techmaint, /area/engineering/engine_monitoring) "Ke" = ( -/obj/machinery/power/tesla_coil, /obj/structure/cable/yellow, +/obj/machinery/power/tesla_coil/pre_mapped, /turf/simulated/floor/airless, /area/space) "Ki" = ( @@ -6218,7 +6211,7 @@ /area/engineering/engine_monitoring) "MW" = ( /obj/effect/floor_decal/techfloor/orange, -/obj/structure/particle_accelerator/particle_emitter/left{ +/obj/structure/particle_accelerator/particle_emitter/left/pre_mapped{ dir = 8 }, /turf/simulated/floor/tiled/techfloor, @@ -6282,11 +6275,8 @@ /obj/structure/cable/cyan{ icon_state = "0-2" }, -/obj/machinery/power/emitter{ - anchored = 1; - dir = 1; - icon_state = "emitter1"; - state = 1 +/obj/machinery/power/emitter/pre_mapped{ + dir = 1 }, /turf/simulated/floor/airless, /area/space) @@ -6432,10 +6422,10 @@ /turf/simulated/floor/tiled, /area/engineering/engine_room) "OI" = ( -/obj/machinery/power/tesla_coil, /obj/structure/cable/yellow{ icon_state = "0-2" }, +/obj/machinery/power/tesla_coil/pre_mapped, /turf/simulated/floor/airless, /area/space) "OL" = ( @@ -6873,9 +6863,7 @@ /turf/simulated/floor/tiled/techfloor/grid, /area/submap/pa_room) "TI" = ( -/obj/machinery/the_singularitygen/tesla{ - anchored = 1 - }, +/obj/machinery/the_singularitygen/tesla/pre_mapped, /turf/simulated/floor/airless, /area/space) "TL" = ( @@ -7019,7 +7007,7 @@ /turf/space, /area/space) "Vk" = ( -/obj/machinery/power/grounding_rod, +/obj/machinery/power/grounding_rod/pre_mapped, /turf/simulated/floor/airless, /area/space) "Vp" = ( @@ -7103,7 +7091,7 @@ /turf/simulated/floor, /area/submap/pa_room) "WR" = ( -/obj/structure/particle_accelerator/fuel_chamber{ +/obj/structure/particle_accelerator/fuel_chamber/pre_mapped{ dir = 8 }, /turf/simulated/floor/tiled/techfloor, @@ -7165,15 +7153,15 @@ /turf/simulated/floor, /area/engineering/engine_room) "XH" = ( -/obj/structure/particle_accelerator/end_cap{ - dir = 8 - }, /obj/effect/floor_decal/techfloor/orange{ dir = 4 }, /obj/effect/floor_decal/techfloor/hole{ dir = 4 }, +/obj/structure/particle_accelerator/end_cap/pre_mapped{ + dir = 8 + }, /turf/simulated/floor/tiled/techfloor, /area/submap/pa_room) "XI" = ( @@ -7319,7 +7307,7 @@ /turf/simulated/floor, /area/engineering/workshop) "Zi" = ( -/obj/structure/particle_accelerator/power_box{ +/obj/structure/particle_accelerator/power_box/pre_mapped{ dir = 8 }, /turf/simulated/floor/tiled/techfloor, diff --git a/vorestation.dme b/vorestation.dme index e43d7c82f6..50fb469552 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -604,6 +604,7 @@ #include "code\controllers\subsystems\pois.dm" #include "code\controllers\subsystems\profiler.dm" #include "code\controllers\subsystems\radiation.dm" +#include "code\controllers\subsystems\reflector.dm" #include "code\controllers\subsystems\research.dm" #include "code\controllers\subsystems\robot_sprites.dm" #include "code\controllers\subsystems\runechat.dm" @@ -1818,6 +1819,7 @@ #include "code\game\objects\items\weapons\circuitboards\other.dm" #include "code\game\objects\items\weapons\circuitboards\computer\air_management.dm" #include "code\game\objects\items\weapons\circuitboards\computer\camera_monitor.dm" +#include "code\game\objects\items\weapons\circuitboards\computer\command.dm" #include "code\game\objects\items\weapons\circuitboards\computer\computer.dm" #include "code\game\objects\items\weapons\circuitboards\computer\research.dm" #include "code\game\objects\items\weapons\circuitboards\computer\shuttle.dm" @@ -1842,6 +1844,7 @@ #include "code\game\objects\items\weapons\circuitboards\machinery\research.dm" #include "code\game\objects\items\weapons\circuitboards\machinery\shieldgen.dm" #include "code\game\objects\items\weapons\circuitboards\machinery\ships.dm" +#include "code\game\objects\items\weapons\circuitboards\machinery\smartfridges.dm" #include "code\game\objects\items\weapons\circuitboards\machinery\telecomms.dm" #include "code\game\objects\items\weapons\circuitboards\machinery\unary_atmos.dm" #include "code\game\objects\items\weapons\grenades\anti_photon_grenade.dm" @@ -2001,6 +2004,7 @@ #include "code\game\objects\structures\pillows.dm" #include "code\game\objects\structures\plasticflaps.dm" #include "code\game\objects\structures\railing.dm" +#include "code\game\objects\structures\reflectors.dm" #include "code\game\objects\structures\safe.dm" #include "code\game\objects\structures\salvageable.dm" #include "code\game\objects\structures\signs.dm"