From a020df7af4d09dfe71c8279e10c16b31b57aae01 Mon Sep 17 00:00:00 2001 From: harryob Date: Mon, 28 Aug 2023 20:04:05 +0100 Subject: [PATCH] fancy lighting (#4229) this was a long time coming many thanks to: https://github.com/tgstation/TerraGov-Marine-Corps/pull/1964 for the lighting controller (A-lexa) https://github.com/tgstation/TerraGov-Marine-Corps/pull/4747/ and https://github.com/tgstation/TerraGov-Marine-Corps/pull/7263 for the lighting (TiviPlus) https://github.com/tgstation/tgstation/pull/54520 for the dir lighting component tgstation/tgstation#75018 for the out of bounds fix in lighting https://github.com/tgstation/TerraGov-Marine-Corps/pull/6678 for the emissives (TiviPlus) (but this is still a - [ ] to do) :cl: TiviPlus, A-lexa, SyncIt21, Azarak, harryob, MorrowWolf, Zonespace add: shadows are now in the game, and light follows you. /:cl: --------- Co-authored-by: Morrow Co-authored-by: Zonespace <41448081+Zonespace27@users.noreply.github.com> Co-authored-by: John Doe Co-authored-by: Nanu308 <59782240+Nanu308@users.noreply.github.com> Co-authored-by: Drathek <76988376+Drulikar@users.noreply.github.com> --- code/__DEFINES/colours.dm | 3 + code/__DEFINES/cooldowns.dm | 1 + .../dcs/signals/atom/signals_atom.dm | 17 + code/__DEFINES/layers.dm | 40 +- code/__DEFINES/lighting.dm | 104 ++ code/__DEFINES/objects.dm | 5 + code/__DEFINES/traits.dm | 1 + code/__HELPERS/_lists.dm | 26 + code/__HELPERS/icons.dm | 82 +- code/__HELPERS/lighting.dm | 11 + code/__HELPERS/unsorted.dm | 97 +- code/_onclick/hud/fullscreen.dm | 31 + code/_onclick/hud/rendering/plane_master.dm | 50 + code/controllers/_DynamicAreaLighting_TG.dm | 406 ------ code/controllers/subsystem/lighting.dm | 156 +- code/controllers/subsystem/weather.dm | 8 +- code/datums/components/overlay_lighting.dm | 513 +++++++ code/datums/effects/acid.dm | 2 +- code/datums/elements/light_blocking.dm | 43 + code/game/area/DesertDam.dm | 1 - code/game/area/IceColony.dm | 1 - code/game/area/LV522_Chances_Claim.dm | 2 - code/game/area/Sulaco.dm | 2 +- code/game/area/WhiskeyOutpost.dm | 2 - code/game/area/admin_level.dm | 8 +- code/game/area/areas.dm | 212 ++- code/game/area/areas_event.dm | 27 +- code/game/area/chinook.dm | 1 - code/game/area/kutjevo.dm | 3 - code/game/area/prison_v3_fiorina.dm | 1 - code/game/area/shiva.dm | 3 - code/game/area/shuttles.dm | 8 +- code/game/area/space_station_13_areas.dm | 14 +- code/game/area/strata.dm | 4 +- code/game/area/techtree.dm | 2 +- code/game/area/varadero.dm | 11 +- code/game/atoms.dm | 69 +- code/game/atoms_movable.dm | 82 +- code/game/machinery/air_alarm.dm | 16 +- code/game/machinery/bio-dome_floodlights.dm | 9 +- code/game/machinery/bots/bots.dm | 17 +- code/game/machinery/camera/camera.dm | 2 +- .../machinery/computer/area_air_control.dm | 11 +- .../game/machinery/computer/camera_console.dm | 40 +- code/game/machinery/cryopod.dm | 7 +- code/game/machinery/doors/alarmlock.dm | 6 +- code/game/machinery/doors/door.dm | 22 +- code/game/machinery/doors/multi_tile.dm | 4 +- code/game/machinery/doors/poddoor.dm | 38 +- code/game/machinery/doors/railing.dm | 2 +- code/game/machinery/doors/runed_sandstone.dm | 8 +- code/game/machinery/doors/shutters.dm | 6 +- code/game/machinery/flasher.dm | 4 +- code/game/machinery/floodlight.dm | 49 +- code/game/machinery/groundmap_geothermal.dm | 7 +- code/game/machinery/hologram.dm | 10 +- code/game/machinery/igniter.dm | 4 +- code/game/machinery/lightswitch.dm | 14 +- code/game/machinery/mining.dm | 2 +- code/game/machinery/newscaster.dm | 2 - code/game/objects/effects/acid_hole.dm | 4 +- code/game/objects/effects/aliens.dm | 2 +- .../objects/effects/decals/cleanable/misc.dm | 15 +- .../effects/effect_system/chemsmoke.dm | 4 +- .../objects/effects/effect_system/smoke.dm | 4 +- code/game/objects/effects/glowshroom.dm | 6 +- code/game/objects/effects/overlays.dm | 12 +- code/game/objects/items.dm | 2 + code/game/objects/items/devices/flashlight.dm | 96 +- .../objects/items/devices/radio/intercom.dm | 4 +- code/game/objects/items/lightstick.dm | 30 +- .../reagent_containers/food/snacks/grown.dm | 32 +- code/game/objects/items/storage/smartpack.dm | 51 +- code/game/objects/items/tools/flame_tools.dm | 94 +- .../objects/items/tools/maintenance_tools.dm | 42 +- code/game/objects/objs.dm | 2 +- code/game/objects/structures/flora.dm | 6 +- code/game/objects/structures/mineral_doors.dm | 6 +- .../objects/structures/pipes/vents/vents.dm | 2 - code/game/objects/structures/props.dm | 38 +- .../structures/props/requests_console.dm | 1 - code/game/objects/structures/window.dm | 36 +- code/game/supplyshuttle.dm | 12 +- code/game/turfs/auto_turf.dm | 2 +- code/game/turfs/floor.dm | 4 +- code/game/turfs/floors/desert.dm | 18 +- code/game/turfs/light.dm | 16 +- code/game/turfs/open.dm | 4 +- code/game/turfs/snow.dm | 2 +- code/game/turfs/turf.dm | 77 +- code/game/turfs/walls/wall_types.dm | 4 +- code/modules/autowiki/pages/guns.dm | 7 +- code/modules/clothing/head/hardhat.dm | 91 +- code/modules/clothing/head/helmet.dm | 4 +- code/modules/clothing/head/misc_special.dm | 24 +- code/modules/clothing/suits/marine_armor.dm | 88 +- .../structures/special/pylon_core.dm | 7 +- code/modules/cm_marines/dropship_equipment.dm | 13 +- code/modules/cm_marines/equipment/gear.dm | 2 +- code/modules/cm_marines/smartgun_mount.dm | 5 +- code/modules/cm_preds/yaut_procs.dm | 3 +- code/modules/cm_preds/yaut_weapons.dm | 4 +- .../cm_tech/droppod/gear_access_point.dm | 2 +- code/modules/cm_tech/tech_node.dm | 1 + code/modules/cm_tech/techtree.dm | 7 +- code/modules/defenses/sentry.dm | 7 +- code/modules/defenses/sentry_computer.dm | 21 +- code/modules/defenses/tesla_coil.dm | 5 +- .../dropships/attach_points/attach_point.dm | 1 + .../dropships/attach_points/templates.dm | 1 + code/modules/hydroponics/hydro_tray.dm | 18 +- code/modules/hydroponics/seed_datums.dm | 2 +- code/modules/hydroponics/vines.dm | 10 +- code/modules/lighting/_LIGHTING_README.MD | 75 + code/modules/lighting/emissive_blocker.dm | 37 + code/modules/lighting/lighting_area.dm | 59 + code/modules/lighting/lighting_atom.dm | 178 +++ .../lighting_mask/dynamic_lighting_source.dm | 103 ++ .../lighting/lighting_mask/lighting_mask.dm | 153 ++ .../lighting_mask/lighting_mask_holder.dm | 22 + .../lighting_mask/shadow_calculator.dm | 686 +++++++++ .../lighting_static/static_lighting_area.dm | 12 + .../lighting_static/static_lighting_atom.dm | 25 + .../lighting_static/static_lighting_corner.dm | 176 +++ .../lighting_static/static_lighting_object.dm | 115 ++ .../lighting_static/static_lighting_setup.dm | 10 + .../lighting_static/static_lighting_source.dm | 277 ++++ .../lighting_static/static_lighting_turf.dm | 61 + code/modules/lighting/lighting_turf.dm | 94 ++ code/modules/mob/dead/observer/observer.dm | 1 + code/modules/mob/living/carbon/human/human.dm | 5 +- .../mob/living/carbon/human/human_defines.dm | 1 + .../mob/living/carbon/human/human_helpers.dm | 5 +- .../mob/living/carbon/human/update_icons.dm | 5 + .../mob/living/carbon/xenomorph/Xenomorph.dm | 2 + .../abilities/runner/runner_powers.dm | 5 +- .../living/carbon/xenomorph/attack_alien.dm | 2 +- .../mob/living/carbon/xenomorph/death.dm | 2 +- .../mob/living/carbon/xenomorph/life.dm | 6 +- code/modules/mob/living/living_defense.dm | 1 - code/modules/mob/living/silicon/ai/ai.dm | 16 +- .../silicon/ai/freelook/update_triggers.dm | 4 +- code/modules/mob/living/silicon/ai/life.dm | 17 +- code/modules/mob/living/silicon/robot/life.dm | 2 +- .../modules/mob/living/silicon/robot/robot.dm | 4 +- code/modules/mob/mob.dm | 1 - code/modules/mob/mob_helpers.dm | 6 + code/modules/movement/movement.dm | 12 +- .../modules/nightmare/nmtasks/mapscheduler.dm | 6 +- code/modules/power/apc.dm | 11 +- code/modules/power/lighting.dm | 38 +- code/modules/power/power.dm | 17 +- .../projectiles/ammo_boxes/ammo_boxes.dm | 14 +- .../projectiles/ammo_boxes/box_structures.dm | 1 - .../projectiles/ammo_boxes/misc_boxes.dm | 8 +- code/modules/projectiles/gun.dm | 26 +- code/modules/projectiles/gun_attachables.dm | 68 +- code/modules/projectiles/gun_helpers.dm | 35 +- .../modules/projectiles/guns/flamer/flamer.dm | 17 +- code/modules/shuttle/dropship.dm | 217 +++ code/modules/shuttle/on_move.dm | 8 +- code/modules/shuttle/shuttles/dropship.dm | 9 +- .../shuttle/shuttles/escape_shuttle.dm | 3 +- code/modules/unit_tests/create_and_destroy.dm | 3 + code/modules/vehicles/apc/apc.dm | 1 - code/modules/vehicles/cargo_train.dm | 10 +- code/modules/vehicles/interior/areas.dm | 1 + code/modules/vehicles/multitile/multitile.dm | 40 +- .../multitile/multitile_interaction.dm | 2 +- code/modules/vehicles/powerloader.dm | 2 +- code/modules/vehicles/tank/tank.dm | 2 +- code/modules/vehicles/van/van.dm | 2 +- code/modules/vehicles/vehicle.dm | 9 +- colonialmarines.dme | 24 +- icons/effects/alphacolors.dmi | Bin 395 -> 406 bytes icons/effects/light_overlays/light_128.dmi | Bin 0 -> 7040 bytes icons/effects/light_overlays/light_160.dmi | Bin 0 -> 9920 bytes icons/effects/light_overlays/light_192.dmi | Bin 0 -> 13534 bytes icons/effects/light_overlays/light_224.dmi | Bin 0 -> 17004 bytes icons/effects/light_overlays/light_256.dmi | Bin 0 -> 21365 bytes icons/effects/light_overlays/light_288.dmi | Bin 0 -> 26103 bytes icons/effects/light_overlays/light_32.dmi | Bin 0 -> 1140 bytes icons/effects/light_overlays/light_320.dmi | Bin 0 -> 30919 bytes icons/effects/light_overlays/light_352.dmi | Bin 0 -> 35566 bytes icons/effects/light_overlays/light_384.dmi | Bin 0 -> 40005 bytes icons/effects/light_overlays/light_416.dmi | Bin 0 -> 42716 bytes icons/effects/light_overlays/light_64.dmi | Bin 0 -> 2482 bytes icons/effects/light_overlays/light_96.dmi | Bin 0 -> 4643 bytes icons/effects/light_overlays/light_cone.dmi | Bin 0 -> 19272 bytes icons/effects/light_overlays/shockwave.dmi | Bin 0 -> 655732 bytes icons/effects/lighting_object.dmi | Bin 0 -> 1807 bytes icons/effects/lighting_object_big.dmi | Bin 0 -> 2031049 bytes maps/map_files/BigRed/BigRed.dmm | 54 +- maps/map_files/CORSAT/Corsat.dmm | 40 +- maps/map_files/DesertDam/Desert_Dam.dmm | 8 +- .../FOP_v2_Cellblocks/Prison_Station_FOP.dmm | 8 +- .../FOP_v3_Sciannex/Fiorina_SciAnnex.dmm | 26 +- .../map_files/Ice_Colony_v2/Ice_Colony_v2.dmm | 30 +- .../Ice_Colony_v3/Shivas_Snowball.dmm | 65 +- maps/map_files/Kutjevo/Kutjevo.dmm | 32 +- .../LV522_Chances_Claim.dmm | 32 +- maps/map_files/LV624/LV624.dmm | 8 +- maps/map_files/New_Varadero/New_Varadero.dmm | 282 ++-- .../Sorokyne_Strata/Sorokyne_Strata.dmm | 288 ++-- maps/map_files/USS_Almayer/USS_Almayer.dmm | 1290 ++++++++--------- .../Whiskey_Outpost_v2/Whiskey_Outpost_v2.dmm | 186 +-- maps/shuttles/dropship_alamo.dmm | 183 +-- maps/shuttles/dropship_normandy.dmm | 185 +-- maps/templates/clf_ert_station.dmm | 2 +- 209 files changed, 5741 insertions(+), 3012 deletions(-) create mode 100644 code/__HELPERS/lighting.dm delete mode 100644 code/controllers/_DynamicAreaLighting_TG.dm create mode 100644 code/datums/components/overlay_lighting.dm create mode 100644 code/datums/elements/light_blocking.dm create mode 100644 code/modules/lighting/_LIGHTING_README.MD create mode 100644 code/modules/lighting/emissive_blocker.dm create mode 100644 code/modules/lighting/lighting_area.dm create mode 100644 code/modules/lighting/lighting_atom.dm create mode 100644 code/modules/lighting/lighting_mask/dynamic_lighting_source.dm create mode 100644 code/modules/lighting/lighting_mask/lighting_mask.dm create mode 100644 code/modules/lighting/lighting_mask/lighting_mask_holder.dm create mode 100644 code/modules/lighting/lighting_mask/shadow_calculator.dm create mode 100644 code/modules/lighting/lighting_static/static_lighting_area.dm create mode 100644 code/modules/lighting/lighting_static/static_lighting_atom.dm create mode 100644 code/modules/lighting/lighting_static/static_lighting_corner.dm create mode 100644 code/modules/lighting/lighting_static/static_lighting_object.dm create mode 100644 code/modules/lighting/lighting_static/static_lighting_setup.dm create mode 100644 code/modules/lighting/lighting_static/static_lighting_source.dm create mode 100644 code/modules/lighting/lighting_static/static_lighting_turf.dm create mode 100644 code/modules/lighting/lighting_turf.dm create mode 100644 code/modules/shuttle/dropship.dm create mode 100644 icons/effects/light_overlays/light_128.dmi create mode 100644 icons/effects/light_overlays/light_160.dmi create mode 100644 icons/effects/light_overlays/light_192.dmi create mode 100644 icons/effects/light_overlays/light_224.dmi create mode 100644 icons/effects/light_overlays/light_256.dmi create mode 100644 icons/effects/light_overlays/light_288.dmi create mode 100644 icons/effects/light_overlays/light_32.dmi create mode 100644 icons/effects/light_overlays/light_320.dmi create mode 100644 icons/effects/light_overlays/light_352.dmi create mode 100644 icons/effects/light_overlays/light_384.dmi create mode 100644 icons/effects/light_overlays/light_416.dmi create mode 100644 icons/effects/light_overlays/light_64.dmi create mode 100644 icons/effects/light_overlays/light_96.dmi create mode 100644 icons/effects/light_overlays/light_cone.dmi create mode 100644 icons/effects/light_overlays/shockwave.dmi create mode 100644 icons/effects/lighting_object.dmi create mode 100644 icons/effects/lighting_object_big.dmi diff --git a/code/__DEFINES/colours.dm b/code/__DEFINES/colours.dm index b7457f9ae478..5fa106715f39 100644 --- a/code/__DEFINES/colours.dm +++ b/code/__DEFINES/colours.dm @@ -142,6 +142,9 @@ * * Important note: colours can end up significantly different from the basic html picture, especially when saturated */ + +/// Full white. rgb(255, 255, 255) +#define LIGHT_COLOR_WHITE "#FFFFFF" /// Bright but quickly dissipating neon green. rgb(100, 200, 100) #define LIGHT_COLOUR_GREEN "#64C864" /// Electric green. rgb(0, 255, 0) diff --git a/code/__DEFINES/cooldowns.dm b/code/__DEFINES/cooldowns.dm index e1f221dccbde..9368caf3c6e3 100644 --- a/code/__DEFINES/cooldowns.dm +++ b/code/__DEFINES/cooldowns.dm @@ -3,6 +3,7 @@ #define COOLDOWN_HIJACK_BARRAGE "gamemode_explosive_barrage" #define COOLDOWN_HIJACK_GROUND_CHECK "gamemode_ground_check" #define COOLDOWN_ITEM_HOOD_SOUND "item_hood_sound" +#define COOLDOWN_LIGHT "cooldown_light" //Define for ship alt #define COOLDOWN_ALTITUDE_CHANGE "altitude_change" diff --git a/code/__DEFINES/dcs/signals/atom/signals_atom.dm b/code/__DEFINES/dcs/signals/atom/signals_atom.dm index 0cbe28d0438c..7431c5593b17 100644 --- a/code/__DEFINES/dcs/signals/atom/signals_atom.dm +++ b/code/__DEFINES/dcs/signals/atom/signals_atom.dm @@ -26,5 +26,22 @@ ///from /turf/ChangeTurf #define COMSIG_ATOM_TURF_CHANGE "movable_turf_change" +//from atom/set_light(): (l_range, l_power, l_color) +#define COMSIG_ATOM_SET_LIGHT "atom_set_light" + +///Called right before the atom changes the value of light_range to a different one, from base atom/set_light_range(): (new_range) +#define COMSIG_ATOM_SET_LIGHT_RANGE "atom_set_light_range" +///Called right before the atom changes the value of light_power to a different one, from base atom/set_light_power(): (new_power) +#define COMSIG_ATOM_SET_LIGHT_POWER "atom_set_light_power" +///Called right before the atom changes the value of light_color to a different one, from base atom/set_light_color(): (new_color) +#define COMSIG_ATOM_SET_LIGHT_COLOR "atom_set_light_color" +///Called right before the atom changes the value of light_on to a different one, from base atom/set_light_on(): (new_value) +#define COMSIG_ATOM_SET_LIGHT_ON "atom_set_light_on" +///Called right before the atom changes the value of light_flags to a different one, from base atom/set_light_flags(): (new_value) +#define COMSIG_ATOM_SET_LIGHT_FLAGS "atom_set_light_flags" + +///from base of atom/set_opacity(): (new_opacity) +#define COMSIG_ATOM_SET_OPACITY "atom_set_opacity" + ///When the transform or an atom is varedited through vv topic. #define COMSIG_ATOM_VV_MODIFY_TRANSFORM "atom_vv_modify_transform" diff --git a/code/__DEFINES/layers.dm b/code/__DEFINES/layers.dm index 3cbd0d6dac44..b55a1b7ce583 100644 --- a/code/__DEFINES/layers.dm +++ b/code/__DEFINES/layers.dm @@ -136,8 +136,6 @@ #define ABOVE_FLY_LAYER 6 -#define ABOVE_LIGHTING_PLANE 16 - /// blip from motion detector #define BELOW_FULLSCREEN_LAYER 16.9 #define FULLSCREEN_LAYER 17 @@ -163,11 +161,44 @@ #define CINEMATIC_LAYER 21 -#define TYPING_LAYER 500 - /// for areas, so they appear above everything else on map file. #define AREAS_LAYER 999 +//---------- EMISSIVES ------------- +//Layering order of these is not particularly meaningful. +//Important part is the seperation of the planes for control via plane_master + +/// This plane masks out lighting to create an "emissive" effect, ie for glowing lights in otherwise dark areas. +#define EMISSIVE_PLANE 90 +/// The render target used by the emissive layer. +#define EMISSIVE_RENDER_TARGET "*EMISSIVE_PLANE" +/// The layer you should use if you _really_ don't want an emissive overlay to be blocked. +#define EMISSIVE_LAYER_UNBLOCKABLE 9999 + +#define LIGHTING_BACKPLANE_LAYER 14.5 + +#define LIGHTING_RENDER_TARGET "LIGHT_PLANE" + +#define SHADOW_RENDER_TARGET "SHADOW_RENDER_TARGET" + +/// Plane for balloon text (text that fades up) +#define BALLOON_CHAT_PLANE 110 +/// Bubble for typing indicators +#define TYPING_LAYER 500 + +#define O_LIGHTING_VISUAL_PLANE 120 +#define O_LIGHTING_VISUAL_LAYER 16 +#define O_LIGHTING_VISUAL_RENDER_TARGET "O_LIGHT_VISUAL_PLANE" + +#define LIGHTING_PRIMARY_LAYER 15 //The layer for the main lights of the station +#define LIGHTING_PRIMARY_DIMMER_LAYER 15.1 //The layer that dims the main lights of the station +#define LIGHTING_SECONDARY_LAYER 16 //The colourful, usually small lights that go on top + +#define LIGHTING_SHADOW_LAYER 17 //Where the shadows happen + +#define ABOVE_LIGHTING_PLANE 150 +#define ABOVE_LIGHTING_LAYER 18 + /*=============================*\ | | | PLANE DEFINES | @@ -189,6 +220,7 @@ #define GHOST_PLANE 80 +///--------------- FULLSCREEN RUNECHAT BUBBLES ------------ #define LIGHTING_PLANE 100 #define EXTERIOR_LIGHTING_PLANE 101 diff --git a/code/__DEFINES/lighting.dm b/code/__DEFINES/lighting.dm index 5a4ba7676233..097a0f5d5e71 100644 --- a/code/__DEFINES/lighting.dm +++ b/code/__DEFINES/lighting.dm @@ -1,5 +1,109 @@ +///Object doesn't use any of the light systems. Should be changed to add a light source to the object. +#define NO_LIGHT_SUPPORT 0 +///Light made with the lighting datums, applying a matrix. +#define STATIC_LIGHT 1 +///Light made by masking the lighting darkness plane. +#define MOVABLE_LIGHT 2 +///A mix of the above, cheaper on moving items than dynamic, but heavier on rendering than movable +#define HYBRID_LIGHT 3 +///Pointy light +#define DIRECTIONAL_LIGHT 4 + +#define LIGHT_ATTACHED (1<<0) + +#define MINIMUM_USEFUL_LIGHT_RANGE 1.4 + +#define LIGHTING_ICON 'icons/effects/lighting_object.dmi' // icon used for lighting shading effects +#define LIGHTING_ICON_BIG 'icons/effects/lighting_object_big.dmi' //! icon used for lighting shading effects + +#define ALPHA_TO_INTENSITY(alpha) (-(((clamp(alpha, 0, 22) - 22) / 6) ** 4) + 255) + + +#define LIGHT_RANGE_FIRE 3 //How many tiles standard fires glow. + #define LIGHTING_PLANE_ALPHA_VISIBLE 255 ///The dim natural vision of Yautja #define LIGHTING_PLANE_ALPHA_YAUTJA 235 +#define LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE 192 #define LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE 127 #define LIGHTING_PLANE_ALPHA_INVISIBLE 0 + + +#define FLASH_LIGHT_DURATION 2 +#define FLASH_LIGHT_POWER 3 +#define FLASH_LIGHT_RANGE 3.8 + +// Emissive blocking. +/// Uses vis_overlays to leverage caching so that very few new items need to be made for the overlay. For anything that doesn't change outline or opaque area much or at all. +#define EMISSIVE_BLOCK_GENERIC 1 +/// Uses a dedicated render_target object to copy the entire appearance in real time to the blocking layer. For things that can change in appearance a lot from the base state, like humans. +#define EMISSIVE_BLOCK_UNIQUE 2 + +/// The color matrix applied to all emissive overlays. Should be solely dependent on alpha and not have RGB overlap with [EM_BLOCK_COLOR]. +#define EMISSIVE_COLOR list(0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,1, 1,1,1,0) +/// A globaly cached version of [EMISSIVE_COLOR] for quick access. +GLOBAL_LIST_INIT(emissive_color, EMISSIVE_COLOR) +/// The color matrix applied to all emissive blockers. Should be solely dependent on alpha and not have RGB overlap with [EMISSIVE_COLOR]. +#define EM_BLOCK_COLOR list(0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,1, 0,0,0,0) +/// A globaly cached version of [EM_BLOCK_COLOR] for quick access. +GLOBAL_LIST_INIT(em_block_color, EM_BLOCK_COLOR) +/// A set of appearance flags applied to all emissive and emissive blocker overlays. +#define EMISSIVE_APPEARANCE_FLAGS (KEEP_APART|KEEP_TOGETHER|RESET_COLOR|RESET_TRANSFORM) +/// The color matrix used to mask out emissive blockers on the emissive plane. Alpha should default to zero, be solely dependent on the RGB value of [EMISSIVE_COLOR], and be independant of the RGB value of [EM_BLOCK_COLOR]. +#define EM_MASK_MATRIX list(0,0,0,1/3, 0,0,0,1/3, 0,0,0,1/3, 0,0,0,0, 1,1,1,0) +/// A globaly cached version of [EM_MASK_MATRIX] for quick access. +GLOBAL_LIST_INIT(em_mask_matrix, EM_MASK_MATRIX) + +/// Returns the red part of a #RRGGBB hex sequence as number +#define GETREDPART(hexa) hex2num(copytext(hexa, 2, 4)) + +/// Returns the green part of a #RRGGBB hex sequence as number +#define GETGREENPART(hexa) hex2num(copytext(hexa, 4, 6)) + +/// Returns the blue part of a #RRGGBB hex sequence as number +#define GETBLUEPART(hexa) hex2num(copytext(hexa, 6, 8)) + +/// Parse the hexadecimal color into lumcounts of each perspective. +#define PARSE_LIGHT_COLOR(source) \ +do { \ + if (source.light_color != COLOR_WHITE) { \ + var/__light_color = source.light_color; \ + source.lum_r = GETREDPART(__light_color) / 255; \ + source.lum_g = GETGREENPART(__light_color) / 255; \ + source.lum_b = GETBLUEPART(__light_color) / 255; \ + } else { \ + source.lum_r = 1; \ + source.lum_g = 1; \ + source.lum_b = 1; \ + }; \ +} while (FALSE) + + +//Bay lighting engine shit, not in /code/modules/lighting because BYOND is being shit about it //thats how defines work, hello? +#define LIGHTING_INTERVAL 5 // frequency, in 1/10ths of a second, of the lighting process + +#define MOVABLE_MAX_RANGE 7 + +#define LIGHTING_FALLOFF 1 // type of falloff to use for lighting; 1 for circular, 2 for square +#define LIGHTING_LAMBERTIAN 0 // use lambertian shading for light sources +#define LIGHTING_HEIGHT 1 // height off the ground of light sources on the pseudo-z-axis, you should probably leave this alone +#define LIGHTING_ROUND_VALUE (1 / 64) //Value used to round lumcounts, values smaller than 1/129 don't matter (if they do, thanks sinking points), greater values will make lighting less precise, but in turn increase performance, VERY SLIGHTLY. + +/// If the max of the lighting lumcounts of each spectrum drops below this, disable luminosity on the lighting objects. Set to zero to disable soft lighting. Luminosity changes then work if it's lit at all. +#define LIGHTING_SOFT_THRESHOLD 0 + +// If I were you I'd leave this alone. +#define LIGHTING_BASE_MATRIX \ + list \ + ( \ + 1, 1, 1, 0, \ + 1, 1, 1, 0, \ + 1, 1, 1, 0, \ + 1, 1, 1, 0, \ + 0, 0, 0, 1 \ + ) \ + +#define LIGHTING_NO_UPDATE 0 +#define LIGHTING_VIS_UPDATE 1 +#define LIGHTING_CHECK_UPDATE 2 +#define LIGHTING_FORCE_UPDATE 3 diff --git a/code/__DEFINES/objects.dm b/code/__DEFINES/objects.dm index 0a34ac9d6fe9..a6b95c879ae4 100644 --- a/code/__DEFINES/objects.dm +++ b/code/__DEFINES/objects.dm @@ -168,3 +168,8 @@ var/list/RESTRICTED_CAMERA_NETWORKS = list( //Those networks can only be accesse // For reinforced table status #define RTABLE_WEAKENED 1 #define RTABLE_NORMAL 2 + +//Lights define +#define CHECKS_PASSED 1 +#define STILL_ON_COOLDOWN 2 +#define NO_LIGHT_STATE_CHANGE 3 diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index 1aaf3714182e..bc939fc2450b 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -203,6 +203,7 @@ // GUN TRAITS #define TRAIT_GUN_SILENCED "t_gun_silenced" +#define TRAIT_GUN_LIGHT_DEACTIVATED "t_gun_light_deactivated" // Miscellaneous item traits. // Do NOT bloat this category, if needed make a new category (like shoe traits, xeno item traits...) diff --git a/code/__HELPERS/_lists.dm b/code/__HELPERS/_lists.dm index 6c913b016083..fe15e6d84c79 100644 --- a/code/__HELPERS/_lists.dm +++ b/code/__HELPERS/_lists.dm @@ -38,6 +38,32 @@ };\ } while(FALSE) +// binary search sorted insert +// IN: Object to be inserted +// LIST: List to insert object into +#define BINARY_INSERT_NUM(IN, LIST) \ + var/__BIN_CTTL = length(LIST);\ + if(!__BIN_CTTL) {\ + LIST += IN;\ + } else {\ + var/__BIN_LEFT = 1;\ + var/__BIN_RIGHT = __BIN_CTTL;\ + var/__BIN_MID = (__BIN_LEFT + __BIN_RIGHT) >> 1;\ + var/__BIN_ITEM;\ + while(__BIN_LEFT < __BIN_RIGHT) {\ + __BIN_ITEM = LIST[__BIN_MID];\ + if(__BIN_ITEM <= IN) {\ + __BIN_LEFT = __BIN_MID + 1;\ + } else {\ + __BIN_RIGHT = __BIN_MID;\ + };\ + __BIN_MID = (__BIN_LEFT + __BIN_RIGHT) >> 1;\ + };\ + __BIN_ITEM = LIST[__BIN_MID];\ + __BIN_MID = __BIN_ITEM > IN ? __BIN_MID : __BIN_MID + 1;\ + LIST.Insert(__BIN_MID, IN);\ + } + //Like typesof() or subtypesof(), but returns a typecache instead of a list /proc/typecacheof(path, ignore_root_path, only_root_path = FALSE) if(ispath(path)) diff --git a/code/__HELPERS/icons.dm b/code/__HELPERS/icons.dm index 4c8e1fe31354..39d91b2ada26 100644 --- a/code/__HELPERS/icons.dm +++ b/code/__HELPERS/icons.dm @@ -325,28 +325,25 @@ world -/// Create a single [/icon] from a given [/atom] or [/image]. -/// -/// Very low-performance. Should usually only be used for HTML, where BYOND's -/// appearance system (overlays/underlays, etc.) is not available. -/// -/// Only the first argument is required. +// Creates a single icon from a given /atom or /image. Only the first argument is required. /proc/getFlatIcon(image/A, defdir, deficon, defstate, defblend, start = TRUE, no_anim = FALSE) //Define... defines. var/static/icon/flat_template = icon('icons/effects/effects.dmi', "nothing") #define BLANK icon(flat_template) - #define GENERATE_FLAT_IMAGE_ICON(ICON_VAR, IMG_SOURCE, icon_to_use, icon_state_to_use, dir_to_use)\ - var/icon/SELF_ICON=icon(icon(icon_to_use, icon_state_to_use, dir_to_use), "", SOUTH, no_anim ? 1 : null);\ - if(##IMG_SOURCE.alpha < 255)\ - SELF_ICON.Blend(rgb(255, 255, 255, ##IMG_SOURCE.alpha), ICON_MULTIPLY);\ - if(##IMG_SOURCE.color) {\ - if(islist(##IMG_SOURCE.color))\ - SELF_ICON.MapColors(arglist(##IMG_SOURCE.color));\ - else\ - SELF_ICON.Blend(##IMG_SOURCE.color, ICON_MULTIPLY);\ - }\ - ##ICON_VAR = SELF_ICON; + #define SET_SELF(SETVAR) do { \ + var/icon/SELF_ICON = icon(icon(curicon, curstate, base_icon_dir), "", SOUTH, no_anim ? 1 : null); \ + if(A.alpha < 255) { \ + SELF_ICON.Blend(rgb(255, 255, 255, A.alpha), ICON_MULTIPLY);\ + } \ + if(A.color) { \ + if(islist(A.color)){ \ + SELF_ICON.MapColors(arglist(A.color))} \ + else{ \ + SELF_ICON.Blend(A.color, ICON_MULTIPLY)} \ + } \ + ##SETVAR=SELF_ICON;\ + } while (0) #define INDEX_X_LOW 1 #define INDEX_X_HIGH 2 #define INDEX_Y_LOW 3 @@ -361,10 +358,6 @@ world #define addY1 add_size[INDEX_Y_LOW] #define addY2 add_size[INDEX_Y_HIGH] - #define PROCESS_SET_UNDERLAYS 0 - #define PROCESS_SET_VIS_CONTENTS 1 - #define PROCESS_SET_OVERLAYS 2 - if(!A || A.alpha <= 0) return BLANK @@ -418,45 +411,44 @@ world var/curblend = A.blend_mode || defblend - var/atom/movable/AM = A - if(length(A.overlays) || length(A.underlays) || (istype(AM) && AM.vis_contents)) + if(length(A.overlays) || length(A.underlays)) var/icon/flat = BLANK // Layers will be a sorted list of icons/overlays, based on the order in which they are displayed var/list/layers = list() var/image/copy // Add the atom's icon itself, without pixel_x/y offsets. if(!noIcon) - copy = image(icon=curicon, icon_state=curstate, layer=A.layer, dir=base_icon_dir) + copy = image(icon = curicon, icon_state = curstate, layer = A.layer, dir = base_icon_dir) copy.color = A.color copy.alpha = A.alpha copy.blend_mode = curblend layers[copy] = A.layer - // Loop through the underlays, then vis_contents, then overlays, sorting them into the layers list - for(var/process_set in PROCESS_SET_UNDERLAYS to PROCESS_SET_OVERLAYS) - var/list/process + // Loop through the underlays, then overlays, sorting them into the layers list + for(var/process_set in 0 to 2) + var/list/process = process_set ? A.overlays : A.underlays switch(process_set) - if(PROCESS_SET_UNDERLAYS) + if(0) process = A.underlays - if(PROCESS_SET_VIS_CONTENTS) - if(!istype(AM)) - continue + if(1) process = A.vis_contents - else // PROCESS_SET_OVERLAYS + if(2) process = A.overlays - for(var/i in 1 to process.len) + for(var/i in 1 to length(process)) var/image/current = process[i] if(!current) continue - if(process_set == PROCESS_SET_VIS_CONTENTS && !istype(current)) + if(current.plane != FLOAT_PLANE && current.plane != A.plane) + continue + if(process_set == 1 && !istype(current)) current = image(icon = current.icon, icon_state = current.icon_state, layer = current.layer, dir = current.dir) var/current_layer = current.layer if(current_layer < 0) if(current_layer <= -1000) return flat - current_layer = A.layer + ((process_set ? 1000 : 0)+current_layer) / 1000 + current_layer = process_set + A.layer + current_layer / 1000 - for(var/p in 1 to layers.len) + for(var/p in 1 to length(layers)) var/image/cmp = layers[p] if(current_layer < layers[cmp]) layers.Insert(p, current) @@ -478,10 +470,8 @@ world if(I == copy) // 'I' is an /image based on the object being flattened. curblend = BLEND_OVERLAY add = icon(I.icon, I.icon_state, base_icon_dir) - else // 'I' is an /image - var/image_has_icon = I.icon - if(image_has_icon) - GENERATE_FLAT_IMAGE_ICON(add, I, I.icon, I.icon_state, base_icon_dir) + else // 'I' is an appearance object. + add = getFlatIcon(image(I), curdir, curicon, curstate, curblend, FALSE, no_anim) if(!add) continue // Find the new dimensions of the flat icon to fit the added overlay @@ -495,10 +485,10 @@ world if(flat_size ~! add_size) // Resize the flattened icon so the new icon fits flat.Crop( - addX1 - flatX1 + 1, - addY1 - flatY1 + 1, - addX2 - flatX1 + 1, - addY2 - flatY1 + 1 + addX1 - flatX1 + 1, + addY1 - flatY1 + 1, + addX2 - flatX1 + 1, + addY2 - flatY1 + 1 ) flat_size = add_size.Copy() @@ -523,7 +513,7 @@ world . = icon(flat, "", SOUTH) else //There's no overlays. if(!noIcon) - GENERATE_FLAT_IMAGE_ICON(., A, curicon, curstate, base_icon_dir) + SET_SELF(.) //Clear defines #undef flatX1 @@ -540,8 +530,8 @@ world #undef INDEX_Y_LOW #undef INDEX_Y_HIGH - #undef GENERATE_FLAT_IMAGE_ICON #undef BLANK + #undef SET_SELF /proc/getIconMask(atom/A)//By yours truly. Creates a dynamic mask for a mob/whatever. /N var/icon/alpha_mask = new(A.icon,A.icon_state)//So we want the default icon and icon state of A. diff --git a/code/__HELPERS/lighting.dm b/code/__HELPERS/lighting.dm new file mode 100644 index 000000000000..08c360849b58 --- /dev/null +++ b/code/__HELPERS/lighting.dm @@ -0,0 +1,11 @@ +/// Produces a mutable appearance glued to the [EMISSIVE_PLANE] dyed to be the [EMISSIVE_COLOR]. +/proc/emissive_appearance(icon, icon_state = "", layer = FLOAT_LAYER, alpha = 255, appearance_flags = NONE) + var/mutable_appearance/appearance = mutable_appearance(icon, icon_state, layer, EMISSIVE_PLANE, alpha, appearance_flags | EMISSIVE_APPEARANCE_FLAGS) + appearance.color = GLOB.emissive_color + return appearance + +/// Produces a mutable appearance glued to the [EMISSIVE_PLANE] dyed to be the [EM_BLOCK_COLOR]. +/proc/emissive_blocker(icon, icon_state = "", layer = FLOAT_LAYER, alpha = 255, appearance_flags = NONE) + var/mutable_appearance/appearance = mutable_appearance(icon, icon_state, layer, EMISSIVE_PLANE, alpha, appearance_flags | EMISSIVE_APPEARANCE_FLAGS) + appearance.color = GLOB.em_block_color + return appearance diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 2e48c9f80cd3..575071b76833 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -894,7 +894,7 @@ if(ismob(source)) var/mob/M = source has_nightvision = M.see_in_dark >= 12 - if(!has_nightvision && target_turf.lighting_lumcount == 0) + if(!has_nightvision && target_turf.get_lumcount() == 0) return FALSE while(current != target_turf) @@ -1227,12 +1227,11 @@ var/global/image/action_purple_power_up if(A.vars.Find(lowertext(varname))) return 1 else return 0 -//Returns: all the non-lighting areas in the world, sorted. +//Returns: all the areas in the world, sorted. /proc/return_sorted_areas() var/list/area/AL = list() for(var/area/A in GLOB.sorted_areas) - if(!A.lighting_subarea) - AL += A + AL += A return AL //Takes: Area type as text string or as typepath OR an instance of the area. @@ -1252,13 +1251,8 @@ var/global/image/action_purple_power_up var/area/A = GLOB.areas_by_type[areatype] // Fix it up with /area/var/related due to lighting shenanigans - var/list/area/LA - if(!length(A.related)) - LA = list(A) - else LA = A.related - for(var/area/Ai in LA) - for(var/turf/T in Ai) - turfs += T + for(var/turf/T in A) + turfs += T return turfs @@ -1382,7 +1376,7 @@ var/global/image/action_purple_power_up // if(AR.lighting_use_dynamic) //TODO: rewrite this code so it's not messed by lighting ~Carn // X.opacity = !X.opacity -// X.SetOpacity(!X.opacity) +// X.set_opacity(!X.opacity) toupdate += X @@ -1766,6 +1760,85 @@ var/list/WALLITEMS = list( if(location == src) return TRUE +GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new) + +/// Version of view() which ignores darkness, because BYOND doesn't have it (I actually suggested it but it was tagged redundant, BUT HEARERS IS A T- /rant). +/proc/dview(range = world.view, center, invis_flags = 0) + if(!center) + return + + GLOB.dview_mob.loc = center + + GLOB.dview_mob.see_invisible = invis_flags + + . = view(range, GLOB.dview_mob) + GLOB.dview_mob.loc = null + +/mob/dview + name = "INTERNAL DVIEW MOB" + invisibility = 101 + density = FALSE + see_in_dark = 1e6 + var/ready_to_die = FALSE + +/mob/dview/Initialize() //Properly prevents this mob from gaining huds or joining any global lists + SHOULD_CALL_PARENT(FALSE) + if(flags_atom & INITIALIZED) + stack_trace("Warning: [src]([type]) initialized multiple times!") + flags_atom |= INITIALIZED + return INITIALIZE_HINT_NORMAL + +/mob/dview/Destroy(force = FALSE) + if(!ready_to_die) + stack_trace("ALRIGHT WHICH FUCKER TRIED TO DELETE *MY* DVIEW?") + + if (!force) + return QDEL_HINT_LETMELIVE + + log_world("EVACUATE THE SHITCODE IS TRYING TO STEAL MUH JOBS") + GLOB.dview_mob = new + return ..() + + +#define FOR_DVIEW(type, range, center, invis_flags) \ + GLOB.dview_mob.loc = center; \ + GLOB.dview_mob.see_invisible = invis_flags; \ + for(type in view(range, GLOB.dview_mob)) + +#define FOR_DVIEW_END GLOB.dview_mob.loc = null + +/proc/get_turf_pixel(atom/AM) + if(!istype(AM)) + return + + //Find AM's matrix so we can use it's X/Y pixel shifts + var/matrix/M = matrix(AM.transform) + + var/pixel_x_offset = AM.pixel_x + M.get_x_shift() + var/pixel_y_offset = AM.pixel_y + M.get_y_shift() + + //Irregular objects + var/icon/AMicon = icon(AM.icon, AM.icon_state) + var/AMiconheight = AMicon.Height() + var/AMiconwidth = AMicon.Width() + if(AMiconheight != world.icon_size || AMiconwidth != world.icon_size) + pixel_x_offset += ((AMiconwidth/world.icon_size)-1)*(world.icon_size*0.5) + pixel_y_offset += ((AMiconheight/world.icon_size)-1)*(world.icon_size*0.5) + + //DY and DX + var/rough_x = round(round(pixel_x_offset,world.icon_size)/world.icon_size) + var/rough_y = round(round(pixel_y_offset,world.icon_size)/world.icon_size) + + //Find coordinates + var/turf/T = get_turf(AM) //use AM's turfs, as it's coords are the same as AM's AND AM's coords are lost if it is inside another atom + if(!T) + return null + var/final_x = T.x + rough_x + var/final_y = T.y + rough_y + + if(final_x || final_y) + return locate(final_x, final_y, T.z) + //used to check if a mob can examine an object /atom/proc/can_examine(mob/user) if(!user.client) diff --git a/code/_onclick/hud/fullscreen.dm b/code/_onclick/hud/fullscreen.dm index 293cdbd6374e..ff271b889e6c 100644 --- a/code/_onclick/hud/fullscreen.dm +++ b/code/_onclick/hud/fullscreen.dm @@ -186,3 +186,34 @@ /atom/movable/screen/fullscreen/weather/high icon_state = "impairedoverlay3" + +/atom/movable/screen/fullscreen/lighting_backdrop + icon = 'icons/mob/hud/screen1.dmi' + icon_state = "flash" + transform = matrix(200, 0, 0, 0, 200, 0) + plane = LIGHTING_PLANE + blend_mode = BLEND_OVERLAY + show_when_dead = TRUE + +/atom/movable/screen/fullscreen/lighting_backdrop/update_for_view(client_view) + return + +//Provides darkness to the back of the lighting plane +/atom/movable/screen/fullscreen/lighting_backdrop/lit_secondary + invisibility = INVISIBILITY_LIGHTING + layer = BACKGROUND_LAYER + LIGHTING_PRIMARY_DIMMER_LAYER + color = "#000" + alpha = 60 + +/atom/movable/screen/fullscreen/lighting_backdrop/backplane + invisibility = INVISIBILITY_LIGHTING + layer = LIGHTING_BACKPLANE_LAYER + color = "#000" + blend_mode = BLEND_ADD + +/atom/movable/screen/fullscreen/see_through_darkness + icon_state = "nightvision" + plane = LIGHTING_PLANE + layer = LIGHTING_PRIMARY_LAYER + blend_mode = BLEND_ADD + show_when_dead = TRUE diff --git a/code/_onclick/hud/rendering/plane_master.dm b/code/_onclick/hud/rendering/plane_master.dm index d29228f4c16e..91c0e24fae1f 100644 --- a/code/_onclick/hud/rendering/plane_master.dm +++ b/code/_onclick/hud/rendering/plane_master.dm @@ -76,6 +76,17 @@ appearance_flags = PLANE_MASTER | NO_CLIENT_COLOR | PIXEL_SCALE //byond internal end +/*! + * This system works by exploiting BYONDs color matrix filter to use layers to handle emissive blockers. + * + * Emissive overlays are pasted with an atom color that converts them to be entirely some specific color. + * Emissive blockers are pasted with an atom color that converts them to be entirely some different color. + * Emissive overlays and emissive blockers are put onto the same plane. + * The layers for the emissive overlays and emissive blockers cause them to mask eachother similar to normal BYOND objects. + * A color matrix filter is applied to the emissive plane to mask out anything that isn't whatever the emissive color is. + * This is then used to alpha mask the lighting plane. + */ + ///Contains all lighting objects /atom/movable/screen/plane_master/lighting name = "lighting plane master" @@ -83,10 +94,41 @@ blend_mode_override = BLEND_MULTIPLY mouse_opacity = MOUSE_OPACITY_TRANSPARENT +/atom/movable/screen/plane_master/lighting/backdrop(mob/mymob) + . = ..() + mymob.overlay_fullscreen("lighting_backdrop", /atom/movable/screen/fullscreen/lighting_backdrop/backplane) + mymob.overlay_fullscreen("lighting_backdrop_lit_secondary", /atom/movable/screen/fullscreen/lighting_backdrop/lit_secondary) + +/atom/movable/screen/plane_master/lighting/Initialize() + . = ..() + add_filter("emissives", 1, alpha_mask_filter(render_source = EMISSIVE_RENDER_TARGET, flags = MASK_INVERSE)) + add_filter("object_lighting", 2, alpha_mask_filter(render_source = O_LIGHTING_VISUAL_RENDER_TARGET, flags = MASK_INVERSE)) + /atom/movable/screen/plane_master/lighting/exterior name = "exterior lighting plane master" plane = EXTERIOR_LIGHTING_PLANE +/** + * Handles emissive overlays and emissive blockers. + */ +/atom/movable/screen/plane_master/emissive + name = "emissive plane master" + plane = EMISSIVE_PLANE + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + render_target = EMISSIVE_RENDER_TARGET + render_relay_plane = null + +/atom/movable/screen/plane_master/emissive/Initialize() + . = ..() + add_filter("em_block_masking", 1, color_matrix_filter(GLOB.em_mask_matrix)) + +/atom/movable/screen/plane_master/above_lighting + name = "above lighting plane master" + plane = ABOVE_LIGHTING_PLANE + appearance_flags = PLANE_MASTER //should use client color + blend_mode = BLEND_OVERLAY + render_relay_plane = RENDER_PLANE_GAME + /atom/movable/screen/plane_master/runechat name = "runechat plane master" plane = RUNECHAT_PLANE @@ -94,6 +136,14 @@ blend_mode = BLEND_OVERLAY render_relay_plane = RENDER_PLANE_NON_GAME +/atom/movable/screen/plane_master/o_light_visual + name = "overlight light visual plane master" + plane = O_LIGHTING_VISUAL_PLANE + render_target = O_LIGHTING_VISUAL_RENDER_TARGET + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + blend_mode = BLEND_MULTIPLY + blend_mode_override = BLEND_MULTIPLY + /atom/movable/screen/plane_master/runechat/backdrop(mob/mymob) . = ..() remove_filter("AO") diff --git a/code/controllers/_DynamicAreaLighting_TG.dm b/code/controllers/_DynamicAreaLighting_TG.dm deleted file mode 100644 index 9b6088b9bc1e..000000000000 --- a/code/controllers/_DynamicAreaLighting_TG.dm +++ /dev/null @@ -1,406 +0,0 @@ -/* - Modified DynamicAreaLighting for TGstation - Coded by Carnwennan - - This is TG's 'new' lighting system. It's basically a heavily modified combination of Forum_Account's and - ShadowDarke's respective lighting libraries. Credits, where due, to them. - - Like sd_DAL (what we used to use), it changes the shading overlays of areas by splitting each type of area into sub-areas - by using the var/tag variable and moving turfs into the contents list of the correct sub-area. This method is - much less costly than using overlays or objects. - - Unlike sd_DAL however it uses a queueing system. Everytime we call a change to opacity or luminosity - (through SetOpacity() or SetLuminosity()) we are simply updating variables and scheduling certain lights/turfs for an - update. Actual updates are handled periodically by the lighting_controller. This carries additional overheads, however it - means that each thing is changed only once per lighting_controller.processing_interval ticks. Allowing for greater control - over how much priority we'd like lighting updates to have. It also makes it possible for us to simply delay updates by - setting lighting_controller.processing = 0 at say, the start of a large explosion, waiting for it to finish, and then - turning it back on with lighting_controller.processing = 1. - - Unlike our old system there are hardcoded maximum luminositys (different for certain atoms). - This is to cap the cost of creating lighting effects. - (without this, an atom with luminosity of 20 would have to update 41^2 turfs!) :s - - Also, in order for the queueing system to work, each light remembers the effect it casts on each turf. This is going to - have larger memory requirements than our previous system but it's easily worth the hassle for the greater control we - gain. It also reduces cost of removing lighting effects by a lot! - - Known Issues/TODO: - Shuttles still do not have support for dynamic lighting (I hope to fix this at some point) - No directional lighting support. (prototype looked ugly) -*/ - -#define LIGHTING_CIRCULAR 1 //comment this out to use old square lighting effects. -#define LIGHTING_LAYER 10 //Drawing layer for lighting overlays -#define LIGHTING_ICON 'icons/effects/ss13_dark_alpha6.dmi' //Icon used for lighting shading effects -#define LIGHTING_STATES 6 - -// Update these lists if the luminosity cap -// of 8 is removed -GLOBAL_LIST_INIT(comp1table, list( - 0, - 0.934, - 1.868, - 2.802, - 3.736, - 4.67, - 5.604, - 6.538, - 7.472, -)) -GLOBAL_LIST_INIT(comp2table, list( - 0, - 0.427, - 0.854, - 1.281, - 1.708, - 2.135, - 2.562, - 2.989, - 3.416, -)) -/datum/light_source - var/atom/owner - var/changed = 1 - var/list/effect = list() - var/__x = 0 //x coordinate at last update - var/__y = 0 //y coordinate at last update - var/__z = 0 //z coordinate at last update - -#define turf_update_lumcount(T, amount)\ - T.lighting_lumcount += amount;\ - if(!T.lighting_changed){\ - SSlighting.changed_turfs += T;\ - T.lighting_changed = TRUE;\ - } - -#define ls_remove_effect(ls)\ - for(var/t in ls.effect){\ - var/turf/T = t;\ - turf_update_lumcount(T, -ls.effect[T]);\ - }\ - ls.effect.Cut(); - -/datum/light_source/New(atom/A) - if(!istype(A)) - CRASH("The first argument to the light object's constructor must be the atom that is the light source. Expected atom, received '[A]' instead.") - ..() - owner = A - __x = owner.x - __y = owner.y - __z = owner.z - // the lighting object maintains a list of all light sources - SSlighting.lights.Add(src) - -//Check a light to see if its effect needs reprocessing. If it does, remove any old effect and create a new one -/datum/light_source/proc/check() - if(!owner) - ls_remove_effect(src) - return TRUE //causes it to be removed from our list of lights. The garbage collector will then destroy it. - - if(owner.luminosity > 8) - owner.luminosity = 8 - - changed = FALSE - - ls_remove_effect(src) - if(owner.loc && owner.luminosity > 0) - for(var/turf/T in view(owner.luminosity, owner)) - var/dist - var/dx = abs(T.x - __x) - var/dy = abs(T.y - __y) - // Use dx+1 and dy+1 because lists use 1-based indexing - if(dx >= dy) - dist = (GLOB.comp1table[dx+1]) + (GLOB.comp2table[dy+1]) - else - dist = (GLOB.comp2table[dx+1]) + (GLOB.comp1table[dy+1]) - var/delta_lumen = owner.luminosity - dist - if(delta_lumen > 0) - effect[T] = delta_lumen - turf_update_lumcount(T, delta_lumen) - return FALSE - else - owner.light = null - return TRUE - -/datum/light_source/proc/changed() - if(owner) - __x = owner.x - __y = owner.y - - if(!changed) - changed = 1 - SSlighting.lights.Add(src) - - -/datum/light_source/proc/remove_effect() - // before we apply the effect we remove the light's current effect. - for(var/turf/T in effect) // negate the effect of this light source - turf_update_lumcount(T, -effect[T]) - effect.Cut() // clear the effect list - -/atom - var/datum/light_source/light - var/trueLuminosity = 0 // Typically 'luminosity' squared. The builtin luminosity must remain linear. - // We may read it, but NEVER set it directly. - -//Movable atoms with opacity when they are constructed will trigger nearby lights to update -//Movable atoms with luminosity when they are constructed will create a light_source automatically -/atom/movable/Initialize(mapload, ...) - . = ..() - if(opacity) - if(isturf(loc)) - var/turf/T = loc - if(T.lighting_lumcount > 1) - UpdateAffectingLights() - if(luminosity) - if(light) WARNING("[type] - Don't set lights up manually during New(), We do it automatically.") - trueLuminosity = luminosity * luminosity - light = new(src) - -//Objects with opacity will trigger nearby lights to update at next lighting process. -/atom/movable/Destroy() - if(opacity) - if(isturf(loc)) - var/turf/T = loc - if(T.lighting_lumcount > 1) - UpdateAffectingLights() - . = ..() - -/atom/vv_edit_var(var_name, var_value) - switch(var_name) - if(NAMEOF(src, luminosity)) - SetLuminosity(var_value) - return ..() - -//Sets our luminosity. -//If we have no light it will create one. -//If we are setting luminosity to 0 the light will be cleaned up by the controller and garbage collected once all its -//queues are complete. -//if we have a light already it is merely updated, rather than making a new one. -/atom/proc/SetLuminosity(new_luminosity, trueLum = FALSE, atom/source) - if(new_luminosity < 0) - new_luminosity = 0 - if(!trueLum) - new_luminosity *= new_luminosity - if(light) - if(trueLuminosity != new_luminosity) //non-luminous lights are removed from the lights list in add_effect() - light.changed() - else - if(new_luminosity) - light = new(src) - trueLuminosity = new_luminosity - if (trueLuminosity < 1) - luminosity = 0 - else if (trueLuminosity <= 100) - luminosity = sqrtTable[trueLuminosity] - else - luminosity = sqrt(trueLuminosity) - -//This slightly modifies human luminosity. Source of light do NOT stack. -//When you drop a light source it should keep a running total of your actual luminosity and set it accordingly. -/mob/SetLuminosity(new_luminosity, trueLum, atom/source) - LAZYREMOVE(luminosity_sources, source) - if(source) - UnregisterSignal(source, COMSIG_PARENT_QDELETING) - var/highest_luminosity = 0 - for(var/luminosity_source as anything in luminosity_sources) - var/lumonisity_rating = luminosity_sources[luminosity_source] - if(highest_luminosity < lumonisity_rating) - highest_luminosity = lumonisity_rating - if(source && new_luminosity > 0) - LAZYSET(luminosity_sources, source, new_luminosity) - RegisterSignal(source, COMSIG_PARENT_QDELETING, PROC_REF(remove_luminosity_source)) - if(new_luminosity < highest_luminosity) - new_luminosity = highest_luminosity - return ..() - -/mob/proc/remove_luminosity_source(atom/source) - SetLuminosity(0, FALSE, source) - -/area/SetLuminosity(new_luminosity) //we don't want dynamic lighting for areas - luminosity = !!new_luminosity - trueLuminosity = luminosity - - -//change our opacity (defaults to toggle), and then update all lights that affect us. -/atom/proc/SetOpacity(new_opacity) - if(new_opacity == null) - new_opacity = !opacity //default = toggle opacity - else if(opacity == new_opacity) - return FALSE //opacity hasn't changed! don't bother doing anything - opacity = new_opacity //update opacity, the below procs now call light updates. - return TRUE - -/turf/SetOpacity(new_opacity) - . = ..() - //only bother if opacity changed - if(!.) - return - if(lighting_lumcount) //only bother with an update if our turf is currently affected by a light - UpdateAffectingLights() - -/atom/movable/SetOpacity(new_opacity) - . = ..() - // only bother if opacity changed - if(!.) - return - // only bother with an update if we're on a turf - if(isturf(loc)) - var/turf/T = loc - // only bother with an update if our turf is currently affected by a light - if(T.lighting_lumcount) - UpdateAffectingLights() - - -/turf - var/lighting_lumcount = 0 - var/lighting_changed = 0 - var/cached_lumcount = 0 - -/turf/open/space - lighting_lumcount = 4 //starlight - -/turf/proc/update_lumcount(amount, removing = 0) - lighting_lumcount += amount - - if(!lighting_changed) - SSlighting.changed_turfs += src - lighting_changed = 1 - -/turf/proc/lighting_tag(const/level) - var/area/A = loc - return A.tagbase + "sd_L[level]" - -/turf/proc/build_lighting_area(const/tag, const/level) - var/area/Area = loc - var/area/A = new Area.type() // create area if it wasn't found - // replicate vars - for(var/V in Area.vars) - switch(V) - if ("contents","lighting_overlay", "overlays") - continue - else - if(issaved(Area.vars[V])) A.vars[V] = Area.vars[V] - - A.tag = tag - A.lighting_subarea = 1 - A.lighting_space = 0 // in case it was copied from a space subarea - - A.SetLightLevel(level) - Area.related += A - - if(SSweather.is_weather_event && SSweather.map_holder.should_affect_area(A)) - A.overlays += SSweather.curr_master_turf_overlay - - return A - -/turf/proc/shift_to_subarea() - lighting_changed = 0 - var/area/Area = loc - - if(!istype(Area) || !Area.lighting_use_dynamic) return - - var/level = min(max(round(lighting_lumcount,1),0),LIGHTING_STATES) - var/new_tag = lighting_tag(level) - - if(Area.tag!=new_tag) //skip if already in this area - var/area/A = locate(new_tag) // find an appropriate area - - if (!A) - A = build_lighting_area(new_tag, level) - - A.contents += src // move the turf into the area - -// Dedicated lighting sublevel for space turfs -// helps us depower things in space, remove space fire alarms, -// and evens out space lighting -/turf/open/space/lighting_tag(level) - var/area/A = loc - return A.tagbase + "sd_L_space" -/turf/open/space/build_lighting_area(tag, level) - var/area/A = ..(tag,4) - A.lighting_space = 1 - A.SetLightLevel(4) - A.icon_state = null - return A - - -/area - var/lighting_use_dynamic = 1 //Turn this flag off to prevent sd_DynamicAreaLighting from affecting this area - var/image/lighting_overlay //tracks the darkness image of the area for easy removal - var/lighting_subarea = 0 //tracks whether we're a lighting sub-area - var/lighting_space = 0 // true for space-only lighting subareas - var/tagbase - var/exterior_light = 2 - -/area/proc/SetLightLevel(light) - if(!src) return - if(light <= 0) - light = 0 - luminosity = 1 - if(light > LIGHTING_STATES) - light = LIGHTING_STATES - - if(lighting_overlay) - overlays -= lighting_overlay - lighting_overlay.icon_state = "[light]" - else - lighting_overlay = image(LIGHTING_ICON,,num2text(light),LIGHTING_LAYER) - lighting_overlay.plane = ceiling <= CEILING_GLASS ? EXTERIOR_LIGHTING_PLANE : LIGHTING_PLANE - if (light < 6) - overlays.Add(lighting_overlay) - -/area/proc/SetDynamicLighting() - src.lighting_use_dynamic = 1 - for(var/turf/T in src.contents) - turf_update_lumcount(T, 0) - -/area/proc/InitializeLighting() //TODO: could probably improve this bit ~Carn - tagbase = "[type]" - if(!tag) tag = tagbase - if(!lighting_use_dynamic) - if(!lighting_subarea) // see if this is a lighting subarea already - //show the dark overlay so areas, not yet in a lighting subarea, won't be bright as day and look silly. - SetLightLevel(4) - -//#undef LIGHTING_LAYER -#undef LIGHTING_CIRCULAR -//#undef LIGHTING_ICON - -#define LIGHTING_MAX_LUMINOSITY_STATIC 8 //Maximum luminosity to reduce lag. -#define LIGHTING_MAX_LUMINOSITY_MOBILE 6 //Moving objects have a lower max luminosity since these update more often. (lag reduction) -#define LIGHTING_MAX_LUMINOSITY_TURF 1 //turfs have a severely shortened range to protect from inevitable floor-lighttile spam. - -//set the changed status of all lights which could have possibly lit this atom. -//We don't need to worry about lights which lit us but moved away, since they will have change status set already -//This proc can cause lots of lights to be updated. :( -/atom/proc/UpdateAffectingLights() -// for(var/atom/A in oview(LIGHTING_MAX_LUMINOSITY_STATIC-1,src)) -// if(A.light) -// A.light.changed() //force it to update at next process() - -/atom/movable/UpdateAffectingLights() - if(isturf(loc)) - loc.UpdateAffectingLights() - -/turf/UpdateAffectingLights() - for(var/atom/A in oview(LIGHTING_MAX_LUMINOSITY_STATIC-1,src)) - if(A.light) - A.light.changed() - -//caps luminosity effects max-range based on what type the light's owner is. -/atom/proc/get_light_range() - return min(luminosity, LIGHTING_MAX_LUMINOSITY_STATIC) - -/atom/movable/get_light_range() - return min(luminosity, LIGHTING_MAX_LUMINOSITY_MOBILE) - -/obj/structure/machinery/light/get_light_range() - return min(luminosity, LIGHTING_MAX_LUMINOSITY_STATIC) - -/turf/get_light_range() - return min(luminosity, LIGHTING_MAX_LUMINOSITY_TURF) - -#undef LIGHTING_MAX_LUMINOSITY_STATIC -#undef LIGHTING_MAX_LUMINOSITY_MOBILE -#undef LIGHTING_MAX_LUMINOSITY_TURF diff --git a/code/controllers/subsystem/lighting.dm b/code/controllers/subsystem/lighting.dm index 26ee4c9a648e..3c3d14468bc2 100644 --- a/code/controllers/subsystem/lighting.dm +++ b/code/controllers/subsystem/lighting.dm @@ -1,68 +1,124 @@ SUBSYSTEM_DEF(lighting) - name = "Lighting" + name = "Lighting" + wait = 2 init_order = SS_INIT_LIGHTING - priority = SS_PRIORITY_LIGHTING - wait = 0.4 SECONDS - runlevels = RUNLEVELS_DEFAULT|RUNLEVEL_LOBBY - var/list/datum/light_source/lights_current = list() - var/list/datum/light_source/lights = list() + //debug var for tracking updates before init is complete + var/duplicate_shadow_updates_in_init = 0 + ///Total times shadows were updated, debug + var/total_shadow_calculations = 0 - var/list/turf/changed_turfs_current = list() - var/list/turf/changed_turfs = list() + ///Whether the SS has begun setting up yet + var/started = FALSE + var/static/list/static_sources_queue = list() //! List of static lighting sources queued for update. + var/static/list/corners_queue = list() //! List of lighting corners queued for update. + var/static/list/objects_queue = list() //! List of lighting objects queued for update. -/datum/controller/subsystem/lighting/stat_entry(msg) - msg = "L:[lights.len]; T:[changed_turfs.len]" - return ..() + var/static/list/mask_queue = list() //! List of hybrid lighting sources queued for update. /datum/controller/subsystem/lighting/Initialize(timeofday) - for(var/thing in lights) - var/datum/light_source/L = thing - if(L) - L.check() - lights.Cut() + started = TRUE + if(!initialized) + //Handle static lightnig + create_all_lighting_objects() + fire(FALSE, TRUE) + return SS_INIT_SUCCESS - var/z_start = 1 - var/z_finish = world.maxz +/datum/controller/subsystem/lighting/stat_entry() + . = ..("ShCalcs:[total_shadow_calculations]|SourcQ:[static_sources_queue.len]|CcornQ:[corners_queue.len]|ObjQ:[objects_queue.len]|HybrQ:[mask_queue.len]") - var/list/init_turfs = block(locate(1,1,z_start),locate(world.maxx,world.maxy,z_finish)) +/datum/controller/subsystem/lighting/fire(resumed, init_tick_checks) + MC_SPLIT_TICK_INIT(3) + if(!init_tick_checks) + MC_SPLIT_TICK + var/updators_num = 0 + while(updators_num < length(static_sources_queue)) + updators_num += 1 - for(var/turf/thing in init_turfs) - if(istype(thing)) - thing.shift_to_subarea() + var/datum/static_light_source/L = static_sources_queue[updators_num] + L.update_corners() - return SS_INIT_SUCCESS + if(!QDELETED(L)) + L.needs_update = LIGHTING_NO_UPDATE + else + updators_num -= 1 + if(init_tick_checks) + if(!TICK_CHECK) + continue + static_sources_queue.Cut(1, updators_num + 1) + updators_num = 0 + stoplag() + else if (MC_TICK_CHECK) + break + if(updators_num) + static_sources_queue.Cut(1, updators_num + 1) + updators_num = 0 + if(!init_tick_checks) + MC_SPLIT_TICK -/datum/controller/subsystem/lighting/fire(resumed = FALSE) - if(!resumed) - lights_current = lights - lights = list() - changed_turfs_current = changed_turfs - changed_turfs = list() + while(updators_num < length(corners_queue)) + updators_num += 1 + var/datum/static_lighting_corner/C = corners_queue[updators_num] + C.needs_update = FALSE //update_objects() can call qdel if the corner is storing no data + C.update_objects() - while(lights_current.len) - var/datum/light_source/L = lights_current[lights_current.len] - lights_current.len-- - if(!L) - continue - if(!L.owner || L.changed) - L.check() - if(MC_TICK_CHECK) - return - - while(changed_turfs_current.len) - var/turf/T = changed_turfs_current[changed_turfs_current.len] - changed_turfs_current.len-- - if(!T) + if(init_tick_checks) + if(!TICK_CHECK) + continue + corners_queue.Cut(1, updators_num + 1) + updators_num = 0 + stoplag() + else if (MC_TICK_CHECK) + break + if(updators_num) + corners_queue.Cut(1, updators_num + 1) + updators_num = 0 + if(!init_tick_checks) + MC_SPLIT_TICK + + while(updators_num < length(objects_queue)) + updators_num += 1 + + var/datum/static_lighting_object/O = objects_queue[updators_num] + if (QDELETED(O)) continue - if(T.lighting_changed) - if(T.lighting_lumcount != T.cached_lumcount) - T.cached_lumcount = T.lighting_lumcount - T.shift_to_subarea() - T.lighting_changed = FALSE - if (MC_TICK_CHECK) - return + O.update() + O.needs_update = FALSE + + if(init_tick_checks) + if(!TICK_CHECK) + continue + objects_queue.Cut(1, updators_num + 1) + updators_num = 0 + else if (MC_TICK_CHECK) + break + if(updators_num) + objects_queue.Cut(1, updators_num + 1) + updators_num = 0 + if(!init_tick_checks) + MC_SPLIT_TICK + + while(updators_num > length(mask_queue)) + updators_num += 1 + + var/atom/movable/lighting_mask/mask_to_update = mask_queue[updators_num] + mask_to_update.calculate_lighting_shadows() + + if(init_tick_checks) + if(!TICK_CHECK) + continue + mask_queue.Cut(1, updators_num + 1) + updators_num = 0 + stoplag() + else if (MC_TICK_CHECK) + break + if(updators_num) + mask_queue.Cut(1, updators_num + 1) + +/datum/controller/subsystem/lighting/Recover() + initialized = SSlighting.initialized + return ..() diff --git a/code/controllers/subsystem/weather.dm b/code/controllers/subsystem/weather.dm index 7610c007df90..325c45fe2300 100644 --- a/code/controllers/subsystem/weather.dm +++ b/code/controllers/subsystem/weather.dm @@ -47,7 +47,7 @@ SUBSYSTEM_DEF(weather) /datum/controller/subsystem/weather/proc/setup_weather_areas() weather_areas = list() for(var/area/A in all_areas) - if(A == A.master && A.weather_enabled && map_holder.should_affect_area(A)) + if(A.weather_enabled && map_holder.should_affect_area(A)) weather_areas += A curr_master_turf_overlay = new /obj/effect/weather_vfx_holder @@ -146,8 +146,7 @@ SUBSYSTEM_DEF(weather) curr_master_turf_overlay.icon_state = weather_event_instance.turf_overlay_icon_state curr_master_turf_overlay.alpha = weather_event_instance.turf_overlay_alpha for(var/area/area as anything in weather_areas) - for(var/area/subarea as anything in area.related) - subarea.overlays += curr_master_turf_overlay + area.overlays += curr_master_turf_overlay update_mobs_weather() SEND_GLOBAL_SIGNAL(COMSIG_GLOB_WEATHER_CHANGE) @@ -169,8 +168,7 @@ SUBSYSTEM_DEF(weather) message_admins(SPAN_BLUE("Weather Event of unknown type [weather_event_type] ending after [DisplayTimeText(world.time - current_event_start_time)].")) for(var/area/area as anything in weather_areas) - for(var/area/subarea as anything in area.related) - subarea.overlays -= curr_master_turf_overlay + area.overlays -= curr_master_turf_overlay if (map_holder.no_weather_turf_icon_state) curr_master_turf_overlay.icon_state = map_holder.no_weather_turf_icon_state diff --git a/code/datums/components/overlay_lighting.dm b/code/datums/components/overlay_lighting.dm new file mode 100644 index 000000000000..00a5e86b5d60 --- /dev/null +++ b/code/datums/components/overlay_lighting.dm @@ -0,0 +1,513 @@ +///For switchable lights, is it on and currently emitting light? +#define LIGHTING_ON (1<<0) +///Is the parent attached to something else, its loc? Then we need to keep an eye of this. +#define LIGHTING_ATTACHED (1<<1) + +#define GET_PARENT (parent_attached_to || parent) + +#define SHORT_CAST 2 + + +/** + * Movable atom overlay-based lighting component. + * + * * Component works by applying a visual object to the parent target. + * + * * The component tracks the parent's loc to determine the current_holder. + * * The current_holder is either the parent or its loc, whichever is on a turf. If none, then the current_holder is null and the light is not visible. + * + * * Lighting works at its base by applying a dark overlay and "cutting" said darkness with light, adding (possibly colored) transparency. + * * This component uses the visible_mask visual object to apply said light mask on the darkness. + * + * * The main limitation of this system is that it uses a limited number of pre-baked geometrical shapes, but for most uses it does the job. + * + * * Another limitation is for big lights: you only see the light if you see the object emiting it. + * * For small objects this is good (you can't see them behind a wall), but for big ones this quickly becomes prety clumsy. +*/ +/datum/component/overlay_lighting + ///How far the light reaches, float. + var/range = 1 + ///Ceiling of range, integer without decimal entries. + var/lumcount_range = 0 + ///How much this light affects the dynamic_lumcount of turfs. + var/lum_power = 0.5 + ///Transparency value. + var/set_alpha = 0 + ///For light sources that can be turned on and off. + var/overlay_lighting_flags = NONE + + ///Cache of the possible light overlays, according to size. + var/static/list/light_overlays = list( + "32" = 'icons/effects/light_overlays/light_32.dmi', + "64" = 'icons/effects/light_overlays/light_64.dmi', + "96" = 'icons/effects/light_overlays/light_96.dmi', + "128" = 'icons/effects/light_overlays/light_128.dmi', + "160" = 'icons/effects/light_overlays/light_160.dmi', + "192" = 'icons/effects/light_overlays/light_192.dmi', + "224" = 'icons/effects/light_overlays/light_224.dmi', + "256" = 'icons/effects/light_overlays/light_256.dmi', + "288" = 'icons/effects/light_overlays/light_288.dmi', + "320" = 'icons/effects/light_overlays/light_320.dmi', + "352" = 'icons/effects/light_overlays/light_352.dmi', + "384" = 'icons/effects/light_overlays/light_384.dmi', + "416" = 'icons/effects/light_overlays/light_416.dmi', + ) + + ///Overlay effect to cut into the darkness and provide light. + var/image/visible_mask + ///Lazy list to track the turfs being affected by our light, to determine their visibility. + var/list/turf/affected_turfs + ///Movable atom currently holding the light. Parent might be a flashlight, for example, but that might be held by a mob or something else. + var/atom/movable/current_holder + ///Movable atom the parent is attached to. For example, a flashlight into a helmet or gun. We'll need to track the thing the parent is attached to as if it were the parent itself. + var/atom/movable/parent_attached_to + ///Whether we're a directional light + var/directional = FALSE + ///A cone overlay for directional light, it's alpha and color are dependant on the light + var/image/cone + ///Current tracked direction for the directional cast behaviour + var/current_direction + ///Tracks current directional x offset so we dont update unecessarily + var/directional_offset_x + ///Tracks current directional y offset so we dont update unecessarily + var/directional_offset_y + ///Cast range for the directional cast (how far away the atom is moved) + var/cast_range = 2 + + +/datum/component/overlay_lighting/Initialize(_range, _power, _color, starts_on, is_directional) + if(!ismovable(parent)) + return COMPONENT_INCOMPATIBLE + + var/atom/movable/movable_parent = parent + if(movable_parent.light_system != MOVABLE_LIGHT && movable_parent.light_system != DIRECTIONAL_LIGHT) + stack_trace("[type] added to [parent], with [movable_parent.light_system] value for the light_system var. Use [MOVABLE_LIGHT]/[DIRECTIONAL_LIGHT] instead.") + return COMPONENT_INCOMPATIBLE + + . = ..() + + visible_mask = image('icons/effects/light_overlays/light_32.dmi', icon_state = "light") + visible_mask.plane = O_LIGHTING_VISUAL_PLANE + visible_mask.appearance_flags = RESET_COLOR | RESET_ALPHA | RESET_TRANSFORM + visible_mask.alpha = 0 + if(is_directional) + directional = TRUE + cone = image('icons/effects/light_overlays/light_cone.dmi', icon_state = "light") + cone.plane = O_LIGHTING_VISUAL_PLANE + cone.appearance_flags = RESET_COLOR | RESET_ALPHA | RESET_TRANSFORM + cone.alpha = 110 + cone.transform = cone.transform.Translate(-32, -32) + set_direction(movable_parent.dir) + if(!isnull(_range)) + movable_parent.set_light_range(_range) + set_range(parent, movable_parent.light_range) + if(!isnull(_power)) + movable_parent.set_light_power(_power) + set_power(parent, movable_parent.light_power) + if(!isnull(_color)) + movable_parent.set_light_color(_color) + set_color(parent, movable_parent.light_color) + if(!isnull(starts_on)) + movable_parent.set_light_on(starts_on) + +/datum/component/overlay_lighting/RegisterWithParent() + . = ..() + if(directional) + RegisterSignal(parent, COMSIG_ATOM_DIR_CHANGE, PROC_REF(on_parent_dir_change)) + RegisterSignal(parent, COMSIG_MOVABLE_MOVED, PROC_REF(on_parent_moved)) + RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, PROC_REF(check_holder)) + RegisterSignal(parent, COMSIG_ATOM_SET_LIGHT_RANGE, PROC_REF(set_range)) + RegisterSignal(parent, COMSIG_ATOM_SET_LIGHT_POWER, PROC_REF(set_power)) + RegisterSignal(parent, COMSIG_ATOM_SET_LIGHT_COLOR, PROC_REF(set_color)) + RegisterSignal(parent, COMSIG_ATOM_SET_LIGHT_ON, PROC_REF(on_toggle)) + RegisterSignal(parent, COMSIG_ATOM_SET_LIGHT_FLAGS, PROC_REF(on_light_flags_change)) + var/atom/movable/movable_parent = parent + if(movable_parent.light_flags & LIGHT_ATTACHED) + overlay_lighting_flags |= LIGHTING_ATTACHED + set_parent_attached_to(ismovable(movable_parent.loc) ? movable_parent.loc : null) + check_holder() + if(movable_parent.light_on) + turn_on() + + + +/datum/component/overlay_lighting/UnregisterFromParent() + overlay_lighting_flags &= ~LIGHTING_ATTACHED + set_parent_attached_to(null) + set_holder(null) + clean_old_turfs() + UnregisterSignal(parent, list( + COMSIG_MOVABLE_MOVED, + COMSIG_ATOM_SET_LIGHT_RANGE, + COMSIG_ATOM_SET_LIGHT_POWER, + COMSIG_ATOM_SET_LIGHT_COLOR, + COMSIG_ATOM_SET_LIGHT_ON, + COMSIG_ATOM_SET_LIGHT_FLAGS, + )) + if(directional) + UnregisterSignal(parent, COMSIG_ATOM_DIR_CHANGE) + if(overlay_lighting_flags & LIGHTING_ON) + turn_off() + return ..() + + +/datum/component/overlay_lighting/Destroy() + set_parent_attached_to(null) + set_holder(null) + clean_old_turfs() + visible_mask = null + cone = null + parent_attached_to = null + return ..() + + +///Clears the affected_turfs lazylist, removing from its contents the effects of being near the light. +/datum/component/overlay_lighting/proc/clean_old_turfs() + for(var/turf/lit_turf as anything in affected_turfs) + lit_turf.dynamic_lumcount -= lum_power + affected_turfs = null + + +///Populates the affected_turfs lazylist, adding to its contents the effects of being near the light. +/datum/component/overlay_lighting/proc/get_new_turfs() + if(!current_holder) + return + LAZYINITLIST(affected_turfs) + if(range <= 2) + //Range here is 1 because actual range of lighting mask is 1 tile even if it says that range is 2 + for(var/turf/lit_turf in RANGE_TURFS(1, current_holder.loc)) + lit_turf.dynamic_lumcount += lum_power + affected_turfs += lit_turf + else + for(var/turf/lit_turf in view(lumcount_range, get_turf(current_holder))) + lit_turf.dynamic_lumcount += lum_power + affected_turfs += lit_turf + + +///Clears the old affected turfs and populates the new ones. +/datum/component/overlay_lighting/proc/make_luminosity_update() + clean_old_turfs() + if(!isturf(current_holder?.loc)) + return + if(directional) + cast_directional_light() + get_new_turfs() + + +///Adds the luminosity and source for the afected movable atoms to keep track of their visibility. +/datum/component/overlay_lighting/proc/add_dynamic_lumi() + LAZYSET(current_holder.affected_movable_lights, src, lumcount_range + 1) + current_holder.underlays += visible_mask + current_holder.update_dynamic_luminosity() + if(directional) + current_holder.underlays += cone + +///Removes the luminosity and source for the afected movable atoms to keep track of their visibility. +/datum/component/overlay_lighting/proc/remove_dynamic_lumi() + LAZYREMOVE(current_holder.affected_movable_lights, src) + current_holder.underlays -= visible_mask + current_holder.update_dynamic_luminosity() + if(directional) + current_holder.underlays -= cone + +///Called to change the value of parent_attached_to. +/datum/component/overlay_lighting/proc/set_parent_attached_to(atom/movable/new_parent_attached_to) + if(new_parent_attached_to == parent_attached_to) + return + + . = parent_attached_to + parent_attached_to = new_parent_attached_to + if(.) + var/atom/movable/old_parent_attached_to = . + UnregisterSignal(old_parent_attached_to, list(COMSIG_PARENT_QDELETING, COMSIG_MOVABLE_MOVED)) + if(old_parent_attached_to == current_holder) + RegisterSignal(old_parent_attached_to, COMSIG_PARENT_QDELETING, PROC_REF(on_holder_qdel)) + RegisterSignal(old_parent_attached_to, COMSIG_MOVABLE_MOVED, PROC_REF(on_holder_moved)) + if(parent_attached_to) + if(parent_attached_to == current_holder) + UnregisterSignal(current_holder, list(COMSIG_PARENT_QDELETING, COMSIG_MOVABLE_MOVED)) + RegisterSignal(parent_attached_to, COMSIG_PARENT_QDELETING, PROC_REF(on_parent_attached_to_qdel)) + RegisterSignal(parent_attached_to, COMSIG_MOVABLE_MOVED, PROC_REF(on_parent_attached_to_moved)) + check_holder() + + +///Called to change the value of current_holder. +/datum/component/overlay_lighting/proc/set_holder(atom/movable/new_holder) + if(new_holder == current_holder) + return + if(current_holder) + if(current_holder != parent && current_holder != parent_attached_to) + UnregisterSignal(current_holder, list(COMSIG_PARENT_QDELETING, COMSIG_MOVABLE_MOVED)) + if(directional) + UnregisterSignal(current_holder, COMSIG_ATOM_DIR_CHANGE) + if(overlay_lighting_flags & LIGHTING_ON) + remove_dynamic_lumi() + current_holder = new_holder + if(new_holder == null) + clean_old_turfs() + return + if(new_holder != parent && new_holder != parent_attached_to) + RegisterSignal(new_holder, COMSIG_PARENT_QDELETING, PROC_REF(on_holder_qdel)) + if(overlay_lighting_flags & LIGHTING_ON) + RegisterSignal(new_holder, COMSIG_MOVABLE_MOVED, PROC_REF(on_holder_moved)) + if(directional) + RegisterSignal(new_holder, COMSIG_ATOM_DIR_CHANGE, PROC_REF(on_holder_dir_change)) + if(directional && current_direction != new_holder.dir) + current_direction = new_holder.dir + if(overlay_lighting_flags & LIGHTING_ON) + add_dynamic_lumi() + make_luminosity_update() + + +///Used to determine the new valid current_holder from the parent's loc. +/datum/component/overlay_lighting/proc/check_holder() + var/atom/movable/movable_parent = GET_PARENT + if(isturf(movable_parent.loc)) + set_holder(movable_parent) + return + var/atom/inside = movable_parent.loc //Parent's loc + if(isnull(inside)) + set_holder(null) + return + if(isturf(inside.loc)) + set_holder(inside) + return + set_holder(null) + + +///Called when the current_holder is qdeleted, to remove the light effect. +/datum/component/overlay_lighting/proc/on_holder_qdel(atom/movable/source, force) + UnregisterSignal(current_holder, list(COMSIG_PARENT_QDELETING, COMSIG_MOVABLE_MOVED)) + if(directional) + UnregisterSignal(current_holder, COMSIG_ATOM_DIR_CHANGE) + set_holder(null) + + +///Called when current_holder changes loc. +/datum/component/overlay_lighting/proc/on_holder_moved(atom/movable/source, OldLoc, Dir, Forced) + if(!(overlay_lighting_flags & LIGHTING_ON)) + return + make_luminosity_update() + +///Called when the current_holder is qdeleted, to remove the light effect. +/datum/component/overlay_lighting/proc/on_parent_attached_to_qdel(atom/movable/source, force) + SIGNAL_HANDLER + UnregisterSignal(parent_attached_to, list(COMSIG_PARENT_QDELETING, COMSIG_MOVABLE_MOVED)) + if(directional) + UnregisterSignal(parent_attached_to, COMSIG_ATOM_DIR_CHANGE) + if(parent_attached_to == current_holder) + set_holder(null) + set_parent_attached_to(null) + +///Called when parent_attached_to changes loc. +/datum/component/overlay_lighting/proc/on_parent_attached_to_moved(atom/movable/source, OldLoc, Dir, Forced) + SIGNAL_HANDLER + check_holder() + if(!(overlay_lighting_flags & LIGHTING_ON) || !current_holder) + return + make_luminosity_update() + +///Called when parent changes loc. +/datum/component/overlay_lighting/proc/on_parent_moved(atom/movable/source, OldLoc, Dir, Forced) + SIGNAL_HANDLER + var/atom/movable/movable_parent = parent + if(overlay_lighting_flags & LIGHTING_ATTACHED) + set_parent_attached_to(ismovable(movable_parent.loc) ? movable_parent.loc : null) + check_holder() + if(!(overlay_lighting_flags & LIGHTING_ON) || !current_holder) + return + make_luminosity_update() + + +///Changes the range which the light reaches. 0 means no light, 7 is the maximum value. +/datum/component/overlay_lighting/proc/set_range(atom/source, new_range) + SIGNAL_HANDLER + if(range == new_range) + return + if(range == 0) + turn_off() + range = clamp(CEILING(new_range, 0.5), 1, 7) + var/pixel_bounds = ((range - 1) * 64) + 32 + lumcount_range = CEILING(range, 1) + if(current_holder && overlay_lighting_flags & LIGHTING_ON) + current_holder.underlays -= visible_mask + visible_mask.icon = light_overlays["[pixel_bounds]"] + if(pixel_bounds == 32) + visible_mask.transform = null + return + var/offset = (pixel_bounds - 32) * 0.5 + var/matrix/transform = new + transform.Translate(-offset, -offset) + visible_mask.transform = transform + directional_offset_x = 0 + directional_offset_y = 0 + if(current_holder && overlay_lighting_flags & LIGHTING_ON) + current_holder.underlays += visible_mask + if(directional) + cast_range = clamp(round(new_range * 0.5), 1, 3) + if(overlay_lighting_flags & LIGHTING_ON) + make_luminosity_update() + + +///Changes the intensity/brightness of the light by altering the visual object's alpha. +/datum/component/overlay_lighting/proc/set_power(atom/source, new_power) + SIGNAL_HANDLER + set_lum_power(new_power >= 0 ? 0.5 : -0.5) + set_alpha = min(230, (abs(new_power) * 120) + 30) + if(current_holder && overlay_lighting_flags & LIGHTING_ON) + current_holder.underlays -= visible_mask + visible_mask.alpha = set_alpha + if(current_holder && overlay_lighting_flags & LIGHTING_ON) + current_holder.underlays += visible_mask + + if(!directional) + return + + if(current_holder && overlay_lighting_flags & LIGHTING_ON) + current_holder.underlays -= cone + cone.alpha = min(200, (abs(new_power) * 90)+20) + if(current_holder && overlay_lighting_flags & LIGHTING_ON) + current_holder.underlays += cone + + +///Changes the light's color, pretty straightforward. +/datum/component/overlay_lighting/proc/set_color(atom/source, new_color) + SIGNAL_HANDLER + if(current_holder && overlay_lighting_flags & LIGHTING_ON) + current_holder.underlays -= visible_mask + visible_mask.color = new_color + if(current_holder && overlay_lighting_flags & LIGHTING_ON) + current_holder.underlays += visible_mask + + if(!directional) + return + + if(current_holder && overlay_lighting_flags & LIGHTING_ON) + current_holder.underlays -= cone + cone.color = new_color + if(current_holder && overlay_lighting_flags & LIGHTING_ON) + current_holder.underlays += cone + + +///Toggles the light on and off. +/datum/component/overlay_lighting/proc/on_toggle(atom/source, new_value) + SIGNAL_HANDLER + if(new_value) //Truthy value input, turn on. + turn_on() + return + turn_off() //Falsey value, turn off. + +///Triggered right after the parent light flags change. +/datum/component/overlay_lighting/proc/on_light_flags_change(atom/source, new_flags) + SIGNAL_HANDLER + var/atom/movable/movable_parent = parent + + if(new_flags & LIGHT_ATTACHED) // Gained the [LIGHT_ATTACHED] property + overlay_lighting_flags |= LIGHTING_ATTACHED + if(ismovable(movable_parent.loc)) + set_parent_attached_to(movable_parent.loc) + else // Lost the [LIGHT_ATTACHED] property + overlay_lighting_flags &= ~LIGHTING_ATTACHED + set_parent_attached_to(null) + +///Toggles the light on. +/datum/component/overlay_lighting/proc/turn_on() + if(overlay_lighting_flags & LIGHTING_ON) + return + overlay_lighting_flags |= LIGHTING_ON + if(current_holder) + add_dynamic_lumi(current_holder) + if(directional) + cast_directional_light() + if(current_holder && current_holder != parent && current_holder != parent_attached_to) + RegisterSignal(current_holder, COMSIG_MOVABLE_MOVED, PROC_REF(on_holder_moved)) + get_new_turfs() + + +///Toggles the light off. +/datum/component/overlay_lighting/proc/turn_off() + if(!(overlay_lighting_flags & LIGHTING_ON)) + return + if(current_holder) + remove_dynamic_lumi() + overlay_lighting_flags &= ~LIGHTING_ON + if(current_holder && current_holder != parent && current_holder != parent_attached_to) + UnregisterSignal(current_holder, COMSIG_MOVABLE_MOVED) + clean_old_turfs() + + +///Here we append the behavior associated to changing lum_power. +/datum/component/overlay_lighting/proc/set_lum_power(new_lum_power) + if(lum_power == new_lum_power) + return + . = lum_power + lum_power = new_lum_power + var/difference = . - lum_power + for(var/t in affected_turfs) + var/turf/lit_turf = t + lit_turf.dynamic_lumcount -= difference + +///Here we append the behavior associated to changing lum_power. +/datum/component/overlay_lighting/proc/cast_directional_light() + var/final_distance = cast_range + //Lower the distance by 1 if we're not looking at a cardinal direction, and we're not a short cast + if(final_distance > SHORT_CAST && !(ALL_CARDINALS & current_direction)) + final_distance -= 1 + var/turf/scanning = get_turf(current_holder) + for(var/i in 1 to final_distance) + var/turf/next_turf = get_step(scanning, current_direction) + if(isnull(next_turf) || IS_OPAQUE_TURF(next_turf)) + final_distance = i + break + scanning = next_turf + + current_holder.underlays -= visible_mask + + var/translate_x = -((range - 1) * 32) + var/translate_y = translate_x + switch(current_direction) + if(NORTH) + translate_y += 32 * final_distance + if(SOUTH) + translate_y += -32 * final_distance + if(EAST) + translate_x += 32 * final_distance + if(WEST) + translate_x += -32 * final_distance + if((directional_offset_x != translate_x) || (directional_offset_y != translate_y)) + directional_offset_x = translate_x + directional_offset_y = translate_y + var/matrix/transform = matrix() + transform.Translate(translate_x, translate_y) + visible_mask.transform = transform + if(overlay_lighting_flags & LIGHTING_ON) + current_holder.underlays += visible_mask + +///Called when current_holder changes loc. +/datum/component/overlay_lighting/proc/on_holder_dir_change(atom/movable/source, olddir, newdir) + SIGNAL_HANDLER + set_direction(newdir) + +///Called when parent changes loc. +/datum/component/overlay_lighting/proc/on_parent_dir_change(atom/movable/source, olddir, newdir) + SIGNAL_HANDLER + + if(current_holder?.dir != newdir) + return + + set_direction(newdir) + +///Sets a new direction for the directional cast, then updates luminosity +/datum/component/overlay_lighting/proc/set_direction(newdir) + if(!newdir) + return + if(current_direction == newdir) + return + current_direction = newdir + if(overlay_lighting_flags & LIGHTING_ON) + make_luminosity_update() + +#undef LIGHTING_ON +#undef LIGHTING_ATTACHED +#undef GET_PARENT +#undef SHORT_CAST diff --git a/code/datums/effects/acid.dm b/code/datums/effects/acid.dm index 721fe27a0d0d..d89f7261a223 100644 --- a/code/datums/effects/acid.dm +++ b/code/datums/effects/acid.dm @@ -104,7 +104,7 @@ if(!acids_area) return - if(SSweather.is_weather_event && locate(acids_area.master) in SSweather.weather_areas) + if(SSweather.is_weather_event && locate(acids_area) in SSweather.weather_areas) //smothering_strength is 1-10, we use this to take a proportional amount off the stats duration = duration - (duration * (SSweather.weather_event_instance.fire_smothering_strength * 0.1)) damage_in_total_human = damage_in_total_human - (damage_in_total_human * (SSweather.weather_event_instance.fire_smothering_strength * 0.1)) diff --git a/code/datums/elements/light_blocking.dm b/code/datums/elements/light_blocking.dm new file mode 100644 index 000000000000..9fef194f1cd4 --- /dev/null +++ b/code/datums/elements/light_blocking.dm @@ -0,0 +1,43 @@ +/** + * Attached to movable atoms with opacity. Listens to them move and updates their old and new turf loc's opacity accordingly. + */ +/datum/element/light_blocking + element_flags = ELEMENT_DETACH + + +/datum/element/light_blocking/Attach(datum/target) + . = ..() + if(!ismovable(target)) + return ELEMENT_INCOMPATIBLE + RegisterSignal(target, COMSIG_MOVABLE_MOVED, PROC_REF(on_target_move)) + var/atom/movable/movable_target = target + if(!isturf(movable_target.loc)) + return + for(var/turf/turf_loc as anything in movable_target.locs) + turf_loc.add_opacity_source(target) + + +/datum/element/light_blocking/Detach(datum/target) + . = ..() + UnregisterSignal(target, list(COMSIG_MOVABLE_MOVED)) + var/atom/movable/movable_target = target + if(!isturf(movable_target.loc)) + return + for(var/turf/turf_loc as anything in movable_target.locs) + turf_loc.remove_opacity_source(target) + + +///Updates old and new turf loc opacities. +///Updates old and new turf loc opacities. +/datum/element/light_blocking/proc/on_target_move(atom/movable/source, atom/old_loc, dir, forced, list/old_locs) + SIGNAL_HANDLER + if(isturf(old_loc)) + if(old_locs) + for(var/turf/old_turf as anything in old_locs) + old_turf.remove_opacity_source(source) + else + var/turf/old_turf = old_loc + old_turf.remove_opacity_source(source) + if(isturf(source.loc)) + for(var/turf/new_turf as anything in source.locs) + new_turf.add_opacity_source(source) diff --git a/code/game/area/DesertDam.dm b/code/game/area/DesertDam.dm index 73635eb6385d..96e5eb1f62e5 100644 --- a/code/game/area/DesertDam.dm +++ b/code/game/area/DesertDam.dm @@ -682,7 +682,6 @@ /area/desert_dam/exterior requires_power = 1 always_unpowered = 1 - lighting_use_dynamic = 1 power_light = FALSE power_equip = FALSE power_environ = FALSE diff --git a/code/game/area/IceColony.dm b/code/game/area/IceColony.dm index 2c7bbee2969c..8b8a245d7cc9 100644 --- a/code/game/area/IceColony.dm +++ b/code/game/area/IceColony.dm @@ -28,7 +28,6 @@ icon_state = "cliff_blocked" requires_power = 1 always_unpowered = 1 - lighting_use_dynamic = 1 power_light = FALSE power_equip = FALSE power_environ = FALSE diff --git a/code/game/area/LV522_Chances_Claim.dm b/code/game/area/LV522_Chances_Claim.dm index 3d15d49c3df7..926d8d361c83 100644 --- a/code/game/area/LV522_Chances_Claim.dm +++ b/code/game/area/LV522_Chances_Claim.dm @@ -52,7 +52,6 @@ name = "Chance's Claim - Dropship Alamo Landing Zone" icon_state = "shuttle" icon = 'icons/turf/area_shiva.dmi' - lighting_use_dynamic = TRUE /area/lv522/landing_zone_1/lz1_console name = "Chance's Claim - Dropship Alamo Console" @@ -75,7 +74,6 @@ name = "Chance's Claim - Dropship Normandy Landing Zone" icon_state = "shuttle2" icon = 'icons/turf/area_shiva.dmi' - lighting_use_dynamic = TRUE /area/lv522/landing_zone_2/lz2_console name = "Chance's Claim - Dropship Normandy Console" diff --git a/code/game/area/Sulaco.dm b/code/game/area/Sulaco.dm index 851025e1b63a..ae197537143a 100644 --- a/code/game/area/Sulaco.dm +++ b/code/game/area/Sulaco.dm @@ -117,7 +117,7 @@ //DISTRESS SHUTTLES /area/shuttle/distress - lighting_use_dynamic = FALSE + base_lighting_alpha = 255 unique = TRUE /area/shuttle/distress/start diff --git a/code/game/area/WhiskeyOutpost.dm b/code/game/area/WhiskeyOutpost.dm index 583a5dafc299..02d94dc942da 100644 --- a/code/game/area/WhiskeyOutpost.dm +++ b/code/game/area/WhiskeyOutpost.dm @@ -79,7 +79,6 @@ //ambience = list('sound/ambience/jungle_amb1.ogg') requires_power = 1 always_unpowered = 1 - lighting_use_dynamic = 1 power_light = FALSE power_equip = FALSE power_environ = FALSE @@ -180,7 +179,6 @@ ceiling = CEILING_UNDERGROUND_ALLOW_CAS requires_power = 1 always_unpowered = 1 - lighting_use_dynamic = 1 power_light = FALSE power_equip = FALSE power_environ = FALSE diff --git a/code/game/area/admin_level.dm b/code/game/area/admin_level.dm index 501047c46d08..a934b5f71570 100644 --- a/code/game/area/admin_level.dm +++ b/code/game/area/admin_level.dm @@ -3,14 +3,13 @@ /area/adminlevel ceiling = CEILING_METAL + base_lighting_alpha = 255 /area/adminlevel/bunker01 icon_state = "thunder" requires_power = FALSE statistic_exempt = TRUE flags_area = AREA_NOTUNNEL - luminosity = TRUE - lighting_use_dynamic = FALSE /area/adminlevel/bunker01/mainroom name = "\improper Bunker Main Room" @@ -78,8 +77,7 @@ ceiling = CEILING_UNDERGROUND_ALLOW_CAS always_unpowered = TRUE requires_power = TRUE - lighting_use_dynamic = TRUE - luminosity = FALSE + base_lighting_alpha = 0 /area/adminlevel/bunker01/caves/outpost name = "\improper Bunker Outpost" @@ -87,8 +85,6 @@ ceiling = CEILING_UNDERGROUND_ALLOW_CAS requires_power = TRUE always_unpowered = FALSE - lighting_use_dynamic = TRUE - luminosity = FALSE /area/adminlevel/bunker01/caves/xeno name = "\improper Bunker Xeno Hive" diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index 2c274665fa19..826b2dc0585f 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -28,9 +28,6 @@ var/unique = TRUE var/has_gravity = 1 - var/area/master // master area used for power calcluations - // (original area before splitting due to sd_DAL) - var/list/related // the other areas of the same type as this // var/list/lights // list of all lights on this area var/list/all_doors = list() //Added by Strumpetplaya - Alarm Change - Contains a list of doors adjacent to this area var/air_doors_activated = 0 @@ -89,10 +86,8 @@ if(unique) GLOB.areas_by_type[type] = src ..() - master = src //moved outside the spawn(1) to avoid runtimes in lighting.dm when it references loc.loc.master ~Carn - related = list(src) - initialize_power_and_lighting() + initialize_power() /area/Initialize(mapload, ...) icon_state = "" //Used to reset the icon overlay, I assume. @@ -105,24 +100,26 @@ if(is_mainship_level(z)) GLOB.ship_areas += src -/area/proc/initialize_power_and_lighting(override_power) + if(base_lighting_alpha) + return INITIALIZE_HINT_ROUNDSTART + +/area/LateInitialize() + . = ..() + + update_base_lighting() + +/area/proc/initialize_power(override_power) if(requires_power) - luminosity = 0 if(override_power) //Reset everything if you want to override. power_light = TRUE power_equip = TRUE power_environ = TRUE - if(lighting_use_dynamic) - SetDynamicLighting() else power_light = FALSE //rastaf0 power_equip = FALSE //rastaf0 power_environ = FALSE //rastaf0 - luminosity = 1 - lighting_use_dynamic = 0 power_change() // all machines set to current power level, also updates lighting icon - InitializeLighting() /// Returns the correct ambience sound track for a client in this area /area/proc/get_sound_ambience(client/target) @@ -135,13 +132,12 @@ poweralm = state if(istype(source)) //Only report power alarms on the z-level where the source is located. var/list/cameras = list() - for (var/area/RA in related) - for (var/obj/structure/machinery/camera/C in RA) - cameras += C - if(state == 1) - C.network.Remove(CAMERA_NET_POWER_ALARMS) - else - C.network.Add(CAMERA_NET_POWER_ALARMS) + for (var/obj/structure/machinery/camera/C in src) + cameras += C + if(state == 1) + C.network.Remove(CAMERA_NET_POWER_ALARMS) + else + C.network.Add(CAMERA_NET_POWER_ALARMS) for (var/mob/living/silicon/aiPlayer in ai_mob_list) if(aiPlayer.z == source.z) if (state == 1) @@ -161,10 +157,9 @@ // return 0 //redudant //Check all the alarms before lowering atmosalm. Raising is perfectly fine. - for (var/area/RA in related) - for (var/obj/structure/machinery/alarm/AA in RA) - if ( !(AA.inoperable()) && !AA.shorted) - danger_level = max(danger_level, AA.danger_level) + for (var/obj/structure/machinery/alarm/AA in src) + if ( !(AA.inoperable()) && !AA.shorted) + danger_level = max(danger_level, AA.danger_level) if(danger_level != atmosalm) if (danger_level < 1 && atmosalm >= 1) @@ -172,9 +167,8 @@ air_doors_open() if (danger_level < 2 && atmosalm >= 2) - for(var/area/RA in related) - for(var/obj/structure/machinery/camera/C in RA) - C.network.Remove(CAMERA_NET_ATMOSPHERE_ALARMS) + for(var/obj/structure/machinery/camera/C in src) + C.network.Remove(CAMERA_NET_ATMOSPHERE_ALARMS) for(var/mob/living/silicon/aiPlayer in ai_mob_list) aiPlayer.cancelAlarm("Atmosphere", src, src) for(var/obj/structure/machinery/computer/station_alert/a in machines) @@ -182,11 +176,10 @@ if (danger_level >= 2 && atmosalm < 2) var/list/cameras = list() - for(var/area/RA in related) - //updateicon() - for(var/obj/structure/machinery/camera/C in RA) - cameras += C - C.network.Add(CAMERA_NET_ATMOSPHERE_ALARMS) + //updateicon() + for(var/obj/structure/machinery/camera/C in src) + cameras += C + C.network.Add(CAMERA_NET_ATMOSPHERE_ALARMS) for(var/mob/living/silicon/aiPlayer in ai_mob_list) aiPlayer.triggerAlarm("Atmosphere", src, cameras, src) for(var/obj/structure/machinery/computer/station_alert/a in machines) @@ -194,40 +187,38 @@ air_doors_close() atmosalm = danger_level - for(var/area/RA in related) - for (var/obj/structure/machinery/alarm/AA in RA) - AA.update_icon() + for (var/obj/structure/machinery/alarm/AA in src) + AA.update_icon() return 1 return 0 /area/proc/air_doors_close() - if(!src.master.air_doors_activated) - src.master.air_doors_activated = 1 - for(var/obj/structure/machinery/door/firedoor/E in src.master.all_doors) - if(!E:blocked) - if(E.operating) - E:nextstate = OPEN - else if(!E.density) - INVOKE_ASYNC(E, TYPE_PROC_REF(/obj/structure/machinery/door, close)) + for(var/obj/structure/machinery/door/firedoor/E in all_doors) + if(E.blocked) + continue + + if(E.operating) + E.nextstate = OPEN + else if(!E.density) + E.close() + /area/proc/air_doors_open() - if(src.master.air_doors_activated) - src.master.air_doors_activated = 0 - for(var/obj/structure/machinery/door/firedoor/E in src.master.all_doors) - if(!E:blocked) - if(E.operating) - E:nextstate = OPEN - else if(E.density) - INVOKE_ASYNC(E, TYPE_PROC_REF(/obj/structure/machinery/door, open)) + for(var/obj/structure/machinery/door/firedoor/E in all_doors) + if(E.blocked) + continue + if(E.operating) + E.nextstate = OPEN + else if(E.density) + E.open() /area/proc/firealert() if(name == "Space") //no fire alarms in space return if(!(flags_alarm_state & ALARM_WARNING_FIRE)) - flags_alarm_state |= ALARM_WARNING_FIRE - master.flags_alarm_state |= ALARM_WARNING_FIRE //used for firedoor checks + flags_alarm_state |= ALARM_WARNING_FIRE //used for firedoor checks updateicon() mouse_opacity = MOUSE_OPACITY_TRANSPARENT for(var/obj/structure/machinery/door/firedoor/D in all_doors) @@ -237,10 +228,9 @@ else if(!D.density) INVOKE_ASYNC(D, TYPE_PROC_REF(/obj/structure/machinery/door, close)) var/list/cameras = list() - for(var/area/RA in related) - for (var/obj/structure/machinery/camera/C in RA) - cameras.Add(C) - C.network.Add(CAMERA_NET_FIRE_ALARMS) + for (var/obj/structure/machinery/camera/C in src) + cameras.Add(C) + C.network.Add(CAMERA_NET_FIRE_ALARMS) for (var/mob/living/silicon/ai/aiPlayer in ai_mob_list) aiPlayer.triggerAlarm("Fire", src, cameras, src) for (var/obj/structure/machinery/computer/station_alert/a in machines) @@ -248,8 +238,7 @@ /area/proc/firereset() if(flags_alarm_state & ALARM_WARNING_FIRE) - flags_alarm_state &= ~ALARM_WARNING_FIRE - master.flags_alarm_state &= ~ALARM_WARNING_FIRE //used for firedoor checks + flags_alarm_state &= ~ALARM_WARNING_FIRE //used for firedoor checks mouse_opacity = MOUSE_OPACITY_TRANSPARENT updateicon() for(var/obj/structure/machinery/door/firedoor/D in all_doors) @@ -258,9 +247,8 @@ D.nextstate = OPEN else if(D.density) INVOKE_ASYNC(D, TYPE_PROC_REF(/obj/structure/machinery/door, open)) - for(var/area/RA in related) - for (var/obj/structure/machinery/camera/C in RA) - C.network.Remove(CAMERA_NET_FIRE_ALARMS) + for (var/obj/structure/machinery/camera/C in src) + C.network.Remove(CAMERA_NET_FIRE_ALARMS) for (var/mob/living/silicon/ai/aiPlayer in ai_mob_list) aiPlayer.cancelAlarm("Fire", src, src) for (var/obj/structure/machinery/computer/station_alert/a in machines) @@ -278,16 +266,16 @@ /* /area/proc/toggle_evacuation() //toggles lights and creates an overlay. flags_alarm_state ^= ALARM_WARNING_EVAC - master.flags_alarm_state ^= ALARM_WARNING_EVAC + flags_alarm_state ^= ALARM_WARNING_EVAC //if(flags_alarm_state & ALARM_WARNING_EVAC) - // master.lightswitch = FALSE + // lightswitch = FALSE //lightswitch = FALSE //Lights going off. // else - // master.lightswitch = TRUE + // lightswitch = TRUE //lightswitch = TRUE //Coming on. - master.updateicon() + updateicon() - //master.power_change() + //power_change() /area/proc/toggle_shut_down() @@ -312,75 +300,72 @@ if(icon_state != I) icon_state = I //If the icon state changed, change it. Otherwise do nothing. /area/proc/powered(chan) // return true if the area has power to given channel - if(!master.requires_power) + if(!requires_power) return 1 - if(master.always_unpowered) + if(always_unpowered) return 0 switch(chan) if(POWER_CHANNEL_EQUIP) - return master.power_equip + return power_equip if(POWER_CHANNEL_LIGHT) - return master.power_light + return power_light if(POWER_CHANNEL_ENVIRON) - return master.power_environ + return power_environ return 0 /area/proc/update_power_channels(equip, light, environ) - if(!master) - CRASH("CALLED update_power_channels on non-master channel!") var/changed = FALSE - if(master.power_equip != equip) - master.power_equip = equip + if(power_equip != equip) + power_equip = equip changed = TRUE - if(master.power_light != light) - master.power_light = light + if(power_light != light) + power_light = light changed = TRUE - if(master.power_environ != environ) - master.power_environ = environ + if(power_environ != environ) + power_environ = environ changed = TRUE if(changed) //Something got changed power-wise, time for an update! power_change() // called when power status changes /area/proc/power_change() - for(var/area/RA in related) - for(var/obj/structure/machinery/M in RA) // for each machine in the area - if(!M.gc_destroyed) - M.power_change() // reverify power status (to update icons etc.) - if(flags_alarm_state) - RA.updateicon() + for(var/obj/structure/machinery/M in src) // for each machine in the area + if(!M.gc_destroyed) + M.power_change() // reverify power status (to update icons etc.) + if(flags_alarm_state) + updateicon() /area/proc/usage(chan, reset_oneoff = FALSE) var/used = 0 switch(chan) if(POWER_CHANNEL_LIGHT) - used += master.used_light + used += used_light if(POWER_CHANNEL_EQUIP) - used += master.used_equip + used += used_equip if(POWER_CHANNEL_ENVIRON) - used += master.used_environ + used += used_environ if(POWER_CHANNEL_ONEOFF) - used += master.used_oneoff + used += used_oneoff if(reset_oneoff) - master.used_oneoff = 0 + used_oneoff = 0 if(POWER_CHANNEL_TOTAL) - used += master.used_light + master.used_equip + master.used_environ + master.used_oneoff + used += used_light + used_equip + used_environ + used_oneoff if(reset_oneoff) - master.used_oneoff = 0 + used_oneoff = 0 return used /area/proc/use_power(amount, chan) switch(chan) if(POWER_CHANNEL_EQUIP) - master.used_equip += amount + used_equip += amount if(POWER_CHANNEL_LIGHT) - master.used_light += amount + used_light += amount if(POWER_CHANNEL_ENVIRON) - master.used_environ += amount + used_environ += amount if(POWER_CHANNEL_ONEOFF) - master.used_oneoff += amount + used_oneoff += amount /area/Entered(A,atom/OldLoc) if(ismob(A)) @@ -388,7 +373,7 @@ return var/mob/M = A var/area/old_area = get_area(OldLoc) - if(old_area.master == master) + if(old_area == src) return M?.client?.soundOutput?.update_ambience(src, null, TRUE) else if(istype(A, /obj/structure/machinery)) @@ -416,24 +401,21 @@ A.has_gravity = gravitystate - for(var/area/SubA in A.related) - SubA.has_gravity = gravitystate - - if(gravitystate) - for(var/mob/living/carbon/human/M in SubA) - thunk(M) - for(var/mob/M1 in SubA) - M1.make_floating(0) - else - for(var/mob/M in SubA) - if(M.Check_Dense_Object() && istype(src,/mob/living/carbon/human/)) - var/mob/living/carbon/human/H = src - if(istype(H.shoes, /obj/item/clothing/shoes/magboots) && (H.shoes.flags_inventory & NOSLIPPING)) //magboots + dense_object = no floaty effect - H.make_floating(0) - else - H.make_floating(1) + if(gravitystate) + for(var/mob/living/carbon/human/M in A) + thunk(M) + for(var/mob/M1 in A) + M1.make_floating(0) + else + for(var/mob/M in A) + if(M.Check_Dense_Object() && istype(src,/mob/living/carbon/human/)) + var/mob/living/carbon/human/H = src + if(istype(H.shoes, /obj/item/clothing/shoes/magboots) && (H.shoes.flags_inventory & NOSLIPPING)) //magboots + dense_object = no floaty effect + H.make_floating(0) else - M.make_floating(1) + H.make_floating(1) + else + M.make_floating(1) /area/proc/thunk(M) if(istype(get_turf(M), /turf/open/space)) // Can't fall onto nothing. diff --git a/code/game/area/areas_event.dm b/code/game/area/areas_event.dm index fe34d74363d5..c43dae3a65b2 100644 --- a/code/game/area/areas_event.dm +++ b/code/game/area/areas_event.dm @@ -47,20 +47,12 @@ structure: //events are not part of regular gameplay, therefore, no statistics statistic_exempt = TRUE - //no dynamic lighting - exterior_light = 0 - lighting_use_dynamic = FALSE + base_lighting_alpha = 255 //always powered requires_power = FALSE unlimited_power = TRUE -/area/event/Initialize() - . = ..() - if(exterior_light) - for(var/turf/T in contents) - T.update_lumcount(exterior_light) - //no dynamic lighting, unpowered. /area/event/unpowered name = "Open grounds (event)" @@ -75,7 +67,6 @@ structure: icon_state = "event_dyn" requires_power = TRUE unlimited_power = TRUE - lighting_use_dynamic = TRUE //no dynamic lighting, unpowered. /area/event/dynamic/unpowered @@ -83,13 +74,14 @@ structure: icon_state = "event_dyn_nopower" unlimited_power = FALSE + base_lighting_alpha = 255 //dynamic lighting, lit, powered. /area/event/dynamic/lit name = "Open grounds (event PDL)" icon_state = "event_dyn_lit" - exterior_light = 3 + base_lighting_alpha = 255 //dynamic lighting, lit, unpowered. /area/event/dynamic/lit/unpowered @@ -97,6 +89,7 @@ structure: icon_state = "event_dyn_lit_nopower" unlimited_power = FALSE + base_lighting_alpha = 255 //-----------------------CEILING_METAL-------------------------- @@ -122,7 +115,6 @@ structure: icon_state = "metal_dyn" requires_power = TRUE unlimited_power = TRUE - lighting_use_dynamic = TRUE //no dynamic lighting, unpowered. /area/event/metal/dynamic/unpowered @@ -137,7 +129,7 @@ structure: name = "Building interior (event PDL)" icon_state = "metal_dyn_lit" - exterior_light = 3 + base_lighting_alpha = 255 //dynamic lighting, lit, unpowered. /area/event/metal/dynamic/lit/unpowered @@ -176,7 +168,6 @@ structure: icon_state = "under_dyn" requires_power = TRUE unlimited_power = TRUE - lighting_use_dynamic = TRUE //no dynamic lighting, unpowered. /area/event/underground/dynamic/unpowered @@ -191,7 +182,7 @@ structure: name = "Small caves (event PDL)" icon_state = "under_dyn_lit" - exterior_light = 3 + base_lighting_alpha = 255 //dynamic lighting, lit, unpowered. /area/event/underground/dynamic/lit/unpowered @@ -232,7 +223,6 @@ structure: icon_state = "undercas_dyn" requires_power = TRUE unlimited_power = TRUE - lighting_use_dynamic = TRUE //no dynamic lighting, unpowered. /area/event/underground_no_CAS/dynamic/unpowered @@ -246,7 +236,7 @@ structure: name = "Caves (event PDL)" icon_state = "undercas_dyn_lit" - exterior_light = 3 + base_lighting_alpha = 255 //dynamic lighting, lit, unpowered. /area/event/underground_no_CAS/dynamic/lit/unpowered @@ -286,7 +276,6 @@ structure: icon_state = "deep_dyn" requires_power = TRUE unlimited_power = TRUE - lighting_use_dynamic = TRUE //no dynamic lighting, unpowered. /area/event/deep_underground/dynamic/unpowered @@ -301,7 +290,7 @@ structure: name = "Deep underground (event PDL)" icon_state = "deep_dyn_lit" - exterior_light = 3 + base_lighting_alpha = 255 //dynamic lighting, lit, unpowered. /area/event/deep_underground/dynamic/lit/unpowered diff --git a/code/game/area/chinook.dm b/code/game/area/chinook.dm index 62bbdee7bd17..b9cd440fd548 100644 --- a/code/game/area/chinook.dm +++ b/code/game/area/chinook.dm @@ -9,7 +9,6 @@ requires_power = TRUE statistic_exempt = TRUE flags_area = AREA_NOTUNNEL - lighting_use_dynamic = TRUE sound_environment = SOUND_ENVIRONMENT_ROOM unlimited_power = TRUE ceiling = CEILING_METAL diff --git a/code/game/area/kutjevo.dm b/code/game/area/kutjevo.dm index 48f18091df4a..422017c0a46b 100644 --- a/code/game/area/kutjevo.dm +++ b/code/game/area/kutjevo.dm @@ -8,20 +8,17 @@ icon_state = "kutjevo" can_build_special = TRUE //T-Comms structure temperature = 308.7 //kelvin, 35c, 95f - lighting_use_dynamic = 1 minimap_color = MINIMAP_AREA_ENGI /area/shuttle/drop1/kutjevo name = "Kutjevo - Dropship Alamo Landing Zone" icon_state = "shuttle" icon = 'icons/turf/area_kutjevo.dmi' - lighting_use_dynamic = 1 /area/shuttle/drop2/kutjevo name = "Kutjevo - Dropship Normandy Landing Zone" icon_state = "shuttle2" icon = 'icons/turf/area_kutjevo.dmi' - lighting_use_dynamic = 1 /area/kutjevo/exterior name = "Kutjevo - Exterior" diff --git a/code/game/area/prison_v3_fiorina.dm b/code/game/area/prison_v3_fiorina.dm index deb5d8758784..a528ee8376bf 100644 --- a/code/game/area/prison_v3_fiorina.dm +++ b/code/game/area/prison_v3_fiorina.dm @@ -8,7 +8,6 @@ icon_state = "fiorina" can_build_special = TRUE //T-Comms structure temperature = T20C - lighting_use_dynamic = 1 ceiling = CEILING_GLASS minimap_color = MINIMAP_AREA_COLONY diff --git a/code/game/area/shiva.dm b/code/game/area/shiva.dm index 8ca47c03e5ca..e4939cd67e1e 100644 --- a/code/game/area/shiva.dm +++ b/code/game/area/shiva.dm @@ -7,14 +7,12 @@ icon_state = "shiva" can_build_special = TRUE //T-Comms structure temperature = ICE_COLONY_TEMPERATURE - lighting_use_dynamic = TRUE minimap_color = MINIMAP_AREA_COLONY /area/shuttle/drop1/shiva name = "Shiva's Snowball - Dropship Alamo Landing Zone" icon_state = "shuttle" icon = 'icons/turf/area_shiva.dmi' - lighting_use_dynamic = TRUE is_resin_allowed = FALSE minimap_color = MINIMAP_AREA_LZ @@ -22,7 +20,6 @@ name = "Shiva's Snowball - Dropship Normandy Landing Zone" icon_state = "shuttle2" icon = 'icons/turf/area_shiva.dmi' - lighting_use_dynamic = TRUE is_resin_allowed = FALSE minimap_color = MINIMAP_AREA_LZ diff --git a/code/game/area/shuttles.dm b/code/game/area/shuttles.dm index f61f13097d12..62c42406e795 100644 --- a/code/game/area/shuttles.dm +++ b/code/game/area/shuttles.dm @@ -1,13 +1,15 @@ /area/shuttle name = "Shuttle" requires_power = FALSE + unlimited_power = TRUE always_unpowered = FALSE icon_state = "shuttle" ceiling_muffle = TRUE // Loading the same shuttle map at a different time will produce distinct area instances. unique = FALSE - lighting_use_dynamic = FALSE + + base_lighting_alpha = 255 ///area/shuttle/Initialize() @@ -37,6 +39,7 @@ name = "Hyperspace" desc = "Weeeeee" ambience_exterior = 'sound/ambience/shuttle_fly_loop.ogg' + base_lighting_alpha = 255 /area/shuttle/vehicle_elevator name = "Vehicle ASRS" @@ -52,7 +55,7 @@ /area/shuttle/trijent_shuttle/elevator requires_power = TRUE - lighting_use_dynamic = FALSE + unlimited_power = FALSE powernet_name = "ground" /area/shuttle/trijent_shuttle/lz1 @@ -66,6 +69,7 @@ /area/shuttle/trijent_shuttle/omega name = "Trijent Omega" + /area/shuttle/escape_pod icon = 'icons/turf/area_almayer.dmi' icon_state = "lifeboat" diff --git a/code/game/area/space_station_13_areas.dm b/code/game/area/space_station_13_areas.dm index 226ca555cd57..df5e54a77013 100644 --- a/code/game/area/space_station_13_areas.dm +++ b/code/game/area/space_station_13_areas.dm @@ -18,7 +18,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station name = "\improper Space" requires_power = 1 always_unpowered = 1 - lighting_use_dynamic = 0 + base_lighting_alpha = 255 power_light = FALSE power_equip = FALSE power_environ = FALSE @@ -39,7 +39,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station ceiling = CEILING_METAL /area/admin/droppod - lighting_use_dynamic = FALSE + base_lighting_alpha = 255 /area/admin/droppod/holding name = "\improper Admin Supply Drops Droppod" @@ -56,9 +56,9 @@ NOTE: there are two lists of areas in the end of this file: centcom and station name = "start area" icon_state = "start" ceiling = CEILING_MAX - requires_power = 0 - luminosity = 1 - lighting_use_dynamic = 0 + requires_power = FALSE + static_lighting = FALSE + base_lighting_alpha = 255 has_gravity = 1 // === end remove @@ -72,6 +72,8 @@ NOTE: there are two lists of areas in the end of this file: centcom and station statistic_exempt = TRUE ceiling = CEILING_METAL + base_lighting_alpha = 255 + /area/centcom/control name = "\improper abandoned Centcom Control" @@ -86,6 +88,8 @@ NOTE: there are two lists of areas in the end of this file: centcom and station statistic_exempt = TRUE ceiling = CEILING_METAL + base_lighting_alpha = 255 + /area/tdome/tdome1 name = "\improper abandoned Thunderdome (Team 1)" icon_state = "green" diff --git a/code/game/area/strata.dm b/code/game/area/strata.dm index 1cf0eac58d1c..cc658cfe5caf 100644 --- a/code/game/area/strata.dm +++ b/code/game/area/strata.dm @@ -18,13 +18,13 @@ EXTERIOR is FUCKING FREEZING, and refers to areas out in the open and or exposed /area/shuttle/drop1/strata //Not in Sulaco.DM because holy shit we need to sort things. name = "Dropship Alamo Landing Zone" icon_state = "shuttle" - lighting_use_dynamic = 0 //No bad + base_lighting_alpha = 255 minimap_color = MINIMAP_AREA_LZ /area/shuttle/drop2/strata name = "Dropship Normandy Landing Zone" icon_state = "shuttle2" - lighting_use_dynamic = 0 + base_lighting_alpha = 255 minimap_color = MINIMAP_AREA_LZ /area/strata/ag diff --git a/code/game/area/techtree.dm b/code/game/area/techtree.dm index 70b70e3852be..24510562ab57 100644 --- a/code/game/area/techtree.dm +++ b/code/game/area/techtree.dm @@ -1,5 +1,5 @@ /area/techtree - lighting_use_dynamic = FALSE + base_lighting_alpha = 255 ceiling = CEILING_MAX requires_power = 0 ambience_exterior = AMBIENCE_ALMAYER diff --git a/code/game/area/varadero.dm b/code/game/area/varadero.dm index 09b082f2acd6..682f3ded1c66 100644 --- a/code/game/area/varadero.dm +++ b/code/game/area/varadero.dm @@ -8,7 +8,6 @@ icon_state = "varadero" can_build_special = TRUE //T-Comms structure temperature = TROPICAL_TEMP - lighting_use_dynamic = TRUE minimap_color = MINIMAP_AREA_COLONY //shuttle stuff @@ -17,7 +16,6 @@ name = "New Varadero - Dropship Alamo Landing Zone" icon_state = "shuttle" icon = 'icons/turf/area_varadero.dmi' - lighting_use_dynamic = TRUE is_resin_allowed = FALSE minimap_color = MINIMAP_AREA_LZ @@ -26,7 +24,6 @@ name = "New Varadero - Dropship Normandy Landing Zone" icon_state = "shuttle2" icon = 'icons/turf/area_varadero.dmi' - lighting_use_dynamic = TRUE is_resin_allowed = FALSE minimap_color = MINIMAP_AREA_LZ @@ -35,7 +32,6 @@ /area/varadero/exterior name = "New Varadero - Exterior" ceiling = CEILING_NONE - lighting_use_dynamic = TRUE ambience_exterior = AMBIENCE_NV //soundscape_playlist @@ -119,7 +115,6 @@ name = "New Varadero - East Beach" is_resin_allowed = FALSE icon_state = "varadero1" - lighting_use_dynamic = TRUE minimap_color = MINIMAP_AREA_JUNGLE /area/varadero/exterior/monsoon @@ -130,7 +125,6 @@ /area/varadero/exterior/pool name = "New Varadero - Interior Pool" icon_state = "varadero1" - lighting_use_dynamic = TRUE minimap_color = MINIMAP_AREA_COMMAND_CAVE /area/varadero/exterior/eastocean @@ -292,8 +286,6 @@ power_light = FALSE power_equip = FALSE power_environ = FALSE - luminosity = 0 - lighting_use_dynamic = 1 sound_environment = SOUND_ENVIRONMENT_AUDITORIUM minimap_color = MINIMAP_AREA_CAVES @@ -311,8 +303,7 @@ power_light = FALSE power_equip = FALSE power_environ = FALSE - luminosity = 0 - lighting_use_dynamic = 1 + minimap_color = MINIMAP_AREA_RESEARCH_CAVE /area/varadero/interior_protected/caves/central diff --git a/code/game/atoms.dm b/code/game/atoms.dm index d2cad09edc83..e1541f8368b8 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -59,6 +59,36 @@ ///Default pixel y shifting for the atom's icon. var/base_pixel_y = 0 + //light stuff + + ///Light systems, only one of the three should be active at the same time. + var/light_system = STATIC_LIGHT + ///Range of the light in tiles. Zero means no light. + var/light_range = 0 + ///Intensity of the light. The stronger, the less shadows you will see on the lit area. + var/light_power = 1 + ///Hexadecimal RGB string representing the colour of the light. White by default. + var/light_color = COLOR_WHITE + ///Boolean variable for toggleable lights. Has no effect without the proper light_system, light_range and light_power values. + var/light_on = FALSE + ///Bitflags to determine lighting-related atom properties. + var/light_flags = NONE + ///Our light source. Don't fuck with this directly unless you have a good reason! + var/tmp/datum/dynamic_light_source/light + ///Any light sources that are "inside" of us, for example, if src here was a mob that's carrying a flashlight, that flashlight's light source would be part of this list. + var/tmp/list/hybrid_light_sources + + //Values should avoid being close to -16, 16, -48, 48 etc. + //Best keep them within 10 units of a multiple of 32, as when the light is closer to a wall, the probability + //that a shadow extends to opposite corners of the light mask square is increased, resulting in more shadow + //overlays. + ///x offset for dynamic lights on this atom + var/light_pixel_x + ///y offset for dynamic lights on this atom + var/light_pixel_y + ///typepath for the lighting maskfor dynamic light sources + var/light_mask_type = null + ///The color this atom will be if we choose to draw it on the minimap var/minimap_color = MINIMAP_SOLID @@ -77,7 +107,7 @@ Make sure the return value equals the return value of the parent so that the directive is properly returned. */ //=========================================================================== -/atom/Destroy() +/atom/Destroy(force) orbiters = null // The component is attached to us normally and will be deleted elsewhere QDEL_NULL(reagents) QDEL_NULL(light) @@ -327,6 +357,12 @@ Parameters are passed from New. CRASH("Warning: [src]([type]) initialized multiple times!") flags_atom |= INITIALIZED + if(light_system != MOVABLE_LIGHT && light_system != DIRECTIONAL_LIGHT && light_power && light_range) + update_light() + if(isturf(loc) && opacity) + var/turf/opaque_turf = loc + opaque_turf.directional_opacity = ALL_CARDINALS // No need to recalculate it in this case, it's guaranteed to be on afterwards anyways. + pass_flags = pass_flags_cache[type] if (isnull(pass_flags)) pass_flags = new() @@ -569,6 +605,37 @@ Parameters are passed from New. var/icon/I = icon(icon, icon_state, dir) return (I.Width() + I.Height()) * 0.5 +/** + * If this object has lights, turn it on/off. + * user: the mob actioning this + * toggle_on: if TRUE, will try to turn ON the light. Opposite if FALSE + * cooldown: how long until you can toggle the light on/off again + * sparks: if a spark effect will be generated + * forced: if TRUE and toggle_on = FALSE, will cause the light to turn on in cooldown second + * originated_turf: if not null, will check if the obj_turf is closer than distance_max to originated_turf, and the proc will return if not + * distance_max: used to check if originated_turf is close to obj.loc +*/ +/atom/proc/turn_light(mob/user, toggle_on , cooldown = 1 SECONDS, sparks = FALSE, forced = FALSE, light_again = FALSE) + if(TIMER_COOLDOWN_CHECK(src, COOLDOWN_LIGHT) && !forced) + return STILL_ON_COOLDOWN + if(cooldown <= 0) + cooldown = 1 SECONDS + TIMER_COOLDOWN_START(src, COOLDOWN_LIGHT, cooldown) + if(toggle_on == light_on) + return NO_LIGHT_STATE_CHANGE + if(light_again && !toggle_on) //Is true when turn light is called by nightfall and the light is already on + addtimer(CALLBACK(src, PROC_REF(reset_light)), cooldown + 1) + if(sparks && light_on) + var/datum/effect_system/spark_spread/spark_system = new + spark_system.set_up(5, 0, src) + spark_system.attach(src) + spark_system.start(src) + return CHECKS_PASSED + +///Turn on the light, should be called by a timer +/atom/proc/reset_light() + turn_light(null, TRUE, 1 SECONDS, FALSE, TRUE) + /** * Return the markup to for the dropdown list for the VV panel for this atom * diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 17b37ce76630..9b64833cb547 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -21,13 +21,24 @@ var/datum/component/orbiter/orbiting + /// Either FALSE, [EMISSIVE_BLOCK_GENERIC], or [EMISSIVE_BLOCK_UNIQUE] + var/blocks_emissive = FALSE + ///Internal holder for emissive blocker object, do not use directly use blocks_emissive + var/atom/movable/emissive_blocker/em_block + + ///Lazylist to keep track on the sources of illumination. + var/list/affected_movable_lights + ///Highest-intensity light affecting us, which determines our visibility. + var/affecting_dynamic_lumi = 0 + //=========================================================================== -/atom/movable/Destroy() +/atom/movable/Destroy(force) for(var/atom/movable/I in contents) qdel(I) if(pulledby) pulledby.stop_pulling() QDEL_NULL(launch_metadata) + QDEL_NULL(em_block) if(loc) loc.on_stored_atom_del(src) //things that container need to do when a movable atom inside it is deleted @@ -38,6 +49,9 @@ . = ..() moveToNullspace() //so we move into null space. Must be after ..() b/c atom's Dispose handles deleting our lighting stuff + QDEL_NULL(light) + QDEL_NULL(static_light) + //=========================================================================== //Overlays @@ -60,6 +74,48 @@ return src.master.attack_hand(a, b, c) return +/atom/movable/Initialize(mapload, ...) + . = ..() + switch(blocks_emissive) + if(EMISSIVE_BLOCK_GENERIC) + var/mutable_appearance/gen_emissive_blocker = mutable_appearance(icon, icon_state, plane = EMISSIVE_PLANE, alpha = src.alpha) + gen_emissive_blocker.color = GLOB.em_block_color + gen_emissive_blocker.dir = dir + gen_emissive_blocker.appearance_flags |= appearance_flags + overlays += gen_emissive_blocker + if(EMISSIVE_BLOCK_UNIQUE) + render_target = ref(src) + em_block = new(src, render_target) + overlays += list(em_block) + if(opacity) + AddElement(/datum/element/light_blocking) + if(light_system == MOVABLE_LIGHT) + AddComponent(/datum/component/overlay_lighting) + if(light_system == DIRECTIONAL_LIGHT) + AddComponent(/datum/component/overlay_lighting, is_directional = TRUE) + +/* + +///Updates this movables emissive overlay +/atom/movable/proc/update_emissive_block() + if(!blocks_emissive) + return + else if (blocks_emissive == EMISSIVE_BLOCK_GENERIC) + var/mutable_appearance/gen_emissive_blocker = emissive_blocker(icon, icon_state, alpha = src.alpha, appearance_flags = src.appearance_flags) + gen_emissive_blocker.dir = dir + if(blocks_emissive == EMISSIVE_BLOCK_UNIQUE) + if(!em_block) + render_target = ref(src) + em_block = new(src, render_target) + return em_block + +/atom/movable/update_overlays() + . = ..() + + . += update_emissive_block() + +*/ + /atom/movable/vv_get_dropdown() . = ..() VV_DROPDOWN_OPTION(VV_HK_EDIT_PARTICLES, "Edit Particles") @@ -251,10 +307,10 @@ if(light) //Clone lighting if(!clone.light) - clone.SetLuminosity(luminosity) //Create clone light + clone.set_light(luminosity) //Create clone light else if(clone.light) - clone.SetLuminosity(0) //Kill clone light + clone.set_light(0) //Kill clone light /atom/movable/proc/destroy_clone() clones.Remove(src.clone) @@ -279,3 +335,23 @@ //if((force < (move_resist * MOVE_FORCE_THROW_RATIO)) || (move_resist == INFINITY)) // return return throw_atom(target, range, speed, thrower, spin) + +///Keeps track of the sources of dynamic luminosity and updates our visibility with the highest. +/atom/movable/proc/update_dynamic_luminosity() + var/highest = 0 + for(var/i in affected_movable_lights) + if(affected_movable_lights[i] <= highest) + continue + highest = affected_movable_lights[i] + if(highest == affecting_dynamic_lumi) + return + luminosity -= affecting_dynamic_lumi + affecting_dynamic_lumi = highest + luminosity += affecting_dynamic_lumi + + +///Helper to change several lighting overlay settings. +/atom/movable/proc/set_light_range_power_color(range, power, color) + set_light_range(range) + set_light_power(power) + set_light_color(color) diff --git a/code/game/machinery/air_alarm.dm b/code/game/machinery/air_alarm.dm index 28e045163f06..16512a944be1 100644 --- a/code/game/machinery/air_alarm.dm +++ b/code/game/machinery/air_alarm.dm @@ -136,8 +136,6 @@ /obj/structure/machinery/alarm/proc/first_run() alarm_area = get_area(src) - if (alarm_area.master) - alarm_area = alarm_area.master area_uid = alarm_area.uid if (name == "alarm") name = "[alarm_area.name] Air Alarm" @@ -203,11 +201,10 @@ /obj/structure/machinery/alarm/proc/elect_master() if(!alarm_area) return 0 - for (var/area/A in alarm_area.related) - for (var/obj/structure/machinery/alarm/AA in A) - if (!(AA.inoperable())) - alarm_area.master_air_alarm = AA - return 1 + for (var/obj/structure/machinery/alarm/AA in alarm_area) + if (!(AA.inoperable())) + alarm_area.master_air_alarm = AA + return 1 return 0 /obj/structure/machinery/alarm/proc/get_danger_level(current_value, list/danger_levels) @@ -314,9 +311,8 @@ /obj/structure/machinery/alarm/proc/apply_mode() //propagate mode to other air alarms in the area //TODO: make it so that players can choose between applying the new mode to the room they are in (related area) vs the entire alarm area - for (var/area/RA in alarm_area.related) - for (var/obj/structure/machinery/alarm/AA in RA) - AA.mode = mode + for (var/obj/structure/machinery/alarm/AA in alarm_area) + AA.mode = mode switch(mode) if(AALARM_MODE_SCRUBBING) diff --git a/code/game/machinery/bio-dome_floodlights.dm b/code/game/machinery/bio-dome_floodlights.dm index 488cf1ed79cc..a1f028a79f30 100644 --- a/code/game/machinery/bio-dome_floodlights.dm +++ b/code/game/machinery/bio-dome_floodlights.dm @@ -60,9 +60,9 @@ spawn(rand(0,50)) if(F.is_lit) //Shut it down - F.SetLuminosity(0) + F.set_light(0) else - F.SetLuminosity(F.lum_value) + F.set_light(F.lum_value) F.is_lit = !(F.is_lit) F.update_icon() return 0 @@ -101,7 +101,6 @@ if(fswitch?.floodlist) fswitch.floodlist -= src fswitch = null - SetLuminosity(0) return ..() /obj/structure/machinery/hydro_floodlight/update_icon() @@ -130,7 +129,7 @@ user.visible_message(SPAN_NOTICE("[user] finishes welding [src]'s damage."), \ SPAN_NOTICE("You finish welding [src]'s damage.")) if(is_lit) - SetLuminosity(lum_value) + set_light(lum_value) update_icon() return 1 else @@ -161,7 +160,7 @@ if(do_after(user, 50, INTERRUPT_ALL, BUSY_ICON_HOSTILE) && !damaged) //Not when it's already damaged. if(!src) return 0 damaged = 1 - SetLuminosity(0) + set_light(0) user.visible_message(SPAN_DANGER("[user] slashes up [src]!"), SPAN_DANGER("You slash up [src]!")) playsound(src, 'sound/weapons/blade1.ogg', 25, 1) diff --git a/code/game/machinery/bots/bots.dm b/code/game/machinery/bots/bots.dm index aff1efa3de66..b7bd61337ee4 100644 --- a/code/game/machinery/bots/bots.dm +++ b/code/game/machinery/bots/bots.dm @@ -3,7 +3,8 @@ /obj/structure/machinery/bot icon = 'icons/obj/structures/machinery/aibots.dmi' layer = MOB_LAYER - luminosity = 3 + light_system = MOVABLE_LIGHT + light_range = 3 use_power = USE_POWER_NONE var/obj/item/card/id/botcard // the ID card that the bot "holds" var/on = 1 @@ -15,6 +16,12 @@ var/open = 0//Maint panel var/locked = 1 +/obj/structure/machinery/bot/Initialize(mapload, ...) + . = ..() + + if(light_range) + set_light_on(TRUE) + /obj/structure/machinery/bot/Destroy() QDEL_NULL(botcard) . = ..() @@ -24,12 +31,12 @@ if(stat) return 0 on = 1 - SetLuminosity(initial(luminosity)) + set_light(initial(luminosity)) return 1 /obj/structure/machinery/bot/proc/turn_off() on = 0 - SetLuminosity(0) + set_light(0) /obj/structure/machinery/bot/proc/explode() qdel(src) @@ -38,10 +45,6 @@ if(health <= 0) explode() -/obj/structure/machinery/bot/Destroy() - SetLuminosity(0) - . = ..() - /obj/structure/machinery/bot/get_examine_text(mob/user) . = ..() if(health < maxhealth) diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index 20208a573c61..4d17e4a08803 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -79,7 +79,7 @@ network = list() cameranet.removeCamera(src) stat |= EMPED - SetLuminosity(0) + set_light(0) triggerCameraAlarm() spawn(900) network = previous_network diff --git a/code/game/machinery/computer/area_air_control.dm b/code/game/machinery/computer/area_air_control.dm index e3f16a988c86..22f4211aa8ee 100644 --- a/code/game/machinery/computer/area_air_control.dm +++ b/code/game/machinery/computer/area_air_control.dm @@ -139,14 +139,10 @@ var/turf/T_src = get_turf(src) if(!T_src.loc) return 0 var/area/A_src = T_src.loc - if (A_src.master) - A_src = A_src.master var/turf/T_scrub = get_turf(scrubber) if(!T_scrub.loc) return 0 var/area/A_scrub = T_scrub.loc - if (A_scrub.master) - A_scrub = A_scrub.master if(A_scrub != A_src) return 0 @@ -160,14 +156,11 @@ var/turf/T = get_turf(src) if(!T.loc) return - var/area/A = T.loc - if (A.master) - A = A.master for(var/obj/structure/machinery/portable_atmospherics/powered/scrubber/huge/scrubber in machines ) var/turf/T2 = get_turf(scrubber) if(T2 && T2.loc) - var/area/A2 = T2.loc - if(istype(A2) && A2.master && A2.master == A ) + var/area/A = T2.loc + if(istype(A) && A) connectedscrubbers += scrubber found = 1 diff --git a/code/game/machinery/computer/camera_console.dm b/code/game/machinery/computer/camera_console.dm index d4feca457f4a..10c2bcc309eb 100644 --- a/code/game/machinery/computer/camera_console.dm +++ b/code/game/machinery/computer/camera_console.dm @@ -17,12 +17,12 @@ var/atom/movable/screen/map_view/cam_screen var/atom/movable/screen/background/cam_background - /// All turfs within range of the currently active camera - var/list/range_turfs = list() - var/colony_camera_mapload = TRUE var/admin_console = FALSE + /// All the plane masters that need to be applied. + var/list/cam_plane_masters + /obj/structure/machinery/computer/cameras/Initialize(mapload) . = ..() // Map name has to start and end with an A-Z character, @@ -33,6 +33,16 @@ if(colony_camera_mapload && mapload && is_ground_level(z)) network = list(CAMERA_NET_COLONY) + cam_plane_masters = list() + for(var/plane in subtypesof(/atom/movable/screen/plane_master) - /atom/movable/screen/plane_master/blackness) + var/atom/movable/screen/plane_master/instance = new plane() + instance.assigned_map = map_name + instance.del_on_map_removal = FALSE + if(instance.blend_mode_override) + instance.blend_mode = instance.blend_mode_override + instance.screen_loc = "[map_name]:CENTER" + cam_plane_masters += instance + // Initialize map objects cam_screen = new cam_screen.icon = null @@ -51,7 +61,6 @@ qdel(cam_screen) QDEL_NULL(cam_background) qdel(cam_background) - range_turfs = null last_camera_turf = null concurrent_users = null return ..() @@ -94,6 +103,8 @@ // Register map objects user.client.register_map_obj(cam_screen) user.client.register_map_obj(cam_background) + for(var/plane in cam_plane_masters) + user.client.register_map_obj(plane) // Open UI ui = new(user, src, "CameraConsole", name) ui.open() @@ -176,13 +187,8 @@ var/list/visible_things = current.isXRay() ? range(current.view_range, cam_location) : view(current.view_range, cam_location) var/list/visible_turfs = list() - range_turfs.Cut() - var/area/A for(var/turf/visible_turf in visible_things) - range_turfs += visible_turf - A = visible_turf.loc - if(!A.lighting_use_dynamic || visible_turf.lighting_lumcount >= 1) - visible_turfs += visible_turf + visible_turfs += visible_turf var/list/bbox = get_bbox_of_atoms(visible_turfs) var/size_x = bbox[3] - bbox[1] + 1 @@ -192,18 +198,6 @@ cam_background.icon_state = "clear" cam_background.fill_rect(1, 1, size_x, size_y) - START_PROCESSING(SSfastobj, src) // fastobj to somewhat keep pace with lighting updates - -/obj/structure/machinery/computer/cameras/process() - if(current) - var/list/visible_turfs = list() - var/area/A - for(var/turf/visible_turf as anything in range_turfs) - A = visible_turf.loc - if(!A.lighting_use_dynamic || visible_turf.lighting_lumcount >= 1) - visible_turfs += visible_turf - cam_screen.vis_contents = visible_turfs - /obj/structure/machinery/computer/cameras/ui_close(mob/user) var/user_ref = WEAKREF(user) var/is_living = isliving(user) @@ -215,10 +209,8 @@ if(length(concurrent_users) == 0 && is_living) current = null last_camera_turf = null - range_turfs = list() if(use_power) update_use_power(USE_POWER_IDLE) - STOP_PROCESSING(SSfastobj, src) user.unset_interaction() /obj/structure/machinery/computer/cameras/proc/show_camera_static() diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index ed7335ea8778..eb9aed4f71e4 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -185,7 +185,6 @@ GLOBAL_LIST_INIT(frozen_items, list(SQUAD_MARINE_1 = list(), SQUAD_MARINE_2 = li flags_atom |= USES_HEARING /obj/structure/machinery/cryopod/Destroy() - SetLuminosity(0) QDEL_NULL(occupant) QDEL_NULL(announce) . = ..() @@ -368,7 +367,7 @@ GLOBAL_LIST_INIT(frozen_items, list(SQUAD_MARINE_1 = list(), SQUAD_MARINE_2 = li qdel(G) icon_state = "body_scanner_open" - SetLuminosity(0) + set_light(0) if(occupant.key) occupant.ghostize(0) @@ -509,7 +508,7 @@ GLOBAL_LIST_INIT(frozen_items, list(SQUAD_MARINE_1 = list(), SQUAD_MARINE_2 = li mob.forceMove(src) occupant = mob icon_state = "body_scanner_closed" - SetLuminosity(2) + set_light(2) time_entered = world.time start_processing() @@ -532,7 +531,7 @@ GLOBAL_LIST_INIT(frozen_items, list(SQUAD_MARINE_1 = list(), SQUAD_MARINE_2 = li occupant = null stop_processing() icon_state = "body_scanner_open" - SetLuminosity(0) + set_light(0) playsound(src, 'sound/machines/pod_open.ogg', 30) #ifdef OBJECTS_PROXY_SPEECH diff --git a/code/game/machinery/doors/alarmlock.dm b/code/game/machinery/doors/alarmlock.dm index b6b9a6133a84..c55250fdc04d 100644 --- a/code/game/machinery/doors/alarmlock.dm +++ b/code/game/machinery/doors/alarmlock.dm @@ -25,6 +25,7 @@ return ..() /obj/structure/machinery/door/airlock/alarmlock/receive_signal(datum/signal/signal) +/* ..() if(inoperable()) return @@ -32,10 +33,6 @@ var/alarm_area = signal.data["zone"] var/alert = signal.data["alert"] - var/area/our_area = get_area(src) - if (our_area.master) - our_area = our_area.master - if(alarm_area == our_area.name) switch(alert) if("severe") @@ -44,3 +41,4 @@ if("minor", "clear") autoclose = 0 open() +*/ diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index b54658b24245..578ef368f5d9 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -49,7 +49,7 @@ /obj/structure/machinery/door/Destroy() . = ..() if(filler && width > 1) - filler.SetOpacity(0)// Ehh... let's hope there are no walls there. Must fix this + filler.set_opacity(0)// Ehh... let's hope there are no walls there. Must fix this filler = null density = FALSE @@ -64,12 +64,12 @@ bound_width = width * world.icon_size bound_height = world.icon_size filler = get_step(src,EAST) - filler.SetOpacity(opacity) + filler.set_opacity(opacity) else bound_width = world.icon_size bound_height = width * world.icon_size filler = get_step(src,NORTH) - filler.SetOpacity(opacity) + filler.set_opacity(opacity) //process() //return @@ -222,9 +222,9 @@ operating = TRUE do_animate("opening") icon_state = "door0" - SetOpacity(FALSE) + set_opacity(FALSE) if(filler) - filler.SetOpacity(opacity) + filler.set_opacity(opacity) addtimer(CALLBACK(src, PROC_REF(finish_open)), openspeed) return TRUE @@ -255,9 +255,9 @@ /obj/structure/machinery/door/proc/finish_close() update_icon() if(visible && !glass) - SetOpacity(TRUE) + set_opacity(TRUE) if(filler) - filler.SetOpacity(opacity) + filler.set_opacity(opacity) operating = FALSE /obj/structure/machinery/door/proc/requiresID() @@ -279,15 +279,15 @@ if(dir in list(EAST, WEST)) bound_width = width * world.icon_size bound_height = world.icon_size - filler.SetOpacity(0) + filler.set_opacity(0) filler = (get_step(src,EAST)) //Find new turf - filler.SetOpacity(opacity) + filler.set_opacity(opacity) else bound_width = world.icon_size bound_height = width * world.icon_size - filler.SetOpacity(0) + filler.set_opacity(0) filler = (get_step(src,NORTH)) //Find new turf - filler.SetOpacity(opacity) + filler.set_opacity(opacity) /obj/structure/machinery/door/morgue diff --git a/code/game/machinery/doors/multi_tile.dm b/code/game/machinery/doors/multi_tile.dm index 2a49b8696a9f..f58d50f3a8cf 100644 --- a/code/game/machinery/doors/multi_tile.dm +++ b/code/game/machinery/doors/multi_tile.dm @@ -235,11 +235,11 @@ //We have to find these again since these doors are used on shuttles a lot so the turfs changes /obj/structure/machinery/door/airlock/multi_tile/almayer/proc/update_filler_turfs() for(var/turf/T in multi_filler) - T.SetOpacity(null) + T.set_opacity(null) multi_filler = list() for(var/turf/T in get_filler_turfs()) - T.SetOpacity(opacity) + T.set_opacity(opacity) multi_filler += list(T) /obj/structure/machinery/door/airlock/multi_tile/proc/get_filler_turfs() diff --git a/code/game/machinery/doors/poddoor.dm b/code/game/machinery/doors/poddoor.dm index da6137e5e8cb..b2d836ee476f 100644 --- a/code/game/machinery/doors/poddoor.dm +++ b/code/game/machinery/doors/poddoor.dm @@ -16,9 +16,9 @@ /obj/structure/machinery/door/poddoor/Initialize() . = ..() if(density) - SetOpacity(1) + set_opacity(1) else - SetOpacity(0) + set_opacity(0) update_icon() /obj/structure/machinery/door/poddoor/update_icon() @@ -42,7 +42,7 @@ operating = 1 flick("[base_icon_state]c0", src) icon_state = "[base_icon_state]0" - SetOpacity(0) + set_opacity(0) sleep(15) density = FALSE operating = 0 @@ -84,7 +84,7 @@ playsound(loc, 'sound/machines/blastdoor.ogg', 20, 0) flick("[base_icon_state]c0", src) icon_state = "[base_icon_state]0" - SetOpacity(0) + set_opacity(0) addtimer(CALLBACK(src, PROC_REF(finish_open)), openspeed) return TRUE @@ -102,7 +102,7 @@ flick("[base_icon_state]c1", src) icon_state = "[base_icon_state]1" density = TRUE - SetOpacity(initial(opacity)) + set_opacity(initial(opacity)) addtimer(CALLBACK(src, PROC_REF(finish_close)), openspeed) return @@ -123,13 +123,13 @@ /obj/structure/machinery/door/poddoor/two_tile/proc/start_opening() flick("[base_icon_state]c0", src) icon_state = "[base_icon_state]0" - SetOpacity(0) - f1.SetOpacity(0) - f2.SetOpacity(0) + set_opacity(0) + f1.set_opacity(0) + f2.set_opacity(0) /obj/structure/machinery/door/poddoor/two_tile/four_tile/start_opening() - f3.SetOpacity(0) - f4.SetOpacity(0) + f3.set_opacity(0) + f4.set_opacity(0) ..() /obj/structure/machinery/door/poddoor/two_tile/proc/open_fully() @@ -169,14 +169,14 @@ ..() /obj/structure/machinery/door/poddoor/two_tile/proc/close_fully() - SetOpacity(initial(opacity)) - f1.SetOpacity(initial(opacity)) - f2.SetOpacity(initial(opacity)) + set_opacity(initial(opacity)) + f1.set_opacity(initial(opacity)) + f2.set_opacity(initial(opacity)) operating = 0 /obj/structure/machinery/door/poddoor/two_tile/four_tile/close_fully() - f3.SetOpacity(initial(opacity)) - f4.SetOpacity(initial(opacity)) + f3.set_opacity(initial(opacity)) + f4.set_opacity(initial(opacity)) ..() /obj/structure/machinery/door/poddoor/two_tile @@ -194,8 +194,8 @@ f2 = new/obj/structure/machinery/door/poddoor/filler_object (get_step(src,dir)) f1.density = density f2.density = density - f1.SetOpacity(opacity) - f2.SetOpacity(opacity) + f1.set_opacity(opacity) + f2.set_opacity(opacity) /obj/structure/machinery/door/poddoor/two_tile/Destroy() QDEL_NULL(f1) @@ -223,8 +223,8 @@ f4 = new/obj/structure/machinery/door/poddoor/filler_object (get_step(f3,dir)) f3.density = density f4.density = density - f3.SetOpacity(opacity) - f4.SetOpacity(opacity) + f3.set_opacity(opacity) + f4.set_opacity(opacity) /obj/structure/machinery/door/poddoor/two_tile/four_tile/Destroy() QDEL_NULL(f3) diff --git a/code/game/machinery/doors/railing.dm b/code/game/machinery/doors/railing.dm index 8449d5d52256..c86adb2e970b 100644 --- a/code/game/machinery/doors/railing.dm +++ b/code/game/machinery/doors/railing.dm @@ -22,7 +22,7 @@ if(density)//Allows preset-open to work layer = closed_layer - SetOpacity(initial(opacity)) + set_opacity(initial(opacity)) /obj/structure/machinery/door/poddoor/railing/update_icon() if(density) diff --git a/code/game/machinery/doors/runed_sandstone.dm b/code/game/machinery/doors/runed_sandstone.dm index d67398baa305..4bf66dfdc8d8 100644 --- a/code/game/machinery/doors/runed_sandstone.dm +++ b/code/game/machinery/doors/runed_sandstone.dm @@ -100,7 +100,7 @@ operating = TRUE do_animate("opening") icon_state = "door0" - SetOpacity(FALSE) + set_opacity(0) addtimer(CALLBACK(src, PROC_REF(finish_open)), openspeed) return @@ -109,9 +109,9 @@ layer = open_layer density = FALSE update_icon() - SetOpacity(0) + set_opacity(0) if(filler) - filler.SetOpacity(opacity) + filler.set_opacity(opacity) if(operating) operating = FALSE @@ -130,7 +130,7 @@ operating = TRUE density = TRUE - SetOpacity(TRUE) + set_opacity(1) layer = closed_layer do_animate("closing") diff --git a/code/game/machinery/doors/shutters.dm b/code/game/machinery/doors/shutters.dm index 39ecbd806e64..da904f255c40 100644 --- a/code/game/machinery/doors/shutters.dm +++ b/code/game/machinery/doors/shutters.dm @@ -26,7 +26,7 @@ icon_state = "[base_icon_state]0" sleep(15) density = FALSE - SetOpacity(0) + set_opacity(0) operating = 0 return return @@ -46,7 +46,7 @@ /obj/structure/machinery/door/poddoor/shutters/finish_open() density = FALSE layer = open_layer - SetOpacity(0) + set_opacity(0) if(operating) //emag again operating = FALSE @@ -63,7 +63,7 @@ layer = closed_layer density = TRUE if(visible) - SetOpacity(1) + set_opacity(1) playsound(loc, 'sound/machines/blastdoor.ogg', 25) addtimer(CALLBACK(src, PROC_REF(finish_close)), openspeed) diff --git a/code/game/machinery/flasher.dm b/code/game/machinery/flasher.dm index 556eab541363..75d0de56dec0 100644 --- a/code/game/machinery/flasher.dm +++ b/code/game/machinery/flasher.dm @@ -26,10 +26,10 @@ ..() if ( !(stat & NOPOWER) ) icon_state = "[base_state]1" -// src.sd_SetLuminosity(2) +// src.sd_set_light(2) else icon_state = "[base_state]1-p" -// src.sd_SetLuminosity(0) +// src.sd_set_light(0) //Don't want to render prison breaks impossible /obj/structure/machinery/flasher/attackby(obj/item/W as obj, mob/user as mob) diff --git a/code/game/machinery/floodlight.dm b/code/game/machinery/floodlight.dm index 8eec83ed7b70..5f6cd02a4bf8 100644 --- a/code/game/machinery/floodlight.dm +++ b/code/game/machinery/floodlight.dm @@ -6,38 +6,40 @@ icon_state = "flood00" density = TRUE anchored = TRUE - var/on = 0 var/obj/item/cell/cell = null var/use = 0 var/unlocked = 0 var/open = 0 - var/brightness_on = 7 //can't remember what the maxed out value is + light_power = 2 unslashable = TRUE unacidable = TRUE + var/on_light_range = 6 + /obj/structure/machinery/floodlight/Initialize(mapload, ...) . = ..() cell = new /obj/item/cell(src) + if(light_on) + set_light(on_light_range) /obj/structure/machinery/floodlight/Destroy() QDEL_NULL(cell) - SetLuminosity(0) return ..() +/obj/structure/machinery/floodlight/turn_light(mob/user, toggle_on) + . = ..() + if(. == NO_LIGHT_STATE_CHANGE) + return + + if(toggle_on) + set_light(on_light_range) + else + set_light(0) + + /obj/structure/machinery/floodlight/proc/updateicon() - icon_state = "flood[open ? "o" : ""][open && cell ? "b" : ""]0[on]" -/* -/obj/structure/machinery/floodlight/process() - if(on && cell) - if(cell.charge >= use) - cell.use(use) - else - on = 0 - updateicon() - SetLuminosity(0) - src.visible_message(SPAN_WARNING("[src] shuts down due to lack of power!")) - return -*/ + icon_state = "flood[open ? "o" : ""][open && cell ? "b" : ""]0[light_on]" + /obj/structure/machinery/floodlight/attack_hand(mob/user as mob) if(open && cell) if(ishuman(user)) @@ -55,10 +57,9 @@ updateicon() return - if(on) - on = 0 - to_chat(user, SPAN_NOTICE(" You turn off the light.")) - SetLuminosity(0) + if(light_on) + to_chat(user, SPAN_NOTICE("You turn off the light.")) + turn_light(user, toggle_on = FALSE) unslashable = TRUE unacidable = TRUE else @@ -66,9 +67,8 @@ return if(cell.charge <= 0) return - on = 1 - to_chat(user, SPAN_NOTICE(" You turn on the light.")) - SetLuminosity(brightness_on) + to_chat(user, SPAN_NOTICE("You turn on the light.")) + turn_light(user, toggle_on = TRUE) unacidable = FALSE updateicon() @@ -121,9 +121,8 @@ name = "Landing Light" desc = "A powerful light stationed near landing zones to provide better visibility." icon_state = "flood01" - on = 1 + light_on = TRUE in_use = 1 - luminosity = 6 use_power = USE_POWER_NONE /obj/structure/machinery/floodlight/landing/attack_hand() diff --git a/code/game/machinery/groundmap_geothermal.dm b/code/game/machinery/groundmap_geothermal.dm index 4be9c53f0094..808c717e8891 100644 --- a/code/game/machinery/groundmap_geothermal.dm +++ b/code/game/machinery/groundmap_geothermal.dm @@ -269,9 +269,9 @@ F.is_lit = !F.is_lit if(!F.damaged) if(F.is_lit) //Shut it down - F.SetLuminosity(F.lum_value) + F.set_light(F.lum_value) else - F.SetLuminosity(0) + F.set_light(0) F.update_icon() return 0 @@ -315,7 +315,6 @@ health = 150 /obj/structure/machinery/colony_floodlight/Destroy() - SetLuminosity(0) if(fswitch) fswitch.floodlist -= src fswitch = null @@ -362,7 +361,7 @@ user.visible_message(SPAN_NOTICE("[user] screws [src]'s maintenance hatch closed."), \ SPAN_NOTICE("You screw [src]'s maintenance hatch closed.")) if(is_lit) - SetLuminosity(lum_value) + set_light(lum_value) update_icon() return TRUE diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index 1acb47370d96..2f8f113ddd23 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -142,8 +142,8 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ hologram.layer = FLY_LAYER//Above all the other objects/mobs. Or the vast majority of them. hologram.anchored = TRUE//So space wind cannot drag it. hologram.name = "[A.name] (Hologram)"//If someone decides to right click. - hologram.SetLuminosity(2) //hologram lighting - SetLuminosity(2) //pad lighting + hologram.set_light(2) //hologram lighting + set_light(2) //pad lighting icon_state = "holopad1" A.holo = src master = A//AI is the master. @@ -151,14 +151,14 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ return 1 /obj/structure/machinery/hologram/holopad/clear_holo() -// hologram.SetLuminosity(0)//Clear lighting. //handled by the lighting controller when its ower is deleted +// hologram.set_light(0)//Clear lighting. //handled by the lighting controller when its ower is deleted if(hologram) qdel(hologram)//Get rid of hologram. hologram = null if(master.holo == src) master.holo = null master = null//Null the master, since no-one is using it now. - SetLuminosity(0) //pad lighting (hologram lighting will be handled automatically since its owner was deleted) + set_light(0) //pad lighting (hologram lighting will be handled automatically since its owner was deleted) icon_state = "holopad0" use_power = USE_POWER_IDLE//Passive power usage. return 1 @@ -175,7 +175,7 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ var/area/holo_area = get_area(src) var/area/eye_area = get_area(master.eyeobj) - if(eye_area in holo_area.master.related) + if(eye_area == holo_area) return 1 clear_holo()//If not, we want to get rid of the hologram. diff --git a/code/game/machinery/igniter.dm b/code/game/machinery/igniter.dm index 5564ed0220a7..33f75c50e341 100644 --- a/code/game/machinery/igniter.dm +++ b/code/game/machinery/igniter.dm @@ -60,10 +60,10 @@ if ( !(stat & NOPOWER) && disable == 0 ) icon_state = "[base_state]" -// src.sd_SetLuminosity(2) +// src.sd_set_light(2) else icon_state = "[base_state]-p" -// src.sd_SetLuminosity(0) +// src.sd_set_light(0) /obj/structure/machinery/sparker/attackby(obj/item/W as obj, mob/user as mob) if (HAS_TRAIT(W, TRAIT_TOOL_SCREWDRIVER)) diff --git a/code/game/machinery/lightswitch.dm b/code/game/machinery/lightswitch.dm index ae57f27f2162..66eb0386713f 100644 --- a/code/game/machinery/lightswitch.dm +++ b/code/game/machinery/lightswitch.dm @@ -10,7 +10,6 @@ var/on = 1 var/area/area = null var/otherarea = null - // luminosity = 1 /obj/structure/machinery/light_switch/Initialize() . = ..() @@ -43,15 +42,14 @@ /obj/structure/machinery/light_switch/attack_hand(mob/user) on = !on - for(var/area/A in area.master.related) - A.lightswitch = on - A.updateicon() + area.lightswitch = on + area.updateicon() - for(var/obj/structure/machinery/light_switch/L in A) - L.on = on - L.updateicon() + for(var/obj/structure/machinery/light_switch/L in area) + L.on = on + L.updateicon() - area.master.power_change() + area.power_change() /obj/structure/machinery/light_switch/power_change() diff --git a/code/game/machinery/mining.dm b/code/game/machinery/mining.dm index 4f663c5fbca7..0662817174fc 100644 --- a/code/game/machinery/mining.dm +++ b/code/game/machinery/mining.dm @@ -26,4 +26,4 @@ icon_state = "furnace" density = TRUE anchored = TRUE - luminosity = 3 + light_range = 3 diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm index ad8f5a189267..89c9e9277f4c 100644 --- a/code/game/machinery/newscaster.dm +++ b/code/game/machinery/newscaster.dm @@ -93,7 +93,6 @@ var/list/obj/structure/machinery/newscaster/allCasters = list() //Global list th var/c_locked=0; //Will our new channel be locked to public submissions? var/hitstaken = 0 //Death at 3 hits from an item with force>=15 var/datum/feed_channel/viewing_channel = null - luminosity = 0 anchored = TRUE @@ -111,7 +110,6 @@ var/list/obj/structure/machinery/newscaster/allCasters = list() //Global list th /obj/structure/machinery/newscaster/security_unit/Destroy() allCasters -= src - SetLuminosity(0) return ..() /obj/structure/machinery/newscaster/update_icon() diff --git a/code/game/objects/effects/acid_hole.dm b/code/game/objects/effects/acid_hole.dm index 549ab45953d2..415df0e7e5a7 100644 --- a/code/game/objects/effects/acid_hole.dm +++ b/code/game/objects/effects/acid_hole.dm @@ -165,7 +165,7 @@ F.forceMove(Target) F.setDir(pick(NORTH, SOUTH, EAST, WEST, NORTHEAST, NORTHWEST, SOUTHEAST, SOUTHWEST)) step_away(F,src,rand(1,5)) - F.SetLuminosity(0) + F.set_light(0) if(F.on && loc != user) - F.SetLuminosity(F.brightness_on) + F.set_light_on(F.on) return diff --git a/code/game/objects/effects/aliens.dm b/code/game/objects/effects/aliens.dm index b94ee6902321..49d758b52b19 100644 --- a/code/game/objects/effects/aliens.dm +++ b/code/game/objects/effects/aliens.dm @@ -332,7 +332,7 @@ if(!acids_area) return - if(SSweather.is_weather_event && locate(acids_area.master) in SSweather.weather_areas) + if(SSweather.is_weather_event && locate(acids_area) in SSweather.weather_areas) acid_strength = acid_strength + (SSweather.weather_event_instance.fire_smothering_strength * 0.33) //smothering_strength is 1-10, acid strength is a multiplier in_weather = SSweather.weather_event_instance.fire_smothering_strength else diff --git a/code/game/objects/effects/decals/cleanable/misc.dm b/code/game/objects/effects/decals/cleanable/misc.dm index 43c3500813a4..9cf2aa3d8e09 100644 --- a/code/game/objects/effects/decals/cleanable/misc.dm +++ b/code/game/objects/effects/decals/cleanable/misc.dm @@ -35,12 +35,8 @@ name = "glowing goo" acid_damage = 1 icon_state = "greenglow" - luminosity = 1 - -/obj/effect/decal/cleanable/dirt/greenglow/Destroy() - SetLuminosity(0) - return ..() - + light_range = 1 + light_color = COLOUR_GREEN /obj/effect/decal/cleanable/flour name = "flour" desc = "It's still good. Four second rule!" @@ -58,7 +54,8 @@ density = FALSE anchored = TRUE layer = TURF_LAYER - luminosity = 1 + light_range = 1 + light_color = COLOUR_GREEN icon = 'icons/effects/effects.dmi' icon_state = "greenglow" @@ -68,10 +65,6 @@ . = ..() QDEL_IN(WEAKREF(src), 2 MINUTES) -/obj/effect/decal/cleanable/greenglow/Destroy() - SetLuminosity(0) - return ..() - /obj/effect/decal/cleanable/cobweb name = "cobweb" desc = "Somebody should remove that." diff --git a/code/game/objects/effects/effect_system/chemsmoke.dm b/code/game/objects/effects/effect_system/chemsmoke.dm index c2323c32c934..eeb17f7c98d0 100644 --- a/code/game/objects/effects/effect_system/chemsmoke.dm +++ b/code/game/objects/effects/effect_system/chemsmoke.dm @@ -199,10 +199,10 @@ smoke.pixel_x = -32 + rand(-8,8) smoke.pixel_y = -32 + rand(-8,8) walk_to(smoke, T) - smoke.SetOpacity(1) //switching opacity on after the smoke has spawned, and then + smoke.set_opacity(1) //switching opacity on after the smoke has spawned, and then sleep(150+rand(0,20)) // turning it off before it is deleted results in cleaner if(smoke.opacity) - smoke.SetOpacity(0) + smoke.set_opacity(0) fadeOut(smoke) qdel(smoke) diff --git a/code/game/objects/effects/effect_system/smoke.dm b/code/game/objects/effects/effect_system/smoke.dm index 2eb36930c542..da388b1be1e4 100644 --- a/code/game/objects/effects/effect_system/smoke.dm +++ b/code/game/objects/effects/effect_system/smoke.dm @@ -36,7 +36,7 @@ /obj/effect/particle_effect/smoke/Destroy() . = ..() if(opacity) - SetOpacity(0) + set_opacity(0) active_smoke_effects -= src cause_data = null @@ -53,7 +53,7 @@ else if(time_to_live == 1) alpha = 180 amount = 0 - SetOpacity(0) + set_opacity(0) apply_smoke_effect(get_turf(src)) diff --git a/code/game/objects/effects/glowshroom.dm b/code/game/objects/effects/glowshroom.dm index e54607d6f930..bebe0ec8b27f 100644 --- a/code/game/objects/effects/glowshroom.dm +++ b/code/game/objects/effects/glowshroom.dm @@ -39,13 +39,9 @@ else //if on the floor, glowshroom on-floor sprite icon_state = "glowshroomf" - SetLuminosity(round(potency/15)) + set_light(round(potency/15)) lastTick = world.timeofday -/obj/effect/glowshroom/Destroy() - SetLuminosity(0) - . = ..() - /obj/effect/glowshroom/proc/CalcDir(turf/location = loc) set background = 1 var/direction = 16 diff --git a/code/game/objects/effects/overlays.dm b/code/game/objects/effects/overlays.dm index d4cd293030c2..16f30eaf0fd2 100644 --- a/code/game/objects/effects/overlays.dm +++ b/code/game/objects/effects/overlays.dm @@ -145,7 +145,7 @@ name = "laser" anchored = TRUE mouse_opacity = MOUSE_OPACITY_ICON - luminosity = 2 + light_range = 2 icon = 'icons/obj/items/weapons/projectiles.dmi' icon_state = "laser_target_coordinate" effect_duration = 600 @@ -156,14 +156,13 @@ source_binoc.laser_cooldown = world.time + source_binoc.cooldown_duration source_binoc.coord = null source_binoc = null - SetLuminosity(0) . = ..() /obj/effect/overlay/temp/laser_target name = "laser" anchored = TRUE mouse_opacity = MOUSE_OPACITY_ICON - luminosity = 2 + light_range = 2 icon = 'icons/obj/items/weapons/projectiles.dmi' icon_state = "laser_target2" effect_duration = 600 @@ -198,7 +197,6 @@ source_binoc.laser = null source_binoc = null - SetLuminosity(0) . = ..() /obj/effect/overlay/temp/laser_target/ex_act(severity) //immune to explosions @@ -214,16 +212,12 @@ /obj/effect/overlay/temp/blinking_laser name = "blinking laser" anchored = TRUE - luminosity = 2 + light_range = 2 effect_duration = 10 mouse_opacity = MOUSE_OPACITY_TRANSPARENT icon = 'icons/obj/items/weapons/projectiles.dmi' icon_state = "laser_target3" -/obj/effect/overlay/temp/blinking_laser/Destroy() - SetLuminosity(0) - . = ..() - /obj/effect/overlay/temp/emp_sparks icon = 'icons/effects/effects.dmi' icon_state = "empdisable" diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index a98a9c25d1aa..453c2ef1d9d7 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -2,6 +2,8 @@ name = "item" icon = 'icons/obj/items/items.dmi' mouse_drag_pointer = MOUSE_ACTIVE_POINTER + light_system = MOVABLE_LIGHT + /// this saves our blood splatter overlay, which will be processed not to go over the edges of the sprite var/image/blood_overlay = null var/randpixel = 6 diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index 9bcda4a82bbb..6795f8b436dc 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -10,9 +10,11 @@ matter = list("metal" = 50,"glass" = 20) + light_range = 5 + light_power = 1 + actions_types = list(/datum/action/item_action) var/on = FALSE - var/brightness_on = 5 //luminosity when on var/raillight_compatible = TRUE //Can this be turned into a rail light ? var/toggleable = TRUE @@ -22,6 +24,7 @@ /obj/item/device/flashlight/Initialize() . = ..() update_icon() + set_light_on(on) /obj/item/device/flashlight/update_icon() . = ..() @@ -30,27 +33,13 @@ else icon_state = initial(icon_state) -/obj/item/device/flashlight/Destroy() - if(on) - if(ismob(src.loc)) - src.loc.SetLuminosity(0, FALSE, src) - else - SetLuminosity(0) - . = ..() - /obj/item/device/flashlight/proc/update_brightness(mob/user = null) if(on) + set_light_range(light_range) + set_light_on(TRUE) update_icon() - if(loc && loc == user) - user.SetLuminosity(brightness_on, FALSE, src) - else if(isturf(loc)) - SetLuminosity(brightness_on) else - icon_state = initial(icon_state) - if(loc && loc == user) - user.SetLuminosity(0, FALSE, src) - else if(isturf(loc)) - SetLuminosity(0) + set_light_on(FALSE) /obj/item/device/flashlight/attack_self(mob/user) ..() @@ -64,7 +53,8 @@ return FALSE on = !on - update_brightness(user) + set_light_on(on) + update_icon() for(var/X in actions) var/datum/action/A = X A.update_button_icon() @@ -73,8 +63,8 @@ /obj/item/device/flashlight/proc/turn_off_light(mob/bearer) if(on) - on = 0 - update_brightness(bearer) + on = FALSE + set_light_on(on) for(var/X in actions) var/datum/action/A = X A.update_button_icon() @@ -142,21 +132,7 @@ if(on && can_be_broken) if(breaking_sound) playsound(src.loc, breaking_sound, 25, 1) - on = FALSE - update_brightness() - -/obj/item/device/flashlight/pickup(mob/user) - if(on) - user.SetLuminosity(brightness_on, FALSE, src) - SetLuminosity(0) - ..() - - -/obj/item/device/flashlight/dropped(mob/user) - if(on && src.loc != user) - user.SetLuminosity(0, FALSE, src) - SetLuminosity(brightness_on) - ..() + turn_off_light() /obj/item/device/flashlight/on on = TRUE @@ -167,7 +143,7 @@ icon_state = "penlight" item_state = "" flags_atom = FPRINT|CONDUCT - brightness_on = 2 + light_range = 2 w_class = SIZE_TINY raillight_compatible = 0 @@ -176,7 +152,7 @@ desc = "A miniature lamp, that might be used by small robots." icon_state = "penlight" item_state = "" - brightness_on = 2 + light_range = 2 w_class = SIZE_TINY raillight_compatible = 0 @@ -186,23 +162,15 @@ desc = "A desk lamp with an adjustable mount." icon_state = "lamp" item_state = "lamp" - brightness_on = 5 + light_range = 5 w_class = SIZE_LARGE on = 0 raillight_compatible = 0 breaking_sound = 'sound/effects/Glasshit.ogg' -/obj/item/device/flashlight/lamp/Initialize() - . = ..() - - if(on) - update_brightness() - -/obj/item/device/flashlight/lamp/on/Initialize() //unused, but im leaving it here anyways :D - . = ..() - on = 1 - update_brightness() +/obj/item/device/flashlight/lamp/on + on = TRUE //Menorah! /obj/item/device/flashlight/lamp/menorah @@ -210,7 +178,7 @@ desc = "For celebrating Chanukah." icon_state = "menorah" item_state = "menorah" - brightness_on = 2 + light_range = 2 w_class = SIZE_LARGE on = 1 breaking_sound = null @@ -230,13 +198,13 @@ desc = "A classic green-shaded desk lamp." icon_state = "lampgreen" item_state = "lampgreen" - brightness_on = 5 + light_range = 5 /obj/item/device/flashlight/lamp/tripod name = "tripod lamp" desc = "An emergency light tube mounted onto a tripod. It seemingly lasts forever." icon_state = "tripod_lamp" - brightness_on = 6//pretty good + light_range = 6//pretty good w_class = SIZE_LARGE on = 1 @@ -261,7 +229,8 @@ name = "flare" desc = "A red USCM issued flare. There are instructions on the side, it reads 'pull cord, make light'." w_class = SIZE_SMALL - brightness_on = 5 //As bright as a flashlight, but more disposable. Doesn't burn forever though + light_power = 2 + light_range = 7 icon_state = "flare" item_state = "flare" actions = list() //just pull it manually, neckbeard. @@ -287,6 +256,7 @@ /obj/item/device/flashlight/flare/Initialize() . = ..() fuel = rand(9.5 MINUTES, 10.5 MINUTES) + set_light_color(flame_tint) /obj/item/device/flashlight/flare/update_icon() overlays?.Cut() @@ -353,7 +323,7 @@ START_PROCESSING(SSobj, src) /obj/item/device/flashlight/flare/proc/turn_off() - on = 0 + on = FALSE heat_source = 0 force = initial(force) damtype = initial(damtype) @@ -401,7 +371,6 @@ /// Flares deployed by a flare gun /obj/item/device/flashlight/flare/on/gun - brightness_on = 7 //Special flare subtype for the illumination flare shell //Acts like a flare, just even stronger, and set length @@ -409,9 +378,7 @@ name = "illumination flare" desc = "It's really bright, and unreachable." icon_state = "" //No sprite - invisibility = 101 //Can't be seen or found, it's "up in the sky" mouse_opacity = MOUSE_OPACITY_TRANSPARENT - brightness_on = 7 //Way brighter than most lights show_flame = FALSE /obj/item/device/flashlight/flare/on/illumination/Initialize() @@ -432,7 +399,6 @@ name = "burning star shell ash" desc = "Bright burning ash from a Star Shell 40mm. Don't touch, or it'll burn ya'." icon_state = "starshell_ash" - brightness_on = 7 anchored = TRUE//can't be picked up ammo_datum = /datum/ammo/flare/starshell show_flame = FALSE @@ -445,14 +411,14 @@ /obj/item/device/flashlight/flare/on/illumination/chemical name = "chemical light" - brightness_on = 0 + light_range = 0 /obj/item/device/flashlight/flare/on/illumination/chemical/Initialize(mapload, amount) . = ..() - brightness_on = round(amount * 0.04) - if(!brightness_on) + light_range = round(amount * 0.04) + if(!light_range) return INITIALIZE_HINT_QDEL - SetLuminosity(brightness_on) + set_light(light_range) fuel = amount * 5 SECONDS /obj/item/device/flashlight/slime @@ -464,7 +430,7 @@ icon_state = "floor1" item_state = "slime" w_class = SIZE_TINY - brightness_on = 6 + light_range = 6 // Bio-luminesence has one setting, on. on = TRUE raillight_compatible = FALSE @@ -473,7 +439,7 @@ /obj/item/device/flashlight/slime/Initialize() . = ..() - SetLuminosity(brightness_on) + set_light(light_range) update_brightness() icon_state = initial(icon_state) @@ -483,7 +449,7 @@ name = "lantern" icon_state = "lantern" desc = "A mining lantern." - brightness_on = 6 // luminosity when on + light_range = 6 // luminosity when on //Signal Flare /obj/item/device/flashlight/flare/signal diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm index aef577779c06..6aecacd27916 100644 --- a/code/game/objects/items/devices/radio/intercom.dm +++ b/code/game/objects/items/devices/radio/intercom.dm @@ -64,10 +64,10 @@ on = FALSE else var/area/A = src.loc.loc - if(!A || !isarea(A) || !A.master) + if(!A || !isarea(A)) on = FALSE else - on = A.master.powered(POWER_CHANNEL_EQUIP) // set "on" to the power status + on = A.powered(POWER_CHANNEL_EQUIP) // set "on" to the power status if(!on) icon_state = "intercom-p" diff --git a/code/game/objects/items/lightstick.dm b/code/game/objects/items/lightstick.dm index 453d965926ff..70418049994b 100644 --- a/code/game/objects/items/lightstick.dm +++ b/code/game/objects/items/lightstick.dm @@ -7,10 +7,18 @@ desc = "You can stick them in the ground" icon = 'icons/obj/items/lighting.dmi' icon_state = "lightstick_blue0" + light_range = 2 + light_color = COLOUR_BLUE var/s_color = "blue" var/trample_chance = 30 var/can_trample = TRUE +/obj/item/lightstick/Initialize(mapload, ...) + . = ..() + + if(!light_on) + set_light_range(0) + /obj/item/lightstick/Crossed(mob/living/O) if(anchored && prob(trample_chance) && can_trample) if(!istype(O,/mob/living/carbon/xenomorph/larva)) @@ -22,13 +30,13 @@ else anchored = FALSE icon_state = "lightstick_[s_color][anchored]" - SetLuminosity(0) + set_light_range(0) pixel_x = 0 pixel_y = 0 else anchored = FALSE icon_state = "lightstick_[s_color][anchored]" - SetLuminosity(0) + set_light_range(0) pixel_x = 0 pixel_y = 0 @@ -45,31 +53,27 @@ anchored = FALSE user.visible_message("[user.name] removes \the [src] from the ground.","You remove the [src] from the ground.") icon_state = "lightstick_[s_color][anchored]" - SetLuminosity(0) + set_light(0) pixel_x = 0 pixel_y = 0 playsound(user, 'sound/weapons/Genhit.ogg', 25, 1) - //Remove lightsource -/obj/item/lightstick/Destroy() - SetLuminosity(0) - return ..() - //Red /obj/item/lightstick/planted icon_state = "lightstick_blue1" anchored = TRUE - luminosity = 2 + light_on = TRUE /obj/item/lightstick/red name = "red lightstick" icon_state = "lightstick_red0" s_color = "red" + light_color = COLOUR_RED /obj/item/lightstick/red/planted icon_state = "lightstick_red1" anchored = TRUE - luminosity = 2 + light_on = TRUE /obj/item/lightstick/red/spoke name = "red lightstick" @@ -80,7 +84,7 @@ /obj/item/lightstick/red/spoke/planted icon_state = "lightstick_spoke1" anchored = TRUE - luminosity = 2 + light_on = TRUE /obj/item/lightstick/red/variant name = "red lightstick" @@ -90,7 +94,7 @@ /obj/item/lightstick/red/variant/planted icon_state = "lightstick_red_variant1" anchored = TRUE - luminosity = 2 + light_on = TRUE /obj/item/lightstick/variant //blue name = "blue lightstick" @@ -100,4 +104,4 @@ /obj/item/lightstick/variant/planted icon_state = "lightstick_blue_variant1" anchored = TRUE - luminosity = 2 + light_on = TRUE diff --git a/code/game/objects/items/reagent_containers/food/snacks/grown.dm b/code/game/objects/items/reagent_containers/food/snacks/grown.dm index d2fdda7d0975..12a5a704f663 100644 --- a/code/game/objects/items/reagent_containers/food/snacks/grown.dm +++ b/code/game/objects/items/reagent_containers/food/snacks/grown.dm @@ -189,26 +189,16 @@ /obj/item/reagent_container/food/snacks/grown/glowberries name = "bunch of glow-berries" desc = "Nutritious!" - var/light_on = 1 var/brightness_on = 2 //luminosity when on filling_color = "#D3FF9E" icon_state = "glowberrypile" plantname = "glowberries" -/obj/item/reagent_container/food/snacks/grown/glowberries/Destroy() - if(istype(loc,/mob)) - loc.SetLuminosity(0, FALSE, src) +/obj/item/reagent_container/food/snacks/grown/glowberries/Initialize() . = ..() -/obj/item/reagent_container/food/snacks/grown/glowberries/pickup(mob/user) - . = ..() - src.SetLuminosity(0) - user.SetLuminosity(round((potency/5),1), FALSE, src) - -/obj/item/reagent_container/food/snacks/grown/glowberries/dropped(mob/user) - user.SetLuminosity(0, FALSE, src) - src.SetLuminosity(round(potency/5,1)) - ..() + set_light_range(brightness_on) + set_light_on(TRUE) /obj/item/reagent_container/food/snacks/grown/cocoapod name = "cocoa pod" @@ -568,22 +558,6 @@ to_chat(user, SPAN_NOTICE("You plant the glowshroom.")) -/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom/Destroy() - if(istype(loc,/mob)) - loc.SetLuminosity(0, FALSE, src) - . = ..() - -/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom/pickup(mob/user) - . = ..() - SetLuminosity(0) - user.SetLuminosity(round((potency/10),1), FALSE, src) - -/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom/dropped(mob/user) - user.SetLuminosity(0, FALSE, src) - SetLuminosity(round(potency/10,1)) - ..() - - // ************************************* // Complex Grown Object Defines - // Putting these at the bottom so they don't clutter the list up. -Cheridan diff --git a/code/game/objects/items/storage/smartpack.dm b/code/game/objects/items/storage/smartpack.dm index 8d6057e16ce9..8df079c92ca4 100644 --- a/code/game/objects/items/storage/smartpack.dm +++ b/code/game/objects/items/storage/smartpack.dm @@ -22,9 +22,6 @@ var/show_exoskeleton = TRUE - var/flashlight_cooldown = 0 //Cooldown for toggling the light - var/light_state = FALSE //Is the light on or off - var/battery_charge = SMARTPACK_MAX_POWER_STORED //How much power are we storing var/activated_form = FALSE var/immobile_form = FALSE @@ -83,7 +80,7 @@ else LAZYSET(item_state_slots, WEAR_BACK, initial(item_state)) - if(light_state) + if(light_on) overlays += "+lamp_on" else overlays += "+lamp_off" @@ -116,7 +113,7 @@ var/image/ret = ..() var/light = "+lamp_on" - if(!light_state) + if(!light_on) light = "+lamp_off" var/image/lamp = overlay_image('icons/mob/humans/onmob/back.dmi', light, color, RESET_COLOR) @@ -134,17 +131,14 @@ else to_chat(M, SPAN_DANGER("[name] beeps, \"Unathorized user!\"")) - if(light_state && loc != M) - M.SetLuminosity(BACKPACK_LIGHT_LEVEL, FALSE, src) - SetLuminosity(0) ..() /obj/item/storage/backpack/marine/smartpack/dropped(mob/living/M) for(var/datum/action/human_action/smartpack/S in M.actions) S.remove_from(M) - if(light_state && loc != M) - toggle_light(M) + if(light_on && loc != M) + turn_light(M, toggle_on = FALSE) if(immobile_form) immobile_form = FALSE @@ -153,47 +147,34 @@ M.unfreeze() ..() -/obj/item/storage/backpack/marine/smartpack/Destroy() - if(ismob(loc)) - loc.SetLuminosity(0, FALSE, src) - else - SetLuminosity(0) - . = ..() - /obj/item/storage/backpack/marine/smartpack/attack_self(mob/user) ..() - if(!isturf(user.loc) || flashlight_cooldown > world.time || !ishuman(user)) + if(!isturf(user.loc) || !ishuman(user)) return var/mob/living/carbon/human/H = user if(H.back != src) return - toggle_light(user) + turn_light(user, toggle_on = !light_on) return TRUE -/obj/item/storage/backpack/marine/smartpack/proc/toggle_light(mob/user) - flashlight_cooldown = world.time + 20 //2 seconds cooldown every time the light is toggled - if(light_state) //Turn it off. - if(user) - user.SetLuminosity(0, FALSE, src) - else - SetLuminosity(0) - playsound(src, 'sound/handling/click_2.ogg', 50, TRUE) - else //Turn it on. - if(user) - user.SetLuminosity(BACKPACK_LIGHT_LEVEL, FALSE, src) - else - SetLuminosity(BACKPACK_LIGHT_LEVEL) +/obj/item/storage/backpack/marine/smartpack/turn_light(mob/user, toggle_on, cooldown, sparks, forced, light_again) + . = ..() + if(. != CHECKS_PASSED) + return - light_state = !light_state + if(toggle_on) + set_light_range(BACKPACK_LIGHT_LEVEL) + set_light_on(TRUE) + else + set_light_on(FALSE) + playsound(src, 'sound/handling/click_2.ogg', 50, TRUE) playsound(src, 'sound/handling/light_on_1.ogg', 50, TRUE) - update_icon(user) - /obj/item/storage/backpack/marine/smartpack/proc/protective_form(mob/living/carbon/human/user) if(!istype(user) || activated_form || immobile_form) return diff --git a/code/game/objects/items/tools/flame_tools.dm b/code/game/objects/items/tools/flame_tools.dm index 6ebd8ee5982e..862906ec1971 100644 --- a/code/game/objects/items/tools/flame_tools.dm +++ b/code/game/objects/items/tools/flame_tools.dm @@ -42,10 +42,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM /obj/item/tool/candle/Destroy() if(heat_source) STOP_PROCESSING(SSobj, src) - if(ismob(src.loc)) - src.loc.SetLuminosity(0, FALSE, src) - else - SetLuminosity(0) + . = ..() /obj/item/tool/candle/attackby(obj/item/W as obj, mob/user as mob) @@ -65,7 +62,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM flavor_text = SPAN_NOTICE("[usr] lights [src].") for(var/mob/O in viewers(usr, null)) O.show_message(flavor_text, SHOW_MESSAGE_VISIBLE) - SetLuminosity(CANDLE_LUM) + set_light(CANDLE_LUM) update_icon() START_PROCESSING(SSobj, src) @@ -80,34 +77,15 @@ CIGARETTE PACKETS ARE IN FANCY.DM return update_icon() - - /obj/item/tool/candle/attack_self(mob/user) ..() if(heat_source) heat_source = 0 update_icon() - SetLuminosity(0) - user.SetLuminosity(0, FALSE, src) + set_light(0) STOP_PROCESSING(SSobj, src) - -/obj/item/tool/candle/pickup(mob/user) - . = ..() - if(heat_source) - SetLuminosity(0) - user.SetLuminosity(CANDLE_LUM, FALSE, src) - - -/obj/item/tool/candle/dropped(mob/user) - ..() - if(heat_source && src.loc != user) - user.SetLuminosity(0, FALSE, src) - SetLuminosity(CANDLE_LUM) - - - /////////// //MATCHES// /////////// @@ -120,6 +98,8 @@ CIGARETTE PACKETS ARE IN FANCY.DM var/smoketime = 10 SECONDS var/burnt_name = "burnt match" w_class = SIZE_TINY + light_range = 2 + light_power = 1 attack_verb = list("burnt", "singed") @@ -149,6 +129,13 @@ CIGARETTE PACKETS ARE IN FANCY.DM burn_out(user) return ..() +/obj/item/tool/match/turn_light(mob/user, toggle_on) + . = ..() + if(. == NO_LIGHT_STATE_CHANGE) + return + + set_light_on(toggle_on) + /obj/item/tool/match/proc/light_match() if(heat_source || burnt) return @@ -156,10 +143,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM playsound(src.loc,"match",15, 1, 3) damtype = "burn" icon_state = "[initial(icon_state)]_lit" - if(ismob(loc)) - loc.SetLuminosity(2, FALSE, src) - else - SetLuminosity(2) + turn_light(toggle_on = TRUE) START_PROCESSING(SSobj, src) update_icon() return TRUE @@ -170,32 +154,17 @@ CIGARETTE PACKETS ARE IN FANCY.DM damtype = "brute" icon_state = "[initial(icon_state)]_burnt" item_state = "cigoff" - SetLuminosity(0) + turn_light(toggle_on = FALSE) name = burnt_name desc = "A match. This one has seen better days." STOP_PROCESSING(SSobj, src) - if(user) - user.SetLuminosity(0, FALSE, src) - return - - if(ismob(loc)) - user = loc - user.SetLuminosity(0, FALSE, src) - return - /obj/item/tool/match/paper name = "paper match" desc = "A simple match stick, used for lighting fine smokables." icon_state = "papermatch" burnt_name = "burnt paper match" -/obj/item/tool/lighter/dropped(mob/user) - if(heat_source && src.loc != user) - user.SetLuminosity(0, FALSE, src) - SetLuminosity(2) - return ..() - ////////////////// //FINE SMOKABLES// ////////////////// @@ -211,6 +180,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM flags_atom = CAN_BE_SYRINGED attack_verb = list("burnt", "singed") blood_overlay_type = "" + light_color = LIGHT_COLOUR_ORANGE /// Note - these are in masks.dmi not in cigarette.dmi var/icon_on = "cigon" var/icon_off = "cigoff" @@ -339,6 +309,9 @@ CIGARETTE PACKETS ARE IN FANCY.DM reagents.handle_reactions() icon_state = icon_on item_state = icon_on + set_light_range(1) + set_light_power(0.5) + set_light_on(TRUE) if(iscarbon(loc)) var/mob/living/carbon/C = loc if(C.r_hand == src) @@ -372,7 +345,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM return var/mob/living/carbon/C = loc - if(prob(15)) // so it's not an instarape in case of acid + if(prob(15)) reagents.reaction(C, INGEST) reagents.trans_to(C, REAGENTS_METABOLISM) else // else just remove some of the reagents @@ -404,6 +377,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM qdel(src) . = butt else + set_light_on(FALSE) heat_source = 0 icon_state = icon_off item_state = icon_off @@ -679,6 +653,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM icon = 'icons/obj/items/items.dmi' icon_state = "lighter_g" item_state = "lighter_g" + light_color = LIGHT_COLOUR_LAVA var/icon_on = "lighter_g_on" var/icon_off = "lighter_g" var/clr = "g" @@ -732,13 +707,6 @@ CIGARETTE PACKETS ARE IN FANCY.DM icon_off = "lighter_[clr]" icon_state = icon_off -/obj/item/tool/lighter/Destroy() - if(ismob(src.loc)) - src.loc.SetLuminosity(0, FALSE, src) - else - SetLuminosity(0) - . = ..() - /obj/item/tool/lighter/attack_self(mob/living/user) if(user.r_hand == src || user.l_hand == src) if(!heat_source) @@ -761,7 +729,8 @@ CIGARETTE PACKETS ARE IN FANCY.DM user.apply_damage(2,BURN,"r_hand") user.visible_message(SPAN_NOTICE("After a few attempts, [user] manages to light the [src], they however burn their finger in the process.")) - user.SetLuminosity(2, FALSE, src) + set_light_range(2) + set_light_on(TRUE) START_PROCESSING(SSobj, src) else turn_off(user, 0) @@ -781,7 +750,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM else bearer.visible_message(SPAN_NOTICE("[bearer] quietly shuts off the [src].")) - bearer.SetLuminosity(0, FALSE, src) + set_light_on(FALSE) STOP_PROCESSING(SSobj, src) return 1 return 0 @@ -805,18 +774,3 @@ CIGARETTE PACKETS ARE IN FANCY.DM else ..() -/obj/item/tool/lighter/process() - - -/obj/item/tool/lighter/pickup(mob/user) - . = ..() - if(heat_source) - SetLuminosity(0) - user.SetLuminosity(2, FALSE, src) - - -/obj/item/tool/lighter/dropped(mob/user) - if(heat_source && src.loc != user) - user.SetLuminosity(0, FALSE, src) - SetLuminosity(2) - return ..() diff --git a/code/game/objects/items/tools/maintenance_tools.dm b/code/game/objects/items/tools/maintenance_tools.dm index bdc72b2a8ee5..05ba357c80ce 100644 --- a/code/game/objects/items/tools/maintenance_tools.dm +++ b/code/game/objects/items/tools/maintenance_tools.dm @@ -175,6 +175,9 @@ inherent_traits = list(TRAIT_TOOL_BLOWTORCH) + light_range = 2 + light_power = 2 + //blowtorch specific stuff /// Whether or not the blowtorch is off(0), on(1) or currently welding(2) @@ -191,13 +194,8 @@ reagents.add_reagent("fuel", max_fuel) return - /obj/item/tool/weldingtool/Destroy() if(welding) - if(ismob(loc)) - loc.SetLuminosity(0, FALSE, src) - else - SetLuminosity(0) STOP_PROCESSING(SSobj, src) . = ..() @@ -205,8 +203,6 @@ . = ..() . += "It contains [get_fuel()]/[max_fuel] units of fuel!" - - /obj/item/tool/weldingtool/process() if(QDELETED(src)) STOP_PROCESSING(SSobj, src) @@ -218,7 +214,6 @@ else //should never be happening, but just in case toggle(TRUE) - /obj/item/tool/weldingtool/attack(mob/target, mob/user) if(ishuman(target)) @@ -285,6 +280,13 @@ ..() toggle() +/obj/item/tool/weldingtool/turn_light(mob/user, toggle_on) + . = ..() + if(. == NO_LIGHT_STATE_CHANGE) + return + + set_light_on(toggle_on) + //Returns the amount of fuel in the welder /obj/item/tool/weldingtool/proc/get_fuel() if(!reagents) @@ -330,9 +332,7 @@ welding = 1 if(M) to_chat(M, SPAN_NOTICE("You switch [src] on.")) - M.SetLuminosity(2, FALSE, src) - else - SetLuminosity(2) + turn_light((M ? M : null), toggle_on = TRUE) weld_tick += 8 //turning the tool on does not consume fuel directly, but it advances the process that regularly consumes fuel. force = 15 damtype = "fire" @@ -357,13 +357,13 @@ to_chat(M, SPAN_NOTICE("You switch [src] off.")) else to_chat(M, SPAN_WARNING("[src] shuts off!")) - M.SetLuminosity(0, FALSE, src) if(M.r_hand == src) M.update_inv_r_hand() if(M.l_hand == src) M.update_inv_l_hand() - else - SetLuminosity(0) + + turn_light((M ? M : null), toggle_on = FALSE) + STOP_PROCESSING(SSobj, src) //Decides whether or not to damage a player's eyes based on what they're wearing as protection @@ -411,20 +411,6 @@ to_chat(H, SPAN_WARNING("Your eyes are really starting to hurt. This can't be good for you!")) return FALSE -/obj/item/tool/weldingtool/pickup(mob/user) - . = ..() - if(welding) - SetLuminosity(0) - user.SetLuminosity(2, FALSE, src) - - -/obj/item/tool/weldingtool/dropped(mob/user) - if(welding && loc != user) - user.SetLuminosity(0, FALSE, src) - SetLuminosity(2) - return ..() - - /obj/item/tool/weldingtool/largetank name = "industrial blowtorch" max_fuel = 40 diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index 24f019b9f89f..ebe36323d78e 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -42,7 +42,7 @@ if(garbage) add_to_garbage(src) -/obj/Destroy() +/obj/Destroy(force) if(buckled_mob) unbuckle() . = ..() diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora.dm index e8e4b3b0966e..173182b6cc3e 100644 --- a/code/game/objects/structures/flora.dm +++ b/code/game/objects/structures/flora.dm @@ -603,11 +603,7 @@ ICEY GRASS. IT LOOKS LIKE IT'S MADE OF ICE. name = "strange tree" desc = "Some kind of bizarre alien tree. It oozes with a sickly yellow sap." icon_state = "alienplant1" - luminosity = 2 - -/obj/structure/flora/jungle/alienplant1/Destroy() - SetLuminosity(0) - return ..() + light_range = 2 /obj/structure/flora/jungle/planttop1 name = "strange tree" diff --git a/code/game/objects/structures/mineral_doors.dm b/code/game/objects/structures/mineral_doors.dm index 5d0d61e59862..21d66efce270 100644 --- a/code/game/objects/structures/mineral_doors.dm +++ b/code/game/objects/structures/mineral_doors.dm @@ -167,11 +167,7 @@ /obj/structure/mineral_door/uranium mineralType = "uranium" hardness = 3 - luminosity = 2 - -/obj/structure/mineral_door/uranium/Destroy() - SetLuminosity(0) - . = ..() + light_range = 2 /obj/structure/mineral_door/sandstone mineralType = "sandstone" diff --git a/code/game/objects/structures/pipes/vents/vents.dm b/code/game/objects/structures/pipes/vents/vents.dm index 2b3d5409dc8a..d540414e4c8e 100644 --- a/code/game/objects/structures/pipes/vents/vents.dm +++ b/code/game/objects/structures/pipes/vents/vents.dm @@ -18,8 +18,6 @@ . = ..() initial_loc = get_area(loc) - if(initial_loc.master) - initial_loc = initial_loc.master area_uid = initial_loc.uid if(!id_tag) assign_uid() diff --git a/code/game/objects/structures/props.dm b/code/game/objects/structures/props.dm index 66598d602691..66046a59916f 100644 --- a/code/game/objects/structures/props.dm +++ b/code/game/objects/structures/props.dm @@ -33,10 +33,10 @@ /obj/structure/prop/dam/drill/proc/update() icon_state = "thumper[on ? "-on" : ""]" if(on) - SetLuminosity(3) + set_light(3) playsound(src, 'sound/machines/turbine_on.ogg') else - SetLuminosity(0) + set_light(0) playsound(src, 'sound/machines/turbine_off.ogg') return @@ -114,9 +114,9 @@ underlays += "shadow[lit ? "-lit" : ""]" icon_state = "torii[lit ? "-lit" : ""]" if(lit) - SetLuminosity(6) + set_light(6) else - SetLuminosity(0) + set_light(0) return /obj/structure/prop/dam/torii/attack_hand(mob/user as mob) @@ -510,10 +510,10 @@ /obj/structure/prop/turbine/proc/Update() icon_state = "biomass_turbine[on ? "-on" : ""]" if (on) - SetLuminosity(3) + set_light(3) playsound(src, 'sound/machines/turbine_on.ogg') else - SetLuminosity(0) + set_light(0) playsound(src, 'sound/machines/turbine_off.ogg') return @@ -650,12 +650,19 @@ icon_state = "brazier" density = TRUE health = 150 - luminosity = 6 + light_range = 6 + light_on = TRUE /// What obj this becomes when it gets to its next stage of construction / ignition var/frame_type /// What is used to progress to the next stage var/state = STATE_COMPLETE +/obj/structure/prop/brazier/Initialize() + . = ..() + + if(!light_on) + set_light(0) + /obj/structure/prop/brazier/get_examine_text(mob/user) . = ..() switch(state) @@ -686,20 +693,11 @@ new frame_type(loc) qdel(src) -/obj/structure/prop/brazier/Destroy() - SetLuminosity(0) - return ..() - -/obj/structure/prop/brazier/Initialize() - . = ..() - if(luminosity) - SetLuminosity(luminosity) - /obj/structure/prop/brazier/frame name = "empty brazier" desc = "An empty brazier." icon_state = "brazier_frame" - luminosity = 0 + light_on = FALSE frame_type = /obj/structure/prop/brazier/frame/full state = STATE_FUEL @@ -715,7 +713,7 @@ desc = "It's a torch." icon_state = "torch" density = FALSE - luminosity = 5 + light_range = 5 /obj/structure/prop/brazier/frame/full/torch name = "unlit torch" @@ -840,7 +838,6 @@ addtimer(CALLBACK(src, PROC_REF(fuel_drain), TRUE), fuel_stage_time) /obj/structure/prop/brazier/campfire/Destroy() - SetLuminosity(0) STOP_PROCESSING(SSobj, src) return ..() @@ -1119,7 +1116,8 @@ icon = 'icons/effects/fire.dmi' icon_state = "dynamic_2" layer = MOB_LAYER - luminosity = 3 + light_range = 3 + light_on = TRUE /obj/structure/prop/invuln/fusion_reactor name = "\improper S-52 fusion reactor" diff --git a/code/game/objects/structures/props/requests_console.dm b/code/game/objects/structures/props/requests_console.dm index 95311bce9bad..7c4dd0b42992 100644 --- a/code/game/objects/structures/props/requests_console.dm +++ b/code/game/objects/structures/props/requests_console.dm @@ -4,7 +4,6 @@ anchored = TRUE icon = 'icons/obj/structures/machinery/terminals.dmi' icon_state = "req_comp0" - luminosity = 0 /obj/structure/machinery/requests_console/power_change() ..() diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 090c5ad56f87..1a0469a5b9bf 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -36,7 +36,7 @@ LAZYADD(debris, shardtype) update_nearby_icons() -/obj/structure/window/Destroy() +/obj/structure/window/Destroy(force) density = FALSE if(is_full_window()) update_nearby_icons() @@ -507,7 +507,7 @@ relativewall() relativewall_neighbours() -/obj/structure/window/framed/Destroy() +/obj/structure/window/framed/Destroy(force) for(var/obj/effect/alien/weeds/weedwall/window/found_weedwall in get_turf(src)) qdel(found_weedwall) var/list/turf/cardinal_neighbors = list(get_step(src, NORTH), get_step(src, SOUTH), get_step(src, EAST), get_step(src, WEST)) @@ -854,9 +854,11 @@ //icon_state = "rwindow0_debug" //Uncomment to check hull in the map editor var/triggered = FALSE //indicates if the shutters have already been triggered -/obj/structure/window/framed/prison/reinforced/hull/Destroy() +/obj/structure/window/framed/prison/reinforced/hull/Destroy(force) + if(force) + return ..() spawn_shutters() - .=..() + . = ..() /obj/structure/window/framed/prison/reinforced/hull/proc/spawn_shutters(from_dir = 0) if(triggered) @@ -864,16 +866,17 @@ triggered = TRUE for(var/direction in cardinal) - if(direction == from_dir) continue //doesn't check backwards + if(direction == from_dir) + continue //doesn't check backwards for(var/obj/structure/window/framed/prison/reinforced/hull/W in get_step(src,direction) ) W.spawn_shutters(turn(direction,180)) - var/obj/structure/machinery/door/poddoor/shutters/almayer/pressure/P = new(get_turf(src)) + var/obj/structure/machinery/door/poddoor/shutters/almayer/pressure/pressure_door = new(get_turf(src)) switch(junction) if(4,5,8,9,12) - P.setDir(SOUTH) + pressure_door.setDir(SOUTH) else - P.setDir(EAST) - P.close() + pressure_door.setDir(EAST) + pressure_door.close() /obj/structure/window/framed/prison/cell name = "cell window" @@ -943,9 +946,12 @@ window_frame = /obj/structure/window_frame/corsat/security health = 400 -/obj/structure/window/framed/corsat/hull/Destroy() +/obj/structure/window/framed/corsat/hull/Destroy(force) + if(force) + return ..() + spawn_shutters() - .=..() + . = ..() /obj/structure/window/framed/corsat/hull/proc/spawn_shutters(from_dir = 0) if(triggered) @@ -959,14 +965,14 @@ for(var/obj/structure/window/framed/corsat/hull/W in get_step(src,direction) ) W.spawn_shutters(turn(direction,180)) - var/obj/structure/machinery/door/poddoor/shutters/almayer/pressure/P = new(get_turf(src)) + var/obj/structure/machinery/door/poddoor/shutters/almayer/pressure/pressure_door = new(get_turf(src)) switch(junction) if(4,5,8,9,12) - P.setDir(SOUTH) + pressure_door.setDir(SOUTH) else - P.setDir(EAST) + pressure_door.setDir(EAST) - INVOKE_ASYNC(P, TYPE_PROC_REF(/obj/structure/machinery/door, close)) + INVOKE_ASYNC(pressure_door, TYPE_PROC_REF(/obj/structure/machinery/door, close)) /obj/structure/window/framed/corsat/indestructible/ name = "hull window" diff --git a/code/game/supplyshuttle.dm b/code/game/supplyshuttle.dm index 350d6047b2a4..4d60c6c263cf 100644 --- a/code/game/supplyshuttle.dm +++ b/code/game/supplyshuttle.dm @@ -18,30 +18,26 @@ var/datum/controller/supply/supply_controller = new() /area/supply/station //DO NOT TURN THE lighting_use_dynamic STUFF ON FOR SHUTTLES. IT BREAKS THINGS. name = "Supply Shuttle" icon_state = "shuttle3" - luminosity = 1 - lighting_use_dynamic = 0 + base_lighting_alpha = 255 requires_power = 0 ambience_exterior = AMBIENCE_ALMAYER /area/supply/dock //DO NOT TURN THE lighting_use_dynamic STUFF ON FOR SHUTTLES. IT BREAKS THINGS. name = "Supply Shuttle" icon_state = "shuttle3" - luminosity = 1 - lighting_use_dynamic = 0 + base_lighting_alpha = 255 requires_power = 0 /area/supply/station_vehicle //DO NOT TURN THE lighting_use_dynamic STUFF ON FOR SHUTTLES. IT BREAKS THINGS. name = "Vehicle ASRS" icon_state = "shuttle3" - luminosity = 1 - lighting_use_dynamic = 0 + base_lighting_alpha = 255 requires_power = 0 /area/supply/dock_vehicle //DO NOT TURN THE lighting_use_dynamic STUFF ON FOR SHUTTLES. IT BREAKS THINGS. name = "Vehicle ASRS" icon_state = "shuttle3" - luminosity = 1 - lighting_use_dynamic = 0 + base_lighting_alpha = 255 requires_power = 0 //SUPPLY PACKS MOVED TO /code/defines/obj/supplypacks.dm diff --git a/code/game/turfs/auto_turf.dm b/code/game/turfs/auto_turf.dm index 4556289da9ea..45756c30bb9c 100644 --- a/code/game/turfs/auto_turf.dm +++ b/code/game/turfs/auto_turf.dm @@ -183,7 +183,7 @@ L.forceMove(src) L.pixel_x += rand(-5,5) L.pixel_y += rand(-5,5) - L.SetLuminosity(2) + L.set_light(2) playsound(user, 'sound/weapons/Genhit.ogg', 25, 1) //Digging up snow diff --git a/code/game/turfs/floor.dm b/code/game/turfs/floor.dm index dc2cda0c2c2a..5f99aba26c09 100644 --- a/code/game/turfs/floor.dm +++ b/code/game/turfs/floor.dm @@ -96,7 +96,7 @@ else if(is_light_floor()) icon_state = "light_broken" broken = 1 - SetLuminosity(0) + set_light(0) else if(is_plating()) icon_state = "platingdmg[pick(1, 2, 3)]" broken = 1 @@ -135,7 +135,7 @@ //This proc auto corrects the grass tiles' siding. /turf/open/floor/proc/make_plating() - SetLuminosity(0) + set_light(0) intact_tile = FALSE broken = FALSE burnt = FALSE diff --git a/code/game/turfs/floors/desert.dm b/code/game/turfs/floors/desert.dm index 4ecc0bf47cf7..46a481e3bc64 100644 --- a/code/game/turfs/floors/desert.dm +++ b/code/game/turfs/floors/desert.dm @@ -111,13 +111,13 @@ ..() switch(toxic) if(1) - SetLuminosity(2) + set_light(2) icon = 'icons/turf/floors/desert_water_toxic.dmi' if(0) - SetLuminosity(1) + set_light(1) icon = 'icons/turf/floors/desert_water.dmi' if(-1) - SetLuminosity(1) + set_light(1) icon = 'icons/turf/floors/desert_water_transition.dmi' /turf/open/desert/desert_shore/is_weedable() @@ -196,13 +196,13 @@ ..() switch(toxic) if(1) - SetLuminosity(2) + set_light(2) icon = 'icons/turf/floors/desert_water_toxic.dmi' if(0) - SetLuminosity(1) + set_light(1) icon = 'icons/turf/floors/desert_water.dmi' if(-1) - SetLuminosity(1) + set_light(1) icon = 'icons/turf/floors/desert_water_transition.dmi' //Desert River Toxic @@ -221,13 +221,13 @@ ..() switch(toxic) if(1) - SetLuminosity(2) + set_light(2) icon = 'icons/turf/floors/desert_water_toxic.dmi' if(0) - SetLuminosity(1) + set_light(1) icon = 'icons/turf/floors/desert_water.dmi' if(-1) - SetLuminosity(1) + set_light(1) icon = 'icons/turf/floors/desert_water_transition.dmi' update_overlays() diff --git a/code/game/turfs/light.dm b/code/game/turfs/light.dm index 694a51aad83a..219e79e93ef2 100644 --- a/code/game/turfs/light.dm +++ b/code/game/turfs/light.dm @@ -14,32 +14,32 @@ switch(state) if(0) icon_state = "light_on" - SetLuminosity(5) + set_light(5) if(1) icon_state = "light_on-r" - SetLuminosity(5) + set_light(5) if(2) icon_state = "light_on-g" - SetLuminosity(5) + set_light(5) if(3) icon_state = "light_on-y" - SetLuminosity(5) + set_light(5) if(4) icon_state = "light_on-p" - SetLuminosity(5) + set_light(5) if(5,-1) icon_state = "light_on-w" - SetLuminosity(5) + set_light(5) state = -1 else return //Should never happen ever but what if... returns into the other else which close the light else if(broken) icon_state = "light_broken" //It's the same sprite as light off, my artistic skill stops at stickmans anyone feel free to make a better one! - SetLuminosity(0) + set_light(0) else icon_state = "light_off" - SetLuminosity(0) + set_light(0) on = FALSE /turf/open/floor/light/attackby(obj/item/item_in_hand, mob/user) diff --git a/code/game/turfs/open.dm b/code/game/turfs/open.dm index 41ac80bfdc58..c88f79b43293 100644 --- a/code/game/turfs/open.dm +++ b/code/game/turfs/open.dm @@ -304,7 +304,7 @@ L.forceMove(src) L.pixel_x += rand(-5,5) L.pixel_y += rand(-5,5) - L.SetLuminosity(2) + L.set_light(2) playsound(user, 'sound/weapons/Genhit.ogg', 25, 1) return @@ -797,7 +797,7 @@ L.forceMove(src) L.pixel_x += rand(-5,5) L.pixel_y += rand(-5,5) - L.SetLuminosity(2) + L.set_light(2) playsound(user, 'sound/weapons/Genhit.ogg', 25, 1) return diff --git a/code/game/turfs/snow.dm b/code/game/turfs/snow.dm index cd5fcf56d15c..72b1f35d0aff 100644 --- a/code/game/turfs/snow.dm +++ b/code/game/turfs/snow.dm @@ -30,7 +30,7 @@ L.forceMove(src) L.pixel_x += rand(-5,5) L.pixel_y += rand(-5,5) - L.SetLuminosity(2) + L.set_light(2) playsound(user, 'sound/weapons/Genhit.ogg', 25, 1) diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index bc0375e0b850..26cad71ca23c 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -55,6 +55,14 @@ // Fishing var/supports_fishing = FALSE // set to false when MRing, this is just for testing + ///Lumcount added by sources other than lighting datum objects, such as the overlay lighting component. + var/dynamic_lumcount = 0 + ///List of light sources affecting this turf. + ///Which directions does this turf block the vision of, taking into account both the turf's opacity and the movable opacity_sources. + var/directional_opacity = NONE + ///Lazylist of movable atoms providing opacity sources. + var/list/atom/movable/opacity_sources + /turf/Initialize(mapload) SHOULD_CALL_PARENT(FALSE) // this doesn't parent call for optimisation reasons if(flags_atom & INITIALIZED) @@ -85,10 +93,21 @@ for(var/atom/movable/AM in src) Entered(AM) - if(luminosity) - if(light) WARNING("[type] - Don't set lights up manually during New(), We do it automatically.") - trueLuminosity = luminosity * luminosity - light = new(src) + if(light_power && light_range) + update_light() + + //Get area light + var/area/current_area = loc + if(current_area?.lighting_effect) + overlays += current_area.lighting_effect + + if(opacity) + directional_opacity = ALL_CARDINALS + + //Get area light + var/area/A = loc + if(A?.lighting_effect) + overlays += A.lighting_effect return INITIALIZE_HINT_NORMAL @@ -356,8 +375,6 @@ if(/turf/baseturf_bottom) path = /turf/open/floor/plating - var/old_lumcount = lighting_lumcount - initial(lighting_lumcount) - //if(src.type == new_turf_path) // Put this back if shit starts breaking // return src @@ -365,6 +382,16 @@ var/list/old_baseturfs = baseturfs + //static lighting + var/old_lighting_object = static_lighting_object + var/old_lighting_corner_NE = lighting_corner_NE + var/old_lighting_corner_SE = lighting_corner_SE + var/old_lighting_corner_SW = lighting_corner_SW + var/old_lighting_corner_NW = lighting_corner_NW + //hybrid lighting + var/list/old_hybrid_lights_affecting = hybrid_lights_affecting?.Copy() + var/old_directional_opacity = directional_opacity + changing_turf = TRUE qdel(src) //Just get the side effects and call Destroy var/turf/W = new path(src) @@ -380,10 +407,34 @@ W.linked_pylons = pylons - W.lighting_lumcount += old_lumcount - if(old_lumcount != W.lighting_lumcount) - W.lighting_changed = 1 - SSlighting.changed_turfs += W + W.hybrid_lights_affecting = old_hybrid_lights_affecting + W.dynamic_lumcount = dynamic_lumcount + + lighting_corner_NE = old_lighting_corner_NE + lighting_corner_SE = old_lighting_corner_SE + lighting_corner_SW = old_lighting_corner_SW + lighting_corner_NW = old_lighting_corner_NW + + //static Update + if(SSlighting.initialized) + recalculate_directional_opacity() + + W.static_lighting_object = old_lighting_object + + if(static_lighting_object && !static_lighting_object.needs_update) + static_lighting_object.update() + + //Since the old turf was removed from hybrid_lights_affecting, readd the new turf here + if(W.hybrid_lights_affecting) + for(var/atom/movable/lighting_mask/mask as anything in W.hybrid_lights_affecting) + LAZYADD(mask.affecting_turfs, W) + + if(W.directional_opacity != old_directional_opacity) + W.reconsider_lights() + + var/area/thisarea = get_area(W) + if(thisarea.lighting_effect) + W.overlays += thisarea.lighting_effect W.levelupdate() return W @@ -760,13 +811,7 @@ GLOBAL_LIST_INIT(blacklisted_automated_baseturfs, typecacheof(list( /turf/proc/copyTurf(turf/T) if(T.type != type) - var/obj/O - if(underlays.len) //we have underlays, which implies some sort of transparency, so we want to a snapshot of the previous turf as an underlay - O = new() - O.underlays.Add(T) T.ChangeTurf(type) - if(underlays.len) - T.underlays = O.underlays if(T.icon_state != icon_state) T.icon_state = icon_state if(T.icon != icon) diff --git a/code/game/turfs/walls/wall_types.dm b/code/game/turfs/walls/wall_types.dm index 5338ae26c000..8262caef4258 100644 --- a/code/game/turfs/walls/wall_types.dm +++ b/code/game/turfs/walls/wall_types.dm @@ -125,7 +125,7 @@ operating = TRUE flick("containment_wall_divide_lowering", src) icon_state = "containment_wall_divide_lowered" - SetOpacity(0) + set_opacity(0) density = FALSE operating = FALSE change_weeds() @@ -136,7 +136,7 @@ operating = TRUE flick("containment_wall_divide_rising", src) icon_state = "containment_wall_divide" - SetOpacity(1) + set_opacity(1) density = TRUE operating = FALSE diff --git a/code/modules/autowiki/pages/guns.dm b/code/modules/autowiki/pages/guns.dm index 0946b552fe31..ad675c51a409 100644 --- a/code/modules/autowiki/pages/guns.dm +++ b/code/modules/autowiki/pages/guns.dm @@ -97,9 +97,10 @@ )) gun_data["attachments"] = attachments - - upload_icon(getFlatIcon(generating_gun, no_anim = TRUE), filename) - gun_data["icon"] = filename + var/icon/generated_icon = getFlatIcon(generating_gun, no_anim = TRUE) + if(generated_icon) + upload_icon(generated_icon, filename) + gun_data["icon"] = filename output += include_template("Autowiki/Gun", gun_data) diff --git a/code/modules/clothing/head/hardhat.dm b/code/modules/clothing/head/hardhat.dm index 165dc03f25e2..d94789651b75 100644 --- a/code/modules/clothing/head/hardhat.dm +++ b/code/modules/clothing/head/hardhat.dm @@ -3,8 +3,8 @@ desc = "A piece of headgear used in dangerous working conditions to protect the head. Comes with a built-in flashlight." icon_state = "hardhat0_yellow" item_state = "hardhat0_yellow" - var/brightness_on = 4 //luminosity when on - var/on = FALSE + light_range = 4 + light_power = 2 var/hardhat_color = "yellow" //Determines used sprites: hardhat[on]_[hardhat_color] var/toggleable = TRUE armor_melee = CLOTHING_ARMOR_MEDIUM @@ -30,87 +30,52 @@ /obj/item/clothing/head/hardhat/update_icon() . = ..() - if(on) - icon_state = "hardhat[on]_[hardhat_color]" - item_state = "hardhat[on]_[hardhat_color]" + if(light_on) + icon_state = "hardhat[light_on]_[hardhat_color]" + item_state = "hardhat[light_on]_[hardhat_color]" else icon_state = initial(icon_state) item_state = initial(item_state) -/obj/item/clothing/head/hardhat/proc/update_brightness(mob/user) - if(on) - update_icon() - if(loc == user) - user.SetLuminosity(brightness_on, FALSE, src) - else if(isturf(loc)) - SetLuminosity(brightness_on) - else - icon_state = initial(icon_state) - if(loc == user) - user.SetLuminosity(0, FALSE, src) - else if(isturf(loc)) - SetLuminosity(0) - /obj/item/clothing/head/hardhat/attack_self(mob/user) - ..() + . = ..() if(!toggleable) to_chat(user, SPAN_WARNING("You cannot toggle [src] on or off.")) return FALSE if(!isturf(user.loc)) - to_chat(user, SPAN_WARNING("You cannot turn the light [on ? "off" : "on"] while in [user.loc].")) //To prevent some lighting anomalies. + to_chat(user, SPAN_WARNING("You cannot turn the light [light_on ? "off" : "on"] while in [user.loc].")) //To prevent some lighting anomalies. return FALSE - on = !on - update_brightness(user) + turn_light(user, !light_on) + +/obj/item/clothing/head/hardhat/turn_light(mob/user, toggle_on) + + . = ..() + if(. != CHECKS_PASSED) + return + + set_light_on(toggle_on) + if(user == loc) + user.update_inv_head() + for(var/datum/action/current_action as anything in actions) current_action.update_button_icon() - if(ismob(loc)) - var/mob/M = loc - M.update_inv_head() - - return TRUE + update_icon() -/obj/item/clothing/head/hardhat/proc/turn_off_light(mob/bearer) - if(on) - on = FALSE - update_brightness(bearer) - for(var/X in actions) - var/datum/action/A = X - A.update_button_icon() - return TRUE - return FALSE +/obj/item/clothing/head/hardhat/attack_alien(mob/living/carbon/xenomorph/attacking_xeno) + if(!can_be_broken) + return -/obj/item/clothing/head/hardhat/attack_alien(mob/living/carbon/xenomorph/M) - . = ..() + if(turn_light(attacking_xeno, toggle_on = FALSE) != CHECKS_PASSED) + return - if(on && can_be_broken) - if(breaking_sound) - playsound(src.loc, breaking_sound, 25, 1) - on = FALSE - update_brightness() - -/obj/item/clothing/head/hardhat/pickup(mob/user) - if(on) - user.SetLuminosity(brightness_on, FALSE, src) - SetLuminosity(0) - ..() - -/obj/item/clothing/head/hardhat/dropped(mob/user) - if(on) - user.SetLuminosity(0, FALSE, src) - SetLuminosity(brightness_on) - ..() - -/obj/item/clothing/head/hardhat/Destroy() - if(ismob(src.loc)) - src.loc.SetLuminosity(0, FALSE, src) - else - SetLuminosity(0) - return ..() + if(!breaking_sound) + return + playsound(loc, breaking_sound, 25, 1) /obj/item/clothing/head/hardhat/orange icon_state = "hardhat0_orange" diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index 37813bcad460..9da634eaba3e 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -569,7 +569,7 @@ GLOBAL_LIST_INIT(allowed_helmet_items, list( . = ..() if(pockets) for(var/obj/item/attachable/flashlight/F in pockets) - if(F.activated) + if(F.light_on) F.activate_attachment(src, user, TRUE) if(active_visor) recalculate_visors(user) @@ -579,7 +579,7 @@ GLOBAL_LIST_INIT(allowed_helmet_items, list( camera.c_tag = "Unknown" if(pockets) for(var/obj/item/attachable/flashlight/F in pockets) - if(F.activated) + if(F.light_on) F.activate_attachment(src, mob, TRUE) if(active_visor) recalculate_visors(mob) diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm index e6dd7be603df..102d8241754f 100644 --- a/code/modules/clothing/head/misc_special.dm +++ b/code/modules/clothing/head/misc_special.dm @@ -137,25 +137,7 @@ icon_state = "hardhat[on]_pumpkin" if(on) - user.SetLuminosity(brightness_on, FALSE, src) + set_light_range(brightness_on) + set_light_on(TRUE) else - user.SetLuminosity(0, FALSE, src) - -/obj/item/clothing/head/pumpkinhead/pickup(mob/user) - ..() - if(on) - user.SetLuminosity(brightness_on, FALSE, src) - SetLuminosity(0) - -/obj/item/clothing/head/pumpkinhead/dropped(mob/user) - ..() - if(on) - user.SetLuminosity(0, FALSE, src) - SetLuminosity(brightness_on) - -/obj/item/clothing/head/pumpkinhead/Destroy() - if(ismob(src.loc)) - src.loc.SetLuminosity(0, FALSE, src) - else - SetLuminosity(0) - return ..() + set_light_on(FALSE) diff --git a/code/modules/clothing/suits/marine_armor.dm b/code/modules/clothing/suits/marine_armor.dm index 23e542b98d4b..9976181588d8 100644 --- a/code/modules/clothing/suits/marine_armor.dm +++ b/code/modules/clothing/suits/marine_armor.dm @@ -80,7 +80,10 @@ ) valid_accessory_slots = list(ACCESSORY_SLOT_MEDAL, ACCESSORY_SLOT_PONCHO) - var/brightness_on = 6 //Average attachable pocket light + light_power = 3 + light_range = 4 + light_system = MOVABLE_LIGHT + var/flashlight_cooldown = 0 //Cooldown for toggling the light var/locate_cooldown = 0 //Cooldown for SL locator var/armor_overlays[] @@ -99,6 +102,8 @@ /// The dmi where the grayscale squad overlays are contained var/squad_overlay_icon = 'icons/mob/humans/onmob/suit_1.dmi' + var/atom/movable/marine_light/light_holder + /obj/item/clothing/suit/storage/marine/Initialize(mapload) . = ..() if(!(flags_atom & NO_NAME_OVERRIDE)) @@ -122,6 +127,12 @@ ) pockets.max_storage_space = 8 + light_holder = new(src) + +/obj/item/clothing/suit/storage/marine/Destroy() + QDEL_NULL(light_holder) + return ..() + /obj/item/clothing/suit/storage/marine/update_icon(mob/user) var/image/I armor_overlays["lamp"] = null @@ -151,42 +162,11 @@ icon_state = replacetext(icon_state,"1","[new_look]") update_icon(user) -/obj/item/clothing/suit/storage/marine/pickup(mob/user) - if(flags_marine_armor & ARMOR_LAMP_ON) - user.SetLuminosity(brightness_on, FALSE, src) - SetLuminosity(0) - ..() - -/obj/item/clothing/suit/storage/marine/dropped(mob/user) - if(loc != user) - turn_off_light(user) - ..() - - -/obj/item/clothing/suit/storage/marine/proc/is_light_on() - return flags_marine_armor & ARMOR_LAMP_ON - -/obj/item/clothing/suit/storage/marine/proc/turn_off_light(mob/wearer) - if(is_light_on()) - if(wearer) - wearer.SetLuminosity(0, FALSE, src) - SetLuminosity(brightness_on) - toggle_armor_light() //turn the light off - return 1 - return 0 - -/obj/item/clothing/suit/storage/marine/Destroy() - if(ismob(src.loc)) - src.loc.SetLuminosity(0, FALSE, src) - else - SetLuminosity(0) - return ..() - /obj/item/clothing/suit/storage/marine/attack_self(mob/user) ..() if(!isturf(user.loc)) - to_chat(user, SPAN_WARNING("You cannot turn the light [is_light_on() ? "off" : "on"] while in [user.loc].")) //To prevent some lighting anomalies. + to_chat(user, SPAN_WARNING("You cannot turn the light [light_on ? "off" : "on"] while in [user.loc].")) //To prevent some lighting anomalies. return if(flashlight_cooldown > world.time) @@ -198,26 +178,33 @@ if(H.wear_suit != src) return - toggle_armor_light(user) + turn_light(user, !light_on) /obj/item/clothing/suit/storage/marine/item_action_slot_check(mob/user, slot) - if(!ishuman(user)) return FALSE - if(slot != WEAR_JACKET) return FALSE + if(!ishuman(user)) + return FALSE + if(slot != WEAR_JACKET) + return FALSE return TRUE //only give action button when armor is worn. -/obj/item/clothing/suit/storage/marine/proc/toggle_armor_light(mob/user) - flashlight_cooldown = world.time + 20 //2 seconds cooldown every time the light is toggled - if(is_light_on()) //Turn it off. - if(user) user.SetLuminosity(0, FALSE, src) - else SetLuminosity(0) - playsound(src,'sound/handling/click_2.ogg', 50, 1) - else //Turn it on. - if(user) user.SetLuminosity(brightness_on, FALSE, src) - else SetLuminosity(brightness_on) - +/obj/item/clothing/suit/storage/marine/turn_light(mob/user, toggle_on) + . = ..() + if(. != CHECKS_PASSED) + return + set_light_range(initial(light_range)) + set_light_power(FLOOR(initial(light_power) * 0.5, 1)) + set_light_on(toggle_on) flags_marine_armor ^= ARMOR_LAMP_ON - playsound(src,'sound/handling/suitlight_on.ogg', 50, 1) + light_holder.set_light_flags(LIGHT_ATTACHED) + light_holder.set_light_range(initial(light_range)) + light_holder.set_light_power(initial(light_power)) + light_holder.set_light_on(toggle_on) + + if(!toggle_on) + playsound(src, 'sound/handling/click_2.ogg', 50, 1) + + playsound(src, 'sound/handling/suitlight_on.ogg', 50, 1) update_icon(user) for(var/X in actions) @@ -268,7 +255,7 @@ armor_bio = CLOTHING_ARMOR_MEDIUMHIGH armor_rad = CLOTHING_ARMOR_MEDIUM storage_slots = 4 - brightness_on = 7 //slightly higher + light_range = 5 //slightly higher specialty = "M4 pattern marine" /obj/item/clothing/suit/storage/marine/rto/intel @@ -1199,7 +1186,7 @@ armor_bomb = CLOTHING_ARMOR_HIGH armor_rad = CLOTHING_ARMOR_MEDIUM storage_slots = 2 - brightness_on = 9 + light_range = 7 slowdown = SLOWDOWN_ARMOR_VERY_LIGHT uniform_restricted = list(/obj/item/clothing/under/marine/veteran/dutch) @@ -1730,3 +1717,6 @@ icon_state = "wc_armor" flags_atom = NO_SNOW_TYPE|NO_NAME_OVERRIDE contained_sprite = TRUE + +/atom/movable/marine_light + light_system = DIRECTIONAL_LIGHT diff --git a/code/modules/cm_aliens/structures/special/pylon_core.dm b/code/modules/cm_aliens/structures/special/pylon_core.dm index 068ffeb659eb..593134642198 100644 --- a/code/modules/cm_aliens/structures/special/pylon_core.dm +++ b/code/modules/cm_aliens/structures/special/pylon_core.dm @@ -8,7 +8,7 @@ desc = "A towering spike of resin. Its base pulsates with large tendrils." icon_state = "pylon" health = 1800 - luminosity = 2 + light_range = 2 block_range = 0 var/cover_range = WEED_RANGE_PYLON var/node_type = /obj/effect/alien/weeds/node/pylon @@ -31,6 +31,9 @@ LAZYADD(A.linked_pylons, src) linked_turfs += A + if(light_range) + set_light(light_range) + /obj/effect/alien/resin/special/pylon/Destroy() for(var/turf/A as anything in linked_turfs) LAZYREMOVE(A.linked_pylons, src) @@ -166,7 +169,7 @@ desc = "A giant pulsating mound of mass. It looks very much alive." icon_state = "core" health = 1200 - luminosity = 4 + light_range = 4 cover_range = WEED_RANGE_CORE node_type = /obj/effect/alien/weeds/node/pylon/core var/hardcore = FALSE diff --git a/code/modules/cm_marines/dropship_equipment.dm b/code/modules/cm_marines/dropship_equipment.dm index 3568f001c977..707811e77ce1 100644 --- a/code/modules/cm_marines/dropship_equipment.dm +++ b/code/modules/cm_marines/dropship_equipment.dm @@ -453,19 +453,16 @@ var/spotlights_cooldown var/brightness = 11 -/obj/structure/dropship_equipment/electronics/spotlights/get_light_range() - return min(luminosity, LIGHTING_MAX_LUMINOSITY_SHIPLIGHTS) - /obj/structure/dropship_equipment/electronics/spotlights/equipment_interact(mob/user) if(spotlights_cooldown > world.time) to_chat(user, SPAN_WARNING("[src] is busy.")) return //prevents spamming deployment/undeployment if(luminosity != brightness) - SetLuminosity(brightness) + set_light(brightness) icon_state = "spotlights_on" to_chat(user, SPAN_NOTICE("You turn on [src].")) else - SetLuminosity(0) + set_light(0) icon_state = "spotlights_off" to_chat(user, SPAN_NOTICE("You turn off [src].")) spotlights_cooldown = world.time + 50 @@ -480,13 +477,13 @@ else icon_state = "spotlights" if(luminosity) - SetLuminosity(0) + set_light(0) /obj/structure/dropship_equipment/electronics/spotlights/on_launch() - SetLuminosity(0) + set_light(0) /obj/structure/dropship_equipment/electronics/spotlights/on_arrival() - SetLuminosity(brightness) + set_light(brightness) #undef LIGHTING_MAX_LUMINOSITY_SHIPLIGHTS diff --git a/code/modules/cm_marines/equipment/gear.dm b/code/modules/cm_marines/equipment/gear.dm index ff6c715b520b..b3ec6c800c68 100644 --- a/code/modules/cm_marines/equipment/gear.dm +++ b/code/modules/cm_marines/equipment/gear.dm @@ -7,7 +7,7 @@ desc = "A Flashlight designed to be held in the hand, or attached to a rifle" icon_state = "flashlight" item_state = "flashlight" - brightness_on = 5 //Pretty luminous, but still a flashlight that fits in a pocket + light_range = 5 //Pretty luminous, but still a flashlight that fits in a pocket //MARINE SNIPER TARPS diff --git a/code/modules/cm_marines/smartgun_mount.dm b/code/modules/cm_marines/smartgun_mount.dm index b72120d2038e..62c5a5955679 100644 --- a/code/modules/cm_marines/smartgun_mount.dm +++ b/code/modules/cm_marines/smartgun_mount.dm @@ -501,7 +501,6 @@ /obj/structure/machinery/m56d_hmg/Destroy() //Make sure we pick up our trash. if(operator) operator.unset_interaction() - SetLuminosity(0) STOP_PROCESSING(SSobj, src) . = ..() @@ -818,9 +817,9 @@ if(isnull(angle)) return - SetLuminosity(muzzle_flash_lum) + set_light(muzzle_flash_lum) spawn(10) - SetLuminosity(-muzzle_flash_lum) + set_light(-muzzle_flash_lum) var/image_layer = layer + 0.1 diff --git a/code/modules/cm_preds/yaut_procs.dm b/code/modules/cm_preds/yaut_procs.dm index 445dfb40bf9f..32d532da72a0 100644 --- a/code/modules/cm_preds/yaut_procs.dm +++ b/code/modules/cm_preds/yaut_procs.dm @@ -225,8 +225,7 @@ ambience_exterior = AMBIENCE_YAUTJA ceiling = CEILING_METAL requires_power = FALSE - luminosity = TRUE - lighting_use_dynamic = FALSE + base_lighting_alpha = 255 /mob/living/carbon/human/proc/pred_buy() set category = "Yautja.Misc" diff --git a/code/modules/cm_preds/yaut_weapons.dm b/code/modules/cm_preds/yaut_weapons.dm index 5ff13c843ee3..c1c5f8077f12 100644 --- a/code/modules/cm_preds/yaut_weapons.dm +++ b/code/modules/cm_preds/yaut_weapons.dm @@ -961,7 +961,7 @@ ammo = GLOB.ammo_list[/datum/ammo/energy/yautja/rifle/bolt] charge_time -= 10 var/obj/item/projectile/projectile = create_bullet(ammo, initial(name)) - projectile.SetLuminosity(1) + projectile.set_light(1) in_chamber = projectile return in_chamber @@ -1058,7 +1058,7 @@ if(charge_time < 1) return var/obj/item/projectile/projectile = create_bullet(ammo, initial(name)) - projectile.SetLuminosity(1) + projectile.set_light(1) in_chamber = projectile charge_time -= shot_cost return in_chamber diff --git a/code/modules/cm_tech/droppod/gear_access_point.dm b/code/modules/cm_tech/droppod/gear_access_point.dm index cbd70f9d083d..b581764e2d3b 100644 --- a/code/modules/cm_tech/droppod/gear_access_point.dm +++ b/code/modules/cm_tech/droppod/gear_access_point.dm @@ -17,7 +17,7 @@ /obj/structure/techpod_vendor/attack_hand(mob/user) var/area/a = get_area(src) //no idea why it was made just a structure, so this is gonna be here for now - if(!a.master || a.master.requires_power && !a.master.unlimited_power && !a.master.power_equip) + if(!a || a.requires_power && !a.unlimited_power && !a.power_equip) return if(!ishuman(user) || !get_access_permission(user)) diff --git a/code/modules/cm_tech/tech_node.dm b/code/modules/cm_tech/tech_node.dm index a8f5e02c2303..4e16267b9123 100644 --- a/code/modules/cm_tech/tech_node.dm +++ b/code/modules/cm_tech/tech_node.dm @@ -19,6 +19,7 @@ info = tech name = tech.name tech.node = src + tech.update_icon(src) /obj/effect/node/update_icon() diff --git a/code/modules/cm_tech/techtree.dm b/code/modules/cm_tech/techtree.dm index 5787adafc745..6c39d8ab9cf9 100644 --- a/code/modules/cm_tech/techtree.dm +++ b/code/modules/cm_tech/techtree.dm @@ -158,7 +158,12 @@ if(SEND_SIGNAL(M, COMSIG_MOB_ENTER_TREE, src, force) & COMPONENT_CANCEL_TREE_ENTRY) return - new/mob/hologram/techtree(entrance, M) + var/tech_hologram = new/mob/hologram/techtree(entrance, M) + + M.lighting_alpha = LIGHTING_PLANE_ALPHA_INVISIBLE + M.sync_lighting_plane_alpha() + + M.RegisterSignal(tech_hologram, COMSIG_PARENT_QDELETING, TYPE_PROC_REF(/mob, reset_lighting_alpha)) return TRUE diff --git a/code/modules/defenses/sentry.dm b/code/modules/defenses/sentry.dm index 86464d97f5a3..cec51d0b1ac2 100644 --- a/code/modules/defenses/sentry.dm +++ b/code/modules/defenses/sentry.dm @@ -21,7 +21,7 @@ var/sentry_type = "sentry" //Used for the icon display_additional_stats = TRUE /// Light strength when turned on - var/luminosity_strength = 7 + var/luminosity_strength = 5 /// Check if they have been upgraded or not, used for sentry post var/upgraded = FALSE var/omni_directional = FALSE @@ -72,7 +72,6 @@ QDEL_NULL(spark_system) QDEL_NULL(ammo) stop_processing() - SetLuminosity(0) . = ..() /obj/structure/machinery/defenses/sentry/process() @@ -181,7 +180,7 @@ /obj/structure/machinery/defenses/sentry/power_on_action() target = null - SetLuminosity(luminosity_strength) + set_light(luminosity_strength) visible_message("[icon2html(src, viewers(src))] [SPAN_NOTICE("The [name] hums to life and emits several beeps.")]") visible_message("[icon2html(src, viewers(src))] [SPAN_NOTICE("The [name] buzzes in a monotone voice: 'Default systems initiated'")]") @@ -189,7 +188,7 @@ set_range() /obj/structure/machinery/defenses/sentry/power_off_action() - SetLuminosity(0) + set_light(0) visible_message("[icon2html(src, viewers(src))] [SPAN_NOTICE("The [name] powers down and goes silent.")]") stop_processing() unset_range() diff --git a/code/modules/defenses/sentry_computer.dm b/code/modules/defenses/sentry_computer.dm index a56be2bcac99..dd5726d6ccbf 100644 --- a/code/modules/defenses/sentry_computer.dm +++ b/code/modules/defenses/sentry_computer.dm @@ -56,8 +56,7 @@ /// camera screen which shows a blank error var/atom/movable/screen/background/cam_background - /// All turfs within range of the currently active camera - var/list/range_turfs = list() + var/list/cam_plane_masters /obj/item/device/sentry_computer/Initialize(mapload) . = ..() @@ -75,6 +74,16 @@ cam_background.assigned_map = map_name cam_background.del_on_map_removal = FALSE + cam_plane_masters = list() + for(var/plane in subtypesof(/atom/movable/screen/plane_master) - /atom/movable/screen/plane_master/blackness) + var/atom/movable/screen/plane_master/instance = new plane() + instance.assigned_map = map_name + instance.del_on_map_removal = FALSE + if(instance.blend_mode_override) + instance.blend_mode = instance.blend_mode_override + instance.screen_loc = "[map_name]:CENTER" + cam_plane_masters += instance + faction_group = FACTION_LIST_MARINE transceiver.forceMove(src) transceiver.set_frequency(SENTRY_FREQ) @@ -391,6 +400,8 @@ // Register map objects user.client.register_map_obj(cam_background) user.client.register_map_obj(cam_screen) + for(var/plane in cam_plane_masters) + user.client.register_map_obj(plane) ui = new(user, src, "SentryGunUI", name) ui.open() @@ -474,13 +485,9 @@ var/list/guncamera_zone = range("[x_size]x[y_size]", target) var/list/visible_turfs = list() - range_turfs.Cut() for(var/turf/visible_turf in guncamera_zone) - range_turfs += visible_turf - var/area/visible_area = visible_turf.loc - if(!visible_area.lighting_use_dynamic || visible_turf.lighting_lumcount >= 1) - visible_turfs += visible_turf + visible_turfs += visible_turf var/list/bbox = get_bbox_of_atoms(visible_turfs) var/size_x = bbox[3] - bbox[1] + 1 diff --git a/code/modules/defenses/tesla_coil.dm b/code/modules/defenses/tesla_coil.dm index 3ba754db74c2..8dc8e6498ba1 100644 --- a/code/modules/defenses/tesla_coil.dm +++ b/code/modules/defenses/tesla_coil.dm @@ -49,12 +49,12 @@ overlays += image(icon, icon_state = "[defense_type] tesla_coil", pixel_y = 3) /obj/structure/machinery/defenses/tesla_coil/power_on_action() - SetLuminosity(7) + set_light(7) start_processing() visible_message("[icon2html(src, viewers(src))] [SPAN_NOTICE("The [name] gives a short zap, as it awakens.")]") /obj/structure/machinery/defenses/tesla_coil/power_off_action() - SetLuminosity(0) + set_light(0) stop_processing() visible_message("[icon2html(src, viewers(src))] [SPAN_NOTICE("The [name] dies out with a last spark.")]") @@ -155,7 +155,6 @@ if(targets) targets = null - SetLuminosity(0) . = ..() #define TESLA_COIL_STUN_FIRE_DELAY 3 SECONDS diff --git a/code/modules/dropships/attach_points/attach_point.dm b/code/modules/dropships/attach_points/attach_point.dm index 53a9129517ee..6724f5d18bd2 100644 --- a/code/modules/dropships/attach_points/attach_point.dm +++ b/code/modules/dropships/attach_points/attach_point.dm @@ -70,6 +70,7 @@ name = "weapon system attach point" icon_state = "equip_base_front" base_category = DROPSHIP_WEAPON + layer = ABOVE_OBJ_LAYER var/firing_arc_min var/firing_arc_max diff --git a/code/modules/dropships/attach_points/templates.dm b/code/modules/dropships/attach_points/templates.dm index be5eb24c3d29..51c870f04b0b 100644 --- a/code/modules/dropships/attach_points/templates.dm +++ b/code/modules/dropships/attach_points/templates.dm @@ -94,6 +94,7 @@ name = "electronic system attach point" base_category = DROPSHIP_ELECTRONICS icon_state = "equip_base_front" + layer = ABOVE_OBJ_LAYER /obj/effect/attach_point/electronics/dropship1 ship_tag = DROPSHIP_ALAMO diff --git a/code/modules/hydroponics/hydro_tray.dm b/code/modules/hydroponics/hydro_tray.dm index 218fa586f566..83824bcedaa6 100644 --- a/code/modules/hydroponics/hydro_tray.dm +++ b/code/modules/hydroponics/hydro_tray.dm @@ -225,13 +225,8 @@ var/turf/T = loc // Handle light requirements. - var/area/A = T.loc - if(A) - var/light_available - if(A.lighting_use_dynamic) - light_available = max(0,min(10,T.lighting_lumcount)-5) - else - light_available = 5 + if(T) + var/light_available = T.get_lumcount(0, 10) if(abs(light_available - seed.ideal_light) > seed.light_tolerance) plant_health -= healthmod @@ -427,10 +422,10 @@ // Update bioluminescence. if(seed) if(seed.biolum) - SetLuminosity(round(seed.potency/10)) + set_light(round(seed.potency/10)) return - SetLuminosity(0) + set_light(0) return // If a weed growth is sufficient, this proc is called. @@ -674,10 +669,7 @@ var/area/A = T.loc var/light_available if(A) - if(A.lighting_use_dynamic) - light_available = max(0,min(10,T.lighting_lumcount)-5) - else - light_available = 5 + light_available = max(0,min(10,T.dynamic_lumcount)-5) info += "The tray's sensor suite is reporting a light level of [light_available] lumens.\n" return info diff --git a/code/modules/hydroponics/seed_datums.dm b/code/modules/hydroponics/seed_datums.dm index 90e1b7ac5351..2aff95eb1fcc 100644 --- a/code/modules/hydroponics/seed_datums.dm +++ b/code/modules/hydroponics/seed_datums.dm @@ -608,7 +608,7 @@ var/global/list/gene_tag_masks = list() // Gene obfuscation for delicious tria product.desc += " On second thought, something about this one looks strange." if(biolum) - product.SetLuminosity(biolum) + product.set_light(biolum) //Handle spawning in living, mobile products (like dionaea). if(istype(product,/mob/living)) diff --git a/code/modules/hydroponics/vines.dm b/code/modules/hydroponics/vines.dm index 3745848ea254..14091a1d29bb 100644 --- a/code/modules/hydroponics/vines.dm +++ b/code/modules/hydroponics/vines.dm @@ -168,10 +168,10 @@ // Update bioluminescence. if(seed.biolum) - SetLuminosity(1+round(seed.potency/10)) + set_light(1+round(seed.potency/10)) return else - SetLuminosity(0) + set_light(0) // Update flower/product overlay. overlays.Cut() @@ -252,11 +252,7 @@ var/area/A = T.loc if(A) - var/light_available - if(A.lighting_use_dynamic) - light_available = max(0,min(10,T.lighting_lumcount)-5) - else - light_available = 5 + var/light_available = max(0,min(10,T.dynamic_lumcount)-5) if(abs(light_available - seed.ideal_light) > seed.light_tolerance) die() return diff --git a/code/modules/lighting/_LIGHTING_README.MD b/code/modules/lighting/_LIGHTING_README.MD new file mode 100644 index 000000000000..a7e7166e6b8d --- /dev/null +++ b/code/modules/lighting/_LIGHTING_README.MD @@ -0,0 +1,75 @@ +# The Lighting Systems +## Introduction + +Hello reader, and welcome to the coders guide to lighting. TGMC uses three different lighting systems: Static Lighting, Movable Lighting and Hybrid Lighting +These all have their pros and cons, and are explained later in this file. +For now we will look at the frameworks we have pertaining to lighting. + +```dm +//Our vars: +//The "intensity" of our light to determine how much it actually lights up +var/light_power +// The range of our light, aka how many turfs are actually lit up +var/light_range +//the color of our light +var/light_color +///whether the light is actually on or not, use /atom/proc/turn_on() to set this +var/light_on +``` + +Additionally, we have SSlighting, the lighting subsystem which handles lighting updates for Static and Hybrid lighting. +This subsystems processes enqueued lighting object, corner and source updates, as well as taking enqueued hybrid lighting updates. +You shouldnt really be touching this as it primarily just stops too many updates from happening at once. + +## The Lighting systems +As mentioned previously,lighting is split into three seperate systems who's functionality, benefits and downsides will be discussed below + +Seperate from these systems we also have a system to update the base lighting of an area, we do this using "Base lighting" + +```dm +/area/proc/set_base_lighting(new_base_lighting_color = -1, new_alpha = -1) +``` +Use this to set areas as required to luminosity. This is expensive-ish to apply/update but is very cheap to maintain. It also enables area specific light intensity and color changes. + +### Static Lighting +Static lighting consists of a single, static_lighting_source light source which gets all turfs in view, then tells their /datum/static_lighting_objects to update themselves. These lighting objects manage two things: lighting corners, and an underlay. The lighting corners hold data for the edges of turfs next to darkness to allow a smooth transition from dark to light, and the actual lighting is done using an underlay which is layered over the darkness layer in order to create light. Color is changed using a color matrix. +The advantage of this system, is that it is cheap, as long as it does not need to actively update opacity changes or a moving light target. +This system can also be used for as large lights as you want. +The disadvantage however is that updating this type of light, such as when it moves is relatively expensive, and colors are not always the prettiest. Additionally, lighting corners are known to be a large source of RAM usage and thus you should only load lighting objects in areas hat it is needed using /area/var/static_lighting. +Thus this should be your go to choice for large, frequent, immobile lights. + +To update lights using this system use +```dm +/atom/proc/set_light(l_range, l_power, l_color, mask_type) +``` +Note that the use of mask_type only is applicable to Hybrid lights. + +### Movable lighting +Movable lighting is extremely simple and cheap as it requires no updates. This is done by replacing a large amount of updating objects with one single, large vis_contents overlay, which we apply and manage through a component (/datum/component/overlay_lighting). This means that it will move smoothly when the owner moves and requires no updating, but also means that rendering issues might occur, where the overlay will seemingly "pop in" to existence as it suddenly renders when someone walks around a corner or into the 1/2-tile render buffer around the edges of the viewport. +Thus this should be your go to ideal cheap light for small and mobile lights (NOT turfs or anchored objects!). This light also typically has more saturated colors than static lighting. + +Note that this lighting type utilises special update procs from the other two lighting types, specifically +```dm +//update light variables +/atom/movable/proc/set_light_range_power_color(range, power, color) + set_light_range(range) + set_light_power(power) + set_light_color(color) + +//turn the light on and off without changing any variables +/atom/proc/set_light_on(new_value) +``` + +### Hybrid lighting +Hybrid lighting is, as the name implies, a hybrid of the two above systems. It still needs to update when the owner moves, or something in view changes like static lighting does, but uses overlays to hide areas using shadows. As a result, this has similar if not better performance to Static lighting, but has a higher drain on player GPU and thus you should ideally avoid lagging players that play on terrible computers too much. This means that you should use this lighting in decently sized lights that act as centerpieces for a scene (i.e. a fire, supermatter, etc.) since it combines the best of static and movable lighting at a clientside performance cost. +As a rule of thumb most items will be fine using this except for light fixtures, as lag mostly seems to crop up from multiple large lighting sources. +Using lights for turf based fires and large floodlights is thus fine, but be careful with frquesnt use. +It functions by fetching all nearby blockers, then calculating triangles behind these blocked areas which it then masks with overlays. +These overlays then render as an alpha mask blocking the light from appearing. +This system also supports non-round lights, such as light cones, rotating lights, and shimmering lights through the use of +```dm +var/mask_type +``` +which determines which type of icon we are going to use as the base when drawing this lights (/atom/movable/lighting_mask/flicker for shimmering lights as an example). + +Actual updates however are handled through the same procs as Static lighting, and the mask_type argument on set_light() allows you to change the mask type that is being used on the fly. diff --git a/code/modules/lighting/emissive_blocker.dm b/code/modules/lighting/emissive_blocker.dm new file mode 100644 index 000000000000..ca9b5c7ff900 --- /dev/null +++ b/code/modules/lighting/emissive_blocker.dm @@ -0,0 +1,37 @@ +/** + * Internal atom that copies an appearance on to the blocker plane + * + * Copies an appearance vis render_target and render_source on to the emissive blocking plane. + * This means that the atom in question will block any emissive sprites. + * This should only be used internally. If you are directly creating more of these, you're + * almost guaranteed to be doing something wrong. + */ +/atom/movable/emissive_blocker + name = "emissive blocker" + plane = EMISSIVE_PLANE + layer = FLOAT_LAYER + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + //Why? + //render_targets copy the transform of the target as well, but vis_contents also applies the transform + //to what's in it. Applying RESET_TRANSFORM here makes vis_contents not apply the transform. + //Since only render_target handles transform we don't get any applied transform "stacking" + appearance_flags = EMISSIVE_APPEARANCE_FLAGS + +/atom/movable/emissive_blocker/Initialize(mapload, source) + . = ..() + verbs.Cut() //Cargo culting from lighting object, this maybe affects memory usage? + + render_source = source + color = GLOB.em_block_color + + +/atom/movable/emissive_blocker/ex_act(severity) + return FALSE + +/atom/movable/emissive_blocker/onTransitZ() + return + +//Prevents people from moving these after creation, because they shouldn't be. +/atom/movable/emissive_blocker/forceMove(atom/destination, no_tp=FALSE, harderforce = FALSE) + if(harderforce) + return ..() diff --git a/code/modules/lighting/lighting_area.dm b/code/modules/lighting/lighting_area.dm new file mode 100644 index 000000000000..2b6a1409f38a --- /dev/null +++ b/code/modules/lighting/lighting_area.dm @@ -0,0 +1,59 @@ +/area + luminosity = 1 + ///The mutable appearance we underlay to show light + var/mutable_appearance/lighting_effect = null + ///Whether this area has a currently active base lighting, bool + var/area_has_base_lighting = FALSE + ///alpha 0-255 of lighting_effect and thus baselighting intensity + var/base_lighting_alpha = 0 + ///The colour of the light acting on this area + var/base_lighting_color = COLOR_WHITE + +/area/proc/set_base_lighting(new_base_lighting_color = -1, new_alpha = -1) + if(base_lighting_alpha == new_alpha && base_lighting_color == new_base_lighting_color) + return FALSE + if(new_alpha != -1) + base_lighting_alpha = new_alpha + if(new_base_lighting_color != -1) + base_lighting_color = new_base_lighting_color + update_base_lighting() + return TRUE + +/area/vv_edit_var(var_name, var_value) + switch(var_name) + if("base_lighting_color") + set_base_lighting(new_base_lighting_color = var_value) + return TRUE + if("base_lighting_alpha") + set_base_lighting(new_alpha = var_value) + return TRUE + return ..() + +/area/proc/update_base_lighting() + if(!area_has_base_lighting && (!base_lighting_alpha || !base_lighting_color)) + return + + if(!area_has_base_lighting) + add_base_lighting() + return + remove_base_lighting() + if(base_lighting_alpha && base_lighting_color) + add_base_lighting() + +/area/proc/remove_base_lighting() + for(var/turf/T in src) + T.overlays -= lighting_effect + QDEL_NULL(lighting_effect) + area_has_base_lighting = FALSE + +/area/proc/add_base_lighting() + lighting_effect = mutable_appearance('icons/effects/alphacolors.dmi', "white") + lighting_effect.plane = LIGHTING_PLANE + lighting_effect.layer = LIGHTING_PRIMARY_LAYER + lighting_effect.blend_mode = BLEND_ADD + lighting_effect.alpha = base_lighting_alpha + lighting_effect.color = base_lighting_color + for(var/turf/T in src) + T.overlays += lighting_effect + T.luminosity = 1 + area_has_base_lighting = TRUE diff --git a/code/modules/lighting/lighting_atom.dm b/code/modules/lighting/lighting_atom.dm new file mode 100644 index 000000000000..2abe8c598032 --- /dev/null +++ b/code/modules/lighting/lighting_atom.dm @@ -0,0 +1,178 @@ + +// The proc you should always use to set the light of this atom. +// Nonesensical value for l_color default, so we can detect if it gets set to null. +#define NONSENSICAL_VALUE -99999 +/atom/proc/set_light(l_range, l_power, l_color = NONSENSICAL_VALUE, mask_type = null) + if(l_range > 0 && l_range < MINIMUM_USEFUL_LIGHT_RANGE) + l_range = MINIMUM_USEFUL_LIGHT_RANGE //Brings the range up to 1.4, which is just barely brighter than the soft lighting that surrounds players. + + if(l_power != null) + light_power = l_power + + if(l_range != null) + light_range = l_range + light_on = (light_range>0) ? TRUE : FALSE + + if(l_color != NONSENSICAL_VALUE) + light_color = l_color + + if(mask_type != null) + light_mask_type = mask_type + + SEND_SIGNAL(src, COMSIG_ATOM_SET_LIGHT, l_range, l_power, l_color) + + update_light() + +/atom/proc/fade_light(new_colour, time) + light_color = new_colour + if(light?.our_mask) + animate(light.our_mask, color = new_colour, time = time) + +/// Will update the light (duh).Creates or destroys it if needed, makes it update values, makes sure it's got the correct source turf... +/atom/proc/update_light() + set waitfor = FALSE + + if(QDELETED(src)) + return + if(light_system == STATIC_LIGHT) + static_update_light() + return + + if((!light_power || !light_range) && light) // We won't emit light anyways, destroy the light source. + QDEL_NULL(light) + return + if(light && light_mask_type && (light_mask_type != light.mask_type)) + QDEL_NULL(light) + if(!light) // Update the light or create it if it does not exist. + light = new /datum/dynamic_light_source(src, light_mask_type) + return + light.set_light(light_range, light_power, light_color) + light.update_position() + + +/** + * Updates the atom's opacity value. + * + * This exists to act as a hook for associated behavior. + * It notifies (potentially) affected light sources so they can update (if needed). + */ +/atom/proc/set_opacity(new_opacity) + if(new_opacity == opacity) + return + SEND_SIGNAL(src, COMSIG_ATOM_SET_OPACITY, new_opacity) + . = opacity + + opacity = new_opacity + +/atom/movable/set_opacity(new_opacity) + . = ..() + if(isnull(.) || !isturf(loc)) + return + + if(opacity) + AddElement(/datum/element/light_blocking) + else + RemoveElement(/datum/element/light_blocking) + + +/turf/set_opacity(new_opacity) + . = ..() + if(isnull(.)) + return + recalculate_directional_opacity() + +/atom/vv_edit_var(var_name, var_value) + switch(var_name) + if("light_range") + if(light_system != MOVABLE_LIGHT) + set_light(l_range = var_value) + else + set_light_range(var_value) + datum_flags |= DF_VAR_EDITED + return TRUE + + if("light_power") + if(light_system != MOVABLE_LIGHT) + set_light(l_power = var_value) + else + set_light_power(var_value) + datum_flags |= DF_VAR_EDITED + return TRUE + + if("light_color") + if(light_system != MOVABLE_LIGHT) + set_light(l_color = var_value) + else + set_light_color(var_value) + datum_flags |= DF_VAR_EDITED + return TRUE + return ..() + + +/atom/proc/flash_lighting_fx( + _range = FLASH_LIGHT_RANGE, + _power = FLASH_LIGHT_POWER, + _color = LIGHT_COLOR_WHITE, + _duration = FLASH_LIGHT_DURATION, + _reset_lighting = TRUE, + _flash_times = 1) + new /obj/effect/light_flash(get_turf(src), _range, _power, _color, _duration, _flash_times) + + +/obj/effect/light_flash/Initialize(mapload, _range = FLASH_LIGHT_RANGE, _power = FLASH_LIGHT_POWER, _color = LIGHT_COLOR_WHITE, _duration = FLASH_LIGHT_DURATION, _flash_times = 1) + light_range = _range + light_power = _power + light_color = _color + . = ..() + do_flashes(_flash_times, _duration) + +/obj/effect/light_flash/proc/do_flashes(_flash_times, _duration) + set waitfor = FALSE + for(var/i in 1 to _flash_times) + //Something bad happened + if(!(light?.our_mask)) + break + light.our_mask.alpha = 255 + animate(light.our_mask, time = _duration, easing = SINE_EASING, alpha = 0, flags = ANIMATION_END_NOW) + sleep(_duration) //this is extremely short so it's ok to sleep + qdel(src) + +/atom/proc/set_light_range(new_range) + if(new_range == light_range) + return + SEND_SIGNAL(src, COMSIG_ATOM_SET_LIGHT_RANGE, new_range) + . = light_range + light_range = new_range + + +/atom/proc/set_light_power(new_power) + if(new_power == light_power) + return + SEND_SIGNAL(src, COMSIG_ATOM_SET_LIGHT_POWER, new_power) + . = light_power + light_power = new_power + + +/atom/proc/set_light_color(new_color) + if(new_color == light_color) + return + SEND_SIGNAL(src, COMSIG_ATOM_SET_LIGHT_COLOR, new_color) + . = light_color + light_color = new_color + + +/atom/proc/set_light_on(new_value) + if(new_value == light_on) + return + SEND_SIGNAL(src, COMSIG_ATOM_SET_LIGHT_ON, new_value) + . = light_on + light_on = new_value + + +/// Setter for the light flags of this atom. +/atom/proc/set_light_flags(new_value) + if(new_value == light_flags) + return + SEND_SIGNAL(src, COMSIG_ATOM_SET_LIGHT_FLAGS, new_value) + . = light_flags + light_flags = new_value diff --git a/code/modules/lighting/lighting_mask/dynamic_lighting_source.dm b/code/modules/lighting/lighting_mask/dynamic_lighting_source.dm new file mode 100644 index 000000000000..c0bf02daae48 --- /dev/null +++ b/code/modules/lighting/lighting_mask/dynamic_lighting_source.dm @@ -0,0 +1,103 @@ +// This is where the fun begins. +// These are the main datums that emit light. + +/datum/dynamic_light_source + ///source atom that we belong to + var/atom/source_atom + ///The atom that the source atom is contained inside + var/atom/movable/contained_atom + ///our last loc + var/atom/cached_loc + //the turf where cached loc was + var/turf/source_turf + ///the turf the contained atom appears to be covering + var/turf/pixel_turf + /// Intensity of the emitter light. + var/light_power = 0 + /// The range of the emitted light. + var/light_range = 0 + /// The colour of the light, string, decomposed by PARSE_LIGHT_COLOR() + var/light_color = NONSENSICAL_VALUE + + /// Whether we have applied our light yet or not. + var/applied = FALSE + + ///typepath for the mask type we are using + var/mask_type + ///reference to the mask holder effect + var/obj/effect/lighting_mask_holder/mask_holder + ///reference to the mask contained within the mask_holder objects vis_contents + var/atom/movable/lighting_mask/our_mask + +/datum/dynamic_light_source/New(atom/movable/owner, mask_type = /atom/movable/lighting_mask) + source_atom = owner // Set our new owner. + LAZYADD(source_atom.hybrid_light_sources, src) + + //Find the atom that contains us + find_containing_atom() + + source_turf = get_turf(source_atom) + + src.mask_type = mask_type + mask_holder = new(source_turf) + our_mask = new mask_type + mask_holder.assign_mask(our_mask) + our_mask.attached_atom = owner + + //Set light vars + set_light(owner.light_range, owner.light_power, owner.light_color) + + //Calculate shadows + our_mask.queue_mask_update() + + //Set direction + our_mask.rotate_mask_on_holder_turn(contained_atom.dir) + RegisterSignal(our_mask, COMSIG_ATOM_DIR_CHANGE, TYPE_PROC_REF(/atom/movable/lighting_mask, rotate_mask_on_holder_turn)) + +/datum/dynamic_light_source/Destroy(force) + //Remove references to ourself. + LAZYREMOVE(source_atom?.hybrid_light_sources, src) + LAZYREMOVE(contained_atom?.hybrid_light_sources, src) + QDEL_NULL(mask_holder) + our_mask = null//deletion handled on holder + return ..() + +///Updates containing atom +/datum/dynamic_light_source/proc/find_containing_atom() + //Remove ourselves from the old containing atoms light sources + if(contained_atom && contained_atom != source_atom) + LAZYREMOVE(contained_atom.hybrid_light_sources, src) + //Find our new container + if(isturf(source_atom) || isarea(source_atom)) + contained_atom = source_atom + return + contained_atom = source_atom.loc + for(var/sanity in 1 to 20) + if(!contained_atom) + //Welcome to nullspace my friend. + contained_atom = source_atom + return + if(isturf(contained_atom.loc)) + break + contained_atom = contained_atom.loc + //Add ourselves to their light sources + if(contained_atom != source_atom) + LAZYADD(contained_atom.hybrid_light_sources, src) + +///Update light if changed. +/datum/dynamic_light_source/proc/set_light(l_range, l_power, l_color = NONSENSICAL_VALUE) + if(!our_mask) + return + if(l_range && l_range != light_range) + light_range = l_range + our_mask.set_radius(l_range) + if(l_power && l_power != light_power) + light_power = l_power + our_mask.set_intensity(l_power) + if(l_color != NONSENSICAL_VALUE && l_color != light_color) + light_color = l_color + our_mask.set_color(l_color) + +/datum/dynamic_light_source/proc/update_position() + mask_holder.forceMove(get_turf(source_atom)) + find_containing_atom() diff --git a/code/modules/lighting/lighting_mask/lighting_mask.dm b/code/modules/lighting/lighting_mask/lighting_mask.dm new file mode 100644 index 000000000000..bf824033adfb --- /dev/null +++ b/code/modules/lighting/lighting_mask/lighting_mask.dm @@ -0,0 +1,153 @@ +///Lighting mask sprite radius in tiles +#define LIGHTING_MASK_RADIUS 4 +///Lighting mask sprite diameter in pixels +#define LIGHTING_MASK_SPRITE_SIZE LIGHTING_MASK_RADIUS * 64 + +/atom/movable/lighting_mask + name = "" + icon = LIGHTING_ICON_BIG + icon_state = "light_big" + + anchored = TRUE + plane = LIGHTING_PLANE + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + layer = LIGHTING_SECONDARY_LAYER + invisibility = INVISIBILITY_LIGHTING + blend_mode = BLEND_ADD + appearance_flags = KEEP_TOGETHER|RESET_TRANSFORM + + ///The current angle the item is pointing at + var/current_angle = 0 + + ///The radius of illumination of the mask + var/radius = 0 + + ///The atom that we are attached to, does not need hard del protection as we are deleted with it + var/atom/attached_atom + + ///Reference to the holder /obj/effect + var/obj/effect/lighting_mask_holder/mask_holder + + ///Prevents us from registering for update twice before SSlighting init + var/awaiting_update = FALSE + ///Set to TRUE if you want the light to rotate with the owner + var/is_directional = FALSE + +/atom/movable/lighting_mask/Initialize(mapload, ...) + . = ..() + add_filter("pixel_smoother", 3, gauss_blur_filter(2)) + add_filter("shadow_alpha_masking", 4, alpha_mask_filter(render_source = SHADOW_RENDER_TARGET, flags = MASK_INVERSE)) + +/atom/movable/lighting_mask/Destroy() + mask_holder = null + attached_atom = null + return ..() + +///Sets the radius of the mask, and updates everything that needs to be updated +/atom/movable/lighting_mask/proc/set_radius(new_radius, transform_time = 0) + //Update our matrix + var/matrix/new_size_matrix = get_matrix(new_radius) + apply_matrix(new_size_matrix, transform_time) + radius = new_radius + //then recalculate and redraw + queue_mask_update() + +///if you want the matrix to grow or shrink, you can do that using this proc when applyng it +/atom/movable/lighting_mask/proc/apply_matrix(matrix/to_apply, transform_time = 0) + if(transform_time) + animate(src, transform = to_apply, time = transform_time) + else + transform = to_apply + +///Creates a matrix for the lighting mak to use +/atom/movable/lighting_mask/proc/get_matrix(radius = 1) + var/matrix/new_size_matrix = new() + //Scale + // - Scale to the appropriate radius + new_size_matrix.Scale(radius / LIGHTING_MASK_RADIUS) + //Translate + // - Center the overlay image + // - Ok so apparently translate is affected by the scale we already did huh. + // ^ Future me here, its because it works as translate then scale since its backwards. + // ^ ^ Future future me here, it totally shouldnt since the translation component of a matrix is independant to the scale component. + new_size_matrix.Translate(-128 + 16) + //Adjust for pixel offsets + var/invert_offsets = attached_atom.dir & (NORTH | EAST) + var/left_or_right = attached_atom.dir & (EAST | WEST) + var/offset_x = (left_or_right ? attached_atom.light_pixel_y : attached_atom.light_pixel_x) * (invert_offsets ? -1 : 1) + var/offset_y = (left_or_right ? attached_atom.light_pixel_x : attached_atom.light_pixel_y) * (invert_offsets ? -1 : 1) + new_size_matrix.Translate(offset_x, offset_y) + if(is_directional) + //Rotate + // - Rotate (Directional lights) + new_size_matrix.Turn(current_angle) + return new_size_matrix + +///Rotates the light source to angle degrees. +/atom/movable/lighting_mask/proc/rotate(angle = 0) + //Converting our transform is pretty simple. + var/matrix/rotated_matrix = matrix() + rotated_matrix.Turn(angle - current_angle) + rotated_matrix *= transform + //Overlays cannot be edited while applied, meaning their transform cannot be changed. + //Disconnect the shadows from the overlay, apply the transform and then reapply them as an overlay. + //Oh also since the matrix is really weird standard rotation matrices wont work here. + overlays.Cut() + //Disconnect from parent matrix, become a global position + for(var/mutable_appearance/shadow as anything in shadows) //Mutable appearances are children of icon + shadow.transform *= transform + shadow.transform /= rotated_matrix + //Apply our matrix + transform = rotated_matrix + overlays += shadows + + //Now we are facing this direction + current_angle = angle + +///Setter proc for colors +/atom/movable/lighting_mask/proc/set_color(colour = "#ffffff") + color = colour + +///Setter proc for the intensity of the mask +/atom/movable/lighting_mask/proc/set_intensity(intensity = 1) + if(intensity >= 0) + alpha = ALPHA_TO_INTENSITY(intensity) + blend_mode = BLEND_ADD + else + alpha = ALPHA_TO_INTENSITY(-intensity) + blend_mode = BLEND_SUBTRACT + +///The holder atom turned, spins the mask if it's needed +/atom/movable/lighting_mask/proc/rotate_mask_on_holder_turn(new_direction) + SIGNAL_HANDLER + rotate(dir2angle(new_direction) - 180) + +///Flickering lighting mask +/atom/movable/lighting_mask/flicker + icon_state = "light_flicker" + +///Conical Light mask +/atom/movable/lighting_mask/conical + icon_state = "light_conical" + is_directional = TRUE + +///Rotating Light mask +/atom/movable/lighting_mask/rotating + icon_state = "light_rotating-1" + +/atom/movable/lighting_mask/rotating/Initialize(mapload, ...) + . = ..() + icon_state = "light_rotating-[rand(1, 3)]" + +///rotating light mask, but only pointing in one direction +/atom/movable/lighting_mask/rotating_conical + icon_state = "light_conical_rotating" + +/atom/movable/lighting_mask/ex_act(severity, target) + return + +/atom/movable/lighting_mask/fire_act(exposed_temperature, exposed_volume) + return + +#undef LIGHTING_MASK_SPRITE_SIZE +#undef LIGHTING_MASK_RADIUS diff --git a/code/modules/lighting/lighting_mask/lighting_mask_holder.dm b/code/modules/lighting/lighting_mask/lighting_mask_holder.dm new file mode 100644 index 000000000000..750a16fa1bfb --- /dev/null +++ b/code/modules/lighting/lighting_mask/lighting_mask_holder.dm @@ -0,0 +1,22 @@ +///Holder for lighting mask, this is done for ensuing correct render as a viscontents +/obj/effect/lighting_mask_holder + name = "" + anchored = TRUE + appearance_flags = NONE //Removes TILE_BOUND meaning that the lighting mask will be visible even if the source turf is not. + glide_size = INFINITY //prevent shadow jitter + ///The movable mask this holder is holding in its vis contents + var/atom/movable/lighting_mask/held_mask + +/obj/effect/lighting_mask_holder/proc/assign_mask(atom/movable/lighting_mask/mask) + vis_contents += mask + held_mask = mask + mask.mask_holder = src + +/obj/effect/lighting_mask_holder/Destroy(force) + vis_contents -= held_mask + QDEL_NULL(held_mask) + return ..() + +/obj/effect/lighting_mask_holder/Moved(atom/OldLoc, Dir) + . = ..() + held_mask?.queue_mask_update()//held mask can be null when it is deleted diff --git a/code/modules/lighting/lighting_mask/shadow_calculator.dm b/code/modules/lighting/lighting_mask/shadow_calculator.dm new file mode 100644 index 000000000000..42f98b47e789 --- /dev/null +++ b/code/modules/lighting/lighting_mask/shadow_calculator.dm @@ -0,0 +1,686 @@ +//Lighting texture scales in world units (divide by 32) +//256 = 8,4,2 +//1024 = 32,16,8 +#define LIGHTING_SHADOW_TEX_SIZE 8 + +///Eyeball number for radius based offsets do not touch +#define RADIUS_BASED_OFFSET 3.5 + +///Inserts a coord list into a grouped list +#define COORD_LIST_ADD(listtoadd, x, y) \ + if(islist(listtoadd["[x]"])) { \ + var/list/_L = listtoadd["[x]"]; \ + BINARY_INSERT_NUM(y, _L); \ + } else { \ + listtoadd["[x]"] = list(y);\ + } + +#ifdef SHADOW_DEBUG +///Color coded atom debug, note will break when theres planetside lgihting +#define DEBUG_HIGHLIGHT(x, y, colour) \ + do { \ + var/turf/T = locate(x, y, 3); \ + if(T) { \ + T.color = colour; \ + }\ + } while (FALSE) + +//For debugging use when we want to know if a turf is being affected multiple times +//#define DEBUG_HIGHLIGHT(x, y, colour) do{var/turf/T=locate(x,y,2);if(T){switch(T.color){if("#ff0000"){T.color = "#00ff00"}if("#00ff00"){T.color="#0000ff"}else{T.color="#ff0000"}}}}while(0) +#define DO_SOMETHING_IF_DEBUGGING_SHADOWS(something) something +#else +#define DEBUG_HIGHLIGHT(x, y, colour) +#define DO_SOMETHING_IF_DEBUGGING_SHADOWS(something) +#endif + +/atom/movable/lighting_mask + ///Turfs that are being affected by this mask, this is for the sake of luminosity + var/list/turf/affecting_turfs + ///list of mutable appearance shadows + var/list/mutable_appearance/shadows + var/times_calculated = 0 + + //Please dont change these + var/calculated_position_x + var/calculated_position_y + +/atom/movable/lighting_mask/Destroy() + //Make sure we werent destroyed in init + SSlighting.mask_queue -= src + //Remove from affecting turfs + if(affecting_turfs) + for(var/turf/thing as anything in affecting_turfs) + var/area/A = thing.loc + LAZYREMOVE(thing.hybrid_lights_affecting, src) + if(!A.base_lighting_alpha) + thing.luminosity -= 1 + affecting_turfs = null + //Cut the shadows. Since they are overlays they will be deleted when cut from overlays. + LAZYCLEARLIST(shadows) + return ..() + +/atom/movable/lighting_mask/proc/link_turf_to_light(turf/T) + LAZYOR(affecting_turfs, T) + LAZYOR(T.hybrid_lights_affecting, src) + +/atom/movable/lighting_mask/proc/unlink_turf_from_light(turf/T) + LAZYREMOVE(affecting_turfs, T) + LAZYREMOVE(T.hybrid_lights_affecting, src) + +///Enqueues the mask in the queue properly +/atom/movable/lighting_mask/proc/queue_mask_update() + SSlighting.mask_queue |= src + awaiting_update = TRUE + +/** + * Returns a list of matrices corresponding to the matrices that should be applied to triangles of + * coordinates (0,0),(1,0),(0,1) to create a triangcalculate_shadows_matricesle that respresents the shadows + * takes in the old turf to smoothly animate shadow movement + */ +/atom/movable/lighting_mask/proc/calculate_lighting_shadows() + //Check to make sure lighting is actually started + //If not count the amount of duplicate requests created. + if(!SSlighting.started) + if(awaiting_update) + SSlighting.duplicate_shadow_updates_in_init++ + return + queue_mask_update() + return + awaiting_update = FALSE + //we moved to nullspace meanwhile dont bother + if(!attached_atom.loc) + return + + //Incremement the global counter for shadow calculations + SSlighting.total_shadow_calculations ++ + + //Ceiling the range since we need it in integer form + var/range = CEILING(radius, 1) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(var/timer = TICK_USAGE) + + //Work out our position + //Calculate shadow origin offset + var/invert_offsets = attached_atom.dir & (NORTH | EAST) + var/left_or_right = attached_atom.dir & (EAST | WEST) + var/offset_x = (left_or_right ? attached_atom.light_pixel_y : attached_atom.light_pixel_x) * (invert_offsets ? -1 : 1) + var/offset_y = (left_or_right ? attached_atom.light_pixel_x : attached_atom.light_pixel_y) * (invert_offsets ? -1 : 1) + + //Get the origin points + var/turf/our_turf = get_turf(attached_atom) //The mask is in nullspace, so we need the source turf of the container + + //Account for pixel shifting and light offset + calculated_position_x = our_turf.x + ((offset_x) / world.icon_size) + calculated_position_y = our_turf.y + ((offset_y) / world.icon_size) + + //Remove the old shadows + overlays.Cut() + + + //Reset the list + if(islist(affecting_turfs)) + for(var/turf/T as anything in affecting_turfs) + LAZYREMOVE(T?.hybrid_lights_affecting, src) + //The turf is no longer affected by any lights, make it non-luminous. + var/area/A = T.loc + if(T?.luminosity && !A.base_lighting_alpha) + T.luminosity -= 1 + + //Clear the list + LAZYCLEARLIST(affecting_turfs) + LAZYCLEARLIST(shadows) + + //Optimise grouping by storing as + // Key : x (AS A STRING BECAUSE BYOND DOESNT ALLOW FOR INT KEY DICTIONARIES) + // Value: List(y values) + var/list/opaque_atoms_in_view = list() + + //Rebuild the list + var/is_on_closed_turf = istype(our_turf, /turf/closed) + for(var/turf/thing in dview(range, get_turf(attached_atom))) //most expensive part of shadow code is this dview and group_atoms + link_turf_to_light(thing) + //The turf is now affected by our light, make it luminous + thing.luminosity += 1 + //Dont consider shadows about our turf. + if(!is_on_closed_turf) + if(thing == our_turf) + continue + if(thing.directional_opacity) + //At this point we no longer care about + //the atom itself, only the position values + COORD_LIST_ADD(opaque_atoms_in_view, thing.x, thing.y) + DEBUG_HIGHLIGHT(thing.x, thing.y, "#0000FF") + + //We are too small to consider shadows on, luminsoty has been considered at least. + if(radius < 2) + return + + DO_SOMETHING_IF_DEBUGGING_SHADOWS(log_game("[TICK_USAGE_TO_MS(timer)]ms to process view([range], src).")) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(var/temp_timer = TICK_USAGE) + + //Group atoms together for optimisation + var/list/grouped_atoms = group_atoms(opaque_atoms_in_view) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(log_game("[TICK_USAGE_TO_MS(temp_timer)]ms to process group_atoms")) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(temp_timer = TICK_USAGE) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(var/total_coordgroup_time = 0) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(var/total_cornergroup_time = 0) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(var/triangle_time = 0) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(var/culling_time = 0) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(var/triangle_to_matrix_time = 0) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(var/matrix_division_time = 0) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(var/MA_new_time = 0) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(var/MA_vars_time = 0) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(var/overlays_add_time = 0) + + var/list/overlays_to_add = list() + for(var/group in grouped_atoms) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(temp_timer = TICK_USAGE) + + var/list/coordgroup = calculate_corners_in_group(group) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(total_coordgroup_time += TICK_USAGE_TO_MS(temp_timer)) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(temp_timer = TICK_USAGE) + + //This is where the lines are made + var/list/cornergroup = get_corners_from_coords(coordgroup) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(total_cornergroup_time += TICK_USAGE_TO_MS(temp_timer)) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(temp_timer = TICK_USAGE) + + var/list/culledlinegroup = cull_blocked_in_group(cornergroup, opaque_atoms_in_view) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(culling_time += TICK_USAGE_TO_MS(temp_timer)) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(temp_timer = TICK_USAGE) + + if(!LAZYLEN(culledlinegroup)) + continue + + var/list/triangles = calculate_triangle_vertices(culledlinegroup) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(triangle_time += TICK_USAGE_TO_MS(temp_timer)) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(temp_timer = TICK_USAGE) + + for(var/triangle in triangles) + var/matrix/triangle_matrix = triangle_to_matrix(triangle) + + DO_SOMETHING_IF_DEBUGGING_SHADOWS(triangle_to_matrix_time += TICK_USAGE_TO_MS(temp_timer)) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(temp_timer = TICK_USAGE) + + triangle_matrix /= transform + + DO_SOMETHING_IF_DEBUGGING_SHADOWS(matrix_division_time += TICK_USAGE_TO_MS(temp_timer)) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(temp_timer = TICK_USAGE) + + var/mutable_appearance/shadow = new() + + DO_SOMETHING_IF_DEBUGGING_SHADOWS(MA_new_time += TICK_USAGE_TO_MS(temp_timer)) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(temp_timer = TICK_USAGE) + + shadow.icon = LIGHTING_ICON_BIG + shadow.icon_state = "triangle" + shadow.color = "#000" + shadow.transform = triangle_matrix + shadow.render_target = SHADOW_RENDER_TARGET + shadow.blend_mode = BLEND_OVERLAY + + DO_SOMETHING_IF_DEBUGGING_SHADOWS(MA_vars_time += TICK_USAGE_TO_MS(temp_timer)) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(temp_timer = TICK_USAGE) + + LAZYADD(shadows, shadow) + overlays_to_add += shadow + + DO_SOMETHING_IF_DEBUGGING_SHADOWS(overlays_add_time += TICK_USAGE_TO_MS(temp_timer)) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(temp_timer = TICK_USAGE) + + DO_SOMETHING_IF_DEBUGGING_SHADOWS(var/overlay_apply_time = TICK_USAGE) + + overlays += overlays_to_add //batch appearance generation for free lag(tm) + + DO_SOMETHING_IF_DEBUGGING_SHADOWS(overlay_apply_time = TICK_USAGE_TO_MS(overlay_apply_time)) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(log_game("total_coordgroup_time: [total_coordgroup_time]ms")) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(log_game("total_cornergroup_time: [total_cornergroup_time]ms")) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(log_game("triangle_time calculation: [triangle_time]ms")) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(log_game("triangle_to_matrix_time: [triangle_to_matrix_time]ms")) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(log_game("Culling Time: [culling_time]ms")) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(log_game("matrix_division_time: [matrix_division_time]ms")) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(log_game("MA_new_time: [MA_new_time]ms")) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(log_game("MA_vars_time: [MA_vars_time]ms")) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(log_game("overlays_add_time: [overlays_add_time]ms")) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(log_game("overlay_apply_time: [overlay_apply_time]ms")) + DO_SOMETHING_IF_DEBUGGING_SHADOWS(log_game("[TICK_USAGE_TO_MS(timer)]ms to process total.")) + + +/** + * Converts a triangle into a matrix that can be applied to a standardized triangle + * to make it represent the points. + */ +/atom/movable/lighting_mask/proc/triangle_to_matrix(list/triangle) + //We need the world position raw, if we use the calculated position then the pixel values will cancel. + var/turf/our_turf = get_turf(attached_atom) + var/ourx = our_turf.x + var/oury = our_turf.y + + var/originx = triangle[1][1] - ourx //~Simultaneous Variable: U + var/originy = triangle[1][2] - oury //~Simultaneous Variable: V + //Get points translating the first point to (0, 0) + var/translatedPoint2x = triangle[2][1] - ourx //Simultaneous Variable: W + var/translatedPoint2y = triangle[2][2] - oury //Simultaneous Variable: X + var/translatedPoint3x = triangle[3][1] - ourx //Simultaneous Variable: Y + var/translatedPoint3y = triangle[3][2] - oury //Simultaneous Variable: Z + //message_admins("Point 1: ([originx], [originy])") + //message_admins("Point 2: ([translatedPoint2x], [translatedPoint2y])") + //message_admins("Point 3: ([translatedPoint3x], [translatedPoint3y])") + //Assumption that is incorrect + //Triangle points are + // (-4, -4) + // (-4, 4) + // ( 4, -4) + //Would be much easier if it was (0, 0) instead of (-4, -4) but since we have 6 inputs and 6 unknowns + //we can solve the values of the matrix pretty easilly simultaneously. + //In fact since variables U,W,Y,A,B,C are separate to V,X,Z,D,E,F its easy since its 2 identical tri-variable simultaneous equations. + //By solving the equations simultaneously we get these results: + //a = (y-u)/8 + var/a = (translatedPoint3x - originx) / LIGHTING_SHADOW_TEX_SIZE + //b = (w-u)/ 8 + var/b = (translatedPoint2x - originx) / LIGHTING_SHADOW_TEX_SIZE + //c = (y+w)/2 + var/c = (translatedPoint3x + translatedPoint2x) / 2 + //d = (z-v)/8 + var/d = (translatedPoint3y - originy) / LIGHTING_SHADOW_TEX_SIZE + //e = (x-v)/8 + var/e = (translatedPoint2y - originy) / LIGHTING_SHADOW_TEX_SIZE + //f = (z+x)/2 + var/f = (translatedPoint3y + translatedPoint2y) / 2 + //Matrix time g + //a,b,d and e can be used to define the shape, C and F can be used for translation god matrices are so beautiful + //Completely random offset that I didnt derive, I just trialled and errored for about 4 hours until it randomly worked + //var/radius_based_offset = radius * 3 + RADIUS_BASED_OFFSET <-- for 1024x1024 lights DO NOT USE 1024x1024 SHADOWS UNLESS YOU ARE PLAYING WITH RTX200000 OR SOMETHING + var/radius_based_offset = RADIUS_BASED_OFFSET + var/matrix/M = matrix(a, b, (c * 32) - ((radius_based_offset) * 32), d, e, (f * 32) - ((radius_based_offset) * 32)) + //log_game("[M.a], [M.d], 0") + //log_game("[M.b], [M.e], 0") + //log_game("[M.c], [M.f], 1") + return M + +/** + * Basically takes the 2-4 corners, extends them and then generates triangle coordinates representing shadows + * Input: list(list(list(x, y), list(x, y))) + * Layer 1: Lines + * Layer 2: Vertex + * Layer 3: X/Y value + * OUTPUT: The same thing but with 3 lists embedded rather than 2 because they are triangles not lines now. + */ +/atom/movable/lighting_mask/proc/calculate_triangle_vertices(list/cornergroup) + var/shadow_radius = max(radius + 1, 3) + //Get the origin poin's + var/ourx = calculated_position_x + var/oury = calculated_position_y + //The output + . = list() + //Every line has 2 triangles innit + for(var/list/line as anything in cornergroup) + //Get the corner vertices + var/vertex1 = line[1] + var/vertex2 = line[2] + //Extend them and get end vertices + //Calculate vertex 3 position + var/delta_x = vertex1[1] - ourx + var/delta_y = vertex1[2] - oury + var/vertex3 = extend_line_to_radius(delta_x, delta_y, shadow_radius, ourx, oury) + var/vertex3side = (vertex3[1] - ourx) == -shadow_radius ? WEST : (vertex3[1] - ourx) == shadow_radius ? EAST : (vertex3[2] - oury) == shadow_radius ? NORTH : SOUTH + + //For vertex 4 + delta_x = vertex2[1] - ourx + delta_y = vertex2[2] - oury + var/vertex4 = extend_line_to_radius(delta_x, delta_y, shadow_radius, ourx, oury) + var/vertex4side = (vertex4[1] - ourx) == -shadow_radius ? WEST : (vertex4[1] - ourx) == shadow_radius ? EAST : (vertex4[2] - oury) == shadow_radius ? NORTH : SOUTH + + //If vertex3 is not on the same border as vertex 4 then we need more triangles to fill in the space. + if(vertex3side != vertex4side) + var/eitherNorth = (vertex3side == NORTH || vertex4side == NORTH) + var/eitherEast = (vertex3side == EAST || vertex4side == EAST) + var/eitherSouth = (vertex3side == SOUTH || vertex4side == SOUTH) + var/eitherWest = (vertex3side == WEST || vertex4side == WEST) + if(eitherNorth && eitherEast) + //Add a vertex top right + var/vertex5 = list(shadow_radius + ourx, shadow_radius + oury) + var/triangle3 = list(vertex3, vertex4, vertex5) + . += list(triangle3) + else if(eitherNorth && eitherWest) + //Add a vertex top left + var/vertex5 = list(-shadow_radius + ourx, shadow_radius + oury) + var/triangle3 = list(vertex3, vertex4, vertex5) + . += list(triangle3) + else if(eitherNorth && eitherSouth) //BLOCKER IS A | SHAPE + //If vertex3 is to the right of the center, both vertices are to the right. + if(vertex3[1] > ourx) + //New vertexes are on the right + var/vertex5 = list(ourx + shadow_radius, oury + shadow_radius) + var/vertex6 = list(ourx + shadow_radius, oury - shadow_radius) + //If vertex 4 is greater than 3 then triangles link as 4,5,6 and 3,4,6 + if(vertex4[2] > vertex3[2]) + var/triangle3 = list(vertex3, vertex5, vertex6) + . += list(triangle3) + var/triangle4 = list(vertex3, vertex4, vertex5) + . += list(triangle4) + else + //Vertex 3 is greater than 4, so triangles link as 3,5,6 and 3,4,6 + var/triangle3 = list(vertex3, vertex4, vertex5) + . += list(triangle3) + var/triangle4 = list(vertex4, vertex5, vertex6) + . += list(triangle4) + else + //New vertexes are on the left + var/vertex5 = list(ourx - shadow_radius, oury + shadow_radius) + var/vertex6 = list(ourx - shadow_radius, oury - shadow_radius) + //If vertex 4 is higher than 3 then triangles link as 4,5,6 and 3,4,6 + if(vertex4[2] > vertex3[2]) + var/triangle3 = list(vertex3, vertex5, vertex6) + . += list(triangle3) + var/triangle4 = list(vertex3, vertex4, vertex5) + . += list(triangle4) + else + //Vertex 3 is greater than 4, so triangles link as 3,5,6 and 3,4,6 + var/triangle3 = list(vertex3, vertex4, vertex5) + . += list(triangle3) + var/triangle4 = list(vertex4, vertex5, vertex6) + . += list(triangle4) + else if(eitherEast && eitherSouth) + //Add a vertex bottom right + var/vertex5 = list(shadow_radius + ourx, -shadow_radius + oury) + var/triangle3 = list(vertex3, vertex4, vertex5) + . += list(triangle3) + else if(eitherEast && eitherWest) //BLOCKER IS A --- SHAPE + //If vertex3 is above the center, then pointers are along the top + if(vertex3[2] > oury) + //New vertexes are on the right + var/vertex5 = list(ourx + shadow_radius, oury + shadow_radius) + var/vertex6 = list(ourx - shadow_radius, oury + shadow_radius) + //If vertex 4 is greater than 3 then triangles link as 4,5,6 and 3,4,6 + if(vertex4[1] > vertex3[1]) + var/triangle3 = list(vertex3, vertex5, vertex6) + . += list(triangle3) + var/triangle4 = list(vertex3, vertex4, vertex5) + . += list(triangle4) + else + //Vertex 3 is greater than 4, so triangles link as 3,5,6 and 3,4,6 + var/triangle3 = list(vertex3, vertex4, vertex5) + . += list(triangle3) + var/triangle4 = list(vertex4, vertex5, vertex6) + . += list(triangle4) + else + //New vertexes are on the bottom + var/vertex5 = list(ourx + shadow_radius, oury - shadow_radius) + var/vertex6 = list(ourx - shadow_radius, oury - shadow_radius) + //If vertex 4 is higher than 3 then triangles link as 4,5,6 and 3,4,6 + if(vertex4[1] > vertex3[1]) + var/triangle3 = list(vertex3, vertex4, vertex5) + . += list(triangle3) + var/triangle4 = list(vertex3, vertex5, vertex6) + . += list(triangle4) + else + //Vertex 3 is greater than 4, so triangles link as 3,5,6 and 3,4,6 + var/triangle3 = list(vertex3, vertex4, vertex5) + . += list(triangle3) + var/triangle4 = list(vertex4, vertex5, vertex6) + . += list(triangle4) + else if(eitherSouth && eitherWest) + //Bottom left + var/vertex5 = list(-shadow_radius + ourx, -shadow_radius + oury) + var/triangle3 = list(vertex3, vertex4, vertex5) + . += list(triangle3) + else + //bug + stack_trace("Major error: vertex in a bad position (North: [eitherNorth], East: [eitherEast], South: [eitherSouth], West: [eitherWest])") + + //Generate triangles + var/triangle1 = list(vertex1, vertex2, vertex3) + var/triangle2 = list(vertex2, vertex3, vertex4) + . += list(triangle1) + . += list(triangle2) + +///Takes in the list of lines and sight blockers and returns only the lines that are not blocked +/atom/movable/lighting_mask/proc/cull_blocked_in_group(list/lines, list/sight_blockers) + . = list() + for(var/list/line in lines) + var/vertex1 = line[1] + var/vertex2 = line[2] + var/list/lines_to_add = list() + if(vertex1[1] == vertex2[1]) + //Vertical line. + //Requires a block to the left and right all the way from the bottom to the top + var/left = vertex1[1] - 0.5 + var/right = vertex1[1] + 0.5 + var/bottom = min(vertex1[2], vertex2[2]) + 0.5 + var/top = max(vertex1[2], vertex2[2]) - 0.5 + var/list/current_bottom_vertex = list(vertex1[1], bottom - 0.5) + var/list/current_top_vertex = list(vertex1[1], bottom - 0.5) + for(var/i in bottom to top) + var/list/left_list = sight_blockers["[left]"] + var/isLeftBlocked = left_list?.Find(i) ? TRUE : FALSE + var/list/right_list = sight_blockers["[right]"] + var/isRightBlocked = right_list?.Find(i) ? TRUE : FALSE + if(isLeftBlocked == isRightBlocked) + if(current_bottom_vertex[2] != current_top_vertex[2]) + lines_to_add += list(list(current_bottom_vertex, current_top_vertex)) + current_bottom_vertex = list(vertex1[1], i + 0.5) + current_top_vertex = list(vertex1[1], i + 0.5) + if(current_bottom_vertex[2] != current_top_vertex[2]) + lines_to_add += list(list(current_bottom_vertex, current_top_vertex)) + else + //Horizontal line + //Requires a block above and below for every position from left to right + var/left = min(vertex1[1], vertex2[1]) + 0.5 + var/right = max(vertex1[1], vertex2[1]) - 0.5 + var/top = vertex1[2] + 0.5 + var/bottom = vertex1[2] - 0.5 + var/list/current_left_vertex = list(left - 0.5, vertex1[2]) + var/list/current_right_vertex = list(left - 0.5, vertex1[2]) + for(var/i in left to right) + var/list/check_list = sight_blockers["[i]"] + var/isAboveBlocked = check_list?.Find(top) ? TRUE : FALSE + var/isBelowBlocked = check_list?.Find(bottom) ? TRUE : FALSE + if(isAboveBlocked == isBelowBlocked) + if(current_left_vertex[1] != current_right_vertex[1]) + lines_to_add += list(list(current_left_vertex, current_right_vertex)) + current_left_vertex = list(i + 0.5, vertex1[2]) + current_right_vertex = list(i + 0.5, vertex1[2]) + if(current_left_vertex[1] != current_right_vertex[1]) + lines_to_add += list(list(current_left_vertex, current_right_vertex)) + . += lines_to_add + +/** + * Converts the corners into the 3 (or 2) valid points + * For example if a wall is top right of the source, the bottom left wall corner + * can be removed otherwise the wall itself will be in the shadow. + * Input: list(list(x1, y1), list(x2, y2)) + * Output: list(list(list(x, y), list(x, y))) <-- 2 coordinates that form a line + */ +/atom/movable/lighting_mask/proc/get_corners_from_coords(list/coordgroup) + //Get the raw numbers + var/xlow = coordgroup[1][1] + var/ylow = coordgroup[1][2] + var/xhigh = coordgroup[2][1] + var/yhigh = coordgroup[2][2] + + var/ourx = calculated_position_x + var/oury = calculated_position_y + + //The source is above the point (Bottom Quad) + if(oury > yhigh) + //Bottom Right + if(ourx < xlow) + return list( + list(list(xlow, ylow), list(xhigh, ylow)), + list(list(xhigh, ylow), list(xhigh, yhigh)), + ) + //Bottom Left + else if(ourx > xhigh) + return list( + list(list(xlow, yhigh), list(xlow, ylow)), + list(list(xlow, ylow), list(xhigh, ylow)), + ) + //Bottom Middle + else + return list( + list(list(xlow, yhigh), list(xlow, ylow)), + list(list(xlow, ylow), list(xhigh, ylow)), + list(list(xhigh, ylow), list(xhigh, yhigh)) + ) + //The source is below the point (Top quad) + else if(oury < ylow) + //Top Right + if(ourx < xlow) + return list( + list(list(xlow, yhigh), list(xhigh, yhigh)), + list(list(xhigh, yhigh), list(xhigh, ylow)), + ) + //Top Left + else if(ourx > xhigh) + return list( + list(list(xlow, ylow), list(xlow, yhigh)), + list(list(xlow, yhigh), list(xhigh, yhigh)), + ) + //Top Middle + else + return list( + list(list(xlow, ylow), list(xlow, yhigh)), + list(list(xlow, yhigh), list(xhigh, yhigh)), + list(list(xhigh, yhigh), list(xhigh, ylow)) + ) + //the source is between the group Middle something + else + //Middle Right + if(ourx < xlow) + return list( + list(list(xlow, yhigh), list(xhigh, yhigh)), + list(list(xhigh, yhigh), list(xhigh, ylow)), + list(list(xhigh, ylow), list(xlow, ylow)) + ) + //Middle Left + else if(ourx > xhigh) + return list( + list(list(xhigh, ylow), list(xlow, ylow)), + list(list(xlow, ylow), list(xlow, yhigh)), + list(list(xlow, yhigh), list(xhigh, yhigh)) + ) + //Middle Middle (Why?????????) + else + return list( + list(list(xhigh, ylow), list(xlow, ylow)), + list(list(xlow, ylow), list(xlow, yhigh)), + list(list(xlow, yhigh), list(xhigh, yhigh)), + list(list(xlow, yhigh), list(xhigh, ylow)) + ) + +//Calculates the coordinates of the corner +//Takes a list of blocks and calculates the bottom left corner and the top right corner. +//Input: Group list(list(list(x,y), list(x,y)), list(list(x, y))) +//Output: Coordinates list(list(left, bottom), list(right, top)) +/atom/movable/lighting_mask/proc/calculate_corners_in_group(list/group) + if(length(group) == 0) + CRASH("Calculate_corners_in_group called on a group of length 0. Critical error.") + if(length(group) == 1) + var/x = group[1][1] + var/y = group[1][2] + return list( + list(x - 0.5, y - 0.5), + list(x + 0.5, y + 0.5) + ) + //Group is multiple length, find top left and bottom right + var/first = group[1] + var/second = group[2] + var/group_direction = NORTH + if(first[1] != second[1]) + group_direction = EAST +#ifdef SHADOW_DEBUG6 + else if(first[2] != second[2]) + message_admins("Major error, group is not 1xN or Nx1") +#endif + var/lowest = INFINITY + var/highest = 0 + for(var/vector in group) + var/value_to_comp = vector[1] + if(group_direction == NORTH) + value_to_comp = vector[2] + lowest = min(lowest, value_to_comp) + highest = max(highest, value_to_comp) + //done ez + if(group_direction == NORTH) + return list( + list(first[1] - 0.5, lowest - 0.5), + list(first[1] + 0.5, highest + 0.5) + ) + else + return list( + list(lowest - 0.5, first[2] - 0.5), + list(highest + 0.5, first[2] + 0.5) + ) + +///Groups things into vertical and horizontal lines. +///Input: All atoms ungrouped list(atom1, atom2, atom3) +///Output: List(List(Group), list(group2), ... , list(groupN)) +///Output: List(List(atom1, atom2), list(atom3, atom4...), ... , list(atom)) +/atom/movable/lighting_mask/proc/group_atoms(list/ungrouped_things) + . = list() + //Ungrouped things comes in as + // Key: X + // Value = list(y values) + //This makes sorting vertically easy, however sorting horizontally is harder + //While grouping elements vertically, we can put them into a new list with + // Key: Y + // Value = list(x values) + //to make it much easier. + var/list/horizontal_atoms = list() + //================================================= + //Vertical sorting (X locked) + for(var/x_key in ungrouped_things) + var/list/y_components = ungrouped_things[x_key] + var/pointer = y_components[1] + var/list/group = list(list(text2num(x_key), y_components[1])) + for(var/i in 2 to length(y_components)) + var/next = y_components[i] + if(next != pointer + 1) + if(length(group) == 1) + //Add the element in group to horizontal + COORD_LIST_ADD(horizontal_atoms, pointer, text2num(x_key)) + DEBUG_HIGHLIGHT(text2num(x_key), pointer, "#FFFF00") + else + //Add the group to the output + . += list(group) + group = list() + group += list(list(text2num(x_key), next)) + DEBUG_HIGHLIGHT(text2num(x_key), next, "#FF0000") + pointer = next + if(length(group) == 1) + //Add the element in group to horizontal + COORD_LIST_ADD(horizontal_atoms, pointer, text2num(x_key)) + DEBUG_HIGHLIGHT(text2num(x_key), pointer, "#FFFF00") + else + //Add the group to the output + . += list(group) + //================================================= + //Horizontal sorting (Y locked) + for(var/y_key in horizontal_atoms) + var/list/x_components = horizontal_atoms[y_key] + var/pointer = x_components[1] + var/list/group = list(list(x_components[1], text2num(y_key))) + for(var/i in 2 to length(x_components)) + var/next = x_components[i] + if(next != pointer + 1) + . += list(group) + group = list() + group += list(list(next, text2num(y_key))) + DEBUG_HIGHLIGHT(next, text2num(y_key), "#00FF00") + pointer = next + . += list(group) + +///gets a line from a x and y, to the offset x and y of length radius +/proc/extend_line_to_radius(delta_x, delta_y, radius, offset_x, offset_y) + if(abs(delta_x) < abs(delta_y)) + //top or bottom + var/proportion = radius / abs(delta_y) + return list(delta_x * proportion + offset_x, delta_y * proportion + offset_y) + else + var/proportion = radius / abs(delta_x) + return list(delta_x * proportion + offset_x, delta_y * proportion + offset_y) + +#undef LIGHTING_SHADOW_TEX_SIZE +#undef COORD_LIST_ADD +#undef DEBUG_HIGHLIGHT +#undef DO_SOMETHING_IF_DEBUGGING_SHADOWS diff --git a/code/modules/lighting/lighting_static/static_lighting_area.dm b/code/modules/lighting/lighting_static/static_lighting_area.dm new file mode 100644 index 000000000000..2e95c77e9ecd --- /dev/null +++ b/code/modules/lighting/lighting_static/static_lighting_area.dm @@ -0,0 +1,12 @@ +/area + ///Whether this area allows static lighting and thus loads the lighting objects + var/static_lighting = TRUE + +//Non static lighting areas. +//Any lighting area that wont support static lights. +//These areas will NOT have corners generated. + +/area/space + static_lighting = FALSE + base_lighting_alpha = 255 + diff --git a/code/modules/lighting/lighting_static/static_lighting_atom.dm b/code/modules/lighting/lighting_static/static_lighting_atom.dm new file mode 100644 index 000000000000..0f7be52b351f --- /dev/null +++ b/code/modules/lighting/lighting_static/static_lighting_atom.dm @@ -0,0 +1,25 @@ + +/atom + ///The light source, datum. Dont fuck with this directly + var/tmp/datum/static_light_source/static_light + ///Static light sources currently attached to this atom, this includes ones owned by atoms inside this atom + var/tmp/list/static_light_sources + +///Pretty simple, just updates static lights on this atom +/atom/proc/static_update_light() + set waitfor = FALSE + if (QDELETED(src)) + return + + if (!light_power || !light_range) // We won't emit light anyways, destroy the light source. + QDEL_NULL(static_light) + else + if(!ismovableatom(loc)) // We choose what atom should be the top atom of the light here. + . = src + else + . = loc + + if(static_light) // Update the light or create it if it does not exist. + static_light.update(.) + else + static_light = new/datum/static_light_source(src, .) diff --git a/code/modules/lighting/lighting_static/static_lighting_corner.dm b/code/modules/lighting/lighting_static/static_lighting_corner.dm new file mode 100644 index 000000000000..4f026e05e864 --- /dev/null +++ b/code/modules/lighting/lighting_static/static_lighting_corner.dm @@ -0,0 +1,176 @@ +// Because we can control each corner of every lighting object. +// And corners get shared between multiple turfs (unless you're on the corners of the map, then 1 corner doesn't). +// For the record: these should never ever ever be deleted, even if the turf doesn't have dynamic lighting. + +/datum/static_lighting_corner + var/list/datum/static_light_source/affecting // Light sources affecting us. + + var/x = 0 + var/y = 0 + + var/turf/master_NE + var/turf/master_SE + var/turf/master_SW + var/turf/master_NW + + var/lum_r = 0 + var/lum_g = 0 + var/lum_b = 0 + + //true color values, guaranteed to be between 0 and 1 + var/cache_r = LIGHTING_SOFT_THRESHOLD + var/cache_g = LIGHTING_SOFT_THRESHOLD + var/cache_b = LIGHTING_SOFT_THRESHOLD + + ///the maximum of lum_r, lum_g, and lum_b. if this is > 1 then the three cached color values are divided by this + var/largest_color_luminosity = 0 + + ///whether we are to be added to SSlighting's corners_queue list for an update + var/needs_update = FALSE + +/datum/static_lighting_corner/New(turf/new_turf, diagonal) + . = ..() + save_master(new_turf, turn(diagonal, 180)) + + var/vertical = diagonal & ~(diagonal - 1) // The horizontal directions (4 and 8) are bigger than the vertical ones (1 and 2), so we can reliably say the lsb is the horizontal direction. + var/horizontal = diagonal & ~vertical // Now that we know the horizontal one we can get the vertical one. + + x = new_turf.x + (horizontal == EAST ? 0.5 : -0.5) + y = new_turf.y + (vertical == NORTH ? 0.5 : -0.5) + + // My initial plan was to make this loop through a list of all the dirs (horizontal, vertical, diagonal). + // Issue being that the only way I could think of doing it was very messy, slow and honestly overengineered. + // So we'll have this hardcode instead. + var/turf/new_master_turf + + // Diagonal one is easy. + new_master_turf = get_step(new_turf, diagonal) + if(new_master_turf) // In case we're on the map's border. + save_master(new_master_turf, diagonal) + + // Now the horizontal one. + new_master_turf = get_step(new_turf, horizontal) + if(new_master_turf) // Ditto. + save_master(new_master_turf, ((new_master_turf.x > x) ? EAST : WEST) | ((new_master_turf.y > y) ? NORTH : SOUTH)) // Get the dir based on coordinates. + + // And finally the vertical one. + new_master_turf = get_step(new_turf, vertical) + if (new_master_turf) + save_master(new_master_turf, ((new_master_turf.x > x) ? EAST : WEST) | ((new_master_turf.y > y) ? NORTH : SOUTH)) // Get the dir based on coordinates. + +/datum/static_lighting_corner/proc/save_master(turf/master, dir) + switch (dir) + if (NORTHEAST) + master_NE = master + master.lighting_corner_SW = src + if (SOUTHEAST) + master_SE = master + master.lighting_corner_NW = src + if (SOUTHWEST) + master_SW = master + master.lighting_corner_NE = src + if (NORTHWEST) + master_NW = master + master.lighting_corner_SE = src + +/datum/static_lighting_corner/proc/self_destruct_if_idle() + if (!LAZYLEN(affecting)) + qdel(src, force = TRUE) + +/datum/static_lighting_corner/proc/vis_update() + for (var/datum/static_light_source/light_source as anything in affecting) + light_source.vis_update() + +/datum/static_lighting_corner/proc/full_update() + for (var/datum/static_light_source/light_source as anything in affecting) + light_source.recalc_corner(src) + +// God that was a mess, now to do the rest of the corner code! Hooray! +/datum/static_lighting_corner/proc/update_lumcount(delta_r, delta_g, delta_b) + + if(!(delta_r || delta_g || delta_b)) // 0 is falsey ok + return + + lum_r += delta_r + lum_g += delta_g + lum_b += delta_b + + if(!needs_update) + needs_update = TRUE + SSlighting.corners_queue += src + +/datum/static_lighting_corner/proc/update_objects() + // Cache these values a head of time so 4 individual lighting objects don't all calculate them individually. + var/lum_r = src.lum_r + var/lum_g = src.lum_g + var/lum_b = src.lum_b + var/largest_color_luminosity = max(lum_r, lum_g, lum_b) // Scale it so one of them is the strongest lum, if it is above 1. + . = 1 // factor + if (largest_color_luminosity > 1) + . = 1 / largest_color_luminosity + + #if LIGHTING_SOFT_THRESHOLD != 0 + else if (largest_color_luminosity < LIGHTING_SOFT_THRESHOLD) + . = 0 // 0 means soft lighting. + + cache_r = round(lum_r * ., LIGHTING_ROUND_VALUE) || LIGHTING_SOFT_THRESHOLD + cache_g = round(lum_g * ., LIGHTING_ROUND_VALUE) || LIGHTING_SOFT_THRESHOLD + cache_b = round(lum_b * ., LIGHTING_ROUND_VALUE) || LIGHTING_SOFT_THRESHOLD + #else + cache_r = round(lum_r * ., LIGHTING_ROUND_VALUE) + cache_g = round(lum_g * ., LIGHTING_ROUND_VALUE) + cache_b = round(lum_b * ., LIGHTING_ROUND_VALUE) + #endif + + src.largest_color_luminosity = round(largest_color_luminosity, LIGHTING_ROUND_VALUE) + + var/datum/static_lighting_object/lighting_object = master_NE?.static_lighting_object + if (lighting_object && !lighting_object.needs_update) + lighting_object.needs_update = TRUE + SSlighting.objects_queue += lighting_object + + lighting_object = master_SE?.static_lighting_object + if (lighting_object && !lighting_object.needs_update) + lighting_object.needs_update = TRUE + SSlighting.objects_queue += lighting_object + + lighting_object = master_SW?.static_lighting_object + if (lighting_object && !lighting_object.needs_update) + lighting_object.needs_update = TRUE + SSlighting.objects_queue += lighting_object + + lighting_object = master_NW?.static_lighting_object + if (lighting_object && !lighting_object.needs_update) + lighting_object.needs_update = TRUE + SSlighting.objects_queue += lighting_object + + self_destruct_if_idle() + + +/datum/static_lighting_corner/dummy/New() + return + + +/datum/static_lighting_corner/Destroy(force) + if (!force) + return QDEL_HINT_LETMELIVE + + for(var/datum/static_light_source/light_source as anything in affecting) + LAZYREMOVE(light_source.effect_str, src) + affecting = null + + if(master_NE) + master_NE.lighting_corner_SW = null + master_NE.lighting_corners_initialised = FALSE + if(master_SE) + master_SE.lighting_corner_NW = null + master_SE.lighting_corners_initialised = FALSE + if(master_SW) + master_SW.lighting_corner_NE = null + master_SW.lighting_corners_initialised = FALSE + if(master_NW) + master_NW.lighting_corner_SE = null + master_NW.lighting_corners_initialised = FALSE + if(needs_update) + SSlighting.corners_queue -= src + return ..() diff --git a/code/modules/lighting/lighting_static/static_lighting_object.dm b/code/modules/lighting/lighting_static/static_lighting_object.dm new file mode 100644 index 000000000000..a3e6c5054bee --- /dev/null +++ b/code/modules/lighting/lighting_static/static_lighting_object.dm @@ -0,0 +1,115 @@ +/datum/static_lighting_object + ///the underlay we are currently applying to our turf to apply light + var/mutable_appearance/current_underlay + + ///whether we are already in the SSlighting.objects_queue list + var/needs_update = FALSE + + ///the turf that our light is applied to + var/turf/affected_turf + +/datum/static_lighting_object/New(turf/source) + if(!isturf(source)) + qdel(src, force=TRUE) + stack_trace("a lighting object was assigned to [source], a non turf! ") + return + ..() + + current_underlay = mutable_appearance(LIGHTING_ICON, "transparent", source.z, LIGHTING_PLANE, 255, RESET_COLOR | RESET_ALPHA | RESET_TRANSFORM) + + affected_turf = source + if (affected_turf.static_lighting_object) + qdel(affected_turf.static_lighting_object, force = TRUE) + stack_trace("a lighting object was assigned to a turf that already had a lighting object!") + + affected_turf.static_lighting_object = src + affected_turf.luminosity = 0 + + needs_update = TRUE + SSlighting.objects_queue += src + +/datum/static_lighting_object/Destroy(force) + if (!force) + return QDEL_HINT_LETMELIVE + SSlighting.objects_queue -= src + if (isturf(affected_turf)) + affected_turf.static_lighting_object = null + affected_turf.luminosity = 1 + affected_turf.underlays -= current_underlay + affected_turf = null + return ..() + +/datum/static_lighting_object/proc/update() + + // To the future coder who sees this and thinks + // "Why didn't he just use a loop?" + // Well my man, it's because the loop performed like shit. + // And there's no way to improve it because + // without a loop you can make the list all at once which is the fastest you're gonna get. + // Oh it's also shorter line wise. + // Including with these comments. + + var/static/datum/static_lighting_corner/dummy/dummy_lighting_corner = new + + var/datum/static_lighting_corner/red_corner = affected_turf.lighting_corner_SW || dummy_lighting_corner + var/datum/static_lighting_corner/green_corner = affected_turf.lighting_corner_SE || dummy_lighting_corner + var/datum/static_lighting_corner/blue_corner = affected_turf.lighting_corner_NW || dummy_lighting_corner + var/datum/static_lighting_corner/alpha_corner = affected_turf.lighting_corner_NE || dummy_lighting_corner + + var/max = max(red_corner.largest_color_luminosity, green_corner.largest_color_luminosity, blue_corner.largest_color_luminosity, alpha_corner.largest_color_luminosity) + + var/rr = red_corner.cache_r + var/rg = red_corner.cache_g + var/rb = red_corner.cache_b + + var/gr = green_corner.cache_r + var/gg = green_corner.cache_g + var/gb = green_corner.cache_b + + var/br = blue_corner.cache_r + var/bg = blue_corner.cache_g + var/bb = blue_corner.cache_b + + var/ar = alpha_corner.cache_r + var/ag = alpha_corner.cache_g + var/ab = alpha_corner.cache_b + + #if LIGHTING_SOFT_THRESHOLD != 0 + var/set_luminosity = max > LIGHTING_SOFT_THRESHOLD + #else + // Because of floating points�?, it won't even be a flat 0. + // This number is mostly arbitrary. + var/set_luminosity = max > 1e-6 + #endif + + if((rr & gr & br & ar) && (rg + gg + bg + ag + rb + gb + bb + ab == 8)) + //anything that passes the first case is very likely to pass the second, and addition is a little faster in this case + affected_turf.underlays -= current_underlay + current_underlay.icon_state = "transparent" + current_underlay.color = null + affected_turf.underlays += current_underlay + else if(!set_luminosity) + affected_turf.underlays -= current_underlay + current_underlay.icon_state = "dark" + current_underlay.color = null + affected_turf.underlays += current_underlay + else + affected_turf.underlays -= current_underlay + current_underlay.icon_state = null + current_underlay.color = list( + rr, rg, rb, 00, + gr, gg, gb, 00, + br, bg, bb, 00, + ar, ag, ab, 00, + 00, 00, 00, 01 + ) + + affected_turf.underlays += current_underlay + + var/area/A = affected_turf.loc + //We are luminous + if(set_luminosity) + affected_turf.luminosity = set_luminosity + //We are not lit by static light OR dynamic light. + else if(!LAZYLEN(affected_turf.hybrid_lights_affecting) && !A.base_lighting_alpha) + affected_turf.luminosity = 0 diff --git a/code/modules/lighting/lighting_static/static_lighting_setup.dm b/code/modules/lighting/lighting_static/static_lighting_setup.dm new file mode 100644 index 000000000000..6e1641585b91 --- /dev/null +++ b/code/modules/lighting/lighting_static/static_lighting_setup.dm @@ -0,0 +1,10 @@ +/proc/create_all_lighting_objects() + for(var/area/A in world) + + if(!A.static_lighting) + continue + + for(var/turf/T in A) + new/datum/static_lighting_object(T) + CHECK_TICK + CHECK_TICK diff --git a/code/modules/lighting/lighting_static/static_lighting_source.dm b/code/modules/lighting/lighting_static/static_lighting_source.dm new file mode 100644 index 000000000000..e650a432fc63 --- /dev/null +++ b/code/modules/lighting/lighting_static/static_lighting_source.dm @@ -0,0 +1,277 @@ +// This is where the fun begins. +// These are the main datums that emit light. + +/datum/static_light_source + ///The atom we're emitting light from (for example a mob if we're from a flashlight that's being held). + var/atom/top_atom + ///The atom that we belong to. + var/atom/source_atom + + ///The turf under the source atom. + var/turf/source_turf + ///The turf the top_atom appears to over. + var/turf/pixel_turf + ///Intensity of the emitter light. + var/light_power + /// The range of the emitted light. + var/light_range + /// The colour of the light, string, decomposed by parse_light_color() + var/light_color + // Variables for keeping track of the colour. + var/lum_r + var/lum_g + var/lum_b + + // The lumcount values used to apply the light. + var/tmp/applied_lum_r + var/tmp/applied_lum_g + var/tmp/applied_lum_b + + /// List used to store how much we're affecting corners. + var/list/datum/static_lighting_corner/effect_str + + /// Whether we have applied our light yet or not. + var/applied = FALSE + + /// whether we are to be added to SSlighting's static_sources_queue list for an update + var/needs_update = LIGHTING_NO_UPDATE + +// Thanks to Lohikar for flinging this tiny bit of code at me, increasing my brain cell count from 1 to 2 in the process. +// This macro will only offset up to 1 tile, but anything with a greater offset is an outlier and probably should handle its own lighting offsets. +// Anything pixelshifted 16px or more will be considered on the next tile. +#define GET_APPROXIMATE_PIXEL_DIR(PX, PY) ((!(PX) ? 0 : ((PX >= 16 ? EAST : (PX <= -16 ? WEST : 0)))) | (!PY ? 0 : (PY >= 16 ? NORTH : (PY <= -16 ? SOUTH : 0)))) +#define UPDATE_APPROXIMATE_PIXEL_TURF var/_mask = GET_APPROXIMATE_PIXEL_DIR(top_atom.pixel_x, top_atom.pixel_y); pixel_turf = _mask ? (get_step(source_turf, _mask) || source_turf) : source_turf + +/datum/static_light_source/New(atom/owner, atom/top) + source_atom = owner // Set our new owner. + LAZYADD(source_atom.static_light_sources, src) + top_atom = top + if (top_atom != source_atom) + LAZYADD(top_atom.static_light_sources, src) + + source_turf = top_atom + UPDATE_APPROXIMATE_PIXEL_TURF + + light_power = source_atom.light_power + light_range = source_atom.light_range + light_color = source_atom.light_color + + PARSE_LIGHT_COLOR(src) + + update() + +/datum/static_light_source/Destroy(force) + remove_lum() + if (source_atom) + LAZYREMOVE(source_atom.static_light_sources, src) + + if (top_atom) + LAZYREMOVE(top_atom.static_light_sources, src) + + if (needs_update) + SSlighting.static_sources_queue -= src + return ..() + +#define EFFECT_UPDATE(level) \ + if (needs_update == LIGHTING_NO_UPDATE) \ + SSlighting.static_sources_queue += src; \ + if (needs_update < level) \ + needs_update = level; \ + + +/// This proc will cause the light source to update the top atom, and add itself to the update queue. +/datum/static_light_source/proc/update(atom/new_top_atom) + // This top atom is different. + if (new_top_atom && new_top_atom != top_atom) + if(top_atom != source_atom && top_atom.static_light_sources) // Remove ourselves from the light sources of that top atom. + LAZYREMOVE(top_atom.static_light_sources, src) + + top_atom = new_top_atom + + if (top_atom != source_atom) + LAZYADD(top_atom.static_light_sources, src) // Add ourselves to the light sources of our new top atom. + + EFFECT_UPDATE(LIGHTING_CHECK_UPDATE) + +/// Will force an update without checking if it's actually needed. +/datum/static_light_source/proc/force_update() + EFFECT_UPDATE(LIGHTING_FORCE_UPDATE) + +/// Will cause the light source to recalculate turfs that were removed or added to visibility only. +/datum/static_light_source/proc/vis_update() + EFFECT_UPDATE(LIGHTING_VIS_UPDATE) + +// Macro that applies light to a new corner. +// It is a macro in the interest of speed, yet not having to copy paste it. +// If you're wondering what's with the backslashes, the backslashes cause BYOND to not automatically end the line. +// As such this all gets counted as a single line. +// The braces and semicolons are there to be able to do this on a single line. + +//Original lighting falloff calculation. This looks the best out of the three. However, this is also the most expensive. +//#define LUM_FALLOFF(C, T) (1 - CLAMP01(sqrt((C.x - T.x) ** 2 + (C.y - T.y) ** 2 + LIGHTING_HEIGHT) / max(1, light_range))) + +//Cubic lighting falloff. This has the *exact* same range as the original lighting falloff calculation, down to the exact decimal, but it looks a little unnatural due to the harsher falloff and how it's generally brighter across the board. +//#define LUM_FALLOFF(C, T) (1 - CLAMP01((((C.x - T.x) * (C.x - T.x)) + ((C.y - T.y) * (C.y - T.y)) + LIGHTING_HEIGHT) / max(1, light_range*light_range))) + +//Linear lighting falloff. This resembles the original lighting falloff calculation the best, but results in lights having a slightly larger range, which is most noticable with large light sources. This also results in lights being diamond-shaped, fuck. This looks the darkest out of the three due to how lights are brighter closer to the source compared to the original falloff algorithm. This falloff method also does not at all take into account lighting height, as it acts as a flat reduction to light range with this method. +//#define LUM_FALLOFF(C, T) (1 - CLAMP01(((abs(C.x - T.x) + abs(C.y - T.y))) / max(1, light_range+1))) + +//Linear lighting falloff but with an octagonal shape in place of a diamond shape. Lummox JR please add pointer support. +#define GET_LUM_DIST(DISTX, DISTY) (DISTX + DISTY + abs(DISTX - DISTY)*0.4) +#define LUM_FALLOFF(C, T) (1 - CLAMP01(max(GET_LUM_DIST(abs(C.x - T.x), abs(C.y - T.y)),LIGHTING_HEIGHT) / max(1, light_range+1))) + +#define APPLY_CORNER(C) \ + . = LUM_FALLOFF(C, pixel_turf); \ + . *= light_power; \ + var/OLD = effect_str[C]; \ + C.update_lumcount \ + ( \ + (. * lum_r) - (OLD * applied_lum_r), \ + (. * lum_g) - (OLD * applied_lum_g), \ + (. * lum_b) - (OLD * applied_lum_b) \ + ); + +#define REMOVE_CORNER(C) \ + . = -effect_str[C]; \ + C.update_lumcount \ + ( \ + . * applied_lum_r, \ + . * applied_lum_g, \ + . * applied_lum_b \ + ); + +/// This is the define used to calculate falloff. +/datum/static_light_source/proc/remove_lum() + applied = FALSE + for(var/datum/static_lighting_corner/corner as anything in effect_str) + REMOVE_CORNER(corner) + LAZYREMOVE(corner.affecting, src) + + effect_str = null + +/datum/static_light_source/proc/recalc_corner(datum/static_lighting_corner/corner) + LAZYINITLIST(effect_str) + if (effect_str[corner]) // Already have one. + REMOVE_CORNER(corner) + effect_str[corner] = 0 + + APPLY_CORNER(corner) + effect_str[corner] = . + +/datum/static_light_source/proc/update_corners() + var/update = FALSE + var/atom/source_atom = src.source_atom + + if (QDELETED(source_atom)) + qdel(src) + return + + if (source_atom.light_power != light_power) + light_power = source_atom.light_power + update = TRUE + + if (source_atom.light_range != light_range) + light_range = source_atom.light_range + update = TRUE + + if (!top_atom) + top_atom = source_atom + update = TRUE + + if (!light_range || !light_power) + qdel(src) + return + + if (isturf(top_atom)) + if (source_turf != top_atom) + source_turf = top_atom + UPDATE_APPROXIMATE_PIXEL_TURF + update = TRUE + else if (top_atom.loc != source_turf) + source_turf = top_atom.loc + UPDATE_APPROXIMATE_PIXEL_TURF + update = TRUE + else + var/pixel_loc = get_turf_pixel(top_atom) + if (pixel_loc != pixel_turf) + pixel_turf = pixel_loc + update = TRUE + + if (!isturf(source_turf)) + if (applied) + remove_lum() + return + + if (light_range && light_power && !applied) + update = TRUE + + if (source_atom.light_color != light_color) + light_color = source_atom.light_color + PARSE_LIGHT_COLOR(src) + update = TRUE + + else if (applied_lum_r != lum_r || applied_lum_g != lum_g || applied_lum_b != lum_b) + update = TRUE + + if (update) + needs_update = LIGHTING_CHECK_UPDATE + applied = TRUE + else if (needs_update == LIGHTING_CHECK_UPDATE) + return //nothing's changed + + var/list/datum/static_lighting_corner/corners = list() + var/list/turf/turfs = list() + if (source_turf) + var/oldlum = source_turf.luminosity + source_turf.luminosity = CEILING(light_range, 1) + for(var/turf/T in view(CEILING(light_range, 1), source_turf)) + if(!IS_OPAQUE_TURF(T)) + if (!T.lighting_corners_initialised) + T.static_generate_missing_corners() + corners[T.lighting_corner_NE] = 0 + corners[T.lighting_corner_SE] = 0 + corners[T.lighting_corner_SW] = 0 + corners[T.lighting_corner_NW] = 0 + turfs += T + source_turf.luminosity = oldlum + + var/list/datum/static_lighting_corner/new_corners = (corners - effect_str) + LAZYINITLIST(effect_str) + if (needs_update == LIGHTING_VIS_UPDATE) + for (var/datum/static_lighting_corner/corner as anything in new_corners) + APPLY_CORNER(corner) + if (. != 0) + LAZYADD(corner.affecting, src) + effect_str[corner] = . + else + for (var/datum/static_lighting_corner/corner as anything in new_corners) + APPLY_CORNER(corner) + if (. != 0) + LAZYADD(corner.affecting, src) + effect_str[corner] = . + + for (var/datum/static_lighting_corner/corner as anything in corners - new_corners) // Existing corners + APPLY_CORNER(corner) + if (. != 0) + effect_str[corner] = . + else + LAZYREMOVE(corner.affecting, src) + effect_str -= corner + + var/list/datum/static_lighting_corner/gone_corners = effect_str - corners + for (var/datum/static_lighting_corner/corner as anything in gone_corners) + REMOVE_CORNER(corner) + LAZYREMOVE(corner.affecting, src) + effect_str -= gone_corners + + applied_lum_r = lum_r + applied_lum_g = lum_g + applied_lum_b = lum_b + + UNSETEMPTY(effect_str) + +#undef EFFECT_UPDATE +#undef LUM_FALLOFF +#undef GET_LUM_DIST +#undef REMOVE_CORNER +#undef APPLY_CORNER diff --git a/code/modules/lighting/lighting_static/static_lighting_turf.dm b/code/modules/lighting/lighting_static/static_lighting_turf.dm new file mode 100644 index 000000000000..2fe918fa88bb --- /dev/null +++ b/code/modules/lighting/lighting_static/static_lighting_turf.dm @@ -0,0 +1,61 @@ +/turf + var/tmp/lighting_corners_initialised = FALSE + var/tmp/datum/static_lighting_object/static_lighting_object + + ///Lighting Corner datums. + var/tmp/datum/static_lighting_corner/lighting_corner_NE + var/tmp/datum/static_lighting_corner/lighting_corner_SE + var/tmp/datum/static_lighting_corner/lighting_corner_SW + var/tmp/datum/static_lighting_corner/lighting_corner_NW + +/turf/proc/static_lighting_clear_overlay() + if (static_lighting_object) + qdel(static_lighting_object, TRUE) + +/// Builds a lighting object for us, but only if our area is dynamic. +/turf/proc/static_lighting_build_overlay(area/our_area = loc) + if(static_lighting_object) + qdel(static_lighting_object, force=TRUE) //Shitty fix for lighting objects persisting after death + + new/datum/static_lighting_object(src) + + + +// Returns a boolean whether the turf is on soft lighting. +// Soft lighting being the threshold at which point the overlay considers +// itself as too dark to allow sight and see_in_dark becomes useful. +// So basically if this returns true the tile is unlit black. +/turf/proc/static_is_softly_lit() + if (!static_lighting_object) + return FALSE + + return !(luminosity || dynamic_lumcount) + +/turf/proc/change_area(area/old_area, area/new_area) + if(SSlighting.initialized) + if (new_area.static_lighting != old_area.static_lighting) + if (new_area.static_lighting) + static_lighting_build_overlay(new_area) + else + static_lighting_clear_overlay() + //Inherit overlay of new area + if(old_area.lighting_effect) + overlays -= old_area.lighting_effect + if(new_area.lighting_effect) + overlays += new_area.lighting_effect + +/turf/proc/static_generate_missing_corners() + if (!lighting_corner_NE) + lighting_corner_NE = new/datum/static_lighting_corner(src, NORTH|EAST) + + if (!lighting_corner_SE) + lighting_corner_SE = new/datum/static_lighting_corner(src, SOUTH|EAST) + + if (!lighting_corner_SW) + lighting_corner_SW = new/datum/static_lighting_corner(src, SOUTH|WEST) + + if (!lighting_corner_NW) + lighting_corner_NW = new/datum/static_lighting_corner(src, NORTH|WEST) + + lighting_corners_initialised = TRUE + diff --git a/code/modules/lighting/lighting_turf.dm b/code/modules/lighting/lighting_turf.dm new file mode 100644 index 000000000000..c1fb288e9dd2 --- /dev/null +++ b/code/modules/lighting/lighting_turf.dm @@ -0,0 +1,94 @@ +///Estimates the light power based on the alpha of the light and the range. +///Assumes a linear fallout at (0, alpha/255) to (range, 0) +///Used for lightig mask lumcount calculations +#define LIGHT_POWER_ESTIMATION(alpha, range, distance) max((alpha * (range - distance)) / (255 * range), 0) + +/turf + ///hybrid lights affecting this turf + var/tmp/list/atom/movable/lighting_mask/hybrid_lights_affecting + +/turf/Destroy(force) + if(hybrid_lights_affecting) + for(var/atom/movable/lighting_mask/mask as anything in hybrid_lights_affecting) + LAZYREMOVE(mask.affecting_turfs, src) + hybrid_lights_affecting.Cut() + return ..() + +/// Causes any affecting light sources to be queued for a visibility update, for example a door got opened. +/turf/proc/reconsider_lights() + //Consider static lights + lighting_corner_NE?.vis_update() + lighting_corner_SE?.vis_update() + lighting_corner_SW?.vis_update() + lighting_corner_NW?.vis_update() + + //consider dynamic lights + for(var/atom/movable/lighting_mask/mask as anything in hybrid_lights_affecting) + mask.queue_mask_update() + +// Used to get a scaled lumcount. +/turf/proc/get_lumcount(minlum = 0, maxlum = 1) + var/totallums = 0 + if (static_lighting_object) + var/datum/static_lighting_corner/L + L = lighting_corner_NE + if (L) + totallums += L.lum_r + L.lum_b + L.lum_g + L = lighting_corner_SE + if (L) + totallums += L.lum_r + L.lum_b + L.lum_g + L = lighting_corner_SW + if (L) + totallums += L.lum_r + L.lum_b + L.lum_g + L = lighting_corner_NW + if (L) + totallums += L.lum_r + L.lum_b + L.lum_g + + totallums /= 12 // 4 corners, each with 3 channels, get the average. + + totallums = (totallums - minlum) / (maxlum - minlum) + + totallums = CLAMP01(totallums) + else + totallums = 1 + + for(var/atom/movable/lighting_mask/mask as anything in hybrid_lights_affecting) + if(mask.blend_mode == BLEND_ADD) + totallums += LIGHT_POWER_ESTIMATION(mask.alpha, mask.radius, get_dist(src, get_turf(mask.attached_atom))) + else + totallums -= LIGHT_POWER_ESTIMATION(mask.alpha, mask.radius, get_dist(src, get_turf(mask.attached_atom))) + return clamp(totallums, 0.0, 1.0) + +///Proc to add movable sources of opacity on the turf and let it handle lighting code. +/turf/proc/add_opacity_source(atom/movable/new_source) + LAZYADD(opacity_sources, new_source) + if(opacity) + return + recalculate_directional_opacity() + + +///Proc to remove movable sources of opacity on the turf and let it handle lighting code. +/turf/proc/remove_opacity_source(atom/movable/old_source) + LAZYREMOVE(opacity_sources, old_source) + if(opacity) //Still opaque, no need to worry on updating. + return + recalculate_directional_opacity() + + +///Calculate on which directions this turfs block view. +/turf/proc/recalculate_directional_opacity() + . = directional_opacity + if(opacity) + directional_opacity = ALL_CARDINALS + if(. != directional_opacity) + reconsider_lights() + return + directional_opacity = NONE + for(var/atom/movable/opacity_source as anything in opacity_sources) + if(opacity_source.flags_atom & ON_BORDER) + directional_opacity |= opacity_source.dir + else //If fulltile and opaque, then the whole tile blocks view, no need to continue checking. + directional_opacity = ALL_CARDINALS + break + if(. != directional_opacity && (. == ALL_CARDINALS || directional_opacity == ALL_CARDINALS)) + reconsider_lights() //The lighting system only cares whether the tile is fully concealed from all directions or not. diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index f1244ccc6de5..407c64987d88 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -85,6 +85,7 @@ life_kills_total = body.life_kills_total //kills also copy over appearance = body.appearance + underlays.Cut() base_transform = matrix(body.base_transform) body.alter_ghost(src) apply_transform(matrix()) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 0d67e7cafd74..c9092ed479b9 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1388,12 +1388,15 @@ sight &= ~BLIND // Never have blind on by default lighting_alpha = default_lighting_alpha - sight &= ~(SEE_TURFS|SEE_MOBS|SEE_OBJS) + sight &= ~(SEE_TURFS|SEE_MOBS|SEE_OBJS|SEE_BLACKNESS) see_in_dark = species.darksight sight |= species.flags_sight if(glasses) process_glasses(glasses) + if(!(sight & SEE_TURFS) && !(sight & SEE_MOBS) && !(sight & SEE_OBJS)) + sight |= SEE_BLACKNESS + SEND_SIGNAL(src, COMSIG_HUMAN_POST_UPDATE_SIGHT) sync_lighting_plane_alpha() diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index 989ee52fa63c..7c7ad7a0166b 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -1,4 +1,5 @@ /mob/living/carbon/human + light_system = MOVABLE_LIGHT //Hair color and style var/r_hair = 0 var/g_hair = 0 diff --git a/code/modules/mob/living/carbon/human/human_helpers.dm b/code/modules/mob/living/carbon/human/human_helpers.dm index e6a0db99637d..7f36df8ceae2 100644 --- a/code/modules/mob/living/carbon/human/human_helpers.dm +++ b/code/modules/mob/living/carbon/human/human_helpers.dm @@ -268,15 +268,14 @@ var/goes_out = 0 if(armor) if(istype(wear_suit, /obj/item/clothing/suit/storage/marine)) - var/obj/item/clothing/suit/storage/marine/S = wear_suit - if(S.turn_off_light(src)) + if(wear_suit.turn_light(src, toggle_on = FALSE)) light_off++ for(var/obj/item/clothing/head/helmet/marine/H in contents) for(var/obj/item/attachable/flashlight/FL in H.pockets) if(FL.activate_attachment(H, src, TRUE)) light_off++ for(var/obj/item/clothing/head/hardhat/headlamp in contents) - if(headlamp.turn_off_light(src)) + if(headlamp.turn_light(src, toggle_on = FALSE)) light_off++ if(guns) for(var/obj/item/weapon/gun/G in contents) diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 6ee249a6333e..88887126b1c1 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -701,17 +701,22 @@ Applied by gun suicide and high impact bullet executions, removed by rejuvenate, /mob/living/carbon/human/update_fire() remove_overlay(FIRE_LAYER) if(!on_fire) + set_light_on(FALSE) return var/image/I switch(fire_stacks) if(1 to 14) I = image("icon"='icons/mob/humans/onmob/OnFire.dmi', "icon_state"="Standing_weak", "layer"= -FIRE_LAYER) + set_light_range(2) if(15 to INFINITY) I = image("icon"='icons/mob/humans/onmob/OnFire.dmi', "icon_state"="Standing_medium", "layer"= -FIRE_LAYER) + set_light_range(3) else return I.appearance_flags |= RESET_COLOR|RESET_ALPHA I.color = fire_reagent.burncolor + set_light_color(fire_reagent.burncolor) + set_light_on(TRUE) overlays_standing[FIRE_LAYER] = I apply_overlay(FIRE_LAYER) diff --git a/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm b/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm index a1809138de51..32c55ba6fd4c 100644 --- a/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm +++ b/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm @@ -52,6 +52,7 @@ icon_size = 48 black_market_value = KILL_MENDOZA dead_black_market_value = 50 + light_system = MOVABLE_LIGHT var/obj/item/clothing/suit/wear_suit = null var/obj/item/clothing/head/head = null var/obj/item/r_store = null @@ -1073,6 +1074,7 @@ . = ..() if (.) UnregisterSignal(src, COMSIG_XENO_PRE_HEAL) + handle_luminosity() /mob/living/carbon/xenomorph/proc/cancel_heal() SIGNAL_HANDLER diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/runner/runner_powers.dm b/code/modules/mob/living/carbon/xenomorph/abilities/runner/runner_powers.dm index 64e4b73cfbd2..6835fb724294 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/runner/runner_powers.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/runner/runner_powers.dm @@ -183,7 +183,8 @@ to_chat(X, SPAN_XENOWARNING("Your stomach starts turning and twisting, getting ready to compress the built up acid.")) X.color = "#22FF22" - X.SetLuminosity(3) + X.set_light_color("#22FF22") + X.set_light_range(3) BD.caboom_trigger = TRUE BD.caboom_left = BD.caboom_timer @@ -204,7 +205,7 @@ behavior.caboom_trigger = FALSE xeno.color = null - xeno.SetLuminosity(0) + xeno.set_light_range(0) behavior.modify_acid(-behavior.max_acid / 4) // Done this way rather than setting to 0 in case something else slowed us diff --git a/code/modules/mob/living/carbon/xenomorph/attack_alien.dm b/code/modules/mob/living/carbon/xenomorph/attack_alien.dm index 8e64afa3f733..25f6108c14f6 100644 --- a/code/modules/mob/living/carbon/xenomorph/attack_alien.dm +++ b/code/modules/mob/living/carbon/xenomorph/attack_alien.dm @@ -851,7 +851,7 @@ playsound(src, "glassbreak", 70, 1) damaged = TRUE if(is_lit) - SetLuminosity(0) + set_light(0) update_icon() else playsound(loc, 'sound/effects/Glasshit.ogg', 25, 1) diff --git a/code/modules/mob/living/carbon/xenomorph/death.dm b/code/modules/mob/living/carbon/xenomorph/death.dm index 56f9460f5c71..3a8d344ff68d 100644 --- a/code/modules/mob/living/carbon/xenomorph/death.dm +++ b/code/modules/mob/living/carbon/xenomorph/death.dm @@ -14,7 +14,7 @@ if(SSticker?.mode?.hardcore) ghostize() - SetLuminosity(0) + set_light_range(0) if(pulledby) pulledby.stop_pulling() diff --git a/code/modules/mob/living/carbon/xenomorph/life.dm b/code/modules/mob/living/carbon/xenomorph/life.dm index 6f9a667642e3..0542594f1ab6 100644 --- a/code/modules/mob/living/carbon/xenomorph/life.dm +++ b/code/modules/mob/living/carbon/xenomorph/life.dm @@ -544,7 +544,11 @@ Make sure their actual health updates immediately.*/ new_luminosity += caste.caste_luminosity if(on_fire) new_luminosity += min(fire_stacks, 5) - SetLuminosity(new_luminosity) // light up xenos + set_light_range(new_luminosity) // light up xenos + if(new_luminosity) + set_light_on(TRUE) + else + set_light_on(FALSE) /mob/living/carbon/xenomorph/handle_stunned() if(stunned) diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index d74003cde331..fa33af97275e 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -148,7 +148,6 @@ on_fire = FALSE fire_stacks = 0 update_fire() - SetLuminosity(0) return TRUE return FALSE diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 49dc25bd57ea..18d6ece8e238 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -355,13 +355,13 @@ var/list/ai_verbs_default = list( /mob/living/silicon/ai/reset_view(atom/A) if(camera) - camera.SetLuminosity(0) + camera.set_light(0) if(istype(A,/obj/structure/machinery/camera)) camera = A ..() if(istype(A,/obj/structure/machinery/camera)) - if(camera_light_on) A.SetLuminosity(AI_CAMERA_LUMINOSITY) - else A.SetLuminosity(0) + if(camera_light_on) A.set_light(AI_CAMERA_LUMINOSITY) + else A.set_light(0) /mob/living/silicon/ai/proc/switchCamera(obj/structure/machinery/camera/C) @@ -539,7 +539,7 @@ var/list/ai_verbs_default = list( to_chat(src, "Camera lights [camera_light_on ? "activated" : "deactivated"].") if(!camera_light_on) if(camera) - camera.SetLuminosity(0) + camera.set_light(0) camera = null else lightNearbyCamera() @@ -554,20 +554,20 @@ var/list/ai_verbs_default = list( if(src.camera) var/obj/structure/machinery/camera/camera = near_range_camera(src.eyeobj) if(camera && src.camera != camera) - src.camera.SetLuminosity(0) + src.camera.set_light(0) if(!camera.light_disabled) src.camera = camera - src.camera.SetLuminosity(AI_CAMERA_LUMINOSITY) + src.camera.set_light(AI_CAMERA_LUMINOSITY) else src.camera = null else if(isnull(camera)) - src.camera.SetLuminosity(0) + src.camera.set_light(0) src.camera = null else var/obj/structure/machinery/camera/camera = near_range_camera(src.eyeobj) if(camera && !camera.light_disabled) src.camera = camera - src.camera.SetLuminosity(AI_CAMERA_LUMINOSITY) + src.camera.set_light(AI_CAMERA_LUMINOSITY) camera_light_on = world.timeofday + 1 * 20 // Update the light every 2 seconds. diff --git a/code/modules/mob/living/silicon/ai/freelook/update_triggers.dm b/code/modules/mob/living/silicon/ai/freelook/update_triggers.dm index 162bc4acc45e..1e1cef2b7a8e 100644 --- a/code/modules/mob/living/silicon/ai/freelook/update_triggers.dm +++ b/code/modules/mob/living/silicon/ai/freelook/update_triggers.dm @@ -29,7 +29,7 @@ . = ..() // STRUCTURES -/obj/structure/Destroy() +/obj/structure/Destroy(force) if(z && SSatoms.initialized != INITIALIZATION_INSSATOMS) cameranet.updateVisibility(src) . = ..() @@ -97,7 +97,7 @@ if(can_use()) cameranet.addCamera(src) else - SetLuminosity(0) + set_light(0) cameranet.removeCamera(src) /obj/structure/machinery/camera/Initialize() diff --git a/code/modules/mob/living/silicon/ai/life.dm b/code/modules/mob/living/silicon/ai/life.dm index 070ec202803e..5b190143f5bc 100644 --- a/code/modules/mob/living/silicon/ai/life.dm +++ b/code/modules/mob/living/silicon/ai/life.dm @@ -47,7 +47,7 @@ forceMove(T.loc) if (istype(loc, /area)) //stage = 4 - if (!loc.master.power_equip && !istype(src.loc,/obj/item)) + if (!loc.power_equip && !istype(src.loc,/obj/item)) //stage = 5 blind = 1 @@ -95,7 +95,7 @@ src.see_in_dark = 0 src.see_invisible = SEE_INVISIBLE_LIVING - if (((!loc.master.power_equip) || istype(T, /turf/open/space)) && !istype(src.loc,/obj/item)) + if (((!loc.power_equip) || istype(T, /turf/open/space)) && !istype(src.loc,/obj/item)) if (src:aiRestorePowerRoutine==0) src:aiRestorePowerRoutine = 1 @@ -106,7 +106,7 @@ spawn(20) to_chat(src, "Backup battery online. Scanners, camera, and radio interface offline. Beginning fault-detection.") sleep(50) - if (loc.master.power_equip) + if (loc.power_equip) if (!istype(T, /turf/open/space)) to_chat(src, "Alert cancelled. Power has been restored without our assistance.") src:aiRestorePowerRoutine = 0 @@ -133,18 +133,17 @@ var/PRP //like ERP with the code, at least this stuff is no more 4x sametext for (PRP=1, PRP<=4, PRP++) var/area/AIarea = get_area(src) - for(var/area/A in AIarea.master.related) - for (var/obj/structure/machinery/power/apc/APC in A) - if (!(APC.stat & BROKEN)) - theAPC = APC - break + for (var/obj/structure/machinery/power/apc/APC in AIarea) + if (!(APC.stat & BROKEN)) + theAPC = APC + break if (!theAPC) switch(PRP) if (1) to_chat(src, "Unable to locate APC!") else to_chat(src, "Lost connection with the APC!") src:aiRestorePowerRoutine = 2 return - if (loc.master.power_equip) + if (loc.power_equip) if (!istype(T, /turf/open/space)) to_chat(src, "Alert cancelled. Power has been restored without our assistance.") src:aiRestorePowerRoutine = 0 diff --git a/code/modules/mob/living/silicon/robot/life.dm b/code/modules/mob/living/silicon/robot/life.dm index e623b499a686..21ddaf76b33c 100644 --- a/code/modules/mob/living/silicon/robot/life.dm +++ b/code/modules/mob/living/silicon/robot/life.dm @@ -56,7 +56,7 @@ src.has_power = 0 if(lights_on) // Light is on but there is no power! lights_on = 0 - SetLuminosity(0) + set_light(0) /mob/living/silicon/robot/handle_regular_status_updates(regular_update = TRUE) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 7edcb7d4fede..6f68f94bcb5d 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -337,9 +337,9 @@ var/list/robot_verbs_default = list( lights_on = !lights_on to_chat(usr, "You [lights_on ? "enable" : "disable"] your integrated light.") if(lights_on) - SetLuminosity(integrated_light_power) // 1.5x luminosity of flashlight + set_light(integrated_light_power) // 1.5x luminosity of flashlight else - SetLuminosity(0) + set_light(0) /mob/living/silicon/robot/verb/self_diagnosis_verb() set category = "Robot Commands" diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 06df71427e4f..4dfa0644aa21 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -327,7 +327,6 @@ if (exterior_lighting) exterior_lighting.alpha = min(GLOB.minimum_exterior_lighting_alpha, lighting_alpha) - //puts the item "W" into an appropriate slot in a human's inventory //returns 0 if it cannot, 1 if successful /mob/proc/equip_to_appropriate_slot(obj/item/W, ignore_delay = 1, list/slot_equipment_priority = DEFAULT_SLOT_PRIORITY) diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 74085a3b960c..32a3ca51d456 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -528,3 +528,9 @@ var/global/list/limb_types_by_name = list( /mob/proc/get_paygrade() return + +/mob/proc/reset_lighting_alpha() + SIGNAL_HANDLER + + lighting_alpha = LIGHTING_PLANE_ALPHA_VISIBLE + sync_lighting_plane_alpha() diff --git a/code/modules/movement/movement.dm b/code/modules/movement/movement.dm index ee2a184518a0..da0c76cba9d5 100644 --- a/code/modules/movement/movement.dm +++ b/code/modules/movement/movement.dm @@ -92,12 +92,12 @@ /atom/movable/proc/Moved(atom/oldloc, direction, Forced = FALSE) SEND_SIGNAL(src, COMSIG_MOVABLE_MOVED, oldloc, direction, Forced) - if (isturf(loc)) - if (opacity) - oldloc.UpdateAffectingLights() - else - if (light) - light.changed() + for(var/datum/dynamic_light_source/light as anything in hybrid_light_sources) + light.source_atom.update_light() + if(!isturf(loc)) + light.find_containing_atom() + for(var/datum/static_light_source/L as anything in static_light_sources) // Cycle through the light sources on this atom and tell them to update. + L.source_atom.static_update_light() return TRUE /atom/movable/proc/forceMove(atom/destination) diff --git a/code/modules/nightmare/nmtasks/mapscheduler.dm b/code/modules/nightmare/nmtasks/mapscheduler.dm index 2a8279e13608..34ceecafb876 100644 --- a/code/modules/nightmare/nmtasks/mapscheduler.dm +++ b/code/modules/nightmare/nmtasks/mapscheduler.dm @@ -28,8 +28,6 @@ for(var/turf/T as anything in tainted) var/area/A = T.loc - if(!A?.lighting_use_dynamic) + if(!A?.area_has_base_lighting) continue - T.cached_lumcount = -1 // Invalidate lumcount to force update here - T.lighting_changed = TRUE - SSlighting.changed_turfs += T + T.update_light() diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index e7a160095705..ef4c5cc292ce 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -148,7 +148,7 @@ GLOBAL_LIST_INIT(apc_wire_descriptions, list( if(building == 0) init() else - area = loc.loc:master + area = get_area(src) opened = APC_COVER_OPEN operating = 0 name = "\improper [area.name] APC" @@ -1314,11 +1314,10 @@ GLOBAL_LIST_INIT(apc_wire_descriptions, list( if(cell && cell.charge >= 20) cell.use(20) spawn(0) - for(var/area/A in area.related) - for(var/obj/structure/machinery/light/L in A) - L.on = 1 - L.broken() - sleep(1) + for(var/obj/structure/machinery/light/L in area) + L.on = 1 + L.broken() + sleep(1) /obj/structure/machinery/power/apc/Destroy() area.power_light = 0 diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 094cdf5ac9ac..9978b9f2c5b3 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -143,6 +143,7 @@ idle_power_usage = 2 active_power_usage = 20 power_channel = POWER_CHANNEL_LIGHT //Lights are calc'd via area so they dont need to be in the machine list + light_system = STATIC_LIGHT var/on = 0 // 1 if on, 0 if off var/on_gs = 0 var/brightness = 8 // luminosity when on, also used in power calculation @@ -272,7 +273,6 @@ if(A) on = 0 // A.update_lights() - SetLuminosity(0) . = ..() /obj/structure/machinery/light/proc/is_broken() @@ -296,7 +296,6 @@ // update the icon_state and luminosity of the light depending on its state /obj/structure/machinery/light/proc/update(trigger = 1) - SSlighting.lights_current.Add(light) update_icon() if(on) if(luminosity != brightness) @@ -312,13 +311,13 @@ status = LIGHT_BURNED icon_state = "[base_state]-burned" on = 0 - SetLuminosity(0) + set_light(0) else update_use_power(USE_POWER_ACTIVE) - SetLuminosity(brightness) + set_light(brightness) else update_use_power(USE_POWER_NONE) - SetLuminosity(0) + set_light(0) if(on != on_gs) on_gs = on @@ -441,8 +440,8 @@ /obj/structure/machinery/light/proc/has_power() var/area/A = src.loc.loc if(!src.needs_power) - return A.master.lightswitch - return A.master.lightswitch && A.master.power_light + return A.lightswitch + return A.lightswitch && A.power_light /obj/structure/machinery/light/proc/flicker(amount = rand(10, 20)) if(flickering) return @@ -592,9 +591,8 @@ /obj/structure/machinery/light/power_change() spawn(10) if(loc) - var/area/A = src.loc.loc - A = A.master - if(!src.needs_power) + var/area/A = get_area(src) + if(!needs_power || A.unlimited_power) seton(A.lightswitch) return seton(A.lightswitch && A.power_light) @@ -776,7 +774,7 @@ /obj/structure/machinery/landinglight/proc/turn_off() icon_state = initial(icon_state) - SetLuminosity(0) + set_light(0) /obj/structure/machinery/landinglight/ds1 id = "USS Almayer Dropship 1" // ID for landing zone @@ -786,42 +784,42 @@ /obj/structure/machinery/landinglight/proc/turn_on() icon_state = initial(icon_state) + "0" - SetLuminosity(2) + set_light(2) /obj/structure/machinery/landinglight/ds1/delayone/turn_on() icon_state = initial(icon_state) + "1" - SetLuminosity(2) + set_light(2) /obj/structure/machinery/landinglight/ds1/delaytwo/turn_on() icon_state = initial(icon_state) + "2" - SetLuminosity(2) + set_light(2) /obj/structure/machinery/landinglight/ds1/delaythree/turn_on() icon_state = initial(icon_state) + "3" - SetLuminosity(2) + set_light(2) /obj/structure/machinery/landinglight/ds2/delayone/turn_on() icon_state = initial(icon_state) + "1" - SetLuminosity(2) + set_light(2) /obj/structure/machinery/landinglight/ds2/delaytwo/turn_on() icon_state = initial(icon_state) + "2" - SetLuminosity(2) + set_light(2) /obj/structure/machinery/landinglight/ds2/delaythree/turn_on() icon_state = initial(icon_state) + "3" - SetLuminosity(2) + set_light(2) /obj/structure/machinery/landinglight/ds1/spoke icon_state = "lz_spoke_light" /obj/structure/machinery/landinglight/ds1/spoke/turn_on() icon_state = initial(icon_state) + "1" - SetLuminosity(3) + set_light(3) /obj/structure/machinery/landinglight/ds2/spoke icon_state = "lz_spoke_light" /obj/structure/machinery/landinglight/ds2/spoke/turn_on() icon_state = initial(icon_state) + "1" - SetLuminosity(3) + set_light(3) diff --git a/code/modules/power/power.dm b/code/modules/power/power.dm index ac3daee900ab..bee3e0aac8c2 100644 --- a/code/modules/power/power.dm +++ b/code/modules/power/power.dm @@ -51,21 +51,21 @@ // return 1 var/area/A = src.loc.loc // make sure it's in an area - if(!A || !isarea(A) || !A.master) + if(!A || !isarea(A)) return 0 // if not, then not powered if(chan == -1) chan = power_channel - return A.master.powered(chan) // return power status of the area + return A.powered(chan) // return power status of the area // increment the power usage stats for an area /obj/structure/machinery/proc/use_power(amount, chan = POWER_CHANNEL_ONEOFF, autocalled = 0) // defaults to one-off power charge, not constant power change var/area/A = get_area(src) // make sure it's in an area - if(!A || !isarea(A) || !A.master) + if(!A || !isarea(A)) return - A.master.use_power(amount, chan) + A.use_power(amount, chan) if(!autocalled) - log_power_update_request(A.master, src) + log_power_update_request(A, src) return 1 //The master_area optional argument can be used to save on a lot of processing if the master area is already known. This is mainly intended for when this proc is called by the master controller. @@ -274,10 +274,9 @@ return null /area/proc/get_apc() - for(var/area/RA in src.related) - var/obj/structure/machinery/power/apc/FINDME = locate() in RA - if (FINDME) - return FINDME + var/obj/structure/machinery/power/apc/FINDME = locate() in src + if (FINDME) + return FINDME //Determines how strong could be shock, deals damage to mob, uses power. diff --git a/code/modules/projectiles/ammo_boxes/ammo_boxes.dm b/code/modules/projectiles/ammo_boxes/ammo_boxes.dm index 69179a209f8b..831923415453 100644 --- a/code/modules/projectiles/ammo_boxes/ammo_boxes.dm +++ b/code/modules/projectiles/ammo_boxes/ammo_boxes.dm @@ -18,10 +18,6 @@ //---------------------GENERAL PROCS -/obj/item/ammo_box/Destroy() - SetLuminosity(0) - . = ..() - /obj/item/ammo_box/attack_self(mob/living/user) ..() if(burning) @@ -45,14 +41,14 @@ /obj/item/ammo_box/proc/deploy_ammo_box(mob/user, turf/T) user.drop_held_item() - + //---------------------FIRE HANDLING PROCS /obj/item/ammo_box/flamer_fire_act(severity, datum/cause_data/flame_cause_data) if(burning) return burning = TRUE - SetLuminosity(3) + set_light(3) apply_fire_overlay() addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(qdel), src), 5 SECONDS) @@ -239,11 +235,11 @@ if(host_box) host_box.apply_fire_overlay(will_explode) - host_box.SetLuminosity(3) + host_box.set_light(3) host_box.visible_message(SPAN_WARNING(shown_message)) else apply_fire_overlay(will_explode) - SetLuminosity(3) + set_light(3) visible_message(SPAN_WARNING(shown_message)) /obj/item/ammo_box/magazine/apply_fire_overlay(will_explode = FALSE) @@ -424,7 +420,7 @@ visible_message(SPAN_WARNING("\The [src] catches on fire!")) apply_fire_overlay(will_explode) - SetLuminosity(3) + set_light(3) /obj/item/ammo_box/rounds/apply_fire_overlay(will_explode = FALSE) //original fire overlay is made for standard mag boxes, so they don't need additional offsetting diff --git a/code/modules/projectiles/ammo_boxes/box_structures.dm b/code/modules/projectiles/ammo_boxes/box_structures.dm index 9169706aec4a..cb119e1a2190 100644 --- a/code/modules/projectiles/ammo_boxes/box_structures.dm +++ b/code/modules/projectiles/ammo_boxes/box_structures.dm @@ -18,7 +18,6 @@ //---------------------GENERAL PROCS /obj/structure/magazine_box/Destroy() - SetLuminosity(0) if(item_box) qdel(item_box) item_box = null diff --git a/code/modules/projectiles/ammo_boxes/misc_boxes.dm b/code/modules/projectiles/ammo_boxes/misc_boxes.dm index e6a80537130b..d09a69e5bb50 100644 --- a/code/modules/projectiles/ammo_boxes/misc_boxes.dm +++ b/code/modules/projectiles/ammo_boxes/misc_boxes.dm @@ -34,11 +34,11 @@ /obj/item/ammo_box/magazine/misc/handle_side_effects(obj/structure/magazine_box/host_box) if(host_box) host_box.apply_fire_overlay() - host_box.SetLuminosity(3) + host_box.set_light(3) host_box.visible_message(SPAN_WARNING("\The [src] catches on fire!")) else apply_fire_overlay() - SetLuminosity(3) + set_light(3) visible_message(SPAN_WARNING("\The [src] catches on fire!")) /obj/item/ammo_box/magazine/misc/apply_fire_overlay(will_explode = FALSE) @@ -117,11 +117,11 @@ if(host_box) host_box.apply_fire_overlay() - host_box.SetLuminosity(3) + host_box.set_light(3) host_box.visible_message(SPAN_WARNING(shown_message)) else apply_fire_overlay() - SetLuminosity(3) + set_light(3) visible_message(SPAN_WARNING(shown_message)) //for flare box, instead of actually exploding, we throw out a flare at random direction diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 886ee30b3f1a..0b54d973549a 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -25,6 +25,7 @@ ) flags_atom = FPRINT|CONDUCT flags_item = TWOHANDED + light_system = DIRECTIONAL_LIGHT var/accepted_ammo = list() ///Determines what kind of bullet is created when the gun is unloaded - used to match rounds to magazines. Set automatically when reloading. @@ -294,9 +295,6 @@ var/obj/item/attachable/potential_attachment = attachments[slot] if(!potential_attachment) continue - loc.SetLuminosity(0, FALSE, src) - else - SetLuminosity(0) attachments = null attachable_overlays = null QDEL_NULL(active_attachable) @@ -508,16 +506,19 @@ As sniper rifles have both and weapon mods can change them as well. ..() deals w if(slot in list(WEAR_L_HAND, WEAR_R_HAND)) set_gun_user(user) + if(HAS_TRAIT_FROM_ONLY(src, TRAIT_GUN_LIGHT_DEACTIVATED, user)) + force_light(on = TRUE) + REMOVE_TRAIT(src, TRAIT_GUN_LIGHT_DEACTIVATED, user) else set_gun_user(null) + force_light(on = FALSE) + ADD_TRAIT(src, TRAIT_GUN_LIGHT_DEACTIVATED, user) return ..() /obj/item/weapon/gun/dropped(mob/user) . = ..() - disconnect_light_from_mob(user) - var/delay_left = (last_fired + fire_delay + additional_fire_group_delay) - world.time if(fire_delay_group && delay_left > 0) for(var/group in fire_delay_group) @@ -1729,9 +1730,11 @@ not all weapons use normal magazines etc. load_into_chamber() itself is designed if(!istype(user) || !istype(user.loc,/turf)) return - if(user.luminosity <= muzzle_flash_lum) - user.SetLuminosity(muzzle_flash_lum, FALSE, src) - addtimer(CALLBACK(user, TYPE_PROC_REF(/atom, SetLuminosity), 0, FALSE, src), 10) + var/prev_light = light_range + if(!light_on && (light_range <= muzzle_flash_lum)) + set_light_range(muzzle_flash_lum) + set_light_on(TRUE) + addtimer(CALLBACK(src, PROC_REF(reset_light_range), prev_light), 0.5 SECONDS) var/image_layer = (user && user.dir == SOUTH) ? MOB_LAYER+0.1 : MOB_LAYER-0.1 var/offset = 5 @@ -1743,6 +1746,13 @@ not all weapons use normal magazines etc. load_into_chamber() itself is designed I.transform = rotate I.flick_overlay(user, 3) +/// called by a timer to remove the light range from muzzle flash +/obj/item/weapon/gun/proc/reset_light_range(lightrange) + set_light_range(lightrange) + if(lightrange <= 0) + set_light_on(FALSE) + + /obj/item/weapon/gun/attack_alien(mob/living/carbon/xenomorph/xeno) ..() var/slashed_light = FALSE diff --git a/code/modules/projectiles/gun_attachables.dm b/code/modules/projectiles/gun_attachables.dm index 88defe14c5ef..c7b88ef0c1ae 100644 --- a/code/modules/projectiles/gun_attachables.dm +++ b/code/modules/projectiles/gun_attachables.dm @@ -594,7 +594,7 @@ Defined in conflicts.dm of the #defines folder. icon = 'icons/obj/items/weapons/guns/attachments/rail.dmi' icon_state = "flashlight" attach_icon = "flashlight_a" - light_mod = 7 + light_mod = 5 slot = "rail" matter = list("metal" = 50,"glass" = 20) flags_attach_features = ATTACH_REMOVABLE|ATTACH_ACTIVATION @@ -604,8 +604,8 @@ Defined in conflicts.dm of the #defines folder. var/original_state = "flashlight" var/original_attach = "flashlight_a" - var/activated = FALSE - var/helm_mounted_light_mod = 5 + var/helm_mounted_light_power = 2 + var/helm_mounted_light_range = 3 var/datum/action/item_action/activation var/obj/item/attached_item @@ -636,7 +636,7 @@ Defined in conflicts.dm of the #defines folder. SIGNAL_HANDLER if(!attached_item) return - if(activated) + if(light_on) icon_state = original_state attach_icon = original_attach activate_attachment(attached_item, attached_item.loc, TRUE) @@ -652,33 +652,54 @@ Defined in conflicts.dm of the #defines folder. activate_attachment(attached_item, owner) /obj/item/attachable/flashlight/activate_attachment(obj/item/weapon/gun/G, mob/living/user, turn_off) - if(istype(G, /obj/item/clothing/head/helmet/marine)) - var/atom/movable/light_source = user - . = (turn_off && activated) - if(turn_off || activated) - if(activated) + turn_light(user, turn_off ? !turn_off : !light_on) + +/obj/item/attachable/flashlight/turn_light(mob/user, toggle_on, cooldown, sparks, forced, light_again) + . = ..() + if(. != CHECKS_PASSED) + return + + if(istype(attached_item, /obj/item/clothing/head/helmet/marine)) + if(!toggle_on || light_on) + if(light_on) playsound(user, deactivation_sound, 15, 1) icon_state = original_state attach_icon = original_attach - activated = FALSE + light_on = FALSE else playsound(user, activation_sound, 15, 1) icon_state += "-on" attach_icon += "-on" - activated = TRUE + light_on = TRUE attached_item.update_icon() - light_source.SetLuminosity(helm_mounted_light_mod * activated, FALSE, G) - attached_item.SetLuminosity(helm_mounted_light_mod * activated, FALSE, G) + attached_item.set_light_range(helm_mounted_light_range) + attached_item.set_light_power(helm_mounted_light_power) + attached_item.set_light_on(light_on) activation.update_button_icon() return - if(turn_off && !(G.flags_gun_features & GUN_FLASHLIGHT_ON)) - return FALSE - var/flashlight_on = (G.flags_gun_features & GUN_FLASHLIGHT_ON) ? 0 : 1 - var/atom/movable/light_source = ismob(G.loc) ? G.loc : G - light_source.SetLuminosity(light_mod * flashlight_on, FALSE, G) - G.flags_gun_features ^= GUN_FLASHLIGHT_ON - if(G.flags_gun_features & GUN_FLASHLIGHT_ON) + if(!isgun(loc)) + return + + var/obj/item/weapon/gun/attached_gun = loc + + if(toggle_on && !light_on) + attached_gun.set_light_range(attached_gun.light_range + light_mod) + attached_gun.set_light_power(attached_gun.light_power + (light_mod * 0.5)) + if(!(attached_gun.flags_gun_features & GUN_FLASHLIGHT_ON)) + attached_gun.set_light_on(TRUE) + light_on = TRUE + attached_gun.flags_gun_features |= GUN_FLASHLIGHT_ON + + if(!toggle_on && light_on) + attached_gun.set_light_range(attached_gun.light_range - light_mod) + attached_gun.set_light_power(attached_gun.light_power - (light_mod * 0.5)) + if(attached_gun.flags_gun_features & GUN_FLASHLIGHT_ON) + attached_gun.set_light_on(FALSE) + light_on = FALSE + attached_gun.flags_gun_features &= ~GUN_FLASHLIGHT_ON + + if(attached_gun.flags_gun_features & GUN_FLASHLIGHT_ON) icon_state += "-on" attach_icon += "-on" playsound(user, deactivation_sound, 15, 1) @@ -686,17 +707,14 @@ Defined in conflicts.dm of the #defines folder. icon_state = original_state attach_icon = original_attach playsound(user, activation_sound, 15, 1) - G.update_attachable(slot) + attached_gun.update_attachable(slot) - for(var/X in G.actions) + for(var/X in attached_gun.actions) var/datum/action/A = X if(A.target == src) A.update_button_icon() return TRUE - - - /obj/item/attachable/flashlight/attackby(obj/item/I, mob/user) if(HAS_TRAIT(I, TRAIT_TOOL_SCREWDRIVER)) to_chat(user, SPAN_NOTICE("You strip the rail flashlight of its mount, converting it to a normal flashlight.")) diff --git a/code/modules/projectiles/gun_helpers.dm b/code/modules/projectiles/gun_helpers.dm index e86801c9d8c1..d58385d3edc0 100644 --- a/code/modules/projectiles/gun_helpers.dm +++ b/code/modules/projectiles/gun_helpers.dm @@ -136,20 +136,6 @@ DEFINES in setup.dm, referenced here. else ..() - -/// This function disconnects the luminosity from the mob and back to the gun -/obj/item/weapon/gun/proc/disconnect_light_from_mob(mob/bearer) - if (!(flags_gun_features & GUN_FLASHLIGHT_ON)) - return FALSE - for (var/slot in attachments) - var/obj/item/attachable/attachment = attachments[slot] - if (!attachment || !attachment.light_mod) - continue - bearer.SetLuminosity(0, FALSE, src) - SetLuminosity(attachment.light_mod) - return TRUE - return FALSE - /// This function actually turns the lights on the gun off /obj/item/weapon/gun/proc/turn_off_light(mob/bearer) if (!(flags_gun_features & GUN_FLASHLIGHT_ON)) @@ -165,15 +151,6 @@ DEFINES in setup.dm, referenced here. /obj/item/weapon/gun/pickup(mob/user) ..() - if (flags_gun_features & GUN_FLASHLIGHT_ON) - for (var/slot in attachments) - var/obj/item/attachable/attachment = attachments[slot] - if (!attachment || !attachment.light_mod) - continue - user.SetLuminosity(attachment.light_mod, FALSE, src) - SetLuminosity(0) - break - unwield(user) /obj/item/weapon/gun/proc/wy_allowed_check(mob/living/carbon/human/user) @@ -960,3 +937,15 @@ DEFINES in setup.dm, referenced here. if(!istype(target, /atom/movable/screen/click_catcher)) return null return params2turf(modifiers["screen-loc"], get_turf(user), user.client) + +/// If this gun has a relevant flashlight attachable attached, (de)activate it +/obj/item/weapon/gun/proc/force_light(on) + var/obj/item/attachable/flashlight/torch + for(var/slot in attachments) + torch = attachments[slot] + if(istype(torch)) + break + if(!torch) + return FALSE + torch.turn_light(toggle_on = on, forced = TRUE) + return TRUE diff --git a/code/modules/projectiles/guns/flamer/flamer.dm b/code/modules/projectiles/guns/flamer/flamer.dm index ee08fee0f845..13ccd03c3e82 100644 --- a/code/modules/projectiles/guns/flamer/flamer.dm +++ b/code/modules/projectiles/guns/flamer/flamer.dm @@ -404,6 +404,12 @@ GLOBAL_LIST_EMPTY(flamer_particles) icon_state = "dynamic_2" layer = BELOW_OBJ_LAYER + light_system = STATIC_LIGHT + light_on = TRUE + light_range = 3 + light_power = 3 + light_color = "#f88818" + var/firelevel = 12 //Tracks how much "fire" there is. Basically the timer of how long the fire burns var/burnlevel = 10 //Tracks how HOT the fire is. This is basically the heat level of the fire and determines the temperature. @@ -443,6 +449,8 @@ GLOBAL_LIST_EMPTY(flamer_particles) else flame_icon = R.burn_sprite + set_light(l_color = R.burncolor) + if(!GLOB.flamer_particles[R.burncolor]) GLOB.flamer_particles[R.burncolor] = new /particles/flamer_fire(R.burncolor) particles = GLOB.flamer_particles[R.burncolor] @@ -576,7 +584,6 @@ GLOBAL_LIST_EMPTY(flamer_particles) RegisterSignal(SSdcs, COMSIG_GLOB_WEATHER_CHANGE, PROC_REF(update_in_weather_status)) /obj/flamer_fire/Destroy() - SetLuminosity(0) STOP_PROCESSING(SSobj, src) to_call = null tied_reagent = null @@ -668,7 +675,7 @@ GLOBAL_LIST_EMPTY(flamer_particles) flame_level++ //the initial flame burst is 1 level higher for a small time icon_state = "[flame_icon]_[flame_level]" - SetLuminosity(flame_level * 2) + set_light(flame_level * 2) /obj/flamer_fire/proc/un_burst_flame() initial_burst = FALSE @@ -683,12 +690,12 @@ GLOBAL_LIST_EMPTY(flamer_particles) var/damage = burnlevel*delta_time T.flamer_fire_act(damage) - update_flame() - if(!firelevel) qdel(src) return + update_flame() + for(var/atom/thing in loc) thing.handle_flamer_fire(src, damage, delta_time) @@ -703,7 +710,7 @@ GLOBAL_LIST_EMPTY(flamer_particles) var/area/A = get_area(src) if(!A) return - if(SSweather.is_weather_event && locate(A.master) in SSweather.weather_areas) + if(SSweather.is_weather_event && locate(A) in SSweather.weather_areas) weather_smothering_strength = SSweather.weather_event_instance.fire_smothering_strength else weather_smothering_strength = 0 diff --git a/code/modules/shuttle/dropship.dm b/code/modules/shuttle/dropship.dm new file mode 100644 index 000000000000..cbca500f8f71 --- /dev/null +++ b/code/modules/shuttle/dropship.dm @@ -0,0 +1,217 @@ +/obj/structure/shuttle/part + opacity = TRUE + density = TRUE + unslashable = TRUE + unacidable = TRUE + breakable = FALSE + indestructible = TRUE + +/obj/structure/shuttle/part/dropship1 + name = "\improper Alamo" + icon = 'icons/turf/dropship.dmi' + icon_state = "1" + +/obj/structure/shuttle/part/dropship1/ex_act(severity, direction) + return FALSE + +/obj/structure/shuttle/part/dropship1/transparent + opacity = FALSE + +/obj/structure/shuttle/part/dropship1/transparent/nose_top_right + icon_state = "102" + +/obj/structure/shuttle/part/dropship1/transparent/nose_center + icon_state = "101" + +/obj/structure/shuttle/part/dropship1/transparent/nose_top_left + icon_state = "100" + +/obj/structure/shuttle/part/dropship1/nose_front_left + icon_state = "95" + +/obj/structure/shuttle/part/dropship1/nose_front_right + icon_state = "99" + +/obj/structure/shuttle/part/dropship1/transparent/inner_right_weapons + icon_state = "90" + +/obj/structure/shuttle/part/dropship1/transparent/outer_right_weapons + icon_state = "91" + +/obj/structure/shuttle/part/dropship1/transparent/inner_left_weapons + icon_state = "85" + +/obj/structure/shuttle/part/dropship1/transparent/outer_left_weapons + icon_state = "84" + +/obj/structure/shuttle/part/dropship1/transparent/upper_right_wing + icon_state = "74" + +/obj/structure/shuttle/part/dropship1/transparent/middle_right_wing + icon_state = "70" + +/obj/structure/shuttle/part/dropship1/transparent/lower_right_wing + icon_state = "65" + +/obj/structure/shuttle/part/dropship1/transparent/upper_left_wing + icon_state = "71" + +/obj/structure/shuttle/part/dropship1/transparent/middle_left_wing + icon_state = "66" + +/obj/structure/shuttle/part/dropship1/transparent/lower_left_wing + icon_state = "61" + +/obj/structure/shuttle/part/dropship1/lower_left_wall + icon_state = "46" + +/obj/structure/shuttle/part/dropship1/lower_right_wall + icon_state = "49" + +/obj/structure/shuttle/part/dropship1/transparent/engine_left_cap + icon_state = "40" + +/obj/structure/shuttle/part/dropship1/transparent/engine_right_cap + icon_state = "41" + +/obj/structure/shuttle/part/dropship1/transparent/engine_left_exhaust + icon_state = "16" + +/obj/structure/shuttle/part/dropship1/transparent/engine_right_exhaust + icon_state = "17" + +/obj/structure/shuttle/part/dropship1/bottom_left_wall + icon_state = "9" + +/obj/structure/shuttle/part/dropship1/bottom_right_wall + icon_state = "15" + +/obj/structure/shuttle/part/dropship1/left_inner_wing_connector + icon_state = "7" + +/obj/structure/shuttle/part/dropship1/right_inner_wing_connector + icon_state = "8" + +/obj/structure/shuttle/part/dropship1/left_outer_wing_connector + icon_state = "3" + +/obj/structure/shuttle/part/dropship1/right_outer_wing_connector + icon_state = "4" + +/obj/structure/shuttle/part/dropship1/transparent/left_inner_bottom_wing + icon_state = "1" + +/obj/structure/shuttle/part/dropship1/transparent/left_outer_bottom_wing + icon_state = "2" + +/obj/structure/shuttle/part/dropship1/transparent/right_inner_bottom_wing + icon_state = "5" + +/obj/structure/shuttle/part/dropship1/transparent/right_outer_bottom_wing + icon_state = "6" + +/obj/structure/shuttle/part/dropship2 + name = "\improper Normandy" + icon = 'icons/turf/dropship2.dmi' + icon_state = "1" + opacity = TRUE + +/obj/structure/shuttle/part/dropship2/ex_act(severity, direction) + return FALSE + +/obj/structure/shuttle/part/dropship2/transparent + opacity = FALSE + +/obj/structure/shuttle/part/dropship2/transparent/nose_top_right + icon_state = "102" + +/obj/structure/shuttle/part/dropship2/transparent/nose_center + icon_state = "101" + +/obj/structure/shuttle/part/dropship2/transparent/nose_top_left + icon_state = "100" + +/obj/structure/shuttle/part/dropship2/nose_front_left + icon_state = "95" + +/obj/structure/shuttle/part/dropship2/nose_front_right + icon_state = "99" + +/obj/structure/shuttle/part/dropship2/transparent/inner_right_weapons + icon_state = "90" + +/obj/structure/shuttle/part/dropship2/transparent/outer_right_weapons + icon_state = "91" + +/obj/structure/shuttle/part/dropship2/transparent/inner_left_weapons + icon_state = "85" + +/obj/structure/shuttle/part/dropship2/transparent/outer_left_weapons + icon_state = "84" + +/obj/structure/shuttle/part/dropship2/transparent/upper_right_wing + icon_state = "74" + +/obj/structure/shuttle/part/dropship2/transparent/middle_right_wing + icon_state = "70" + +/obj/structure/shuttle/part/dropship2/transparent/lower_right_wing + icon_state = "65" + +/obj/structure/shuttle/part/dropship2/transparent/upper_left_wing + icon_state = "71" + +/obj/structure/shuttle/part/dropship2/transparent/middle_left_wing + icon_state = "66" + +/obj/structure/shuttle/part/dropship2/transparent/lower_left_wing + icon_state = "61" + +/obj/structure/shuttle/part/dropship2/lower_left_wall + icon_state = "46" + +/obj/structure/shuttle/part/dropship2/lower_right_wall + icon_state = "49" + +/obj/structure/shuttle/part/dropship2/transparent/engine_left_cap + icon_state = "40" + +/obj/structure/shuttle/part/dropship2/transparent/engine_right_cap + icon_state = "41" + +/obj/structure/shuttle/part/dropship2/transparent/engine_left_exhaust + icon_state = "16" + +/obj/structure/shuttle/part/dropship2/transparent/engine_right_exhaust + icon_state = "17" + +/obj/structure/shuttle/part/dropship2/bottom_left_wall + icon_state = "9" + +/obj/structure/shuttle/part/dropship2/bottom_right_wall + icon_state = "15" + +/obj/structure/shuttle/part/dropship2/left_inner_wing_connector + icon_state = "7" + +/obj/structure/shuttle/part/dropship2/right_inner_wing_connector + icon_state = "8" + +/obj/structure/shuttle/part/dropship2/left_outer_wing_connector + icon_state = "3" + +/obj/structure/shuttle/part/dropship2/right_outer_wing_connector + icon_state = "4" + +/obj/structure/shuttle/part/dropship2/transparent/left_outer_bottom_wing + icon_state = "1" + +/obj/structure/shuttle/part/dropship2/transparent/left_outer_inner_wing + icon_state = "2" + +/obj/structure/shuttle/part/dropship2/transparent/right_inner_bottom_wing + icon_state = "5" + +/obj/structure/shuttle/part/dropship2/transparent/right_outer_bottom_wing + icon_state = "6" + diff --git a/code/modules/shuttle/on_move.dm b/code/modules/shuttle/on_move.dm index 7bd3bcb5df7c..15f1f6790591 100644 --- a/code/modules/shuttle/on_move.dm +++ b/code/modules/shuttle/on_move.dm @@ -114,8 +114,8 @@ All ShuttleMove procs go here if (newT.z != oldT.z) onTransitZ(oldT.z, newT.z) - //if(light) // tg lighting - // update_light() + if(light) + update_light() if(rotation) shuttleRotate(rotation) @@ -151,7 +151,7 @@ All ShuttleMove procs go here contents -= oldT underlying_old_area.contents += oldT - //oldT.change_area(src, underlying_old_area) //lighting + oldT.change_area(src, underlying_old_area) //lighting //The old turf has now been given back to the area that turf originaly belonged to var/area/old_dest_area = newT.loc @@ -159,7 +159,7 @@ All ShuttleMove procs go here old_dest_area.contents -= newT contents += newT - //newT.change_area(old_dest_area, src) //lighting + newT.change_area(old_dest_area, src) //lighting return TRUE // Called on areas after everything has been moved diff --git a/code/modules/shuttle/shuttles/dropship.dm b/code/modules/shuttle/shuttles/dropship.dm index 303d4c0494ed..d81484b0343d 100644 --- a/code/modules/shuttle/shuttles/dropship.dm +++ b/code/modules/shuttle/shuttles/dropship.dm @@ -1,6 +1,10 @@ /obj/docking_port/mobile/marine_dropship width = 11 height = 21 + + dwidth = 5 + dheight = 10 + preferred_direction = SOUTH callTime = DROPSHIP_TRANSIT_DURATION rechargeTime = SHUTTLE_RECHARGE @@ -157,7 +161,9 @@ dir = NORTH width = 11 height = 21 - dwidth = 1 + dwidth = 5 + dheight = 10 + var/list/landing_lights = list() var/auto_open = FALSE var/landing_lights_on = FALSE @@ -256,7 +262,6 @@ /obj/docking_port/stationary/marine_dropship/crash_site auto_open = TRUE - dwidth = 1 /obj/docking_port/stationary/marine_dropship/crash_site/on_prearrival(obj/docking_port/mobile/arriving_shuttle) . = ..() diff --git a/code/modules/shuttle/shuttles/escape_shuttle.dm b/code/modules/shuttle/shuttles/escape_shuttle.dm index daf91034036f..941785e60d9d 100644 --- a/code/modules/shuttle/shuttles/escape_shuttle.dm +++ b/code/modules/shuttle/shuttles/escape_shuttle.dm @@ -274,8 +274,7 @@ escape_shuttle.door_handler.control_doors("force-unlock") for(var/area/shuttle_area in arriving_shuttle.shuttle_areas) - shuttle_area.SetDynamicLighting() - shuttle_area.SetLightLevel(0) + shuttle_area.remove_base_lighting() shuttle_area.flags_alarm_state &= ~ALARM_WARNING_FIRE shuttle_area.updateicon() diff --git a/code/modules/unit_tests/create_and_destroy.dm b/code/modules/unit_tests/create_and_destroy.dm index 46f900eee71e..eb4672b84fc9 100644 --- a/code/modules/unit_tests/create_and_destroy.dm +++ b/code/modules/unit_tests/create_and_destroy.dm @@ -12,10 +12,13 @@ GLOBAL_VAR_INIT(running_create_and_destroy, FALSE) /mob/living/carbon, /obj/effect/node, /obj/item/seeds/cutting, + //lighting singleton + /mob/dview, // These use walkaway() after initialization, which causes false positives /obj/item/explosive/grenade/flashbang/cluster/segment, /obj/item/explosive/grenade/flashbang/cluster_piece, /obj/effect/fake_attacker, + /atom/movable/lighting_mask, //leave it alone ) //This turf existing is an error in and of itself ignore += typesof(/turf/baseturf_skipover) diff --git a/code/modules/vehicles/apc/apc.dm b/code/modules/vehicles/apc/apc.dm index 2d0c823dd638..d71db37074f1 100644 --- a/code/modules/vehicles/apc/apc.dm +++ b/code/modules/vehicles/apc/apc.dm @@ -34,7 +34,6 @@ GLOBAL_LIST_EMPTY(command_apc_list) movement_sound = 'sound/vehicles/tank_driving.ogg' - luminosity = 7 var/gunner_view_buff = 10 hardpoints_allowed = list( diff --git a/code/modules/vehicles/cargo_train.dm b/code/modules/vehicles/cargo_train.dm index ac22c0e79812..40085ad078ea 100644 --- a/code/modules/vehicles/cargo_train.dm +++ b/code/modules/vehicles/cargo_train.dm @@ -4,11 +4,13 @@ icon = 'icons/obj/vehicles/vehicles.dmi' icon_state = "cargo_engine" on = 0 - luminosity = 5 //Pretty strong because why not powered = 1 locked = 0 charge_use = 15 + light_system = MOVABLE_LIGHT + light_range = 5 + var/car_limit = 3 //how many cars an engine can pull before performance degrades active_engines = 1 var/obj/item/key/cargo_train/key @@ -24,7 +26,7 @@ name = "cargo train trolley" icon = 'icons/obj/vehicles/vehicles.dmi' icon_state = "cargo_trailer" - luminosity = 0 + light_range = 0 anchored = FALSE locked = 0 can_buckle = FALSE @@ -38,6 +40,10 @@ key = new() var/image/I = new(icon = 'icons/obj/vehicles/vehicles.dmi', icon_state = "cargo_engine_overlay", layer = src.layer + 0.2) //over mobs overlays += I + + if(light_range) + set_light_on(TRUE) + turn_off() //so engine verbs are correctly set /obj/vehicle/train/cargo/engine/Move() diff --git a/code/modules/vehicles/interior/areas.dm b/code/modules/vehicles/interior/areas.dm index 85ec4a319769..605b32079fcc 100644 --- a/code/modules/vehicles/interior/areas.dm +++ b/code/modules/vehicles/interior/areas.dm @@ -3,6 +3,7 @@ requires_power = 0 unlimited_power = 1 icon = 'icons/turf/areas_interiors.dmi' + base_lighting_alpha = 255 ambience_exterior = 'sound/ambience/vehicle_interior1.ogg' sound_environment = SOUND_ENVIRONMENT_ROOM diff --git a/code/modules/vehicles/multitile/multitile.dm b/code/modules/vehicles/multitile/multitile.dm index 7802d9a7edbd..20cf6217cc06 100644 --- a/code/modules/vehicles/multitile/multitile.dm +++ b/code/modules/vehicles/multitile/multitile.dm @@ -21,6 +21,14 @@ can_buckle = FALSE + light_system = MOVABLE_LIGHT + light_range = 5 + + var/atom/movable/vehicle_light_holder/lighting_holder + + var/vehicle_light_range = 5 + var/vehicle_light_power = 2 + //Yay! Working cameras in the vehicles at last!! var/obj/structure/machinery/camera/vehicle/camera = null var/obj/structure/machinery/camera/vehicle/camera_int = null @@ -167,6 +175,18 @@ rotate_entrances(angle_to_turn) rotate_bounds(angle_to_turn) + if(bound_width > world.icon_size || bound_height > world.icon_size) + lighting_holder = new(src) + lighting_holder.set_light_range(vehicle_light_range) + lighting_holder.set_light_power(vehicle_light_power) + lighting_holder.set_light_on(vehicle_light_range || vehicle_light_power) + + light_pixel_x = -bound_x + light_pixel_y = -bound_y + + if(light_range) + set_light_on(TRUE) + healthcheck() update_icon() @@ -364,8 +384,8 @@ handle_all_modules_broken() //vehicle is dead, no more lights - if(health <= 0 && luminosity) - SetLuminosity(0) + if(health <= 0 && lighting_holder.light_range) + lighting_holder.set_light_on(FALSE) update_icon() /* @@ -421,3 +441,19 @@ /obj/vehicle/multitile/proc/handle_acidic_environment(atom/A) for(var/obj/item/hardpoint/locomotion/Loco in hardpoints) Loco.handle_acid_damage(A) + +/atom/movable/vehicle_light_holder + light_system = MOVABLE_LIGHT + +/atom/movable/vehicle_light_holder/Initialize(mapload, ...) + . = ..() + + var/atom/attached_to = loc + + forceMove(attached_to.loc) + RegisterSignal(attached_to, COMSIG_MOVABLE_MOVED, PROC_REF(handle_parent_move)) + +/atom/movable/vehicle_light_holder/proc/handle_parent_move(atom/movable/mover, atom/oldloc, direction) + SIGNAL_HANDLER + + forceMove(get_turf(mover)) diff --git a/code/modules/vehicles/multitile/multitile_interaction.dm b/code/modules/vehicles/multitile/multitile_interaction.dm index ca2b5922ecf0..f956d64ebf12 100644 --- a/code/modules/vehicles/multitile/multitile_interaction.dm +++ b/code/modules/vehicles/multitile/multitile_interaction.dm @@ -209,7 +209,7 @@ to_chat(user, SPAN_NOTICE("Hull integrity is at [SPAN_HELPFUL(100.0*health/max_hp)]%.")) health = initial(health) - SetLuminosity(initial(luminosity)) + lighting_holder.set_light_range(vehicle_light_range) toggle_cameras_status(TRUE) update_icon() user.visible_message(SPAN_NOTICE("[user] finishes [repair_message] on \the [src]."), SPAN_NOTICE("You finish [repair_message] on \the [src]. Hull integrity is at [SPAN_HELPFUL(100.0*health/max_hp)]%. ")) diff --git a/code/modules/vehicles/powerloader.dm b/code/modules/vehicles/powerloader.dm index 11beaf597985..88d917b90b3e 100644 --- a/code/modules/vehicles/powerloader.dm +++ b/code/modules/vehicles/powerloader.dm @@ -6,7 +6,7 @@ layer = POWERLOADER_LAYER //so the top appears above windows and wall mounts anchored = TRUE density = TRUE - luminosity = 5 + light_range = 5 move_delay = 8 buckling_y = 9 health = 200 diff --git a/code/modules/vehicles/tank/tank.dm b/code/modules/vehicles/tank/tank.dm index 3ed4e6623ea1..ad69f80cdfb6 100644 --- a/code/modules/vehicles/tank/tank.dm +++ b/code/modules/vehicles/tank/tank.dm @@ -36,7 +36,7 @@ move_momentum_build_factor = 1.8 move_turn_momentum_loss_factor = 0.6 - luminosity = 7 + vehicle_light_range = 7 // Rest (all the guns) is handled by the tank turret hardpoint hardpoints_allowed = list( diff --git a/code/modules/vehicles/van/van.dm b/code/modules/vehicles/van/van.dm index 5e9e467bf56d..1124f5348140 100644 --- a/code/modules/vehicles/van/van.dm +++ b/code/modules/vehicles/van/van.dm @@ -41,7 +41,7 @@ movement_sound = 'sound/vehicles/tank_driving.ogg' honk_sound = 'sound/vehicles/honk_2_truck.ogg' - luminosity = 8 + vehicle_light_range = 8 move_max_momentum = 3 diff --git a/code/modules/vehicles/vehicle.dm b/code/modules/vehicles/vehicle.dm index 0681b7df05ac..3a79f14de51a 100644 --- a/code/modules/vehicles/vehicle.dm +++ b/code/modules/vehicles/vehicle.dm @@ -5,7 +5,6 @@ density = TRUE anchored = TRUE animate_movement = 1 - luminosity = 2 can_buckle = TRUE // The mobs that are in each position/seat of the vehicle @@ -166,13 +165,13 @@ if(powered && cell.charge < charge_use) return 0 on = 1 - SetLuminosity(initial(luminosity)) + set_light(initial(light_range)) update_icon() return 1 /obj/vehicle/proc/turn_off() on = 0 - SetLuminosity(0) + set_light(0) update_icon() /obj/vehicle/proc/explode() @@ -262,10 +261,6 @@ . = ..() seats[VEHICLE_DRIVER] = null -/obj/vehicle/Destroy() - SetLuminosity(0) - . = ..() - //------------------------------------------------------- // Stat update procs //------------------------------------------------------- diff --git a/colonialmarines.dme b/colonialmarines.dme index b28138cdad12..03f1e780e4a1 100644 --- a/colonialmarines.dme +++ b/colonialmarines.dme @@ -1,6 +1,6 @@ -// DM Environment file for colonialmarines.dme. +s// DM Environment file for colonialmarines.dme. // All manual changes should be made outside the BEGIN_ and END_ blocks. - // New source code should be placed in .dm files: choose File/New --> Code File. +// New source code should be placed in .dm files: choose File/New --> Code File. // BEGIN_INTERNALS // END_INTERNALS // BEGIN_FILE_DIR @@ -152,6 +152,7 @@ #include "code\__HELPERS\icons.dm" #include "code\__HELPERS\job.dm" #include "code\__HELPERS\level_traits.dm" +#include "code\__HELPERS\lighting.dm" #include "code\__HELPERS\lists.dm" #include "code\__HELPERS\logging.dm" #include "code\__HELPERS\matrices.dm" @@ -209,7 +210,6 @@ #include "code\_onclick\hud\rendering\plane_master.dm" #include "code\_onclick\hud\rendering\plane_master_controller.dm" #include "code\_onclick\hud\rendering\render_plate.dm" -#include "code\controllers\_DynamicAreaLighting_TG.dm" #include "code\controllers\shuttle_controller.dm" #include "code\controllers\topic.dm" #include "code\controllers\configuration\config_entry.dm" @@ -369,6 +369,7 @@ #include "code\datums\components\id_lock.dm" #include "code\datums\components\label.dm" #include "code\datums\components\orbiter.dm" +#include "code\datums\components\overlay_lighting.dm" #include "code\datums\components\rename.dm" #include "code\datums\components\speed_modifier.dm" #include "code\datums\components\toxin_buildup.dm" @@ -440,6 +441,7 @@ #include "code\datums\elements\_element.dm" #include "code\datums\elements\bloody_feet.dm" #include "code\datums\elements\drop_retrieval.dm" +#include "code\datums\elements\light_blocking.dm" #include "code\datums\elements\mouth_drop_item.dm" #include "code\datums\elements\poor_eyesight_correction.dm" #include "code\datums\elements\suturing.dm" @@ -1687,6 +1689,21 @@ #include "code\modules\law\laws\major_crime.dm" #include "code\modules\law\laws\minor_crime.dm" #include "code\modules\law\laws\optional.dm" +#include "code\modules\lighting\emissive_blocker.dm" +#include "code\modules\lighting\lighting_area.dm" +#include "code\modules\lighting\lighting_atom.dm" +#include "code\modules\lighting\lighting_turf.dm" +#include "code\modules\lighting\lighting_mask\dynamic_lighting_source.dm" +#include "code\modules\lighting\lighting_mask\lighting_mask.dm" +#include "code\modules\lighting\lighting_mask\lighting_mask_holder.dm" +#include "code\modules\lighting\lighting_mask\shadow_calculator.dm" +#include "code\modules\lighting\lighting_static\static_lighting_area.dm" +#include "code\modules\lighting\lighting_static\static_lighting_atom.dm" +#include "code\modules\lighting\lighting_static\static_lighting_corner.dm" +#include "code\modules\lighting\lighting_static\static_lighting_object.dm" +#include "code\modules\lighting\lighting_static\static_lighting_setup.dm" +#include "code\modules\lighting\lighting_static\static_lighting_source.dm" +#include "code\modules\lighting\lighting_static\static_lighting_turf.dm" #include "code\modules\logging\global_logs.dm" #include "code\modules\logging\log_category.dm" #include "code\modules\logging\log_holder.dm" @@ -2161,6 +2178,7 @@ #include "code\modules\security_levels\security_levels.dm" #include "code\modules\shuttle\computer.dm" #include "code\modules\shuttle\docking.dm" +#include "code\modules\shuttle\dropship.dm" #include "code\modules\shuttle\dropship_hijack.dm" #include "code\modules\shuttle\helpers.dm" #include "code\modules\shuttle\lifeboats.dm" diff --git a/icons/effects/alphacolors.dmi b/icons/effects/alphacolors.dmi index 02316fbf64de161a7da31202f1c857995c09211a..6bb903862ca06608fcb03529c6c775105310f8e8 100644 GIT binary patch literal 406 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?I3?vN&YJLEzWmO>&B`&GO$wiq3C7Jno3=9=> zruI2<9WoGcx&Cvx#I4+kQLl}pGbif3kyZL>)+qHB`~TPZn%k>0$Y;*}J&&q)MCHw27PIluWKI@k=^q^IW_@CjXD* zD$hu{vn;*4R&=eZh~_;cQ&-sS(>-Iu-~WwYPj1XP?OH7){OBr2`a$OEko~IK4AmJvszr83V&DMoXKEf^!AIoQApsQoR{&KH literal 395 zcmeAS@N?(olHy`uVBq!ia0y~yU`znA6*$;{q>kUBDL|^HDkP%BCAB!YD6^m>Ge3`k zp<>R|K1Z%Y1|qE2e=e`sa$CW-^K_1i>!ytN0w=?nx3nKGX}bRhYfu` zBrjn1KKYu7efR4XS0W_&&Svf_cGgPOEHGGdPAEU-L4v31yvJ}P@Ru0Ln~5zWLSAehk5!NBaoBB7vkfI*Ovt%JkB!KHywiF#6h Y7y?dm%)Gkt9mp39p00i_>zopr049f!RsaA1 diff --git a/icons/effects/light_overlays/light_128.dmi b/icons/effects/light_overlays/light_128.dmi new file mode 100644 index 0000000000000000000000000000000000000000..22dc0b0108702f5dbc74a2d1170026743fa7dd9d GIT binary patch literal 7040 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 literal 0 HcmV?d00001 diff --git a/icons/effects/light_overlays/light_224.dmi b/icons/effects/light_overlays/light_224.dmi new file mode 100644 index 0000000000000000000000000000000000000000..9fab531d1a691cf1cc53c3f54aec69c2e4bfba09 GIT binary patch literal 17004 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 P00000NkvXXu0mjf9iK$$ literal 0 HcmV?d00001 diff --git a/icons/effects/light_overlays/light_256.dmi b/icons/effects/light_overlays/light_256.dmi new file mode 100644 index 0000000000000000000000000000000000000000..701562efcd8f85fea23b0bf9475c33698c57c338 GIT binary patch literal 21365 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 literal 0 HcmV?d00001 diff --git a/icons/effects/light_overlays/light_32.dmi b/icons/effects/light_overlays/light_32.dmi new file mode 100644 index 0000000000000000000000000000000000000000..5269b1fba36d8ad0dcde7862da177a51a4632e26 GIT binary patch literal 1140 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 TI$=2z10LMB_#1QAE$RON=Yb3V literal 0 HcmV?d00001 diff --git a/icons/effects/light_overlays/light_352.dmi b/icons/effects/light_overlays/light_352.dmi new file mode 100644 index 0000000000000000000000000000000000000000..f895792da42d63143e15641a198443e290f3671c GIT binary patch literal 35566 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 M07*qoM6N<$g7@%=qW}N^ literal 0 HcmV?d00001 diff --git a/icons/effects/light_overlays/light_416.dmi b/icons/effects/light_overlays/light_416.dmi new file mode 100644 index 0000000000000000000000000000000000000000..6a32ecbda661814205e3c722131b7ebcb79a571a GIT binary patch literal 42716 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 (w-GXaas-#7das;I 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 literal 0 HcmV?d00001 diff --git a/icons/effects/light_overlays/light_64.dmi b/icons/effects/light_overlays/light_64.dmi new file mode 100644 index 0000000000000000000000000000000000000000..37fc5084abcf3eea7d1fe167910834dc3992ce74 GIT binary patch literal 2482 zcmV;j2~GBiP)V=-0C=1w$Gr-GAQT4B+4~e9wnssXDLN-?Eh-MvEVtLrRvlNveV> z6iA8(rqOd?0L^~<_@V!ES^g6r*=#nmxRmEEd!B5!+x^IW7c0L7fDm}5PGBAj#}st$ z^UY?n=Wo9Qkc$BTq211Lo>g)0zGzt`>AihpFI^6dF9Q&Qv(C}Zi{Jc=1R>QI{0+x5 z{I^Sz{3NiXf%3(j}#__f`ucut$m z=46#P34lWQ9O-pCHvJ6%TZ3f~2*5i8v0!fy{22hewDV;zE-EN1Z2^U(;Im741nqWjP^y+V{2FKn)~yFcTy#ef-nidi10LaD}5L#3jM7e zUk3nJ0FNHRg1aTfEx3=@4Fs#yvR$94V~IWk!YBX}!mrd>WeZQseWN}o2Fs&w5T+Pl z7QE^U5T^EI?kN)0{@7noYJ6{6?s(}S30A_$)UK%_DaIbpw&7>-nmRi76 zv0wl|5#*Tm27m$1U8~>K4``?k1iJI1U{?jgm@6?a#Y#41Y{XUM`OdU<_{t^Jchr*iy7QPoEs~T7cqET|Yj>eKL<0XB9P-h%s__Tff- z+7bX#SL#oCUfcKV1{qqj&vc; z8N<0$x<0eOBY3T0@Z)0(&H%{wavs3xag`*Y+R^?{1qtwNe9wKjiSJ%%$e_7non%0E zg45jVs8#qorT52jf_Xf~6y^))E}vQ-+&X@!?9YJ(Qz~HElFBrORtx(2ocUEougct1 zY4Ze&Mv?*3Q}n}=Fb|q%jhUP50l)+WnZN|cI$AR!g{QwRKRN<}h2(GZ`0c%Y!@_eA z$Ue7ZGwsj81urA+&+s=}GJzg~_f_t0YV=tumB_H%ZjuI?cE(XFGgMXdI7@_Gh*Sc? z>1YK^CHSerS3u;HJmZt9U(2{JjeC!c74;3mJYLQOCqGur%raQ{jPMm0shXLDtp{xgeP9wy-L6`>t)9D7sX)#FVt=ask20XT$?FN7LB;3pkFQAq#Fz@?NAqKub$QW{1!D&F9N|;H z$NDffFli(YWsVFfX`aF|%i?1%S9t-GBS1D(mUv9)F{@qW04y~7^o%wck$uv3yWM*_ zd`KJPgQR-}g6HDb>Zh)&Ne7u`_cc~HAht(jAQwxsQh4qqNG2TAJyXp7FzNOZ)yq`Q z06l3q?PLJrZ;S;?2}l~_v_%yD2`v{<$&_ku(VlEFSFq5cKo2>ygQSgtJY4X z#VX-5*H896Mtx{4neYIxxSM1U6U?Q<4y($y?leT3AHQ$aop9@W-SM;y=`r#;M=%#i zAC6Q4K?B`mLA5TBD)6dq1Al{FTni)+#f^$Xvi{dcvWpDI6bBJG5hF!ESOd9m!v-dgw@b3Re+J;Ug~e7 zs}@I-1qR_s{VYrxys;6?gF!JeNb zj6CTA>3Z)`83>&;`XvAW!Ny4%1~C4OQ_{+BSNjDM0I9E|xzue2&<$qn@qqg%yx)7) zHo3Iwv*P-c-{$&ZE~bpBfIWb%_gE1206=o&Y5AwJLDK+06{OA{BtQuOg?A|JrK+)= zqJF>MXWiu3;4JV${gJJLy7m!vobJCubb>lZ8JD zzz7HqYu#}h8oNCDZyG-@wNdvMc(2>s=#(HNAepQw1D>-1C_oTCL>74F=+5QpY;JSQ zASzj4AgUw?sm@8(r-VNlfC7ZQhAz;%y4*=ll(<%xf0&T^xyV!nGQsDs#l44#&S(BH zGCSv=qs1R6a@E!oB!vmNZh}mamq;op`=}~7n3jpcte~pbTtz|Sxbx33T9`_yc zd*{e;HUKUs{BMvs0RHA@q#*;SS_w=qdHS#YZ_vdZz*IVg^2{;;QgLqz$ROsO_g?Cs wqhDq~RW9}4;W++p|96-rI=bKdhyOkPHv+x>4op1J82|tP07*qoM6N<$f(ezScK`qY literal 0 HcmV?d00001 diff --git a/icons/effects/light_overlays/light_96.dmi b/icons/effects/light_overlays/light_96.dmi new file mode 100644 index 0000000000000000000000000000000000000000..b689a137016322424accea3488b7cd02c6c846ac GIT binary patch literal 4643 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 Z{{vX6W?B4;ZxR3i002ovPDHLkV1k{4F%AF# literal 0 HcmV?d00001 diff --git a/icons/effects/light_overlays/light_cone.dmi b/icons/effects/light_overlays/light_cone.dmi new file mode 100644 index 0000000000000000000000000000000000000000..75f322a9371748a733958ba34c81728cb2b5bc32 GIT binary patch literal 19272 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 OB?sXAJzG5@bN>P3h2ZZ1 literal 0 HcmV?d00001 diff --git a/icons/effects/light_overlays/shockwave.dmi b/icons/effects/light_overlays/shockwave.dmi new file mode 100644 index 0000000000000000000000000000000000000000..c22acfa1d59e8e48854ee78ea250e0675eaa6c1d GIT binary patch literal 655732 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

*Ef!4uCj;3rEY4Moh0df4J?Mxmh)1s*p; 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

C6;G4n;Czyx^&#*dAGTox=48!a( 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

FF3V`HsCto}5q2f7cgLvd197G#uM5Y9woxU|aU zt1-D)5%|<3(g+{B4KTUyifoLBa<^$ad+kE^#Bw#fXV5t63IfH-@0lbEOArj{^qmH; zKX+PQZR;A)SXWN(HYGam_HRweYpjMAh-Q@t{4*D7%DS$V)T@`yx;|N zUWk~R*LYnV#HZULE5iWrdkv4S-tfh@l`qZ4joR}!AHML~TUOyLKiq+iJCMMW2h6)+ zBXW2)kw@&>OVx2{deouClVT6uSI{Le1uQR_TK5 zhQ-YVKb>VKP{jL^2BI<*O`p22)XUY=ADXs0?OFPG1-s@IaAdT+rMm}_7-Pb3P~H3L z)PquYB9Cb7rHni?GnGzqSPX|Y77f+K?{TqrK|Wwlmu1RvtRZ?>1(2ViQ7;3hXbxc? zqtB0g%_Yfd5fV{!8G99%PKyg)lY_{mYJsjoL0_~E){Fc)#RzuG!*2`E?>GY9HtCm2 z)(bb$9t_MX&c)q}AyKRUH^0mK<;vW|Y*OF1)`#Ng>_UBBBX3c5%U*R7m4h2Hmd<|i zzyO zxE|h&DVc=T(ryohu$=*5oYNK_u=65gA1g{Bh`BjMFHv8B_|eCslKw$1ML9x6jlX@N zmvZ0;^ts=3aWndt_dqIb?OzmJBTPyC8O5s-JuTd=q8W0sjRhtOd1ez-OW9!Xv}b36 z>>Rg*bXhH1_MwXW!x82=mLqB@>a6F{_4OWB!`cJz*glPzJ2VSmTzOm>;Qo+_kV%*V zC;01*DcnBYJBcH?(G^fi;UcG4~CA%c$L(+*K5Ht3f460ziKA zc#pyPs(~SK0h-#Nq*v0F$AQ9ZP9O@i3@{xKA^K#v`f#~T7Gs^xm2C#deY5VrlW*4* zlgmJ-^KKLR`hQq}(|mw>;E~<@A6x4nDoDjS*f4Sbu>j*EBwW;Eu)8|;HPPL1jL;0FZc48lT&6vHr6Re3UKu7zcDddVP=ie_5Z zZ>iw7N)S3lYxpnFicA0YRZ+84Pg|4qqtG|!dE)h2j70s{_e}iGGP32v3)N44HH95w zXMiDL9O-flQ-3$GQ%nK7R(yE?!)?vmfAE9?JMe-)k^k(5e>(M&5Ra*C6W>AtDz-u9UaG;o7A&jg9~@N@^nIy@nzP;AyiGhP<<= zim0w8GxH}h%CVm8)rS%qk~eQ>OSJNNd@3x}YQ@aB+5-YMY9n=-dla}FaHH+}F$b&o zJyjjkzj;~G=T)0?H0+rkrlwqV#NglsDZgW+v155b2^E;cXiQWGq^R?U;xh1JlidHY z*h}9* zA!>)6Zr;(^HZ3fa2M$VgtVdE=PW{KXF9eg#=S^`BE;hp@oy-!tjdIQebo1(Z{~nvX z{oJIgAOdvjlw4Oab=~A#wk8&hpwUaJoyFsF{AO)B@cXM`EqTgw=>$T!Tw`q{G1MA< znhMbZJBR)hd+EtfA!bWj<)bNY@-n?9t4n`Ag578X035&xx6nBhG<#^{WC2M1tRhhZ zC1k)I925V(Xhoi5e`PqHbcnWT>$>1^8t`Z&-w2T6Lp%(1Wtozgd)<5qof-(XryT!X zdwzq|1i|Lk58e8fhvgJbj%`FsU*$*fCVfpmo znC2pjX2k^SnxMQf;Ij%kQ8h-t2%5X^09R8*R9_Z78W5+w>VdxLQBqH}Bx=LjPsChD zU|uDYL-)Ts*4R;Pr!**dYd@30H7CXF)Or=EM5fi%yo;>qYne_jZp?b`$p4isu@ky( zuEg@;+clCZsk&w8d?O^5jl@BxuF|1ih*5Va(-Kbo6PidSRhKUmd^v$pKZ0dJiy@0- z1zXb+kX_p zZ=JJ;gu<^7d_SklBLUG6G3v7MdXsQ6`&?yY{flTtSVqPvaYUYu5KZW*9V@x>kxyec zgK(mFO`!{EyU3*xse6Yj&!LX0Ipw&|zJ%Zm+=y$|3Hwuh280yR%`9DFf;C`9)%l4k zqZbd`+N|=+t~J(!+MJargwPf@t-u@Ig>0|Sc=3pc3|`W-qFm&WW}C+yPfi0HpLje= zY-tSmg_n$h=pt?jc;k#pb6LPYsCwB5WJ{_{xZ% ziH_h(aYz|l@uE=h(n#a;Y0Fn*DatDb?s2+Uz$$=BE^nS@Fv-aIyrlK-%PPD`fmf}O z!$UKqlQ7$q-@tT=gt^GDaLYJyn5*$)I`fw=Xj)B1RTV)iT1><7PZl+oqk`SYRLn`3 z%4uR^bN;x_GH9*^lg~C&mQty)X1xBnS>IS9=nw1p)2~O+`~cnjXD0-`j)mwF8OwNr)Li>O3hAfFVQUv-x7K<(r)*! zCdRm9{ONDQ*|oIsn`5nZ{hREwl?pZdWHtoJ5Sy9%i@-x`>Z7Ce*? zY$(7Cnk8GS0I>-=+TELx!H?);ytD2m2??wn6;C0joq%ARf&V7yT8H*=#K0H9P6AIM z)L$@Lb@1)?CD_e8`!dV77F8>(3E)%2ZTU!|nL_8{XD{G|ls=bB%A^Q(Rr2njJE!g} z)Q+g%IsM7Q9YywHZq@SY$T=n>ao@NVz>Wuy{gV#_`_VmDpYnd@_sZR!DrkMNSK3D} zxQOq#55QgGgFbX3eH^e>5oOqDI0acfIol0CarV9fZg}jMIwtlt<%ZWBIjtma=#UWs zesc6A+R76Kp;i@;j|LDtaO%*^B3q2ym^$J`@8sFBK=?j!8USw9qSQ7Un^_(%XUg?f+#DLo z+Y9)-C#%sWk-{%%Eo2-M=iq_>%|B`=vtL*Im^s-kLxRfiGlP_NpA6!WwuTPf5G_6o+Ja#>%) z^f~se`b4dN?;EGX#C+&5nmL{LzCI5(m0hSH*aT6tPi!l^wvr^ZhaNH!?1!nTFj86C z;fr_#-MnI8)qz!DVB0;83%r!zQIVe@eSWr6wb+r{46&f@RIb;*pL&%#Z`~U3C>DQ za%F-Zn?L*X`Boi2dEvO9=gBB3P6^gGrr$5qUp+O!T#oXJXX>;A>p}Q&9x_NmM8dFm z6>u0|6o~kj{s|(vAzxXoVs>&|hsP?|j+ueHO#w(%0zztXacO653&yOIiE zQrd*eH4w68Mj}W5AuPx2=6+WYGUd4-aSss1A`l{k zaGp0{L9I}Uy>yS2VSrrg{)7-~^*nn1YO5ioDL{1vK{cf=Ms#-#3$6Tm&(7mV{CyO^ zxR+_1mzjm11FSbhyQ;e844-SW<>=e#bFZ*yTlb-2MH(T805H!ty zweG)n=_C>=CX|ldpsh9o%W8r@273&AXzpt{(TE^D9YtXX_Ehvn3-9S~Y?KK~quwqo z3s7!CYk`_Fh<=2hRGfi<4`#yL?tsIbSU8hMz_=&Y9y5X4yukaTF29!3-}nVR;~&Wn z<7<5!J4cZo@J;Miq(h%~1Au`dTUr>-LZQ^2AgSmo%=h#&y#Z%+WuSC8cCG&-y-oLdClZU zG=V6&Vn@E*YcHqKHfuk=Y$9dU9@ENKx`fOPQ2D$+WtdzN`%;Zf#j(ab%kT8pT|X%I zjrVKw7l(d{e{sTlEVF}6W4snxK$oo3N;#> zNFt!9Dz7x98PpkrfcZ>VC0N?SP6Yn*@}9N zquKyK@NO85XUoEC99O$na9o8F&iZ*Mo zaH7E7JmmS{7~yxtvyT~I_4DWTG&_gMPbNKJ9S~7m>R0M@yWgvy1Csf>-S-Ul0^a1@ z5KH>A1iTaTF+a+EJPz6aZhJX@iG1Rgi+oV|{gAqND|PX2Kil=+_BOiTe0Fy`Nhr7j;XKheC1E)9fSO$KTk!njkYUabBC&%H}6xZREf3s6e2-0 z0ddhE);mP;Nyp;$qj5SDahF-57a_(4SfE(;cL&QllVY{(!X#PE1Zin#UQT(hjS}Mo zc586A{}@@M*mq*ULD&l~+ReW`MUno(JqW2CLrDyAZk6suyYSM1K-c=6HG`be#hF z;E)A0W;i)fR$r%BA_Mmpo2+jxq{P87L~I8b9vVz89Gy|SdV@kj>?J>*Wbfj*^jebv z%wdqLjKY?}`2Jb9L~KZ6*fWA$$n~pt03k};-EZ-E*iy1*l4*|#Oo2rRq3yo0vB;RD z$uO3}u2(nly-KnMax;)8pZ2B~8XbTR&O0Yp>blEl=3+hYQ7{e+o%}QW{GU$Yy5`?h)n0qR5oKEL zQHM``Lcf+F{F}kYG+#rvG3iIYf!lI-K`95nqShMn^62NZ?M!geMNZF6<~qy-%LU~(Rc}z-XJ6wz1j}p&5n6jz!#fAukRvT#DWbq5r zHT}X5(Q<(loj(#Rfsh%~{~83=g(}}acGv6<{1x~7-LEM~p-aqC_lSkr={0)-^;*|C zdyW}gpj#nUql8#!WCXVqlZP&+*D7&dVK%%gyznN-j_FP@79*r9OJl?3oYP{=%QS3B zWUZi*;j{sDPw02ls8@8?J_nq*OgwmZLXvVC9|PbjJt74Wvfwk-OaU=0?+$br9_e74 zq(<-cd=M)nm~XvbtiOI(Y>2<=n80i#yIYEWu=z4we{ZxRmHW`MF6Dgwb^tj|^VRWK zGsxo??KO|!TYjMXZWv^8t-|CPo*XNQn8K4l++}WiOq^XGHXUgk^SHzarM}_w^TZ{K z%xZE#0r&lL3}HK+i;JiO02W3MG>VjK@0XOyP?B#;r3Sd?q7OS3kKsT}1_E{5ln5x0iz_k{Z{^`1Av|)Nfffm*f{l z>itya(&OK)@5ImNo%AiJVKz|~oy>{HgP{(lEO~O=i&axKSa$5<8tyQDB0$ud7aPC6 zi@1Dn7{PeaZHEwqF|3YvMl?E+#GjoePd0y*yE?q3%h4|ErHjivW6R=b!tA;<5qcSjb~nSM=_B6$aEay0uq+hLat>hmTv9mr<7w4nb@W}osz{8?MnL~Hs%{1Ro`=GJVN z@Yd_Bsy6!qznt|LX`3&Nx3_VNB9oD-TUf!`MyH~W*%&3jEr)fwv*xE2)JL!A^a283 z@_)unC5T9BMMhHj=-dnF==SGi9m7(3$#tEQjVdM2hdplOJ^st!wVQhRirrVy_6G(i zafbW$p^$klgfzZg2^1@2Z|scc5n}HKzYDA5(D0>mUKBX1+22Y7e&wFI?R?KY3RDb! zT4_OQ7@aKt81s%F*&B*NwEiWTI@gWZ8{@WuWwInOjaAs2V9g>Vsm7lLK8YX>cU?5j z`%4Kk0B(>TLMWe;DNfBBM`1ab!aHM41M6cog68>TKV6iom7eg|d4<0Q_ry6)IfK}_ zCD0K^>OTWS!dnWP3iA^qrCrWanmTt8SyWX|t^Wb}0jOQa>x<(78%nW`z=N=FwQWKm z%yJa@G>|5fLhuRWSi`vwO4Z&mbw@YF?`sEc^6bIr-h<}|DoJlAV%Y+qR2aH{TzV21 za06uMut$prMD>JnNZT9(>9!S=ypYWv(u0V8(=A~fQh3#W4}wbsK2%YCle6$ONIEV$ zkS`$m)ybvVfm1{X+RQliPAgux_>i;qrAxA4h7qr@aZ?dab4C0|-8hlf* zTtYP`DgE*)UKPo#WFPA`J3xZ1={#nUM(>wz2>WxENQM%e9 zF&&z~0kW(`N|fXLr!?mgT~x*L?HQeJJJE}1lK15 zfEfk`&vTvdHQ#9GTNdw@jM)mz5(?26Hk>a%mOd5)Oiq}|j)(D669ApGbxGiF2Pm6w z$7pQ!*&-wdvN*lv*`NX@(bi|6>kwGHf{HwTk98~M8=$yS`5d;RDJgvRQzM<82(EdT z4MsPM)rfSMdNYqdZhr}4;1I`^MF*{Z9DR194WXgn5Mmp5^3gwaT$>Y42$&Hi~weu)!K6=#e2al8pFbg-Y~;`Tu*>m6Mg&JJq104&Q}x z+fR~1KR*yAe)Ii10v}@%;fVWWtIyZ=v;vit^jPyROyLNW3sHD3KJ5H1Y8%h8;KGjHiNny z?4}8H_T;CsY=R0uA5Eq0XtKu9$~sDAj8sRaUWGLE=s7H6ao1nrJ;_-oQ0)Icb3+k~ zIS?xjGWP8J%}8oGQ63F0f+kC*TRUZ^h5`CkR_LUum%-i#t|Y+=3wU~Jk*?rP7E!13F4$h@h;xkV}sI>LMg<+@HNi z9g=zy-(r|<% zjlV!n9Fnfcro%kJHvDEX#u%X9+?2GZeWOZ63YuakH+VUwq3$}dmHUIH3<6NfF2=o> zf>aeT$vJbw$E;q~dhchau?J9ACa2A!3{u(sC)lnVxXrxYp%~hzeeAhA*1YvPe*Q!A zTKqH2_!mGiK-pSXVVi5v9`L@}WvAhu!>B~RB|FW6GQrY1(K>}n)#w}CJ6_GUg5%J& z{sWybnduTlP|E$i6ansXvGu6WL=K}{z*#bJ7e^{~7*hkde?N;7Kk`@Es5wtt8qr(R zsYBq>?2Uuqy@`8}{kX#Nu;zL4G@ZHEj%*B|a;+*v?cEfv z=Yu=@Y(Z?-SHq+9H6Wa8ksZ{5M$U?~AP@Sa>CFX;^n+3E>6r$h&ssvYu~5K7J^-6e z8A(yj1NdUTADjHK8Y;w?bi;SDLJR@tUo}TJ9~a#}`YylzWmmj}!#EDT;_u}u$n#8# zy8=vR+d)d6ZIzjcs9-CP!EuQx=7f^iLi>AC+Q-QOQ?!h)BkFSEIuQy$9ay`A9H=HE zCS>ZwEe6!UJYYU>U5`X@8^JIIQ~q{@g;;7j4@TMY7sP70rB-7V-LbsWgSIySWdL$>bJ8^GqeH4BKES(NM_+A?n zeU(~FP(61-(R(nU@UPD34@L>p{Y3_tnGT`@-#jM!8HBV6T==SQS(JzVq}^V)W;r}K zz)r$mgZO#~kEMw59a~ew9K@!_-X&lqXn!^5i5iWjErz|DP1lTRJM)2d>fj}VFA^iZ z-D6E9iI_t|AM`NW;VZ^9?>(v6kn zk_H0i->i|V_C0{*X?%03qidK$g$TIZ`@uxoJFcO!5Vd8nB^f~Uao7}Ry;9>V?dZ)5 z>uM`$nW4RuX!hVEcO&USdKV@A7Q)SblR&KN!kBM$t z5A=JBTzThcD9aE{PA`2i4T8-~md+o0Mh$P9Nr5BQEu=NOc+pYq?C%euz}k3(_V`)L zF=t<^3ok;fgLNeBJzrvAh^(SH^fuyHkBNlerzGSd)EO%buxuD-H>a z1j-GaULvN^+5}Ig2o`-&H@k3)A&;f(l&3v-*-R6J#qaGDCuKY!e5IU%7!xq2Lcp&z z9p?_HF+mEFH+7o8)VDJ{_uZpaQ}S+x>)|X%e4ZQ`DMq}sBBy2D&fz=&qj?vg>AAO_v9M{ z!b&!<6^?|V4xK|jms08V5h7@q8HB{DnJN}=Rq%tutyl9dfH3cn*r~sNT3itXyHzw2 zaalzS;vVuci8PKCDvBxm7J-Ig75%Nupk$et5<4B*n0GUwQ)eQ=F2GhLt)|B?iR6bj zJbR&Y_=1nW19SQvEL93R=Km@;80PDI?3lUCX8TsuQTb2+s43r>kT_j4k0F|&W~;OE zN~pWap4G)kc!kxX`a><9Tj<;q=E>+M8)3!im~VG?RE8*S`0qcZeCZDGvdG=|1$?kF zioGX)7_WS4w%IXcmKLm5~It>_N`QCkQHnt>n9)*`L|pUm=|uMKGT-TVbUJhKY$$#;zG*9i8YblK#P=z3}uX)V5as0W4R zq?q!oooQ6k?L4;u9c&a}wGtACWsJN26k-No;30~=br4yIXp$_t)A%ITAba>-<%JAI zuT53dvq6P8gip_hD>U37y*@oI!#seO)g8F=Yp?OVBm7lB)+*{~4VL#SiNpyqVWMge z7&$#2m@3P)0oY}A{l)OV_7PFn6dajH*)Zbvc-q2G5Yyv`9XjdN_UF20TzK61*q7hf z5cW)fVr=LXwBSsRT@diqWWV5kZvxzpxG3;Cv?Iw#&-2;uAJJ}xFcv$AxhQ=t&(3Jo zY@b&RNF%wWDgW_KOh(EJn?`|QgTGaa##n(dmNDy9zJdjaLsoXWt{OAdfie{xUBvqX z-1*ean7l#}K<|9MxIFkui=Q8$wBb!_bx=HfV7ZQhkZdQ3-$MZ)YxWUJlu)On zhpk=Y0d6T-@rvwUfs0Sjsd>6k(iqN5ybkNwV?1KZeS5qU_;Yo~>I=pMkz&5e(*Q>H zOBvWG#`8|IkjbunF=+-SB0ifR2sR!yNhu{(mk$@icBdA7 zzfQVKAkyG?b~YgK^)HJ$N_LOCXWlKYsbzfJ^dV3sxU<-qk^Y{nWpsS?t=B87m8bRR z*QoP!R5&%@`4At&*;d7}?;VaK+QIY)7E1PDhsb==(gwV}g^coy-s0?mOF4R-E?iw* z6ew$Gt|Y8+aMb@ssc7__hHqZy)AT`{fXlRQ&e}N__5y5V!$z;XM7D!?cj+a1{Vg*RT#BI>P;=rlyfWP<}^%YsJ*+HUjBj(9l* z$kMej1yt3?n&ZD z5q0M30$xf1`0{k}>A*Du_aVL>a={zNErHfDX7|@;zKrzAy@p)$6x0CzHJJiX)e=3o zia~U(egEH+tK48D9the}gbc7025fCNdZEx)8mMH}Tw~nvqj|ZQ><Mow(NO{Tpco4`%>YxGBH%H@EJW&oiZ38*)-A|7QlhSBF(u=n2=7>ZgjjTfx3 zm`snZFWl1@jWOtp@{4L2@+m_wp+(INhys#H^Oty8bt!;YT=K7i*~k*2b@j(Ap=El- zsM?x+s?0AA4v$jAjt@y%&)M)nH8F(BSxWsum}2fpBY;WmvQ|-)~n~(3{l8Z z7IMl0oVt7c!#`sp{R6dP{aIPszX-Izy2Zpws;~VKF(Ja*^d6VI3e!eW#R=9VR9~Q& z6r)`)Fj(p#4&6rbLEFW(Z<;M|iuY7b;d$zm0EpGTtV*5*3F?`=j>JZaq2{W;aZT!m zBJDh4I*2pGGk3igF3n)TOhE#VkLmGsTlzlu#OKP~ zQF#V*|2kfC^Mi+$MBaxqWO67)cC7LFDq!PY_`LE?92N(Rx)_3`BxbfwNbbnFfTg^*VW^zQ%N8t zn3B&lCRUj=lGlNusNgDbKQTtdrav+PLV*qjFXz9?KyNLm$K=N+4njOd%!gy&fT$md z2O+0+T|_!X1Japzp{AXgCj8;0K)P4A*qrxjB71`qb;j-pwM`PMM;9=GVAvoIw9Ew> zKmnl{nl-neRhv3Z4AU7P+r|$s6HH&dpHw;JD>dbGEgap#n65!@K$m@fG9vp4*FUvc z`t7ipjQfk5z8#+9fClTvdiC-T_V#D%jk!(#Pf=&H@?zMmKVs8oFN<0urU-1PM0W%!W7hzbS*g zIh3a4vR5XCb9Pq{w>CgL3#)FSVr*UM_j0a)38F#c{%2uKn7SXC>=UMIiG4>*l$9F! zLdRno3nPmYNEXk}^G9WcWuI!|fcSr^W>|+!;+`%=rn3ZrDLCwzzYhV75QaxsXA9-k z3|Fb97NX=HuIzqI&wEG+CaI?|IO7GL(}_9k63SO|;#e+@@=mR;KdeMOoYAX%a|tT~ z_f}Ep@)UL&F7pwwtp#KnavvL+?B~}Z0_nbp^Y`%nCB4^&b}U#k{1-BF-71$q7{LPEK0 z#ZRIMgKnz#UP3sI3_g6IG9KN)Xlip|)_KIZA*&&+(Du$}a9VBRu zMHYY6i60E()=Jt7s25YvSd_ZsnqmAv^FlXt}f6?dp-#nukIMI_i~vwwaVp~aqOdWO~5V^_lFn5cyN`}yG7*P)zV zUm{F`UkPgA`k+7&RfuI2es@>8FRL9B&hdrkW)VCL7-n^z-PbQ1ntb3WJ`t*hAm}8| zi|H~GpUJ7o=2r#m`?+ulL-k;9-yk^XfUpIE>o%?TUbLn>cmr=jWT=NYRWuz5J%z5V zVGzn>2dOZC@WRie>Tfb4j;p4zGV5DcG9VASVVWK?^{iTB)KxdY>8A1($_4E;K9Cq_ zL;_P+aO-U`(rf^^^IT&EohbDHl@;8<8JEQ}&-M?}7Y z{V)&@Dy(^fimBmu5RH(`C_S14D<+YIK+uIFr}!`wfg^a0SoN4n+&-WlPPT!q=d0i) z7Y0GQuS0qlm_8@OjZ1d-u=+#(u$3_$Cd+q4%rWcgxr3fp<~lvkTC}umX6|%Wc4AVA z?mPd6*`M4gp3#_<$xua?l)|Pysn3irn9NbEqGk0_nw%i@CD*FeQ8q(00b>8Q%jK3z zUH14_);z$9t4q>hM0q+6TxR8W&TGkau(+Q@M-TL zMUEacti0(z_p9wGzp5m3=Nnp|Ih;!QX-6$~QX&5*gFB9%oh|~=lFP#~k=IDR#ol{{ zILCPYY@5UzXKb9Wb-r%0plWnBXXhfjdu<%qm@&=0euvk?%`7HwdDHs8i&u-qNn-Gm z*Hm>$ZrrwuSF&%Iil&K=P)`GJ64Mt+lQ10`8?v-1j#i<5E=zX=hz-Ws&JGnbC(#2q z_Kg=PD2@X3>(50!24eGTU=BJ1fAWp!Ija5XS_X1ekO~l$$=jez!Q1vJsMTxL`aU(c zdPQ9Ok~L~(c`JsxY(>zs%RN!|F0MS5CCQ1xj)Lk6*mJLq3BZ7E;_1B(Cape*5`W)! z6Ib%V573V3vmM{;oU;d;}wQ3({Yj*UU;}# zgTVUX;wQiBCn6i3CFes9+7Rb&<;}iS$5L&MLKH=j65W~T?0Gq1DT^WO3*>M4UK5$# zpvG5Pxm9AB)C%mk=te3R9WE)?kQ$XD~TH{n?-))uQqG!05_xHF5vHfUA zuPXj5$)bG{x3OD)%o+~3e?0F{ z1mPL0AK^Y8KhGSw$iPD2B;-22mu;-mngZeMLj1M9vlq66%^L=D!%2@pJ>s68C%>IRd8W7_7N! zgip@x=3$aN)k!g-QX*P)HBHEiZkhG8a1`ki(meRxb-A5^msU{*Y zUxs{T&049VkVU~aw_~e1Z>cMD(*|-E)rOZlEid%#K?um`_BFAzEdUwDibr<7>UvL$ zJ$~aGeJ2UK?%N9{Vt6CI_?mTn54_L={$&o{$B)E7tJ4H*oxe<%r65&%Ip67`_YlH( z3?PnWrqytH&f+{x6&9EG?DfWZaG#o+%A6Hd293ECzrp8jz&jC*RV6lBD2|j}L47s* zK2f!NOKUjHF>=y%YcV%kN>!qp)R7k^-$Z*QicQe3DF`1j7yGWudDMe&^=Zg1p(2X3 ziA_udLf3pv?2{RoONE2ZfiKj=e(Bv--4*6j>(JkgxXTxxg1FH2+#)G$w5zD(%3n;6 zay1-fjBWVth*saH-W^i!)*(<0BqzQ;f5da{V#Tj)&(Ccs=J+vrCBIqY$BKXW(UIfh zQa*l>^0MDc%Ef=`TXq=lN-B|WVuBgml4unpX~CZgPGaLO%iK6nyAh_l(oqE!1_o^e zo53`{dMKUa;#Oi8NwzSzIHtvRN%!D@Zd1^oei~U7lIdYJUeFl}#Zsj1+SqB_jZ)Kx z8Ugk+cky*e^5(zAFl0eMyd#vx(>qcVeqzLv=@*|g&r;-=1pI69wmkTV(Rqeyg3Qqc zGUt@1#HYkw7H;tw6Xj87W8sAz#<~o^vp|t17L&zVw%>sJ6+q~;44*S!VEC&eemXkB zJ#e1*n8EP}9FP;rqW}7OqqUP}juL1TKGy!TU165@rLgqV?du0VO#(G^NBX9+^iG4@ zPEXs8FY?n+HT2%Bqgxyb%m{_n;}7gy8ulaz?tuiZwsIvpM&=~J2fD!=Sa0u zyF4H{H80j$0LK}vho>BW8vXfYl~nY%Q%Q=0Z#V!R!vIL|rh}XhsN((81(DTLrtzCJ z>MPO7E6%E7C&HX~>PeP}swuL#PEIzS$?Sr#*CT9~=u7>Klguqd%G(j)7jNuy<;wdb zJXE&A?mhX+82A9r4rv|d#H zopI_sYhP7dY+9J(c3ic$Y^wLK@L!&~_~-9G9{>Nd)_yK-7x48+wC#k;1$p3kF?cqT zm2&jvkN36F1+Q!21~t|~Yr#C@HQH*F(%1W=v*C3`1y3z8o35CYmuI=a;i{wx)|5fx|0*FfguJ9vCH+Yzb`^2o^s10i0Rw~s{O z`dFE0BBz;bWx9x=j7f>TvO_aiWCNVXn=%$;7>&nml)6%Go1q#HDn_^x=BAz2;rD!o zOnoLhIF=6*)Od8nVSmAvK70~78?x)?Et}uuToZ5w-yA@1lrfTAEdrk;2_hEe)fKhavxyvZ;DyOj;)F z4`x!~mlJ7$4?qPF9g*HF4e1{&uyQ|F_I7n$YuJk*g~P6cS8~kqBXYo4e1r6$31iNx z9f#K6k>UDRhM8SBibegN3{XdKCSNGsc{?{jZlp2uC5?6!%gJZihbLR@= z2%A|hV0(EGn!5QyFD~sQ#Yrkj4s%-+7gL33@+|%S=ZJL9Qde&UhB- zoqZ49K5QRZP6Loxm~!2-z`e%=jZ5GyU3H*XzZdIs=V~s}G6*E_`}e9IPc?xL(*99(GI7#w??-u#Rp~wdnt|1 z4OM0fbQ=;|YYqRb9pzWGU0u~?uipXJs-M*PSD#OnJS-!bs&x+}YX-_|-{3P)pC01o z{src+>KN`!FcRTb=Rn>UC>vMU{+%j)r}?uXp%;_*n3@B7=LO>c0%POT`?z1sOTb7{w4%TrJ!M@7 zLThxHoy+Atn%>*KqkzBHg?^|T^T!xWTXa>gtV7u~ca+!N-Ks2NF7`6;WxI3*nUO)j zIn!|mFK*g8mQaiXu`3jBNZ5Z?3Nj}Cc9+0PUo0N?i40JN@w8gY!1=?k*UF}k#v3&b zr3$LgQ@9bz3xPPlPYOi53*4XX9W(0TB1A;BAHy>PBiL3(=0~4pvF@Vz&%Qu(JGb2=(Q)Kkbkn*NtGG zS-bqwdP|5EN%pN*^}~R;HfGhp$@sjd$K4a`DbSGsXrx)r3 z-?Bis`X;ZKit%ZGxHKQwT_m`=MqLwR9XpHp-;*iL)c9^{L;x+YfQRJkg`|Mop5iZW zHNd5-^pc?J)dN;%p4dj7@2w~xfh=$J9nSnpog-QM42KqYDm$;!RY}tj@N0>i2u1-* z1bqeodD9jI?2}qf{-lNBx461Y0ru2!jftObs((-#Ci$4fwvsAX^;))O$bJ2H#g=)Q zi#AIzxQ4|Fjb?hdGel5Q;$1Sfj?n z?N1DlD}63O@P3Yb#NHkwPl+K5_!91-Fb`4q)EkM02(pvWI3y!im{V4h7N!P~R*WK& z7)7~3T|BN?yF03a=RG1Nq+#V8@m9nPL5HMo>7BUHONHzpDG$TueC|vrPjHKV-ttSt zy4~S%B1=IzAkDe^dP_B_;O?-?th2T|r|VYob;rQTDW=q;nCEWU(xrROtcSKF=lz*r zXuTRZM+5EGeqV8-6}nWTMFhOtO z;o{Qfrf+W@$39@KV=3JOztzBE`S&4bad~3sr-$Ca-ic=pZHRbMABwJsGr97a?6Mil zc#B^#^|mZiB$FQUAX3CM(~(YABz~eArd$JUiIU^kxl9`UbVg66QT|vDqyY2nJ+lC^ zXR`QCc9_Q0N+=IcF;NBqs2~tx^w>nRc$E<8kU3|SFlZ%`l`5O%6W78s>Sa*k zN{;2eHKWGosPm4Kmdbm(6o?s0Zo*xY*7?e~`L7uNmb5gn)ccLDzI zLu+>7;V3&k?{+J;KeBcD2iJt{kELN9bgEmuy1p@eXqrFUCln@}GEtXc_qMK4x^GLX zU@PWI@s?tgEvktFYdgxFm4e$#rV11C)$La34_aun2cL!q|Fhh!2#dHo@!WOXZryzP z*Mve96g(}{CJCdYADEFf5ThsYjmGlWVjiIQv;|l%M~nlb!-X}OVi@w*6dmJ(Iuw1@ z#vQGwi-}b1^Sv>^AF#p1jSjYo|GUq()RpkA#|pdxa>9>OW`&0W`3G%syQ5F#7tcC2 z&JN8gJMV(SEoBgg!~p}0#6uEh?{67yf71K@TD@+~MlW;Ir+iFa;_+S8iTk$}z`{w~ z68&s^MX{ad^Z{&h;-dP>n-VTqR{F?W+>>x_T}nHRadb8 z0{KQyUgMNz0NRbRqV_p%n=k}OMrmgu^J(~N3LA{UWthr{@rE1Rb&Jvoc@B9R1al7xfg5qvOeO>7I`M+QFfyY+;!@+;A zRr#>^IBne9hAXbwNcwgND8Pr=+wUYR9K87SaKRbsms%2EL*$1+N29vT3%oic><>$} z`c8N7EC62?#-%jWxQ4$~5?O_}p7Hc)tIdu$H2ye8oQfC^n5M7E2jQ-$%!T2Bgi1G_bMr+afYNz`m-0+~#} z+=!DcbrTWzf+I((7^E7Y{gj5+QB(|0Qih_%^D2aWfR1(zmLy^mrtjB_rjd|B{%||%gna-3oh{v$2H+lT>KOxsQUA;gSfoDMBKpK zLBVG45sxSLtSc6xF(vYdM?HQNRMd#|s;f0d0Tdbdm|q_|RM0A2ovznLAIaQB@)7zhfF=4-8g zYVIdaWUkKa&)k3MPt@^daaop!^{oWpw4hAd$=4${*XO9o{{LO-{cETA#_av;eNSmb zjda+sT}0l?{G0>cST6TMZQ<<*7Q~<*aYVO?+K7g=#`xrmkwq3|e}`MXkkVtl`*8MT zW26chh9=TR$cm62${@;#*Hr?y;3tY0hyR%Rc8Q1xNS;#UT<=y-W{IT+#=zu2U&tYF zDsW5643{d}to!qYBxS~8OX>72b;zF7G=01UTxd3ovbIJqCVv9;vX>*o@-n?1ghnhaRTc5N~JzDv%(fOtsBP zPxtH-a;lPGaJz>%uf+6w?Fqb0Q+z`aw9R>ek$V*usdO;fs&@Eppy8i*E_4S|&@FFl z0XC&-dzsRgJErJ^)4RJjZb(=-t>^#wIQMT^S38;lo>uC{UE6@Z%e}!8EcSNz@U%ft zo~&duT^9!b?UOg&IOn<52@T|0CyG4F2-O;s+xJ z;rKG<6w*~eR!OnXMFABp9wE0Ejo2w)p4}^<2v)c77-US~k%hHqE9#|rTlUZti%LDX z7I0z`ZJ8V)nMRxtHtoX2{db}tl0sybaN{h`(nJY;N@)0of|M|K!IN^3k3yTz7jbgT zc(+b10g$ooOR8M;en6Fgb>G=np}XKYc`S0XfjwW`}U zFs=~+K-g8g;TT+p9fP5f}ywpYQP zxn6^Yk=e0G2b%MnaGxY7kCSTGzm(k7>?yXCt^ifc5n%l|-~rkx8Z;4x=A>wD-J}&I}912q=sX#V}2KVI9r?`hp!M!Mczo~uyIF}7a3I^M?!KR8$r_nA7YME$tH zFalEeA@Pe9M0MQJH^>EJN@yNNu$@}zei`oLeno_pXXH~BMBm5~SGw3*;qA-Gom@+6 zTj_ymLYPNL(tCw-(u`k^Mb2~e4FH<|rjZ`g^oZJb9KShz?up?vz>woo)H@q_Kn42B ztlto_3nodY=+)E3?#U;$2Y9Q8CccHLy-+j?-|*dIXnd#s1)pM~;h;sDC3lH0i|V~2 z#UULH0c-dz;qAg!vxjI}g#i3GyR1BWz7b$AT_4bG?`142!$1eJ@Sa7)(2kRd78c*S z!%ts6rs%4m8isvzTFWn!L5QeekKl{R02KuP8l@yHe0T{poT~leumSKvY!}&95o0jQruJ2Dr7$+n9a&hhep`1^xCPV?*!LhnF-nkX zOy~LsY|Q$Kj**b#Xrg-?JC7n)n-8*HCJ=arwW(SOeRyEc{uTJc-^1$zh!Z6Cx8THz zq*RJtuD^?gs}vo>dMKCzD@!D2ax2#9Ecz?ehNRGv)=sX+D4--l_6TUl=F?FsqOYp> z#8`D2!S@bE4%hiaR;mu5v3|A0V3mKGUq;Zwf^${u>1Qbodt!Nfn!oPW5y3-`|DdWP zJ&?HiFHkKP_Sl5A?f)0l-gLOPaQn~Djm}|5{MH}evTJqx$F}X*2 z7Yxf64FnKMLAjfEXCv9?-Yn?%+RB(+R*(cqet8MNhM=Tg3=nu6MnTECyTo(e0p?a9DyQnrPQ3K6`;GC<72 zb|su+BX^Q~7qu;)-al4!esbS%M>vhfqxlj{xx`T`0YzZlPBS(NI=_6<8)Pkq%+^c{ zL-DUR9Kg5VmzHgC&PQdYg_v)4)v-{|%}YgkY}8~ma?beh@ap~MwKF(lF|-*C&F1LGLa_HDJ%qV>(ocV}zrf`A3}kpY+CHRW{3nzEQUHsazz50U-*Q?IRxShV*-@@&RZO88HuTE*Oi&O55-@0){Bu8d9hr zbKVr5<^aCFX(->Q-uMXFbCE>lto;0Z6{w@T5CmqBws4@-z`+W1^`UT)XjhD>s=2c} zb|!A8bg+y&w(`#!IP+>oslo)>FH3O{9kgS77l~AWfWI8_ox^j6)u=&;49M{=_-_-z z2l)Cj%3-iIR!Z2|!0P*WE73<9iV`059|)EbLOzIB$`3+X8_L*lz0|mtJl##^GD*TA z4N>+*0tChyE8hUiceZ!sc*!bVotZPIg1fY)9tsu8+kalA;fH57)`dzk{?$O6#kvCA z3<*%(UgH*8*@TR``;Yv^Fi3a)#;Kh;DW4FtmCG@Q(FPMr>#qfS3#-%|(4Pd1E~g&J zKT$U~cxKN=7W70z!sePd6<_`^9W7SvjYNmWztPlxT5(O0z81vxUqgy{k!qYpK9l4X z{033!K*g&P_i-Cj_@4JG18=n4MGa$J=cg??HeFbg5AE)kWth;-NUVLfJ-xY?We9~d z!|)uUYb3HuaX`4@)893$?w^6!wB!sKr*-%8fbq3$RmE?RJds5jvY!*KB+5-vsHHPH zJvS!fmH{pNj@2b&c5bCxdW<@Zy}fyHAx?g|tiFM-!bpD=9=xN6@cebg6cmcJ{z6!z zJ8+7}1h~-PSQI}Tf5&|B$3s^HwLE>5TW}S)^6u0?jElStwHde}6WDvQ^1fSbhsJGP zAwe$M#g(%;jkR#Hg08k2PDHTKx#9Jt$5gtLqN$b!Pd)6ch|)l0 zoPw;W;9IMWXjjJP@`}09Nf6d%gNp@T;}(}A1tUM9G4<)1beg245~gnbL&|xDlyx~_ zJhs;#jFDDAo*#ox{HvULEbdt+ml|M+Ah16Rm8Xn;dTki|oGur>!?T7ifp#Swl+p$) zy+NmPDB%>cz|pKwT^7sG$|q8_{H<1X@s(%4C#PX}cf?jkvb8y2Y%J&hN9Ei(*KzV| zV_3wq{QzcZC&~A{>0O*zaeg*NC3?iC@imJ{+3i`P_-C@|;CT|(_++W>Ms;)6tyV8| z?3cRFb*xSY(X=0v-*Kv2X6`iVU&W%;q7koPO@y=KF$9%k5%TfJ0jWK**dbOf><3@u zj0NqhzW#tay@NL~TvnxZeAjd0^R{kPg{0@_BA3tno>>z9Ctk$pq;1(!<4w z)eS5aBY|c=4HavCj9kF8HtmZfLSd-bD5~b=BV_fFj$qh+r2j_fbgOSnob0cM)Uc{f zZ_GW%mv5YUraNy2JY(Tpm~vKn*S5X%#lU#07fE!8>1GrX^{v5F{ZtMyi+MY21$qql@iS;o)MwDBB#YIme1B{^&Sea1_4&A1TGc^v7 zkdwE4rvkWHye|0>9k25&2z_ULWK%Twc@BMXjv3eylM^*_%2!PG!Wi@s+WK|nYiwF1zXPZYgNXNRJn=&wpW}3;y>+{pW)`qJxj3`F)ej<1IHCL8+WQP8;=8JnTJT5>M<9 z@yA>U1uL=y?agZHS@g;`&XM?5`D9_3$>>dpN^+wf_Lxw42NG=`e=nTP22JD0TXsCL z+TH~X)woXaUeFjc>8HsvUf^Q}1(!{eZ?_;}Gzoou+Cb|!o(2B`uV1A~U8_z^4{;e_ z%owo2j7+)&{_Z^UE}`N89f!AFg~0Bow?Ctehnel16lIc}>SFxdN}^7g;(=?UlzxV4 z!sB5MPvtxK(Kk5p^0t=SyY6WFdsHgv>Eic5C;g5kz6NS?%+^xZBsY{;Da_BY!Q|1j zX7ApLo|&dmH@1G>;B6Xu(}60S`(^=i6jZzgIG}0EGC{nIbylA)s9|nz=S0>`+T}3c z4b%n_=i_oH;@{NqjZ_!G@UY)7>8ur1^gKuDNMOah9B(U25#^RY_tSW>=Qc)^WW^_y zAUzqJaHo1+R}u>5@4M&d{OHY8sS_Ey8-rY>p@>Yym(w+aqU{PD{4V+|X7fq+TY&Nd zaBDFWXs#Iqs5UOxEOCx6!1C7r(K%sK;cr9+NE9p;WA1mvBp!u)X~BpWtj#Uh6`G9e zmQ%rk3th}r%g*U6>Wj{9-0nu1UvKH$J8e5#uG*}w#of%fNnO*r9Y6kT%Krb@1Fco> za{bE>isxJbw`*SwG1F5GTdY~b1)#M5{bF4C@4p%Rp>RSLbrNx~mMna6UDq0>yW0n*!j`+)0 znPV(HNv=y#ki=_qA_LXt1_*+-<9C#lmYUU@PVwULdxm>O%kD7FgcuxBI7ak_XD$+4 zrG%y)9HBg6>TYb@@boXTO>a-!h$|Q}MRs7W1WvPG zOOqo@=kmr^^eG5RK#_&n7%ImrZ1`S@OqbNG!z0~>qH99pW+Ps(i46i9!XmQ;8tZMM zig9n@))aqo*;iN`YqPk*g()B&31i$vjx1OiR?kK4P>rzXZWwMFmia$`YrC3wc8{8{ zK0nrnRFX4E8g|DfJac^{!c4L0u^d7YF}mD5LEPY{{kY)!d$%loHYeHm=q*S<9W*or zJif-EwVgjsPiJhWDf8?C#j%I{XscT>mrzacdoUtU;+G{=15j^%BY7{Ecnvz}QfkTHnaq-WAYdp57>3;Amhm(~u)GQ)is*3=a&@ADf0VrT7Y z=MaW~4_4pp(Xs4q4;`9$+JbtCgA#zEDixe>eoFz#&mbQwVl1qG=dy!e#cP#8!0wvg zhp>zSN7EE^JrtxjA$I$*W8Cac_!o)T$r?oxC7A`6EnO5p(aUnm+6wK&+ml;xl4YLN z5SR;nqYgTleL$uRz2XgT&yp6+odbb%8agi?svK`K{t*~_z3|ZZ57mM6KZo(%<-gaQ z=O5}0^r`75QI?LWa)(r1;M+B*qi$J?Ju#@aIa=FuG4xJ=zedv&bVCspFH!hl@@AED zZpp2m=VdZ1kY0`&doK!#X%IGUoHGs}sOcLRpetAgS@KC}d11;|TfH4?`} zNxhq`(ZLoQKk9@6^Yp+xGCf;j8PDL!w?`hIHLKDuI|C28P=`lLlHmHQHL+z>jLbtU z0qTH`fL`M8!7DWtE$$*zj}FP4_r>{|2fIgtYSzwplt}vp!X@>l@EbiN(o%q5y9Ggv z03rG6$5d|zL%l#V9!%r}pgX2CVM2%Pv(@+(B14vmPu}N(;WAO&1PH>edot!O(rlHY zotw7mKVsrw(->1n!v+R3tIEh%L7oC>l6`kYXU-D6#QeWWIc`=RIIr`q-zo+N5xU9E zVMU1p5y2~iV!(-BOI23zgB}|ZOk#F)D+41e3Z0{eO@*f`?=xER;@oY?#Fp# za>n}1a-aRv3kMecH*)=d<)~|__VRnbIIdpcn4MQ|A56N>Dc)=&zd0T->Q1^$buXt^ z>Eyo`DS>_uj%$=2vlT$hWmL!HjC1D=S+IcWTt{gsT!aqdyA)FBkH{gKrdG-JCYkbT z0_esz{$SK-vNP|orRi(-Fp=lyDvVB*cY!$MEVbB!tSqG>OjK@Z{9)tX96_DH(T~7c zVj@j4mGIzZ-L>!4Xz1 z0IqCuW3tN>#8We1BJ*Z4f9Hjd&K_@ovIFP0w;BI%&~N@rX~--6*a`oO&v+Qz z@R`b4So?6*Vm~)FAH82cv~-{sMN;sEn#Jr19667+q{z+5x{QFbK@3_`tFN#Y(N^(F zYd;|QaUa7NL<-Mz|5SlVIYWEzJfll!uvu&ny#hbp4-EMiiyMh8fpZ?C&CaAWC7g_c zeV2~nw-$5ooHo}fBERkjA27eGD(0EwlBJaSJ-2jIS9A(WG3XfGy z9~V3L$F9*Ihfa^P-Ebp3#kuspkfq`FuT^_0{KDUWb-AJ#Gwzk}th}U8o;ab>E^=$4 z@3t=%D8Ok|wSstnykAG>zWe2%ealUi?@n_(Xuhg#w{(aroW13_K|LF!(P(47e7jgT zjrb0;n(levV1>a*?-AZzzED@WFy>_1Be+Y26kSPuQ4s; zll<9?;qA4wmJ9!lQdc!>P#%gl4V9nwLK?L>Rpb^COLuM0c73Z^US(ltWlaQSyj7Ba zDcfKviCOybEaQ%FUCteNC!9Qh9|bO{2SLg$Y>pwuLx`&M6Z)yI@YRdVk z>Tbpb3x=gGnL2*JtH`6qFVb>87~IJidF42Hr`G7xP5OzyJnpnygnqx?l~YdzTDPJt zl?^u<`GinXQ6*oI==ZITmcm{_Emo-ACi6!p9w{Z`fUd`TS%&HO&`&EXdt0TV*kbei zLl$a$mEN*V69_-K`}=$hrSFX@U>>>iauC3Dn^7044)5I!@AXIF3@?isID|%=dw_U- z2g9Cb1mbITP?9?vt8CobJio+U)|hV~r~7{VQsXzkO3hsmDT(v0(nNf}K<9gYbD0Qp zxGd92cvlv_5I>HD1{WmgA*%sHo$$qjnJ69r!tSOdD(|!Z=PThD4 zey#ml98LXkQkh(T<_PlO%HgSHirtfy-psc9)XNZAALNGc?M?fC^g;iIB^z$b zFAsjT4`0kZbTn4=bReVt-m#H2%Dl|1tY5wl|G0D0XZF_aX>tHt_%a1Drkf|F&c_(P z{E!+3bco1shT|#f1ib_I&e@#T3OyIB%%3_|hCFFtR6^RKhpflN)v=FT0&NnfR`x1pODR8h6#w42lM7mGAX*IBAaw(BQUu+ zn%58OPElxSy%ZB2GUMs8i4|WLw2rd>51*T{Tbkqu2i_~J`66@%v{(3Wzbov^VH7O# z+9Db%i7G?o?gISO2@plVcu8r%?^)+b!J$Guc;FEvjTg5=z-ufBuW@4^{ZI`4m%G|8 zRm`6NdO%^B4KY{Idd7|!HzqSpF{n@Gx2(40o&S}}X_&CiWsve9s%BX*RWm+0!a`Fv7xkoeDDtU!E!y!DM`R#EJ`|&pR z_YY)y6ckvq2@bE7V)Cl`GkW@Ds%}id7fljzN)RivUldE&JplW=pOXAr3s9YXBMZ0!{W2~l@%yPdjD-t96G)^Wh-JoP zL~Ys0ivZsH73)hXB;nQ~y`P!x83*jXw!i!IX7R5}b1;^eKD3$dvgj6fU!|XNW;GfR zHkPaXkp|%Q_W&3e6cSyEnl}uTsjl<-gu8RNp)=?lfEWnWy3)b(?9^b3$a(}$f)J=_BTT`NxI&hvoYra+(aSx;MuRD#aKn9 zH{!df7YLs~My~TwgwvsWnkx+wAgw#*zo`0qqI(D9wUZEDxHi?WHllQ2w(X8yWY{`M z{k5}SdL-fJv#6iOJv$M6hUCX%uqs9Gd+ammpR4ZH>J|_u4?6W@0<*WzvuBZ7D#f2^ zEJ^?SdWLnn-O}{>Af4^=;dZfE@~xU|A5GS1(}8KPd!C8xzTu{V18SAh5dQYZo)$Q8AacFe|fbNY3Iez1bcE{ z1$&nO9wSNDuEy3j&G6HL4Z6oD1F=&g)~t+Sr`>;Fqe*(yPNg{$N3#E#v&Uwcwk??9 zj*)x_RZ>nqndxy1OGwu|Bv=VWp8haCzp2r zS6$E8{zBnwYCZ2%CARF7IuSrh7+AOonkHd$3<^v`_@S~=YYtjLejmr%(a@GfMpha= z)wcr}s7U&x!G|2%q7)y5`RjUUT~y*iRrZ66sI`~Q=EVlfx#y%NbzYN@GN%8;Y%B+Q z78Ejs!-BK_FcL4P4e`m%Dr9U`7Nl2yZQq(wF8CVs{T;)ZkN_<)MM*st++i2Z3NMt1 z;L_b4?U3xP)0UmxF%5-`&CKc~UoSoqGX`i?Jj8wM8GI`(vl1Bhy;Cs|g6>k!pc2B*YzNtVU};pUU~>yi6wkqN9EK%cLl z#Zi&Z!EX;t=qiCqYb5Q7vjnP)4C!$ME+^f_-0)3ii1i?F4Jm~A`S#d#(%g>26!<_T zo3uzz{L4;_*T9-R%0@kXqR$bUNhFuLz$%2qEBLnJBCv@M28G{S$S^xTtQ)>JoiP{-9|rWTX!U zc~-b#_n}j;B4^y**%&|7^@5B6`@w6e4*6HxYRYm5xRQ^@S2O}g3@!cdqh>0#Bc3>S#6oo%O(0GI1^$`iJb4(k$2aY&T&f~``L4Qca%RJ{6 zh%$$~B{=K9S1OMR(x92h)1%7D+|740q~kkJMiOTXl5ItWBe~^F8Tk4CBH0KGkeFe0L!3F}p)ZNc?si*AGqUR`1tG@vaZVi$BV$K& zL?2!HRw3UI9yJ`V1{@PbkW3*KEYlFZ;HgciY56CVuu$v(Fs%!|TO8@VIQ& zyb16Yccr^Kx=yCYDd>y8R-2K!l`wT!RxJiLHfNfCZXNNHD!ET3VD+R8>?T%qi#dWw zgB}vCYpVFQy%rNH>MdU@{-~!mZ7)pg z@V!Ng*J;`~2Rcu#o7|YzBZ>qI-;xnP8&_AGk`3j*e4NG(wj#RHyp*TT$|d4TwFBEN zuW^*Y)|B+NJ+~g@G6E52z1OiK25&)EZHE6#vlD1vmmJiT6l+|(Q{d9YbJ<8}+NYa| zoDje2D(Oj8Z{l(2f>z><0BlvUj%G?z==ne!M6WTi2Ej_a+YhBB<3Y96nO$5Iix9;z zy^m`C!TtUfQS=VW)n@DE+~c|Ugzup0Ue&!Vwuq2jOxWF$)&Nm_ytmUEtf1W(Kwg%u zE|&|b(Py?icRYo};Ut$aXM$o0YM1R;BGN+Mff!C+#^m5bsu^8j^xy_OhK2`x{*L~e z!XE9QiyZBc0R%h!eR3THy7mfm{GJMt<1i)wAL9mzT$~^paWFLA%ZS;M#uzmS)sWkol4rI#5F?KEG~`IUB3ICu%qw}QnEW_A4J|U#R_)o~5BD+GC?vVuITN*? z7`U1?GC`TV;l1XIMONYEn;(2jX*keWPrV?;sJR5kNsi6-Eu~_>#{_}&UycN{*Ao+{ ze4r{I!n}z;W+=lXME;WVd>865X~PlR$Y5i>XDkC*715dGsS+rkMcx&3YYOJ!vC zo}a2HA;abboz})^*h4boFO{XhoezPRqV=9%3|up9pN9U#4YYjd?K`3tlrux}pd+^S zKx^B=e`SFv4h#aQ+pSAR5WI?hG6lU*bRtzDR;)=lxsi`H76^;!rKSb4Z=#bhLg6n^ zKOxqJ?E_O2g2@F~LEFeBVj?L1C-TGckZ>sh^h%(&{b!-8b?hh7p%#LAzm}Uv%YO(9 z3bhPOv|2mfK}>fl8wPNvZf03c@Q5d;-#a|>mGJcX9xA8IGV$myxF6PxVJfw?kWm7| zI7rwoZm)jv&5xd%eySRQ z^+}Ro2w-hjtfcx4&XjrLw0#Aj%b_YgGt{#JFgj-w8MIfnACBxNj+9Vi&jGxv0~ilp(vII@ z(?BE}%597Hh$gqDMUdnn9+069xS^44YNAc!BKWKgrTWSA^{I*>Dd5?6K4ouD!0!;( zIbh2B36QFbB}O$!4yrtm3Eu+Hw>>8?o)6A^05 zvDw^!H$fhHf^=CXrNhjf=A><|Oge-uRRL$v08pGU8Fnwg5%zr zx9?-|<_sj<(fNI~f8A)lEVcjZMAMI@=_t-?i(^def)I5S!!~Ch= z{)_}aQ7uLA2rNKJmF`-Uga{}g zA&oTBol8JKx}>|iVbSYlpL6y;`_1e7{?5P8Gv~O+9b?$uU;%Z`yT!2a#G1x74s~x@ zb8ip=64;6doJudrw7eO)RtZm;h-CDA$g`D^@oCaYFML`x9H@i4?I5>OF;=0m?Ac_Y z?%$>=X}oCeUI;(Kq3#`~(hnpQ$S&qm`cXp2CK;Srq>DsTLles&djE{r?&T&jKD1C( z=0FkEtnDK;^@PqUp^AIgsFl@SNoRZwri>^a_I24ka@$`;*hgo%+N|+>JL?kRM&u!S z<0N=+s)Sxe{SV_S-TQyLY;||O<%e|$ZiL(6vEw}TRhijZ?T8>h{oS``P8|H^jLQXR zhp$}m09+XA`xGv{(H|}OvfbDY#by2Jt6FSCQP7kO-?W}R*6Cpc*(RNzhl#tOx{#yK z0Y4DEaY<;``jM_G%wr$_+1cS|-5Z%2fr+oyt~8@!FrH^qVm$F)|DF zRf*{CZoRY#+cr#v*Sr0d`=w7)xG%}yuC?%5483IPn=5@vS47w98#Ho+Dyn=5w>$>H z8`eQFUnFVOeaz`86Ys@`!*?A&t~^-IoQ#&{AG$wSwD7@HP?Y9_0}d1cUbRS*m-QBd z+sEfgcG4(QtzGg+++QKC681g6O*#Y9VIK+lkr7>?0eB)utH#VBy)GbYUWu}gBtH;Y zx@&m&e{+DP&+dVhEMwm-4<}V>c{1T)u25xy;^qX5sGHBv9W07jdJKvq+hn9S&_@ln z2uWhXUy)6D~m~%ff&&gz zXt%=5?I)if&Lp8)gu`DV>->7o3b}kMQ&1a9Dmrwhg&~RdkQj5}QstN5H=8&CQ92M# zFaczZRE7>XlFgRgy}R)y=8^x$9mJ$7rCmhAuprCfbhpuZLtGJ{o{XRqkV1;q&f-&q6F%`U}u8r{l}A5Q3q zu4cuEE zVNoH`%5d=CYfNTAoXH=4_H^24*;m%=HZTPwHDP_+BFc{uU}Vl{ytHT;_@M$8&WQ%u zHqP#8#%hl zAJmUUHzV4DfVXq}2+3eUoYF+@fM`p=Cu*6Ro;(ND0-y^TRAZwbD?6Gn%zEp}DIfIS zoS8xFQ!$;`H<2n5or*o+ixSLN=pJup{H0r41$5W6s!<)rpVf6R-Ub(6j@FL;wDz6s zguhOk90E`WiHcXhcnMxETF4A|F}ia7-8v5wXev1>W*{yd=lQ!!uP^8u6q1-wld<>j z1ylUs{4+GkCe&wl$G<)<`1z%n;<6S`BYP{~N5;RM6jZMloHdl0$}o%+SD!X_zRZOS zA^0gKI@x|a6z(A`L(urO|4R3X2@O!p(&E3B*28vG>Pg{vaD%t}apoB{c{}(#%Dw>g z*9TKt{@sVWuQ0_jEvR9vqsQwsGJ(|(haI4ji6wfi0&TFxi5hT#?ws3gbV;uRH zB@T`t@|PTSfZ+=e_^ZcFy!Aj{maTEqGsxdG{^#BAMBPl%!kBdh9-2vgPVK7%h~;_OOHMv6j}#(X7?w$Z~nJF`6x-1MGPoJCR59la9%{W|1qU_kw0Gi5$u>}ejw6ZUJb)aE^oZBMG-`l^OLB#qlFUKi^7FyP=0(ll zFm61Nhs2Xh+_B?=Le_-HZ#P`1`U2EZ+DFLBmzP1?xiTDuEW7CBJY|};0L8-+RT?J5 zpvOv)1cv6P*x(*l-*1Ey!3fhx*N$NbWHK1DZ4&6EW+h)@`86VxDVrG6H;FQcXu_t8f7cTgpDcD~bF(C2lA zDJ)U(bjHKZ+@&M@eVT7sQjFiwv}a=zDw~MPwI3_)yOWF@6fbk*$SaBN){pg8m#;uD z2?E=4AJ3z7cgD^4|b78>h2}Y!lGXe&pzC{s35znm0ZAVMYNQ5!J(u zH_gL_%=~1p%$*J6i%%%eWOspY94`jwDp`FY%YSXnWH4W)8T^Z-T=rDFe!w8XmoEl= zBTaYb4TW?W1{c&!nVkOkRly8qNz$ubP;r$ni2UPfQ}9{sS5+DQB)}jIN(b>ZO^pex zg~1Ty?^HY>?^yI3pDygSB2(GJvU zI{bk)B(tm~rf9rc;Hs`}3QWubUgsHN7HJ}Mt?ze>SyL)Mz1ZH)tb9394io(-?uzpg zA!z>PcW|d|D&~_jEapv#*MI^7&Vw2_@JoPt@F!ijkj(IfOQ^~lC#rWkS5Xnz)-ykD z5?mzlKKcTNS3Xeo(W6^2daXUG%(;a3D}Lv&9EH(H~H zK+xqQt#v@eW?>xhvv*mIDem`;MF1Y8R4IO?hhPHcJ46XHO0Qo1;aZgx0C^Pw2?WvJ z8X4ai0p5W$W`vgJ)KZwdHfhy=lQLysf!skcJRxe&rz}%MZ)?h}*$oXvG3`-!1Ys}| zoXAuyZWQE~zAtv4L!JgdtW`ES6qh;m_05i;bJ%%KWxzvzp|{%zz$1MVT%}+tv$SWu z+A^cBFhSqr6*gBkcodcaem8`Cr`GiICbdcdk(&-)VYROuSC^Lx5~W-}vbt_o{P&J1SZ`YF8yUoBir zf?b(Y`myI3_u!LYHMH^KF~bzABP`$h*TS~)vbCvluK_J=kAMQU@4$U79di#%^RSxP(sx$SkuD*6@*%Xy((HFLM3YC^>v&Ffei%6uSt!G2a+;@u4 zFXc)3)}$JhKxXgGs;)(d|0+oB_m-DH_y|&qJ}P;8Coavu2JsyFlatKgHxl(^{k)|c zF0Bt>zw)k7@nfw&L=@eK`+FmmHX=ZQ2#>qXzE)()BcA^c;0b3xatKu<8FY|E)Lij7 zw+xBWw~P$&xqBP1|mUv%>( zfhIBybR*OBCNu+`?SP$IC5F`HL`9sgBk8#rpEHF^TDf#0DIhMxQD@*5G+A(_VaTOd zX9}qLrx(DzUr-o)(Cu@G?bAZY5n&9UG5eXFjtk8X%H}!zLwQv)#8v5jKITT7h$^E2 zMKtu`D78y*0YWrl!&mQ9MbjAHM4-p*NTaW0e7N4!PSHA^AUo`AExd|m%BNjAuDdCE za!Dg_x$lcCGI#F`dwmOzO=48R!Glz!eg5zcBa{8CU_rW#a*|2Kd@_{Jyl9`bR7dQfSUps@y5g01-BvP_Ax) zM?R@Pgi_SqF`b^wBKFjV~mhm{6R`1 z5g{1P3z^SQVZl-v$RNCDEpNuuay1bt9-}xv|XE(dmi$E$Ff(rNeidl-S0lYCh-SkQ+Kf@OVst zZ?>Y#iTdyQ3S2Mb&F1&XcUx3xjH1(pB4kC{;8KfdtotF6mF zSKcy`{*QCafw@;FjmXVI5>rx`JvF{21#6XR5ZIU0NvsVZ5RM|Gb272!1vaL%&{#Z1 z41{=JNNmyf9Gzbk@R1Si=r+LVVxa~Ca*72EP^2qY1M$Hh-Z2H^z_u!<6zxMc* zG$#~%l>$1W0-2&-sS_81`t5OGiDpJgqB`8nn0UZ*O(naB=39DO_+baxOVSgk=5`0F zyx-vOW~VX;#PO>_L}?Siftv;(BJ-GorfvRv-S%&Y#j(#bo3*P)t)ifNrX?g9{UZ+? zZxj<|cj+w({BgbfmPOy|tK<1IFh%gIU@i=0w&OOg3+EWAc`QAf3W$Foa7H0x9Ke=W zOU91=!$I-u9CgCm=%5_M8|bmg5UABS!q_}GaYxaH@s(OPH>wA}`m(c`*eD5lXC2c# z219=bsgS(zJbFgq(99oE$TZn+Hd?Oi!0#GOWBct!LXk0}6*}$gukjMw8L-Z9b33@8 zTiv^o8I8=$DL!uy&efO5OIjKvu>-*WbD|Z*k8#AHnZ~wTq@3%c>SLTQJ ztAD)>J(irB9{hwCKzD~UX`#K({J{Nfh2-v;;%6oH>A-@#We+<**|_TzCKlzrc!PPX zM?M6vD}8n($?_$Tr5P7pDJ;A#2}6U)L0-!UpQu|ev2B>FM)&jgF92(G08l+|Nrpiv zZt?yxDjz2vV}YOeA|F+GL`5@lTu_YdU4~@v6?+Rw{+vb6r+_wsa6kMz(jxR2KL)}^ zoZW(cpIO-5_0VhmQMDUPmh9m)~yoFP7Al0JJH*}2 z$+O7_=`}EnQutNAf0Zrs9NS;@aFB!4&hPU_ocg)pbsVYMva54CGW95zQm)6l<<)7X3=rV5HmvUlBZ?O-s1q+aIf3r zXA36g*W~n#0|m0s7!f;0_6WF-?D)4R#x>@RQyosanO;)E4_dO{DZ*4u^jB?~am}#Y z=)%41b>x=yAN;OgI(+$EYIf*g)H3(C+_SEiU9=*Q00q z*{BT4t8{wpNiBbi;WOQ8-9@NLtuhGM60xL@_GmYNzU&OdY@`J+8sKDuKx@T_@UFe^ z7gScTbyVou<6~SAUdPJS!16l!WuVW5{pO&EDsFBmz(0K*Id%-cMF^t7$5`tTM3>vZ zDe*VywagelKB?0`M+GwSPo)|hY0UwMx|z+6+v5>|IL?SIHt^W$_s;L{zOf+%MwQsM z1LyvdgbwVWM>{y(2G&JeE6-TQc4BWXxnq0`QNti*Q3e7KlRa$xb%X+vN(qBGNi#E{&M3CJ=N$u9K#H7h6IUW zN?%U;+Mp0ck56lBN!Gg%9ZJRi*MI_$zy!hmEUj3fKpixCrSW_+y||wp!_>mgzJBvKM)M;#UYLLv-jv zPJ&HFA1oF&QTD;aYx0)&g7No~(GAwgBNI9js<$LGf?1PzWmqr}XO(pqn$w4{GZU!; zL)(j{yl~!Oukp3+0g4rPbJ%I?YJ7Ku@?dIou2TtLycufM`J1A2A5ruTIo=x(WJo|n z71i)8JA$|}wIo3&#grk<^!Rl^fh)px;tGvd4oiYR=__FK0Z-YvvQ##g%!T{{T>3Op zNkgnZXmG+&8#_W2u+*ki%z@rAi*Zb!-)~@GX~O+WKmCsFU3@mZ#Zk1;ywfAoIlo~0 zwe76uY^8<&AB(Sam%D39>CAy;m4KWQEc%6A>AR{EF1X zhDpUgVo*;WjX3?$3L5Mny>zj+cOQAh zYf*X~^!cjz*yson2Fp`PQA|FCrsLK)wko2|eAJ1uu%(EL#<+orSrX^kphG)4J;%)Y zpYIF5D;i*J0Y0X?oUwhhlgd-LS@ua65<+}8UZ$1o$hvNMbef>WxfKjj`NvE9Uytr1 z=^=se>k;0PNY}341lNT-$C05U%*6Nlyh%EWXq0P0HF_g*k-ICw=-r=>i#) z@Z|7Jx>-OoH%W7Ffi@1;8KnubTyLvdVo<-u%8{CZErf%u|59x1O~gik@c9YouUwuo zNDrgl+XBg4<+ZlNu*HzTrBchHS#m;_UU}SnqHf~H*_a${OnfI)DHQS(qCDch&qJCq z#L6aO0D%X(S;b{i?H7RgYn0y|T@gWd;Jpg0OX-7;TFY;^K~;a(Lb$cgR{$rtaQVrO z2>|w>U!lOtzK;=P4*`)PzOLxL-}FjZN98EC-b`@**=ph8?hn~Q-*{moW5Z=Bvzd>7 zCt$`z|MsQQa7!&?0LHHW^;{Xw3XXwgNr&1ANz3a@VXxJqfynh%SuWrwt6+3?i%vS3 z-hnQwh%O0jzc`{3RP4=oeMj6GJ!0)*sj&;kC`Z5<-{DK)kZ>&0H5 zYwfvH9){!Z9AN0sCzK>;ZAyC>PW=rtcW|QcT<6CL_nI$pJoW)^<*{xWIhQ}%S{Jr|O7OcnWwr+E z0)>Z?FGuC~NI6T+&9ZI7-nARnX!f+b1ASP{^LbHO>Rd9NJ}zdgn0U%Spc`wgjqdG; za}>PYhtb@7E3s5}IB&b;^D6?{amEPeSLpp6hFp_uZwMRMbD}(rvsZL!ZzVzG!iAt8 z=^%A`1}@C_t6X*wU+XfH?`gJk#$8u)+H6iI<#A08AzX9A&xHE^2DY_bkx?1@rgAr@ zBS)nk#~%Kl@UG1W8J+oxfvkyh5U}@_y|dL7lhqO^~Nga)fq1xZTyD+|s4ucV{^7lz?YV(W1Z%&U(yw&21PM1{=860f;a^3ld=2?c|N!;@i-|uSCx(F*#FBZ0A_bv4K7#2z@IvrmY)NRpX;4e#aLS@ zo(K2j{n6f)1L;2sjutQSBrUU`8pQ~U8JPBh-_zxXd#TF568J(%Xj+U3gpr`X73ERG zci3?H9m5^bZ5JLTiqu{0_Z`U39!stwt&xGtSQ1nk_$*_DsJ@#o{DtTZu8C z!D)jR-9LlyFjYsaH;Y!Xx6${W791Y-+3(CjWIVqtCC5S5&xJ@UYlIM&Qhrw_+mGo8x5uf75C9HW36O?Lx7|S;u8{*b$ z!Gw_$=15odjB?LX@xZ6F%IASn&2PJ{l8%5|HRapQtzJzZ=BZjZhz&3 zo+=(1%>wc2nMrQqw6iOsbFZnEA@mt9{IF(#{YIH%$+5<0I^x@jJyJb_K-hP1J!*%0 zrI>E6r)Zc#r!|O%{BL@w6&}onQ22x0JG&})Y(Ej&r?gjC7s(X!ki-c*n5LUH&y)d* zX6^0E+U}=4NOBz|wA&n*FjaV7S)*3B`0Nwc+|x-HHpf203zs4u zVOn}t`99?o%Ymi9)GWK};HpPC8`ej?w~wOC`Q*8B#{>xJytuN550wXCP`ntQg%lJg z>(e*rYbxi)ulmOqD+h^0o4=?qE~fO63JZDiM7gsjt++Dh#AB7(Y%5ac)+UV@KVQB(E%2qG1ERHXpIDHvZv^VDJ5d z1IMZEjZmMBv;x6w(8?4TMBn^ippP^BD4~C-nCIr~Z)A4pIA7TQU~w~WQrz(;F01XT z;kK^58Ku_>kl8pDj3H?h_9o&3x^1 zP%w{hhVUqo_27j6?Em6g{x#TC1o|!-28x8)DX;zN*9I=xBZXB7?(=t^Zp_GmK}k{o~g^-^beYu05<7oCs0X ztuyQ;>!`GR?S%6k(9pxkm(|z41&f0dVyEgO1K0#*urEj<5OP;y{UqL%<9Gy)=<+A~?N@ox zRas)vV<`!VjUFOO63rpm7K`|LS?!bcP!v-KSOFJ^^l50cunab67FbpYHF{rOW+Eym z%%;UEFO!Bc8CZ0&P6|2z@DcfW%t~0jQGOlFcU8Gvm|_2AY4Um6b{1*Sj&+*SS9x`i zf%NFT@^;h$eH#Gl4o6SbRj%{XRm%I5*H|+;ks1lb#MW}2@Gr>Y!$dZ9>X5iYQ3<8{ z(AUM7iqKE%cN-2CW3-RXhHc(AH;-`{k4%zg{saGFRVn___Ww5r*N`^txb1ykCS5Ud z(J|-bfPyBI01Ji5tL$LHj$$2pfuh5`gc0TlyN|FSN_7klj&Ky=wDJFfpQ zT$ieIMrxp^1`;+&?u^At>N{cILHV3tTBXZi1z2!jS`3M{{EKu8?z<%piCZTWP4Ad+ zbP4!l@!zc4Qy~jFH-rHKk$~YmBl`=xlV-6FSATH~N;9V(WASfA2pH`ALz(Zn<43lK zA{z*PgYzpXI;>6;d(=A{#?t%D#BP#9?y*a(wZ9X3YP=mplgw0E`Q#* zkcV_aXfdL*yPshtkSoT;Kmj_*-54|z_R|l(TxmP30vQKXR#_CER+pN{9QM3#wB@@c%85=B8Tj4WW(d&@qAWf6QZgTk+G9&QFsQ&Czu7m%FzNbD7E&;{GJwKgSy!t7S-(@7^k zIG2OR8fr+-Y3Lwl*e5FUT+X-VxNLLC?pRZYN+6rhp8_6GFnOZ!J4Ht=MUD}_iTD9) zPWy`jAFurCwdSX%z}M>QuW}AvMKSU~LBa$Ey!ZjMdT;Ys&=*xDwgj0uYV(HLHkMJc z@#i}&A_qzHWGn!ke#I}z*_E~v&WRn%O?-r7a6+=dkXDsZGMQW+IZEIXpKAf&lVI?o z@Mk@$DRaMYLFWLZ^w{<308!H>v{@qXdeGuZs||Vl;C}k=ENDRKzo=2ifAsK(Cua2N zEa2!ttFHHv%=BV^?xu;Vx8~kCzlQYWlMY(F@uXSn=q?{bjN}bJy*cH3QUdpY6DffQ zeBZuo0xC=#Pigm&KS|9)Adzh1eQ_S$X3zw1toj^M z`;pq<*K-^CooS8&HX#|yq;w_6veQIdJlc^vaeO3T;Spmc3+pl`^jz|apy)WjW#fU& z`S#&HOBaA$J3RtI&Qa5GBB$lL6j!buxg+P1Jr5lVRS)w3q{KZ1o;xl@fg10Me~HBB zBgG15+TK6b3KqE%Dp$>|UB9|S7OCEUH)xbV+UOd9*EF4u_;{AhblD)8KS}3;dR`Ad<&X504 z(8x(R@cwi+Z@M|iJ#8fY_B%E5dGD>xzX?oEl24cQKfb7RSF4oAeMP;NWaEAJp&RQB zr5njbYn+D8?ui2mP(9cV!qaKx1-sc7i|4t*QXJVO-s#bN@G&AX&4-IKrcrWPO4bq^ za$-`UR*g3&UH&A(=I;`xr{;1NL3Wga$&b}{Bn?+-2nCt@j1mZOxQ3ca^swk<4sJs6 z2Wa){Lh8S7lPr$0FTrx}lX`R@90!%?E4WZR(5u`BamnVGV$`31031B(m}JfH)&4t# z>nL!}JsMtBY5cMRd*Ly#>oDu+$#WnbdK@)>92ghd-QH+40`2gPOAiCgV{{szo-_zp z4L->lt9U7hs7}A|=Oz!lfhcg^HI_~5D5S9L0UvgSTuZ@}GxQQVA*=8MuGIsrw03C!2 z-9wpw1>oXV2t^t!KbCo*qT!#9;^O0Ea>iw86bfG%&uska;$^^>=4vkY4`M*F%%El1 z;*+Z%kjx~Yy>0)64ou%xv6CXQdWYA_Mz?G*{i8Lm%h+4=SjYI*<%MTqEqb3&UQCuy zA+z`R`>v{{#Fh*onhBl)q{LD9#rhi4F_ksAlHpifsuc;Yzwv5ZJ#KeS_NPpJzqqRN zKv$UMrU-i>J9dxXfy3VuyvCrVR^=v%{YEbl$u+hcbyj{6IpIMr%r3d~ zDTQ4tLGXY_cMZGdV0Y!!^2zFWDcn-Eot@R%d2D&VmVJ&l`=RvpV+dU8S=Gy395lc2 zTN|Ed?RKMdx|bEIpUzUhI`xM218zT7AxdNVLiO#Vx>HXXB*B2HUtV@2o3*KJUpQck z9dSdNz=|bYX!Xg5ynzTd1E5Hc$wz9+!U1yu4?9s}>87FbD+lrAjqSRC>zzCgZ?)BM zC((bqHBWTN{J(&s>CpaDO#JvSXGhQnDWkjUmjVnFUBPVv?Z9xB=dcJ=o(lyfE`-rZiILf-Y~O z1C2+u8#%oqhn=Et!&pVtwK7rk39Usu0MTc*F1s{rPMsiFyfK~5zF1gjt?VmR(G*SV zNKkzV%NgzihdsnXso?C$8Zb|Pgsvd=D1Fb3!3Qti&qu);vp)@+xmHwoHzU0eAGGkr zFEbMKGaD){9B(FU&@^q00|;oZdy>%r?b4%uN}9h0+KliJen5T#gxp{8HwzmE?CnL= zMRrXR61y>kFN3>6Fwx(jx|%#J7Y?&W$Y^9Z5vFJ)G(asf$BEOTzp$x0F%GQ%s|=v$KDRX_83+wZvw~blpKnf{#A{pbp|ulC0jX33;1sVa(z!2{Q!T{1 zXm94ZQXOl>Pg|E`)owQSOPeGgUAU;JR`?Iq4)2~iI*YUaA81DL&<)K3judW)ox|Ji z3pKV}gt$b!YBpHeS}7(uj>y}ym#8BsZ8pLM$XogHs-<8*&$k_FbV&>2mHj$Sx3fJ< z%*HKFqTc4oekxXi{)1w96Yiw9aOQD=;=4tK(-4DI zimwx~lYQ!t_>M0^aB9URk}P>?4miLOcc}J0C97jB!7by#+|4-W_6#_>hakK<3p(+x)?F7=!ofqg}Dl2Pytxce|B`%?f|6yC;uu&F_1lHHa*0sW3mn^|oC zM7R7h+MYxk?Zn#rtq#6kZA}Rv_7s=NjeHJnV*eUA3IMVYX@f#ERZ!YNA{%6KDle88dVoaySWJ( zmDVz&QtMPF&{_ac?}vVQ^ot7jGulz?*qNo^OYuQOP_^FX>Q=GTyjmafj8&Zc?BVFj z8I@||6mDUUqKHJwZCqh(UH=xDF;B*4kxv4)CSiQy!SB;flPSc+E^4(H#|8YHKR|B{ z^4w`txr`XFz(;LDt<}w!aA4zWWJI)q#X>Z_!3P|_l(r*d5@mXZJF(esdbzgu_P-_; zI&r6x)!A)_w7IFR2I*SC+Q2y)OOD!wP2p_{W7{|&D#JfrmBn}7*Q_7f!f-T`m1j#L zV)TwiRoO)pk<&x!FnLvZrTzIST%li|tEg8ZiAKaCUrRpTg$phORWVr@+YN@&65gdn(-6(JRcIY>63$Uf0TJ-$QjVQop59-P~iUh z?uZzs3|)wGdzuJw_uwoQBRe?u78|SsY;Fdmf0LnJDVzJ4|C?f+#-?4q?b)6=ye0W= z1)GNU;X_<3>;(ZHz|_y!{K=1_3%eS;FmV-qtBDO6$$X-vZ8f2-_F3+@RBifFxuTqVG0 zbrM{HYt&r@XmpimS7|vRiObfbFEN=`?=64dIC8 z0B;l1R2m2f_8tt4t{eZB+myHC{vw6vEXo*9Sch(8u~QAyLRwy@&aX=jOqlxr{#J2; z+^InpX^}0v{-=-dxGM1D6Lz_-|Cbv352`CGW7+QjF~^&=e~vouX!E#djWM?F#ox7y zE*(y=^&@N5zy|N#sQC`ZAy;}B@bn8R`Je!5l3o_X>KkVj#h_l91HKiTT8c*Fa4f*{ zf||v7k-!=JRnzV0%pY@y()JQXd__d|9anee3=>bN+DT>j1IRN3E{2}Um@fWx2(VSY zfSiMQN@W`55f5(2HxrEw+&#}0RuQHqN*QwGbke@%1p zyZdIIi=ajCj?ZH$tR;=Mf?!u{rk^F^qe-Y9wR#HQT57+Qb=l z6jl*c_AmSzc}Owla*~sg_&lEy{(R-az7R!*9jN5rAX{;w$NDV+pm}&CTGq!QINYh< ztrHTjMB|5z7VWhz_^EaR6ros78G%Agi86)@99v}aSb{h!DI4LId>mbXIn%ewHG^qp zer8tOjW_Z;jpvn$zkZ)-B`(mG1z6>Sq27rYlv#%d+WB}{>jo&N2U9l$&r7rHjRf^X zNI%jx%rA%HXj?4O)CEp#{;lSnp#=C#?9};Ph|G?aI?p2`=a4AkY?;?FdEnoy#-RwS zt70}M^=EW%!tLk-Ku%Ml!2x1qG{$w?6HO0M;K}me73%_Zo;p+pH@9+bNT1FQRx%ejKFv49?pk;^73{-o}XJh!9I1fXyX)o|&muwP2hr%~x)EMhAq z>oC%2t@TfV7!zndIEf$QM^)721Tphp zK~KS^&0jlMK<&_!9%D-#w*!=qrKHSZmKe!P;42CaNvE>C?6$S~p1{y>Sy6@R_Y0n^ zM$WYjzO^<~i63a>gO4Ba-h0g#PT=|r;8R7?+&yv^J*gEye{ip9hwuSGO>AxZzuok zX|I@W7jY6hH`YoK(wRa^*)k{s-GlbmnCF{W*riJa-?Vr%I& znXN(JKpiwAGak5q4S3A+Z2rTvdEduzFnr_Fush>N;t4uNO@42a>cMkjhGi`k*Is{AnKLG0P!~-%0y#EBfYY zVemQWxH9;XQkdJo=uj+Kj1Iq^LECSC{VxYmvb>CUI@u8fP!i+TFRQ%0vTu#)K4Ovv zd>)9F6_gJWK~G!hjLPeGBQ&PV$v%X9xiYR)RR`4c-YvLyXK{%FWd`*x0Y~AylWm@6 zrZ}R^R|2?_7Dw97-VyH>DIHO`zIa7pm29k$b{huoG)GJts~dpG7Y1J*t9qhw(su%< z^-j`=dzO%bJj+^;Ez3JOQ&O}&sVhyd$)6^6E^VKsv_ z<=hjSCBHN2DA+QZ!EYyKHN#!guu7Lqe)qyvf6*l?|oA*xj z+aG@27{v0T@2;83|BU1X$0)>p#b*G9tZ4Fp1aO&m1wILR(gLx)jb91IO zOF85+zsG-l^OOfIp*y@RAwA_RTlmOUL~HY8Ytc3@PDDgfZPd-S;R6xu`~)3?)A{L;d9w>%M!~zUb45)@KsQxL}bx@!X z4(aqW%g6c7L;OxjdpL$UE*dpK%_#tGk4LHnNemeibA!P;wv5a9WUx`!%Fv7eHn5od zYwr1z6VU%4>@CCE;I?hy2=49<#U)5_mqLN!S}aJRKymk^xI>GT;%>!?YmnkCw9rC< z;_mK{%e(h}_u2Q{^PTU{dh+CFR@Pc$jycAdJSB>-7DhY3X+ok)iDqj&o^6ly^uDiG z3NS?s|M9{n?(hx<&11Kqvj)q#OWb(*$)w-EhlGC9m%N4-khG%JDKFvqD^!Mo->U7I zBbp5CF<6pxJ?{kHGXh=HMV@_kXDS__1MJx1zff)ia%_Dz<W_N5aqAYuKZdGaLb@I_{^#J-s{`s4T_@fhw_HVUyn-lw=Qeb zF#jug)-TdV-&lL;I2Ma|8Fg|@QXZoq$D}8DHxcDh3pICF`-c1H(W~Zx7f-6M>G?a3 zc>c2?pFbrrrXZ8=>)Yck4AQ7!5h^K4M+2>a;t#MEK zN$7?RjBr!#!|zE>&3~}k=VBNHF2PEq56c3Izx}x{oJ_=476*)Me~l;BPu5WS7Prma z(LA&s_O_17I8P#P#94IYw_WVmv^EyMq)bkaIO>ndixHvK*$l2pS3VdImPDBLC5i*+ zP`;vK*Akc`=(Ai2eF=n-b)^D0;&HZg2-*(`mHz<4wvBWnNkav+D0R3b86G_w3 zXt~j!^!<8%oddO=fHcq6YhIC- z>L+o2W-$vaC-q5f0zYtDupT8S?Eb~}ceKNYt>esAiw&-zA8&|ryjufI_~Ds9Ty(Fc z^l=%mKkIQqdes3LeoGae){oPUHS}w#wfqs0>NaG~%yAXOPe17rNPd6t3bNOF-cLl+ zP>K>R-;WFK9=s1?M_p37?jHQ(26$LK=Rie3T~}Yu59ThsI`_RuM4$JPyFQ3egjH(% z@$<#Ps6kDqlTA}a*4;Uiu%_O2qgy0M){zixMyvMbjc6kp*^3Pr52wl_ieKNA6sQaH zLsJ*57a`K6(t0V#vv@YcEdy-%#DJ^PtikULpJ^7i_MSZC3MPplr7Q`${`Q_C#d zELYCi=WFtb5XHNipvm01?n{e1`t#>&GC%&=mixb43^ji}X$${q-@RGXZ1h0x8lQ+X zGZ=UsqmaMI;rNLpO+9$_v6J~B>}`~SD7F{gSsgx5+gBM{*?R|=A0)V()(7D_*YYEl?@;*}?wI)DVKe3QA`&0AdtP_oDpUGMxy8B=H+KJpjVj7$aKthITuZCkWX@ZiLXFq27}hoA9xkn5oK%Wn+gy3_3ep{NOW321G8C!BS@ z%4ZnA=}JvMq>MXGuD`_WgE5zCf-&e~?~7|u*CiGZXVP6V_o=x{Me)e6R~2i*dv+AP zZ5Yw6Nu)nKeRGuBGZiTLN#8mo_hqgR`et_(HS6Qc=^EI2w)?qh=|52YUmp(_4aUA@ zu=XaN8=T94XTtY1W!ssNpf3mRz3#Y+&k&@)qdKT#-?)kk!&uM)It27{0rB6tb!LP@ zUKa6+LCQVD*8wwLIcRIJ#E&_VHBY~iSr}|ttDZej=v?LIL~5`|{?0@Xb~HO|(8>uS zubdAwW@bPmb9VTCE(dL*GtrX!P0WI)dL?y7ud#{>e%}5#?5x)RodoQbaOs}MDHOgP zD~qg`|8$9wAprkbr?PgK6>@CVdqSMg;(!pyi(tOd=So-5cDJ&H>WslMz74~4Fxw7k z(26<4M;oAK2A1`0Z^M{&lG?iaxl<0A_+`IZl%v>Uk)#P&7kTV3s-jKWgBcTh=e-t& z^-yHgr!Q&Hz`)c!@cN4pfB;sZ#`=RiwIV4R7W4i!rW3>;%-@o77YlHiVutM6&f`P=l7YiU0IC``CG0~$&+Pv_v$%QVMjn2Y)ZrQR1VUJ4>X zzwzX~X#>VeeySXu)F;G)$$pvQYeD1lv!J~6du?h)?`9Vk<8iy<#aR9a#nkrX( zELY#OZoD1Wlzzt0k3Zu@)vr`D3Y8UiB6?2l-Jz?5ZB4?YxQ^c9`eGLxB?ol~rnM); zv@FKZeNan91H^xJLeL?CBENu0wR3&_;&}u#(PPq8BwKz|P1{}6lQ1yK)=ai}iOb$% z6Ld$B9<`urC6?cc-zd3BABOMy{t-id>jQAp`TRg-?@a4O=}Epi3L(8pm%o$AnUB!# ztroHI`;yYTe22s-254QAJ|5?x7gi)6Dt@=jK}DjjA((5`qgy|SpEHP*;pFi7$E(Fk zQ_LJP*A+qtW(ag%hm|p+!aiq%Wm5}o2^obEx1bVL6C3PXr;0^US-moD28LRCDR{z# z2oZi&2Yy}(zWiL=i?2xzHXn#SfA57)41`UWuzSn-DtRnvz3V?N=IpGYYYH>l zM4Z#r-I)8DbP8v@J5^n8GG^O53aJo7Jc@#i&Fmrf9k=3d+t&sy{#mp%6;!Sj;z@LN zT2RSX>8KG{Toc1dM$q3;sLSKaKeyin3biwWW}ZDi;r;awpNbuK-F zUQmc{eu%8gi2E6hD2~3u)HP`BRXs$}SrvE5Y$xtB*5o>K#HM)pYV4Dqo{GjO?UBPR zoiK=ObxB~+0fX3+egi;N+tx1BJ@x40qi1+nV??ht+IUs{}mZ$2ns$Qi)T? zLAO7p<$s=ztG>R1pI0JGiLD0fj6v{T^cpk6xvh0*Cwe3H*(m`6*q2eM(geKOTDqsP z`S0Ko<}sfHd5Sc6?S^%3n=>RW$z*Bp;0YK%{4kBN1Vnn7Mdlye7=o{{7m$lc?B*M` zH^+GNsW$<2g610!A_rHhxG=sKj#Yna0UiqglY8KKO$h1*wd}Ng&nLbY=9qb)sP zj0Gc#6!rsT(`E(x$%ZM0m&ubfW!1dNZBkWJ^pn1ARWF<2MS1fn?B__FJ4oo=_!KC< zM+rR4i-Z!&{t+!LHoo|^;S>-1ykmRSazc{{QsgdWT(T}vlCbKy+xxel^`C8-ZWj}v zZ0Hqfa?^XI){}%2>SA8Bw`v)mX%t`36fBmWf(MAqPC5pwz=e^{kiO*m0l2{=eFlZJw;h9sV3wH_RNS9;PapjP1%dgbCJkTXhB?UEue`iYp|DC8aq!kKlt z8Ik^dk@qz%harf8M?sd4X#ZMQhm%uL`V*uE*8}E+VgBp0cBE$U{kuX#WQJ?^){x9C zbHK|E$o*~qGD{igfI*stJPNnBfbe9Yq0Az5<+Yq_fY_D*d3It*qP&vj=jqqvUjfug zp*5D9y|j*xgcT=dZ8nD8lTHqNVp=-QA!`()RC>_0nHz(0jID)o5q%dUCrNUmq!?vH z#^WG(IZ1$|{M5SzYMvO39aeLXOV&5jDJYT->#GezOBKe^)~9xy^mbRH%SLlGE;5bu zJ>(Xm6V_mGWyY;@EI%T%F-m^lvbCBr!9DHUW9zqgD zhpL!nG$^+mtJBcA+9(Q5eCaj@#tpt* zUU|?F*Mx=LscL&ixIe5aSQ@oJ-(@t*t|=B(45W5art+>TzX+yiZ}6oTR*{9kDQt5- zO3{A8x3dLD74}=IL_)b=3K=j+lrwOBh6sa5==NoWpIPFd#umRoN5I#%!rjm42Z9Er zCiw2Gfk5}A2R6)2AElP`_7x94O{9J_a3TRUFKs&P&Ec>dqfuFdh#6@MITrW}HI~~5 zK4S%;SnX?y_4p5zT!zfqoU$>q{F}=Zq5)QE6bv0k9I(tny-#ph>v;43*G&_&4r&TIfUfusbW*_* zbMJ#c9Tw!4*2bNzrRqpAhzB>4Q6{ctUgJ0dI%FR@c^!FG(T4KsYR&ubfJ$SIVk8Ec zve-CewIny6W*>jyRQQQw2_i%QrX8gor;aLVoIxi=)iL{>fW62b-wK7m!@tXf0~bI> z)}UK7ikMCT7bq-S-ie;7=pHs~;r&dn`(FEcnf6D8HPNBUHl-eCO?(5| z0#m>MNGcNJJh$srf*@(;Q>Y7Wqou>_jHO(Z2I11+BDR>Sd{}Y#LZud3z0N*)?F&$g z{c>_az0Zq)IYSCFRF-Mq75AwT`1WjEw74(-!q}&Ii}tuCCo?jw8*uNasn2VjOn`|F zVzH@W3RgVvy?1atCsi4)%Z#LP(c$JNm>=KX!WCCR2w9Kl<~*WR^3s1o9(kOJ$WxB^RRnokjvY({!i=Tg7rPle_+Z-%W%N>?(t_n`@nS?!`p&q zG~?T_U`h_{BbM}9dY~9E4%4XQccI5>-LFrsFMBn<3RiDofl#?S+dx{y9loeKu`#5b;Z`#JIvoUfH^h4uiB7$@2{=CttU`AVzukZ zY82kZ^16NNF)Oixx-A4sITiBn3X0q2)CNRwVX8ZwIN_i~WpS{5uOi0_a=!B+S?S~ zeCnf{oQL@RO6R73GlJfYA~U>f2p5O!O-&+ZY-YwLA^f|k#2ovjuW#k2H}P)+AC@U& zWf?x!d?F3sbwGzHzIhcPLL;lboIUls&@F%P80!348CO zcz9){7fUx6!`^e2-hwbdWUCZPJH0zkk78l1xVO*U1u3I$s zlFk6TygjmheIE8y_SN% zJs_dNQQD_*CxirzB!7XhWElHyvnU*cw#R(zwSIv01bkT#&7&cNK&*&IYaj(2UeQkn z?;tcG1wGMPslXLm`R={Ds7-6k zBj*tR`Na}#xhmGkIN1e_hGq*fSb<~l%^S{&kl%B1L`ExD!p>zC^9YH(R?H|V=y`fZ z0WD+XMM$)Eba# zq=K?h{Utp;n(LC@AS#QXF(;vSQ6A9hI0tqm$>v;k)m$@(VsJ<&jHqGfc_1k9R$m+W z9p#pxZ5416_@Nf2S}7jUfAem?uE4`AWfl@hoKlGiaE+GThgk`NUJ?+r*-xaRj)=t5 zvhBYVFTY|=k^a6rwJl9lh>)v;HxienL}^nAj;7*k)hkzWU$DLr9zcEQuFBr`Y=iqB z5)1~=`+@0Pn&{8@9!&mSb^Q-{2~~XiCZ(5MEVIWmhyLFJyUqorf%C32-;+BUsQmWO z5TDo|+Ex~i$6UCl-X2?>PtFX1-r73^0sJNpt;wSX09fz<&K+r{aK|k4(S9oooXmk- zX}i}`+R+(AVD2RXDSRtEprBi+7g&-1Xr12go|@>nm5)~|KQ=W{3($}Gz{e_B>mYc( z0mzKq45%e#jqU)~?Zye(w11>!rk7XW^BzEfIYs%&rk{RHE;!U=Vj>{4ZD_YL9pZ;L z78p?Zb9++HBgFb=uhyijk`_f*doU*=oqBhbpTGpAa&{&03$sK>JH*sY$d$sB<%eOd zCj?uI`#2c!@1vMi|3r$dypW(DNd?&ciiz=Q5VsBWpmZ^lTxS^~DYl-QVvg+R@6Ag) zGbOqxd#&JBNq$hX9^JG2nt{87JgE=pxX7cbOf+I?-##1w#97__VX9KqLB(pgBj;E3 zq!JN&P5627?4({QSX5HYtB91Kt+$RtGe=EMbej3qBkxOeVHDa3Ww?4baQB|vA*Y?u6-U<8h z$&p=Wp=SVZk3U;Oz3RjV$Eaomw3P>_BCpEh2NY8@FD;?;V5Kh1{p81pK5py{mRl;6 z^jbj#frOXBAXC3Y4`0hIx3+TWf6&(Xa;VV{SHhN+AY&~mz)wY+7dW=W-y>ZDI2Xp< zhDAq!+v%}p=L1UbY#@RnQ86VE7K0Npgy7k$+@G;Tp%$RuE#nTY@L z(U*xnO$XzSL_>}~{hYU5H_Sf&jpyv#{0A`7nE;E9CEhxhG=YPo9rSC4J@py;t>n_Q^ zaVs)_;d9I%mfb9ADao&K0k^eW*dG8OSuejpUua96^2@j7 ze=k?5qDgY(aJ|c~NoDR3)365&bYqir1Mb*h*f43nNFbte&e1IlIUNKh5hcFbq-{nT zEOmqKM0oXv_q4#18U?WOtPo>C8@CFxX)LYh7<_u64-dn?B%F9Kt0b?oi`{*a2<>Ml zCYHGgb$o#t?IX9*B?u2H$zFBS9T%fyuh1$M+fmaPG5&39nzR>$dQ&6QF4lm~p6#1= z_QE5{{TW(MLzi)Z=VDUfa4jV;4O-L!8&d&6Y0vMOpG~Pv7(#x}7CcvGXVQh+!p@b( z+1!rk`x%5yCYj#AJ}6rtn!7DdVzOkU=B`d&QZLPE&gAlc>h{`CYzpFgk5o?F{n1k# zns~75Lor<(dP)1ZsG-yUnGP9fxq8-~8?<1u7#(cwr#E@+wXFEc01>RK5ft!eZk3LM zAcs}b@Jg~)lif;mkCDC?v(86mAAVQ?L~o({NKg%ZrkSJ;6@>{m!f@Q28w6wng=4Tqfq>io*+gA2u#;U2Ps z8TnNxx_{>+@PteM1YarjVzmDot^~S(JoUGYypxs3fmhRxH?t+vOvDX)t{R>0vvL9R z#GHK-2DN780PGgcMzD=KL)J5h4Th}zlY1!yC0gS zTX<;$JuSu??yG{NCNBif&TR|*uP#NBPA_|8m{AnpY@RF-T2-^TDgr{6xcO%zfelhS zmhwk#{!2wP;mag%o|tgex9g@C-tFyV>}Wh8NRlSTNgLh=jr5FP?3e%r^tP~1DY}~3 zPh{oC6&MR>dIG5+e}2)O_UP#gg97?h85f^1W(={EaDiQkFVq6o&`G{RVmZ-YgTG)a z<#n+c`hQ8+h7uqN5%E91%tSeXopWe8sOJoe`r)n5Ckc#Q@PNQP*{BB4d4ttpab2Cv$?b zQCkl~>nFx|m4KmJ;<68wBhuWUMI+M!8#6U(_GfOCXySaU2_CQ(w!>3FE6|-)0`S+! zxkaB!%SEZ-g&u!i?!G6n(~EBY(LWb6b5&Q=K@{DwMj`2@?!!<1xn!*cd*vr zR>pmdC=8%B>?!}!m+)2H8jI>~4o;B-lxsZ+76wuv0Y=5ckChCQw20Qay}hO*chvy6 z?}>qNkNb?Y!Zv7GXe$Ba!mV@v{v<2X4}~NZx(cUlvX|A(gFO)RbW~Bhwl%h(ILy}8 zX(t0+V*pYET1qf6sf+yGNyRfDcOd1jpg+(!)zzNfmE5_#NsBl8UEc_(f=31V0T;NZ zA^R;s_qo13A*e@unuqE19stP}*6r{mypB6+L<{>=IJ_&ec?p|0TE%_B^8Db85|1|@5g1H5 zzlw)@N0*XKteFREePre^;GtSc;F+bfx4ji#e-C_o^}06OI`w{a_xAXm;o6&5;#~Uy z8w-~$4|a3GHvc{ppD)hU=f-EJ1)XFZAHVDz@Y-G~{PzixxqWqfqjOy$>BwyC$`kjo z_s&skyNeveryYem<3o)#R{5)c{Tqgn<<;K15SCiGpYs~oPnJ}il`&hwXiuVuT2A9j zj(*`-B_xS-JEk9k&S(Z`{2n9J2I^=!6VQfOBhk~@8f4cJ*0my{kp#5iqt=qB>O>Te zcN&l#KhQ~8Cbic32Esyf_colTcy~@~Ei7ucmG?VV z?&Z-=xZG}i^1QiM`fpzx-5iKcvO8lR1Gj4NWMhxNmY7ts7Y(DV4ahw4(+hY{dXgly z#0hoq7+WU5jr4?G-HUT8csNWeMrDO)3<>A}N`)t)dKdh5%^T#L&M*xDM}mil401+B zb3g_cfCDddSv-B4dM%%Ck9}?LHGmfs{}wONm)!;sZ7%sbKm1T)EP_Je`aay=YRH0fwXx`+xd zdoI?bVz;iD_yMjRZ-3tJ4qlEoKY~Ta5Q2v{a~9<_7G9?5cndy{3omWQ<>O^%Dt@)q z6&&f-scf-0bbYIhd=Sm^@7R8q`)&ZeFyZhJCVL(W>CFa$gM-h!i+nkV zpt?CSvhxHg?6j8D_JRHS@K0VT1F=l_+|zb2)$!T_ z{(E!_tfoH+j43x)-cVCU@#%hF+vw5lZ<_Di-;;7^xm*@~c!GMu>Ee3urO)sCh|2B{ zJ78}xyU@m>zvcB6>?GtM3ZUuI7N%&G_lAixYhY%Wate(@GXj?L`J61-J-|iDf`Q4LrD{nGUn^eNk^<@5J z{jxu3;kYBaxd6F0&&Rm!Po=4Q?NJcYY6h)6q-ovEW)6MdG4nCr0(q+z39)x|YXD~_liuQc;=Fj)>}KLRPN|hfTDM^?_nT0I z(&=pT?}wfK_;d@%szu%fkALjm<15wO_qc%_hkx(l!{@;-^c^9??JCP_$kD<~h zD>LEbf+OdfU|I7s zmUJB)gN6q59HrxSxd9j}xheRV#gPJ0*msDX*8(zHR{x)y1bC{dfAxsm)(>hlsf6*8gq`F6J@ zNwtpsfD#HaDGRpQTs@rXz8}N z?1ZE)z|19kE$RC#8B_Q{s8ikq?5Z!G$i9eNYjCbdxdNgnkQI~_r(dj<4%U9LG}-ci z^fgLjFFAvwaxF@~`aV?sjD*Y3ydmA$`dErpluQTED5vy1T#pilp1+6Lz93?X|{E%Yu2g2k@20g0dFRJR0Ho4LJ~ z+PDRygiD}6YZ_9N4ZR9crw5 zvTIZuOGY_zE^R1()DM$N@wNP6UwQ&Zsx0de%`oX5rpjn1jgN`!gmL3}E`Qg10z1|{C1uFLk2T!_!{DET8AK*-c+7t@}?A-Eg z3G*t3fUT?)wB`ae_GZ#3UXwI`uoou6l|ubRR2C4eqqshdc%-l`tBoGqPo}@1v z^F9Z!nO@95yqlApQrI&s@-$G$*5p7@ysd8JQ^x~cz9u=sko)ZQ@3TQ&3Fz3g367h# zF5A0}yCF^ggl_*G&poaF2PFU3D|O#~eqM5y%=bP$&~Vl`_<`=jgO0c=OcEV#JOdzL ztt&JqcdT2;{hXk5{;XJzJfXt!PrAh3qn6QV+MyI};5*cK8iZP+{U&F2b~l^2f>p$m zPuIGHw%F`Tm8JdpVf6ZpWD4U#t1w0!!SS^;7`50RKMP}0>YGNPbCGaWrBsRlLYFjr z+rG@73jR?At2w@meV(YyLs8VeTEq%oZSYzd-0*bpFqt|Ex3Xzf(|Gv6afH;I5m+SB z@4r+z&QnYD6y3HHIuMJNineH=7iq_hJw{dGu_Bm6nPbODm?5aw+Z!8@QZQMfyVkGZ z*YPd6l$`st!7uR!jS0kp=$)TpWkq1vaCC=!-#!)c8Bw#)pAk&f%|?~qMz!n<9ksFH zvjSKc??%!19mT~yvH!BEs_fbb^XpM+>&+Ax@~@=yD*q=jd~Z17Dt|L)rz z@C=)zO62{}jMgho5Y7FAO7-~B`#?>~&hBq%-w*$s`rO7Medzx#kN#)GaMyF|GF+&< z76ZDn-zItVST!5c@Hr|Nh=8lq~(c=PZ6$(X zt$(rW^6xexSyzRnFEl9C@rEuv(f+76yFVk|o;*prUR(G&x;nku(<$g(u!8!9oQJB_ zL9z+G{U*X&q;H*qGbuq(23<5u&e4km_WY*T{4VtZ8Zk8dvh`rQHV$JU#M!gr%ftu^ zwg(1^@>AWyLd^Pvcf|KD!w&DuaodjjFS-MqG^k6XNYiw9d(b(NIhkj5LQca1${;0; zJUb0I(rXsy$14oCieC3g>K2J0sQwE`%i)W>+4rU&JB?z2B%=<~VKkCs(VN5}!*eH6 zbEw8(2SE37JvQvQMS(&|ht^CD3!~2*?BU>?Jdh*tUhi8vd>%!MDPP?yzFbr#L zJZB;o=0FujfaJ;=z9H0p1Bwmu47RE#3qWOqW^0mgU@`mA-q88!FUhzM{kh6e(QcW5 z#WZn92uS}p`aHZZCH!f$DnOxiS7q1oeRG#w$gE&Z{N~FIZ16Qgo}Hecto-(p2BOqWTGQ(RiN{pS;+7K~dyi9asGdd*de!xmQwwXpj= zicfxz1-#*pXVfr#Ewl4cR1{qQ`ml>Gi#9VCvYYp#`+3w|=W#4BK=c(f7lpM4QkT=? zSsGvs1zrL06y#QiL;?QbE41CBQSyQVz<2+&IaYk`mtjAMCa{RT_si~TEv@s@fqAXse~5X3NNm7vYA$F`qhd?b}tdPEE5>Ap?H6G+ifjwyeaVh;KmWO7O1JMGK4fF|?^paEtjvEEpfzr0f7LI4Q#gyCYI4(L z?qOE_EuU`D;&|tXyPoH8n<`+fegFdspgwa(ttIv{) zPy7R*y(|F=zR%ZSiV!K=^wZVyL~^SGs!=G@GsXhN8R^t+nP*mckjtxI#L}8E8H+e1 z+bV~!5z+%a%9|P5WLZmA_3avfD>0j#R>mRyQg2ROyTDw!MzfYoQC45}gDV;`T3&!Q z`40fcsCboTRwE0-ZvW1Y262rG`;G(1-UzV;Z@oL-#aw*M+e{J`B=n&H7`?eUYuXBo zXBA^G*zWu(2nSj1u%XxDGx!+Wb3*$mBqQmI+<4RPJsEn zU07)@m>eq|Q+MS3A8nv9Y@~70)7D$`7rc~B{WZE(QN{@>N$ruL-CIMV7bQ7Ld!!mc zyl>Eso-?8I7aX8FgJjlExOSj51lC9cu2+8I?vl@F^_T0ZG_YFQZEjBvBs!srA3V+X z?qRp62wH>|3&01aKZJ2S;l%nCn-Y&zZzPF8!)dRzZcNa}{WURE=NDOe-82>EBI+v! z!hx#P+mKS~7h@w2-+8aRMY5ex?r-T=0b4A|xR>p3@|Ec%j?|ek^Pn{$%9uwaY0%h7 zJot=?mmBux)#;Wrz;&ndPs~9B63^HL-CI+XcBB5ozI(lav2-V}g*S(c9iTyoW;@t| z(f}!+0v(@!aD@bB1Wq)h&ElLfxTn`yo>@|jSZk$*_KGIUok>QD)E3ae$f>DVD=sI+ zDb`iM5wbzP>h=q72jdlXE1!esM1h<4ILbz2E-sz__p3t4=;|Ivr#)$nP~3{J-JUoH z*n$Ff0z$xj8@7%{hTs9-OTxLn44L@LglVR4)P*>|)L267(t7C}@jJ2yNa!qMV2R%~ zOyNk|MYhCX3?&W>Y;jO$c735+Iu{tjG55z46e?!;^@?T6jq=2+MaH)>%`PVBds)J{ z3=VYG3RcN;T)tV3vwO&#?C?;0qu50e*o!L9Q@d9t%XbgQSr&D)XG-C(NQ$HC_17sZ zOxW){{FVJ4&{`PxeTJh@$jU9y>hPz7JdKpd2?-{x^2_P09W2wG#~!pwzi(Z8t(_=5 zp&^Q<3D2;y>W9c6B)w7DAf}-L3e<9GbV^`$J(-komjcB1w2$SGko6ANYznkM`J&TI z$tv=GfiwUDhmyS@N?ZH`F`ZykJ>fHLY^UN$)>y5B=NdF|51+7W>Z@SF?q>vn;!JNE zPizlVV${r&r^lMlvo9B3k3>#yI@UA>BsO*HSak3FS4r-B_;@?DcpiNZy2o4fPwWb2 zU%XB5l#NnbNcwz(M?i9WUa(VG)E_RqS!w4?g+H#o zuEf<11}7H^4D8g8lT)EAs8q`w|ohJzamhcg3GnGkZy5^k}Tw9WRGjoGl6LG1>h=U?26ug*t|s2EsvTtQRf}5 z%(5Po5Sq(;8o1~iX7G@4wIoBlB26nYCo4zLNpMIwBPBQT3o0SPYIpo>Hg9^ZrSw!2 zgMGe$Sv<|S1_qHU*jz|K4_WiLDwjbCvGco&_0PQW@jAL1JoLHoKF;|k>Mgvzq5X@? z4Ei@H;ELO=yD!Y@Mwbd^Yg_XZOGPrl@FEXK9BFrI*n@fP)?IxAUx52X1K)$=Mb6%^ zxzl@EChYNsZUg@id|+*0cE-_{4?Wq^eG{NX1u}K0fe6S6=S$+n$Gy7>Edlc zUH(=KAC4Z0b4FRG!P#3J5IhPXR$OS@2^IC)N*Bh{x>-Vd^O!?654#D`jK$4LIs3Is z3Uu{fZ4BMVu8MYgz@I{1xXd8KDUgp@4U)4Wv`k-javOe^orS1gSMFJeTpnbCXJUu4 zN4)sLuj~+vCsL@JYc7gK2b%JG(JACzC8HN|=KdsSnMO~k+db*G?3=L)vd#)N^~-o( z05ZV_f><EhM%gL6ZpTUesf2kPuxtl8he<}$Glp@2BsGqD2sL5g~ zZm)u#HkE(#=TUY9mi?g^3biQzwO!%C9e#*kN)h-}iS}u_J8q9+scL%Enp)U7Wt%yj zNf9%fFr`pGB^!*)%NEEW+DCZsk`IqYd$p{u_eaD#&OFdOn)$;V-ra5Yaubrc>6nj! z{uH=l1ljSrJ}0IDWZtDA!B>ePgYzK$j}B}XAYS|v`{s$*-yHxpYz=wpqKaBZLdu!v z^TMEVTtR=2<%dW*oro0T3A7oY4bP5}(>!3qeB?{BPnYpg0Di7s@jG8>+U42+z~D2! z={Ocb+BB;lv1m(Ccz;A6Gef2%xosf7^P2kOKMT(KOb}@8THcZp`!fd^7+4SUH zLRF5bpu%`6)-b#(Gz~QH#p#zl`k!d9!pRMoW=uPG2`*Nuh7=@88Ze$+Sl0{9CP0%g zWWvr+)>u3CARnf$guK(37B*rH?|c{QN%w?%+6cpwQ&u~51x?!oI!D}>U~@b`IC=UG zm~W6QG>0POvvX}C>QI2?Q4_*?ox*SX=xiAkf<3Ewzz&LoJSSN@z@VH~k|px7bC=W8X| z#O*4aUCvn3Eg$j)boztZcc*-!?xe9LGG`bOfBde1pI6$mLl;RC_+S|_^io_YOw*R|b{Vxdi-%iS)W1>cRv%G5b?(Ie{!R<9kI8OQJ(Fu-%nePBQzBZ|^ZPTr% zxLEY`^ARAdP(%<4HqI%wdib@EkgOA3=c+@jOH}^6Oq^4}pi}_2AWL zNo)!AnW*ZsvDKc3oB`JXSyFh^bPfRGe7#VTrZ!wCJ&Fs!%#uMR{kg~?%xy;2lI(D3 zha5F$l;W8(+YFTgakV}frwxfEVGkplH?8Qm&@SS4WkE~3NQE_?2?}4VHWzX?A(+$duo<1Q>Tc!vG*)VaM>1t2+rj=5I1lgaYS8>d& zEeEqiWwFj#6Y*UnjB}4oMfh?UXN}}@$Kratz5phpACw8>!d@HP|HxnFnC_Lqve62M zse~8pDFmUFiSc@!eU|^l|9Ll7XyPf&puJVv^Yu(2%E6f^xv$HnwgeN8aZ5@JKGeXG zyRgEfP~Yb~=K*H@KP z3iTOTW>$b!@>+NsdMCh!wpO_#9ED(r`jF;#=fdXP;bQp%k`UPDC5n8@|Cn!m4^bQSuk_qmHze)U=RuxjRFxb zF~s;8eetG`&?QnFe-Dmq+z!;jC`PaCX(E3!wS0bwS9p!ji8YB96;+sm%HXI|`l$EP zAvYy;hN~iGGx;rk2 zo}@QOK6tHiOer_~?gk9FU^mQ&ZTA#vwQzA|<*BhABHoj&HQQUQIfa}Bv7*))$GtT8OO zK~i0=F4R()uLG{W59r8jB$>tr>G0O7K9u|5GP9A|%C+DyjMZawneD)}x3~GY=ZAt>7MS(pi-$+tyk_m|3ZA zu}q1AJ7C)_G!D%e|Kl(BmCPjCP0yBpcUu1Hx$q?)zD-mMHt2c^SURe@mAFTNC}cQf z#7m0M*?89sQ%8LGxllgn#Ex(?X6T}!r9+rA;s-Z73eVytCcj}uy;(jvKP zD9k`{R~ECKlm<%smM2$**C zsN6Ck5mwFJgcPU+>-f6VJ|rJ32zVpQ{sjC>4f9{T%m38)&#kX%c7DiLJ~FS1j0jAZu9p zv((X@^$LM!Wp{b*=jU0;<#%`STkdbw859_#Y?(4sI^oM-H7tlbD{bhtjAKd6zYxap zKh7A;ve%EiIhncYi za^?{Q=n=pZX%C>gd7RMfi|uZoB&wd{MR z-vOV2&+t2vCmMj>EL687z<}0A+j7YoCtu=y;gqOIS?bS~&uo5Kt7VMQ|9!v4=kf1o9vE@};@veYu1V9aisCv;bd0VwDi*+q zY*R@fv#Ne?*XbQ3%7zY_NpeY12{AQDB&prx_$1EA&3sogv9X77!YctaCGs2rki^hy zSZ__-F|V3(;ASyljIG=Ub24Ng4g^A`f-HI8a$8P>OH9*wa>$qQ`8_{hD#)7QhKhc& zV%4@lJ?-iM+{TKRKL5puoz+`xzj@9{h(R$UK?^e?BwcsEi0MK{07e=1zoypT*7Rzg z1Hs)33lcOy@ZcUSKyWA|KyZRP1b274^xxg*oF2FDz5T!JQ7=60&9~;7YtA)WB1l>5 zZW}Y8UEj`B;a}UQeZg=e_&1s1fdduX<4a<+HYV88ClEe&@L3LCY(~SEiDT8}N8K$5 zHP2U;67o-6m>w+1r{rGhDS+n@32El+_KzQ4HD*)pQxm;6+0NI%!_0e6V*>e|eE!F- zXg;fcL?O$I)=O`OU=f$r^509EP{beZ5w2|3B}f4e2>0w zX-pqxd;DpRg`K6a{f=*&ciZD$pX@k2YwQ9OfDWMU547&HUH}v+qGZAVe$@OkwC4Hr zXn3FUcG!wBB!>Pgl;F9UhyNmE& z$~xgs5y0Jv!EU`)%f*1`X|Mfx{n49R`@q8XfTE# z>y}jazp5_+7@vF%;@`So$IM|#3bJfE&*)3lUX)K#S=Amd?4s73 z^CPjYmsXO`bpGkP8KdJn%_gsNHVb7^7?UYPa+4FF=rev4_Au5l|0cb8`jUgfz}Zww zrymEkMlL8{1cJ^iDJ&^ifDgeT;IY}1mcHE|*MfGt^w2`@2BKD~y{FNQunNr6p&03} zfgL7}nF8hy)7u_1<4btULY4utt^hxCroXwoc!&eph9d|}whmKWh_I)vBmyO+kW&cq*oXtW$*eghc6K1a*7g9`{^#^rC{7>2OmdqQa zG6Y>4VG$BmQK~Cj>6;=<;G1F$U=0rMGZas(pHw`Wwp#EHHLjtaN-5@A^?gWb$EUlw zDB^VXSLjoxTpadbCp5{q46&l$OlnARqP(w^`?>#=qD(L_&=U9u9Wsd)aCx6st&}(W z3LACoH+;S(|IgX)G55FvC$FD< zoCWTLHy;C)|HP4ka3|`I1YyCnQOKc8F8Ms~IF^I9ITStX8arer0jfm1`|H3jk{6F&lQMq!f#T;1!3z~DQc>?XbTwPxgLtVqhu;0m zQN{Vsn$2MJ!lBYz;;>XH1z2twGDabZTV+7jG#$oYR}y;RpAglxoUJeCDCTnjk}q-u zct6m($uxRnLsV*RF@^kdK0?MB-;NAkdf!ucD+)S3@c2F~To0{ucI5q!1QXx=+gN(y zFfmeEIT8J9JojFs$f)3%_-@$YJiocpo84Yh#RCk}!0;0Tzd8+YTO4oF(l|CrKABT4 zZm^Nk7=GcBB0!<CL$FRdP zl)hUBXgI9-`hJ}b&AS`z+|i{wqp#MT{(eq&y63ob=gcgK3m@6wgP{!~ksNUf0Eb#S zF5>mo>nM}m$7KDJ+U-tO?|O_?<@dl3q7QGrO>h~mI~y`+^1#u$!K`t7LwZKHLSeU6 z_Y1X4tBccVBc8|p=|weh;&4H{ExY*oa)Wf!^5l$Br<<@6n$BU;^g^fG3Mniv_2u4I z%_X0ur~4^i=c414C^V>BNP-jcHGJ~b$woe_H4dJ}sXRrna`eN*ci24}18fIgl{Dc3 z76XRovM#Kl;+tYle_W4q^L-HD&a-0w1;2hV)}P-caR>Pp%B}`;_XO?L41CTmoA+l^ z8Xdvy6qIWW;bWiNHR8D~ALfN^$=&eJB1$i&gf;y>r-JZMML5c3Vb@-Ta3ce-zUv?p zmh-|KP5gq(6icWyEMfEss0Y+85LKCU@SU;p_ZWI-A71sw^6wk1B!O8slUDd1Vx9|9 zAg}$4aLpp6@zrSc?8`k?Xyw9bakPnJ0icz`z7UH0%M=T+X#{ySF_uv(vic@2!%pRr zSp7PNIqdYfOoYWe;R{l8dD}oebtK2(_{and3Ces>@cWVvk_aEt&@YBarKvb|iw~Gk z!hVSWe2cD0kBPyizlHsEk3aGB@WnTIREna-_)v+0sEQL zk_&w+D?VFsm5-YCV)Gl%Z2#!l{(I`f`sjs2?l7L(ed8<*Y^7OyrqBJe;Sqbpu)UAs zyEpjl5^IN1HUB83grefAkw1qk3WdwS%%HPd3VB(Zg;m$|PM~WklJ3=F@=%_*Mngyp z##p0lME=-D&VOnFoW+uKI2R?gsaIWAIpZuTM?X+DNps2)^M9r7U3y1={82~8^z;un zpZra(%N1~#|8oSpAL^8R1Q~T_3ENOabG^@ zb76iJ@ZBw_I5vpP@gu;e`9_il-SAh!N*rrJ?ppvDS2J>mP7eB&h*tipkOwzNY9#k0 zF_u_B=Jmy5%SYo%CQfg?b7p2@A>Ljxx=MAOe=yF=|6h7h1qjXt83z+E$ z7~5Vi+sQrXAzW?N+V`oVU(RF!6w#F#`B+5ON7y(eHIkIrVAona0Kn~0-8v5F=4zew z13nb}&iGSlh1~Kyo~W_kVV&&{B)vH5#QW28+Y??ng)j$%zs*thZK>T@nxW)`Lj_=O zbDCRsSc-Z{uf7nCrLoiw9wZ-Egh0pkE7}C48X<|ZMMNIV8Vo}NsR;us%CwAzzo7?T zc&m-ZDSlSJ+)Fk8K7-F;(q~srQe_uS(HzOAnQ;642~9LywY9Cw_|B^DOqG2{hVS9w z>5}7kx{42d=5$79%?~^M7ePI{D}5baGcV=)AI_Hly?l@Qbvzj9i(a^*!n%)%5H~bp ze8vRNIT4t-n!Ap|I~#u7V23~@8mY;7M3~@TfHWAwWue2gv4yk>C)UB&^XNQ}q+Oqb z)CzdB$^a-Ek~nM0(Afnn0ov7`zG=A3)Uce?nRGEH*$Ev!W(-Jv5k$-=a`F0SuEwD* zQ!$@VeL9rj9U)^ywg$nQYNmNV1UM1l6>uoG43NgkMaBHGFRU`E`j-lcFG3SH@?t36 zcE-lzX?3f|&j7VpX4l_x=-ylGqQa+Zzza+7Irma5NAH)#Sv>$}?NjW;9}43NiRZa- z!Gz?~idp!7EO0{LC1VnW>t~AZ#8V=@)PttTRM%MW!WId7d646`uu-;w7P5t(i*sU# zLOe&oAHPR7*Uo>>Bmi7i&$jh3p6=0}k{3P4PpmxuSYc()gVRG6Y69_~SR#&@jYR*o zCUnHrsY6=Y7y8h@(s9S608mipPxXSNtvG)`$#;R=-<)_)KQftt%tLM_NIfCMx}RG< z#)Yg=3AgTSo*hvr=In!ZY6=H8yjzhb54>@xdx+q`(@LDXrJH!nG1QZyhX5&4tNxQy zwQ#yypgBQkn?O7HMEh~f?*=bbgP9QDVqDgO&G?Y;K!<>PS z@mVZV)i2-)Qu{-Y(-IqW#gc4P;C@{#eK_vAX*BllIXGVs_gSXG9%p)dXlqblAXmv~?%j`f6*@rhLK zgHGq3W%$t#51WHsr{^FEEOJY%Toe?&z_&t$YdT4hFOf%)_K;_0lhH`tUE}Y(-o=#} zwXq*se{05>~*w0zX8;SggaiIx&PSSR}+(&=Mo7X3uM7^LY8C&1a; z$|NomHj%++j(O)QH{ioB8;0oZ1`K<=nA@i@I17D{b&i{S1T24n9&O#}~esvtY+QurY>xk@Jm;;kJoX#%Aj489Ze#!rKx&KK54{0GxYYSyHEnawS4EysKhkfFiKMZVr=$^fXCw>guwCN= zD9IF%X8mniF<|P`wZi*0HiTtr)RllKXLf1ao7E4CdVY15#gdw&L+eRZR0AZaqj6SA zjZOPb4!?ywYq1McdXQ3-@JcAz>{S;;0#oh=H&_vGUT2TKp!%NQJ~vUq?e3!X4;DF88hM#~mB~`1Hz*-)t`79liu)rH};M>zL zA`|PAQn%&1cEjd&veYD3Bg@uX$H6M1Q>IyHdAm0kR-_TfS;lojtQZ8%} z-zT_AN&Xgeu%LQ`l{=i#vNdi><`X21Dn7pG%8yRV6jAZL?wnl{@k@_-z0X zpIl32nGW&br}0NX?iZ58u=Ft1pc?bdtjTx=S-~5rqQ7XoqGYlWZ~bqyHU>y?nejcs zH@$!@z4RA^jdO%Jte0yMDVF5Aq14kjrs&$UWy!_Be>&SN+}oiAqs-JTFW6J$!h1h@A zFLn5*myD6u?|m0O?*^R6zQXhE(I_M@;l>o-wSVe5UR2Hh0GBVqG;Q)3{i?u=%i4gG zCkDU)MrP9MYJ<3^BrS4P&^7fR_Dh?C>PR{Of5hrBW2^T5`LH(Y6MRItsFT#)P~lqqSD9)#)P$AW z(m>+LR0&}uaLr**7N|FuTX!*I6k!sTbW!Va)no2!SiflOt*W@y-@dQ1`4_|OKV2KX zF)x?$B02x3w{Rs{Ccj(1iVL_3GcwPviG;Tf=JHcJnzh`RQNN`L=LmaY4iRSeA_j_i zB!Mnc@0uoaT30|n3-LE!5A1XOs^nJT^=hC29PK-sGjpdE&)kWWLDVg0$%^SMh9J9s zoMv}Z{LY}QE%6d5*sS;>q})~lnmD4^iz2}QUU1KfUkipTXF#ywZuIU7-m{LTHx~J*&~BjlQC7l%k;SrHJLWKs^u(Zv<}Ab zlFo)v-G=(v!^5jj7=p-qDB&D5#~sZ&rc5|y7sze9Mg>)}DMJ~3z9>N-aoIBS&)IE# zy0Jn&#&ysEXtC5#70*qkXBguN%|Seo~^lVee z@Xrh1aYqt#t>ki;?@%8rZU6~5Wd4dL#{bH z!oxm~7oflWzd51*J4sD;+wR}p}{4-6o;!jFhqkR@>8^o$x315K@72_xUsG!Th+w;_ zQ-@>g3u63Q^^++x_;qlC-yBF)N3_hr7$>u0fA|2ag{g@x-e6&ot(`N-p2)#e??R< z=ft@bF^N%cc9sFw4Q0?qHpJ)i6jQ`?{qoP4NKxETlA*13y*iej9Z=Fm!RO;e*mP4Q z!)(ls#!#_um2Q+^)-6u;MlVc<-SgOMyLFScC#cX;GB+$ld~1K_?9D%aQr<5QVBru-95Lof zm`>&a=ayKRC)3B;TAttVqbB9YH4vFrJ-$mUPst0HiIc=x02U%C%&t@Mu4Ucnoy!&z zL<^jq=thzDgBZCS zf(j56Y2R*F%zhk-tL5VFm|gb6-tj#-vbz&ECpx&{x4zOToDWo8rihcT_Z=>ub0*_x z0Ra~eU2WS`fE~SP&TH-JA9z^hW7u6ZOqOS;H*fCVIA_2eAg!H*RQRvJ1$2?=?(yq_ z1JFks*HMKbwWjbLAwrRTQ4(vq5aX2hw5b|t@BmDEon*h0k+e$7rpOX5!x1x#6nCdI z=q6*`$Vdl5a$RnxOtudfK(`+y>`*p${y??NfcqunnCfdWahc7SLW&^1=6ET--LvP2 zq7NnDh4w=+&mVcB{o$n+uqAom$hLBOarh#cuM=tLXgB<)VfDp!{LhKai%K?X-Dm$Y zuANu3eKb6P6X*o5J=cCf_{HqkHi5thdxbp@P@y^byyX25D*sU0cFHl(v%ki?h7n(Q~?-A}G)%jTUNsX!Hbi z*t*7uque3k;osh;b_7*IR%=?DcjC^n&MyKi0sG1Aq#B+RWrZgAW8b6GFCOz5t7jJRcV337%rz*H+3Y?Hf0Ms2HJ;w#icuh3HrLUfn=+F90hKf3!l#*;$pRdv!3n)OutW68ZTVrCzZorH&;R0Y2ZgN>o z0eO@Hyb|%XbX1H4LUOnzC{fCxr?E6pXr88&*}j+OHq*xelr!<|ZI(&piZIjYf;5sr zq#{RIXs2FaKCBtoVqArsH8FVHqxsinX|oemg-s^-c%;w65#V(P_%N+lH#VbF{D46W z%w}rGcd1r;)v61iH@Bx>Kj?P)0%zWo@C)mDl7XB`3~?gc#I+18qi&3-M0LuG-%@U2 z0l?ADd&Td(fdw=%<19!F=1|xm>nFy{labX(ffMd3)8uvh># z6Yk;(G$*uH;&7oE*GD7L1MIj$2~E7_P@0xFMx}xf(vlE}QS(NaV+UK@_NSHh#~a{7 z)|R8uefj^Wc)s+y4983rD`D8v^$7W;!A&s!FJ*s_-V(+j;zCoE*@ZHxDJe6rAOCdl z_NGy*oPCo)!B$EMWXkyxD!GoU)m4VRvaY)K<7CuL51Iq$jPWfVn)jBOXo)fE7gS*zZbsZU*&&+KE zpi}E-r?n^Y4v(Ky;iuE}V)Iwpd;8k|MkD_RmwYVppCjNEQ-eTvW53pud4zVR%adaU zfJq%aId>U^x~Q{R_{dhHrCPk{fQkt^=~A6urWmUMHF~6XVDP*8`^PSH-b$dt=Pz?4 zk-HRjssJ`33ZCAGl2TIFwYohZ##BZCtpzZ^t-_9hA0L@9fhk~GDHyC8AxjUcwGkBp zJ}*|Q;qNj2=onXcqFI+#c^4+wZ15PQtZUibU!$v=F0b364{8|ZwevOQ)4I~578=Mf z`5lQ-o_Ek+iH~I13v(>leTGf?Is+hBt}}V$H8^_~hdquCA~=Xesd(0qrv1lX@8amX zEFK*`|K1bxtz{dv2$kcr5TNe>`2BiC&%3aRLG6iy_et{FZu`|tgvr?4eOvD?DkgJ7 zdm1IGejRhUhATEeMihDS8w0oFa`&66D7>vLo^25LKzYXJj`?L#ili|f!x;+hAb5rV zcf^}M;9XKhz&3fx1Tp7r(1mEnzkKM$l#OcT9;{rf`v zl<>INzg}v7dWvpq#;J#eF0>^+yhnij)K4PftvRj|h+2Ye|}Y}%c$rKY5e3CL5P!Pz2R)YRCtv| z%zMJ33hZt?4rn1*e$}@S0}gNPF^9U6EdJJ~ysjrvYCaFL+yh`!^)_`kiTo8N7BxNR z%v;m>$|^=z8lQpQPkENUd)Jozc=NFGyY1xvYz>Ls_pRdc7UMAz>Nvo4pEHH$f7K2^ z!dANiRZHfi>qrHvG6d3Y62u8Nmr~H;ldEvHW!K9!pId-;2AmLq0i=oW=o`(QS2kz8 zGcFb$djRM`QXi%IjYA>xj%f+jz8DV~F2FiyViSa%#Cqh-Pm^1Q?X-C@h*QoJxqnpW zA6Xwa=udLC6Lfe-u$A&WxUxuiYv0xqw&KHQ?fq+66toRV+LORLd7 za^9yDD+hOpGwr^IKo8IcVf$=d!|A$W)JX3&J$Dv83z2!Nj|{H7@l1_y*gB|y(I{cV zlAjR2R+=(bnB?`KLcO0R5`bBx+!RN+Z?s6dXbtwTm+?uDWnnaQL0cuyzIDPz(LyIQ_S)0~3w}@sXZ(vY& zuSZC5<}P1GW}jSDuj&txK^%yjWgIV+A#)zJ3Zv4bFk28s&oJd|44h*F_72w^(4acY zmY^W5nt21T>3j8d(QFEVzN`rJd>FBnEhZi~4S>S1CgOjCBcY1AcEkgxV(dbF*d^Sk zKeUE_=ecOU`{0@*Kkd#b9NT)iQyqY?{3cUvHef3_zn;lm(tgKzT(_nN~>GZdL_R4xjea$?Mnc5HYu+ zn6BYu$UUkjFx0_}3%4Db8Bu*}`^Hb=X(}X{id(?CLJm-G7rizBN)zTTQnd*Npm$FJ zt)h5UW>+@Ra+T1aX%SA&kecQ&_|9&F<;2lVPq+|4V2B*-z&n`7YhcJ}3Ti5C1u<%2_D&wU zTre|3%{fP5Nl!@~sDn0J<>g*j!4j3#Mb(5%uU-zF{01S2x*elDx&+9sn%B7Tz zuJ3C4s4n%B`qb@V2OmLK1q+gg6e60AY--Tou2@p zx+7uN5eFWCGzy#?c{u(S2UkOBJNPlk+47&qlSs7F5s$)q{#1&I!fnhA^t&G&Bp>-> z{{r95)Cin(4=D39+O2iqjo3gi8v&l|xp3oENN+Eo}SP zse0WVBRDd7;eS%UBhg3!*q$ur-nsofN!i~;^=~-jG(~02KN_*Bpn%d1 z^6m>{E^Rd7!QHF{Iv9C7UL6}PL?@T7FlPn39JW0jzu^1(_oV5-b)Y!H{$Jzfb=5I9dQP~jHNnEqZ%*y8N{ zE^v(OOW#N4kOPMlB1s3Jo^;2gS|@D~s!2F6h&2Ke-iYUlf2Q@>r3)AdP|9A=cz)yj zEaDWwf3XeEE0rRDb+{Z%m2@}X z5+JIxI*h!r>-e`no@~eCQ%1$zvEH4O2%IL5WLRdfl?>NZ18noeGob;tUJ@~G;-i|t zI8}5VEvP1xyL`%#LK}3yJ)nOb&tkyx$(zO+Ww7UidJ$gT`pztpN#vlbCkq0WbRg;o z`UV|-KQZ%x2DhoY7QyqIh9j#M2?LOCkXbktSVIeuo-dAT%)l{aMdgbNyJK3JTy z+Wz_aI^1J(&w4mCxDlu@4M7BUBOQZ_mlf@PCHR8wvhbQ$h6psBy9y5g08%l0_O z1_z^b&*qs7hynzf%h`eYr-LTb28d}XPASdLI>rVJdq37Qr> z;R$u$QG*%%UQ+wg2>#2j!y7P$#geVQPln@uJZ>9BSDR|CU3++ zmUx>S*iqbO3|Nf`8|R=*mrjd)L4#xn-tq^sz=!ue+9fv2+XF6U&%*q1Z!`q;@HaCoxR0|a+Hd#X>85WNqlCu~L81)V4csDM{PjAV=)%s_lTy{H@lk5z=g;*zE$ME&`joU}#22Tjk zuY2S(CSdGWLhO-SP#yo$p2#uEIAIut8#;Vjy+J3$23PK+rF|(FkbEQxeQEL|^+DHJ zjd4=;hJ)A`=x;YF5&Ph($H1I>OFj-dK=i_R(CUMUCV;1u^OGb8*m-`{jX9Pxql8;M z2kVRfEvsY#&SbnE0~5oIb{M(Vfv218ESCu~y&w9Bh(KHSf^l(UuTMmNgl@4KkxXGF z0KR`E8Pv?yb~68OPm#@BY~P?N`tkce-lv^m3bv@v%e(#e$DH36=(rdc5HQEDB>=vE zl_g+dJq#Rq1xex5(>bIP?M=RU!6GF01tSctPD9;qv8czljiD=P>QDjZ!fP!^h&S_L zEGlIuz$_AI#q$39#LPT8_5rAaGsU{$=Kc?nj^(l_e~%w^*k1Fc$vQ2OV@Q7J7xnKb zp#zYuf>)0$Sw97bi)0zXuNAX4ZIOQpG^6n~s=3S`?&$tOws|KNMMACBN`wJQW(98F zj{^ck0AnV%R&1Or`n&Gwy2$|Nj6J~vc~;*z`| z3;}hKO?wrnm=UQVC{D?M;N!Kl#T8Wbnnywilpqz;RVPG!_`HUaMCg9z>B&S*|7k6m zDfVX+b^Nqg$#vwqWa5z&B{)o~VuGeR@WDFlQ#UQBU;MsqsFKjNki5!!1l- zNhkkKjCu|*$hWn=$Xfu;%QKf8BEH0gG6qqc%}is*4ib(5DDpljApb&f)B&kLs7psX z6wK&SUZgwB>eO`~*tu`vfSm39S7={BsE_#C2CL6hwf~QDc}(Fu*P;sq#ITU=(?c?V zA0@m7-<&X;;{t{O%t>F$2{EN01O^8OUAdTJRc|L^)kOS0mNjuTMD&FU^&o06E>j1( zSs6|GE$^$Mt`L86x9BGuq$il&iGEB)Jg`j=MP?8^-j}mkChp3Zt$B(6a+V18?{-vT z7T2XQ+pQGK4dD*r5Xh9+B=Mg)Us4XykUgWx9{#%GbK8PQKY_mj4r15e+$TG9VR z#RKgdjZ~T$18-s(sN>uD+F+-#5|cGGD9LE}cBSXoV#Lk&I(fuwwaeduSB^~*<>Wsu zTtC@L^|ENP=lDNZ9bi17tiB6&AV48}r?#3ojktqXR|%?li0Q&TENQq>NXwNJR)KZN zWf!A`4F>ewTuc5FjB|FcUl;AaoxD%0(UqvX5I3pi)K7Ur5U@QCq67BR-KIhccIU5! zO%X-SL)QQjO(K+;H}2D|VYk8ZdBwj>i;4k7PJch z`zxsp0aZvI9jqg88+`x#-YdloBiHFn(0y`_F9tEZsSI^=){%y>zKFp9^l(&jt*Y(D4B9tjPdTulyV{}^(!*6Ff*;XWq zT^disWJPb3#81wk@Y7BT6_&O~if_rIHE(Pv;7^`BN9O^gOJrBpLy;-9-XcvMBRlo; zD8P&(aolb@#k1nZb3wze4fi0@>bw4&d+!Hy(O}#v-Ij>A{aeiV>}PQ}^AJ3Eqwk|) z;(O`(E5MOy5!_9qZ@fB>&t9)p;xADg1KvVxZ%BD%V;g^8$VugpDR;3Vv2GmThSowb$tg?@?LS`ng@r;7BMbHZ zj=(>hL#bcZD;8NI(TD)ePK4DS*Bh}#Q2RVA8kVg}F=QF8uvI6nQai{-;}d3$A8r-; z1Io(b?7;|s5K_}4fg6gcFBELPYT zEES==uV_Z8^j3kaKeXZgn8JWH>p~H^7Oy96vW(`K~Kq%lV~;^6%qHPXBL; zfua?t0=^Y=HOYk>VRg)!WU2*RKa;0ERvQog!F_CnT@4=cUjhOO_BFqAnK&6R{0gW? z;N3WG!njNES>OF8(#T4{VkQ>{b3hMj>5E>zaX|F~9U_{1xzE?!9_><}brMzJDOS|59G{Uhwz} zIR6h=__T8x_&22|a273Z3mbi)5OJp$Ry}KoI!OvX(#plAMvl917t9xN$B5}@x9(BB zHSA$!D^Zhgb3o%aKr{NS30fv*nN#D2rzQ+%0^z6X0;>^ z(*UqhKKC;FDbnJ|iPl2+IST$r<7NqbYirGS`%A-p)?>DFT6rS_V}0%U7`Rn>u(pQZ z8-iD|Ix6;ql}ZHugH{VW=q}f z#8Ux=`CQJ>s^7Fh2r?!?W9_4;h^#qh!L#%?GhJbbhRB2Si1EtlB;#$ogRb9>h|#7r zNy=UFf8hoCN^Co}(+jf2*==s2A9$4HIF!NGHy;lCclrH~! zbDF<>hc|txJo>9)+3V?x+uR`G4(E0j3UA$ela)f$vCTtI+z?zuusr^A-Iq4J()?49 zo$2R>ALHOqb!LUmHp0UWjFaClDe?|(;yP-AbJJe=*I_Nqh}zr|ws&BZ{hM`@Y$BBq z*#=$5);IAbG&S(qUqZx_xOWE7(zb_6ixc~uo;Mnt)GLIHZj^v&`qfT)D!aKjlhq5D zn_Bvd4X#|N{*h2g`1AHmiKfSsI<~AxyI(jT?DA?sp5=?!6?Y2DwrV4C4c=@qY-h^{ zj}YdTEnUV(3BFQa@+FW8!!|?Uu{On)*8DN4MvKu1G-*&1+v@>1S!EUP=iG}Fh0!-J zKbw*}PudF*|Jg)k)`>~%kM}b6dhJdf?4O^zUt)OfveRjA5~me41Nw5Qq_y7AOpdOP!xCaS+HVA!Dv zNQw#S9qc}elhcc}eU0Mw_M(vFgq+7G0x}gc2H=?H{OK)^?}FMmae2@CHS=PPSC*7x z68V6B>s@qP!3PyXG!DM5x+qf&WMPBnY%H}~JRAr)TUqqOTnj;DDu=_xyC;|ru*UE_uE*j}w{5$Eit?vzlL+FI74g6!UF^~HzsSvT`5NVaf~ojL_*0PJpRbClzDX`?`>gr@ zD~WQ}`OlW#(_qH9P4wAsPI(Rtdx;()Yu5dv@b{C;3~$bt#+WW*QLF1t2W$brSXZDc z%0^TdHbkpkY`x-Kk%{oiZWf=}-4`J~(QbAQZD6@!ESvZ^EHiH}F88A-@N@2jo28;f zB*>|DOT4Vd4{6HZp3sG^NC>#cjb4sdwjalZh+*cj-$fBo!7WMZ!fb+Wx+FNYM$PV+ zf;v`9Ur*W<^ZTGi5d@&Hgc@g)98ZowrPq9B!XTH^HX~?)X z{iJQ2NBj~FT`AMuEthu(z!kCO(g(Vj0^fX~gJK~4s4H?cABqM!gvAhg%W7^QN1jMJ zwPQ=ej58x0eV!{Z-|b`d6o5Diox9s-mA6lqHOF%3)Y{}nBq-oG1*Ls6e$MKKS2I@+ zjsL%^=n&bBI=HF$+rXMQNU9^xS+LYCQnk+18sQp=73xRm5#URNBFQPIq-b-8 zx>zXSV@JL1S&Y3FY4heeS>oNOEjo%P53zd$G6Mp+p+7r0v9gDa9cHb z@}TueGD8zgMl}9?X!u*&0hth=otNtYyoVlt7LbN%;*?$R<1!SCN;3`o?mLYEqKr_3 zHTsfxNYpwTg6bu8pT(m^cszLOaMG!kMymJs&M%hyXPWJx5|K}S8l%TOP85)M2##s7 z)MP#aqx*L|2Ga#9UFINNsYWt=rpT1C_8^|Sr?$99Ga`V=Zz0b9p!3zi~2z|FlE~viuVM1AtIva@>AImXh2u*x6fL=ff~98nDf*ftq$Kl zkO8={656M-Xn~ z{2E>1{n3^8F8vsF#cqBs)VwXsA_hcWokwpOiRXBF%PS z(5+l1WVit`ei3d1W=mkNQlH3IfbjFf$L%GL5kIo;9`+$nkCM?f=AQn`=8^su%26V9 zjZ1%oqlvU{uxr_~&?1P(9g4F&rSCO>d!x?^&G8lN~;zyjY2 z8NEmc;ls!Lg5RzV8qUqH9&Yvf zTHjn9#|By+9P`c`H&+fKAGf?5DcH-tFWd_!mEVOyU{~|gZqv;}?>T%h;J2*FqEZEb z=COJ$x`P`ntg{Q>7f@Smb3hEr#I!;#B#8%3DuuoQn?wt$O(s9+Ws)YSA<3?0W-GUCrALjhYc z;Q;`}T`qN6R^Rf0aCI@aou{e5m*p-;d!Cp5QR;zFF2du7f2Bim z;zU_i{6~4(Z&z;T%#HAX4}(n8{P?;3@}N$s1bG{YZu!2dU(9z2BLUci@2)@94TzY| zzXvLqsbny#yE9LZznxzm=f|i#MV@IK`IJ&6$pOl+&2`1beP53;*^-{Qnzz%<@74sb zdqUyl=^7%097JKe(#JNVG}T_HC^8F4e_D8%PdbRtu2O=x_6(qJ5SV9HX^fllSW?fGGK#h$8UfE&f1Y$CI&S*^F5!jy5;J|d zhh@+Iyo`?Z=8>vwv5te33RpgY3C@JET)u`(I}uTR`@$N<;f!IogUKl5#`6KtxO-fg z<><#36Jvu3#9ghJ_Ep6UY^+9P?+FLlmW_1G0Y3wuDK>pS!ThM+erCq)?3rB@a$<5y zneJ@Ixs={llB?omgvwHjWZq`Se}$&7LRf1YD4I}tmZxY=ZBPZ|?UwW6E1Eofkc8~A zHOuqKB~dr%roLZOiubIAzkX{*F~lTI!6W-$l)YtGT;aB*TY^jBZiNMc zyCzUrAVBcoo&X^b+_efPXo5p<2ogNFrI4V(t%5^>Yl3TC_U^O0cb~qe@40{0v;MDV zeRF(cymL-AqCohRX+6%fqb_r=rV>u&x@m{Mocw@RXI37M(lNlybplQr$?sOCz5C;+Lt#v4x6H;^b-j6`QjF_KhJL{QcwIg;|+2t+`q28#!ePWtJnH%Mo{j7OSHEJgg~$`y63+jN&AF~y z(O?hcvl$Wn^K+&Lh`r4mGxaPA<82Qqe4lf|>EU3|?te1S1Y5WFgT?J4% zGc%g&{i?GSes59t&EGAE?fC9#8k+3?FmnIt?p8nCf-blJJ(Z}t_!>cp39x$MMyq15 zhSh*W?z2&jqfgo(u*mrIsNXjP0+4_vYSq=C2tv9U6yI5EC*XpE8rIZQ>JtDGIh6B_ zxM2=U*fM*9VIl+tCb&{$%bcJ4H~GY1>nf>S0HAv41CQ|Y6f=d$kQ;$1kPzYT=z=j| z-*en#GNrqL8s2gS0@wAdk)pqunM|?!0)HTLWG^wLU-(%Aj`PTGQ_d1K40N-A+ZCS7 z>FE@l$E7#kVb4Rzn78T_E34%RW?r$?_w?~hAHLC<(+kkfmi7js@GvoJVsd0XVgxdp zg_jsLpR(Ek9(D@P^vj~pasQluP?=Vb5d!d7#~>NQ%Rsa#RE8U}#O3z54Ug2lnN-pb zKLT|?^a9yzt{51pE66MMxx0vg0%xU%3cH#c3xF)p3MPJu6kTY*n<}mugo!!0QVr39AxX9{Ni(bpc#=AX!ikuwr(K z1gyd;CHH8+My$|stsbZhLZ6dJqNjSF55^2*cG za^4-GNN6dPNE7H+b819cTT(?fVT5+#MqM^`1UsIv60?qoYgmnVq+b7Vtr1T5YVY0q zhJQ2md|qno`l68<5VvLV^>1*(Y%siTC8gChB=c;93HBjt*#j7@IIYD2_swMP;X1>7 zt$Ghn90hb|2`#Bs!|Rt}w8TWm#NV_gA_7F_*wd?+wVsA>aieO6sP0swf&XFw-cs69 zJR@Fi zd>dE9LnvpB*iGV^c%E3EBC>BE8Mv9a+xw?8C-rWlq-us~k}J-VhZ{w&jvF3DsaO4w z0kFI1;?7D&wP+(E9|L>qkQQlrW3$vM);^1nD$>i=1v^_hk9E&0sOU;qjdfS1Ya!z? z>bebKww}+59HXh#aLKgW@Y-8oHJA3z{SL9Flo%q3?XPu=2P0-!h$$=Jy*pE-x>*#; z34PtxWKji(nXw=!kCCX}q*O$vL_j!pBNNhgI&FR+9qFZCS;Z`!^LSeKp z1#V1T>9Pdn3@uLO=jYX;FBGE1=S@8BRQkCmvx@HYkgnJ#mjQ9Pf5(u_A5mF$id-600Ko z48%>4Ure%9yVT0w`}(LJvpDRTSl!Lgubur!|kV-*3cIA(-UC)eILgo^>jnl$cs zTe8faGmBtw6GwcG2cX8&Wv%$6n6jS~$z3WZ5+j7)+2dNisZ zMSA7l^@fp?DD42sn6CG@Fl;IU4S`3Lyv^B3uP5Hn*TJ%}r122T?a0j~xk%#LE{A(d;o=MC69`R0F=OZ%Tg z|9^(3{*@0v#sd%Y&(Qy$R&ZKJ?v+Ek%B+Hs<6`XtuH}%VoZQ==q^ACf2N=kqVuVcz z4P%CBx`?fl1}szZQWO7$4${s*K1hnanCuc}_l4~D+TO8Pm^`Hj~i9MZZSqiT8pMa^f5SE~gzQ^)DLHS~U zLTt!#J8N>SEKE{RtkSpD;t|7!C5lPmm%FwjJqG98N0c(>%)U$0(YF8OJ933@&%dJYuu+V;--X)2ywNhgs(Ty`+2SPud;p!zfR)uninbHbwUYW6_(8 z-tG@}`i*kuPqc4^Pu;2a&MKd9ygEyJ05R5qUoml>d=3Y!5lBsT;pTFO4&VtGOGCa$ z!}1-DT2#wJDbWf~gT}mGc#MEP;+Hh`nO|iJ;fA5GT;PiGe>vWTZ67)nKP(c>FoXq& zo_$lJd7yv;rQ^Wdz~yjf2XeO)zc?^SWwJqcBzwR-?@pUR0co>)E$DJc*oNu0z0)7q z_1NZ?&kaDN8et*BIN1ROIyFSZaw1HaMyHkv9Sn*tiFB1UsMeBBBY3BdsZh!pJ1myp zfJhvhCU5+US{J&`T3pVPWp%L4>{0`8s)M8HH}fhL1O0eIOc`?*a>N?Tf0irGNG^Xe zvz6C^&EPdJqFATp4^CcXxmbkq&;A}s}>Tz_ij=oG6~oH-C&6X&yZYDj5bib(i=Wq~=1Br=>zWe*Q$ArCzSt zMZ*maZ~#wo{R58)-(v>||J?a=?S-;G{!`wJ0s$L*EtCB;uDNWVGzLJS*R6arW^>guzib^i{2k_slY z{wfCBBOAEjQ=op2BecEUJvFuRp^h7HT$i0YxP`NGQux>4Rc`+`&v*-l8|jg=wtv81 z|6vzjnE#9X%B`si_N$6KQdqh9N9ghBH)||hF1AmzC;R8nAs_s)zDLuPw0O43pc3r) zAnuPi)DlD9*OL{Eif?}p&)4bLCJhb?ylA~OgeU>(?5|lT2iN!>&$+%veAPd%Gwk-D z+*MPV2!^FQNrgg?47-5wTq>mAAPlG+A&JZJyDM1>YDoP2lbX8|rAw}LSig%As77%y z+Wb*hhk)JMsGfHlo}=(_O5Yp4NW*(J{T+q9ZUmBxm_H56qkjDs5HzOos#6z)+!AM$ zzgS8U4_BOIjYrNE6EaLS>j$XyA=9J^n zvVkZ~TmyLoztyVoTecoZW@bOFpZy-Ty$aNG(`uW?$C|n4m;3Sj6ZcXZsmxb_qibl$ z>N7KxnfDj@=ex70skrejih}E}JVh2uJx&I_h%LH5m4PSrJ7W=`T^9xoo$H`##qDYFj~!)TQHFQO7@xdDS_%K#HZ|Gk8j+x zHAjl4Wg{EM0A0+-)daG&yv$e^_F=-O81KujlD?!s^XBhQ?%u9yR3pqafmMRqOET~A zOeLBHhRi_Mlo$d>RsGts?{#4c{dTiDw?`%vu3EYkAFLt(f>QX*kd!eSFs&6xr_eUaU>fxLtAt_9b3qE2SNf7t>Ecf(pJ01`|m z?qstUXH}k7G@tHDFT4XCOD#fR9tSf1TXBWyQ zvA8P4wQ}ELZrk`u@;t+tSh|74=-3d->EZ2;1MK>Us&Avx7wy6dbd8IRpe%8R-HwW1 zlvNA9cYU4zVzmEJE>`9#iADM3xR;LDDf|I+!|T6HH?H!M{`P^hzw7fpUEDnqK_uAM z#J>@OYuUDv8!_PE37edm!DFx*>?$UJ2pL&vfc9G|L)T<(MM^Gw-O3f>DrZi5>!83F zxIiCD#1i42c*ETS&f?E$w1SU7q!+|(G*hABxOVrt#So)@(Yy+KE#lG1=N~du zMIwjzLqw)lr?cN_uVLPfvcN41I?M3U{?a|okpLLD^IHQ;E8%L-(qKucLT*AsGJTt} zHKF#b+~ct=y)qPVa88k>t+?Y7vvZ94#RXBp>-njT2USqV?u8 z-dh^EJliXY1|dbCLo-qO=M#tC028liHKRKcF8+ZeF7VvSTc-5oQu{nc-&30(5S`y^ zJ*ZQ_k20Z1YJkdbi2Xwdcj5c>EY!&6gPe*1%qdw6fgxA%&ZW~vp_9=f+M@+VL1AUG zgu!>C?ckkVh*$}@G{C+exEv$?i)Q$rk>h{p)c@oearaxCSLu%%T+0Ep(>27f)CT+D zr1=<9X=>C(M3(#@GL)+P@1)TP?5=|kYYZBrUePc^=UC0>${2}{{r=)09()WvW?N<} zB}9sh1sM-((Kj)Ri_JnapcrgA7o@50~uw zu=Gk0@ZDpJcK5z1ITlU8}qX<+I>-5rAvH?7Bi4rNCuy9;=kovl9ZC5rRvEU>5 zT#vrAKJN?ZDlvMi>SYcyKJCA{j!2c=Gz@?Sru6D4e&E30VH?@knu;HpXopMYwl0=w zFBt#7sD?9fi#Wa;C0%J(UrBJ4JHMm$=RvS^MehnKPibp=?#a;2pgg4YQyyiOgjv-K zVGNj|2S81ku;i2LFYaWatH^s~zEWP*YYdfM3B|1p_92;AX5gyr8{P6dO`Lt_#8qEg zPJva)D4l1^bAr$JwVoq&ZZ!Gpf#YxEMmMt9NmcUJ#{q9R#f%1C%voS~y)uwzhh!8B z{mme)CJJmEy4Gch9JU({3@?A&pBp&eiRKp85B^HHx+0T^nTMzMtJ_my*0wA}_c+pq zw**_YJgLysr-}}1lK1vuc#+jh)$F$bl*!dfyyjfJ_d&SOYQcf#=MYH%7KIUKGV!Sg z!S}Pj2hAHRQ_dn0NXhq3Ci%;;JMf5e$(xpmO#~PZ$bZTy3ax+st4b)Mdt%EqGhX-> zR&;dq;Benf6Ik}V?>=*%5#@I08W-g0l~@ysoO+typXRUIJ!VIsOgKE(T}c1y-1zA*|Yaf`sC8 zX%l^&+^U@h7Y%brp0#k3AeRzRGCWNtj%El&E1?f5wsshgq}8=KIDVPjzTA!5lDR;x zuwFPjnrsD1U5UH%isRvY>19dqf|RoEPgQ?`Ft->Q@NC&w=~+W(TUp^z-GSwuEML2t zvbSFOUOSIS&F-FzKXfL01}=)+sehH$Dt)eq>EllRqk#(38%S;bmdgkB9=B#iX(nns zJts|q8iTMg%SbC|-0yBfpR{sWJOWI>Fz`n~Ydrl->-vl{Y6Q@4JlZce*Mfb_&L&nX z6I=)A>Lq0{6(8QpXA%&(`xayyV|IQq(Oe=JtmC)#^nad15B($mQ_DU8Q{EM~L zVX2$GO{PS;heGoO=1&`}s_&Xs8SX;uCU+#eree%p-66s!hqrxYzCBx&ptm|qPO6)q z)v(@J^*F_7lrNgP*_(FnGO(o=Lx<`U{FXcNEMcUuT|Y9l$SVB;Q}yGJO)^M5`RZf) zcG|(0(k-jqu1_SW&n_3AnlSj=OQ+xUTgS~&P%`w{?tn! z&0vg%3Sy0c<$+928E5wh9FRf^c)zQS+VNNep zj_WmMR(UAVTGO`hfgP!j-Mi57^81BHw8M}x=ON9rku}<;x%8Ovnf9qxVA58c^B~!ygTK3Re^1lc-v-4l)-uL(_uPRoLa>GvBy-M%Q z%9SpoKB97jQMh+c#3tr}6)-u{ssjVkhKIF8mA!!^I+Nm_ZQ+2P4J=N$E<8v%PsOU9 zGdQA{%0PEZUg`@GOQI76k$t@$=QL2^dNrSWetX(+C(mGS_`xbcu5 zz!ZT;t?Y|e-E{ZzmnFuJMC7{qsyR}I0U!wOsMGhB%tXM(*MseOUaVNHbhrmzgL*La zSPnTRkW-zjI|;}AI}EvQf&l$U;I7u}uk&>&R#&t|@2y4n0y=f~1BxU%ezrN>oSUjn z@d_L0WV-b>GXOe+Rb%}812xZL>6_svmH8#sE|1R*>o{r0G zn@#M3lLwckzvWBXrV=GvJwXUp)@SL5D{o_Mwshzo1%eksC-CBDxd$+;C)L4m8NMsJ)*zo{aF@Y@?pD1hrpzfYmO=| z24MInI&8El9phPFNM!A7eF!9(`Y8u-lW@TZ+*VdonZDcx-YRRL#MWo}@b}$z?9{fP7`y-5dqROKp zx!`^5A+uB3h2?30&w|KK4jOTd?hHYnp+g#eB_2uh?NU3vRUYD|e|+ypzySUdS~MKTr%a0YK=UnhWS69f8A$E*aR|+)60fa`}eLrGo-O0wn+qnWSd>klFQeBYvxO(@ku!v|I=*G2ZOo9_A1CQZPkJnyqXYvNH9 z6CS~8O@mKW2da^3a@TH6bgl{V%Yn;?@5}n~66`n@56dKNZWAz0dY<0|)o3-a-g65! zqG6lCtFU3`{c!R9X-s(kYiHwpE|(QF*{|Sxai;||*h!7_k0BcaY3UTE&nrbPsLP_z zoMipfa27w_gJa7b^?QVNmO)WJZG8ADi~K4w9K!)`!0s_i!-s+RZ3(c2LKe3g$NNd& zDa#g<8_(p&Su$Yl=UBL{nl|`ksnwxDv_mYEf#A6WkH8mvO=aw>a8cYv)$W2w&^}(O z$V`zq0rXq#PoVGQWE3S)kvM()c7{Che8d_pdF~e~zh!4xha=bcF{iQE_b0CgzES^w zNh(Hnv-3Z*r~b92al=uV5Xc9&m^t1>7J(QBY{KRB{ZOPB9#p_P)CqqnJ1GLU>h}?f zJZqqj$H2mnjv zAN_bfpMbPIgM!BBn_$Y$#e2=gb98T$HfZJ4FJPpp4RE{wmaFKWcc4a>(VkRE8u%^6 zyUsExxCkwMl*0o=4@?{34q}%w7qLDrr?47tfX@5CK>&v0AudHyLDfpeN~)S&xm9(4 z5SzC6)Fm0pC_P1go+xzL6xuO4H@QedwQt9j4#%LLq{Lyo#THl4s(){a0T-EvxU_uK ziutx2J3LZ0A5`Q)5GB8FNc3*zPm2`nGbb9N$5Y#Nl3nNt_=^JbL_;X|L>`7GQkuQq zH61%|Z{YLC_V?P&Jv~_euVsMY+{xwez3)Q4|M>HcK9MP0qu}<^`}=@aHREuhbGD*E zEQZ9-YYANJ%s1_Z9La|Z(A~q-z^n!UX(`^^G1X!(5qHwc5*Wv0t~t}i$gg~gMo&R@ zvC|R4@_d@1JC3&~r#oeLl@c|~vdhc3eF*H>#L8%JxD#+#we7kA^>QAG8nfo91{pI< z`Iz>|IILZSp!u54xs55Dlm)d}NeBW{6LBoJ$MD{q3X3A<;df}3K8Pdl`Tdez>`FlM z*`WR$*iYpt6Uv#~hx>TAwgu1ax<}Yq>d6={a4xrpj%0Ugz>RI7;Wq5ePUz6BCcxdG zsQfX{hj{PgYm_%uz-ad5{mx4)H{mO@wN11N<~w?h77r(f{= zyA6#dBY}B32ze6R#V6u(FL(jt@aYBvgtj7yo+_oJflX-#Rig-+q&bGdxL5vqWpbKv+13hfV31jm+p;!$}&IWOiYqq-V37AN;fWc`F9; z+Oabg?KS-c5!CulX(z&4_JPhem4Uw3K2?RbCZ&mdXrL2XJV_tW#G?Q)K{F_Bh2o*sjOdf)v88wQ2r)z z>I@nK3(s6&99l5234Fp}W59VX@P6<}wrr-6;rW~V z$#SMQU>~tYpKd%yxJ!{WmlWvBCaYPKl@`5zxkXe;-M?6XEUl$JODlZK2)RmU^A~gK zJ_;Yp?JU%`v(n-3Y^&HFO|V=1S;bc>uo-=}M*e|XrVx_#%6AF+IC7Hsi; zd@)1KBjNK;kp`K3&Jnl?RjRo%>__C|M?mqVNcfCUVk7J3+IJpGw_F<2S;&S|enrHEaf;ubxCXX}+2j*(?;@Ifr&?e5KoO4j*LTp)PLuI%KwGj8W5@ zvTcl}bSg63RVIcT?jFi|T&ye;ZRJvdS3g7t{oYNOIyS|GS5*&q+<>RwAM*SOQxAK& zcTQW1hpn#XO1ddm^H#}@Yeu>j_QO^2qaSYlYa3mIRFNPDrql22mT}MXc5X&YaP2|l zc)~S?py8&e4FA$mHqCDMdSi0gW!1sah_O};G#;*$o>R>*PeNaHhHF^Tj}@X=m#E}8 zmDd5!R9^kP7GY%c(SqDYzVV@>8=Q$TSrEegb_3g*`8w-fHH|=zQj80L(3(D0MWZtV zkEjAV1UD-$MvuOoEsw?DWp7@a{o^tj_&;ux{?!lH$$$05`~UF#*>7TS=!79K-O5)Y zyx&JnV3`Nly*u>JmAS-%f34BPBgS^2n`GpcM}$c|dWDYtbtX_O5eneM@&bxr<{rA{ zu1?TYg^}z`ahtooRih54X6Fr=q9sM3@YWiS!d)mk_3goUPM(~^ooOWYfM1*N?+mEn zd5@PdcZ-OaFhdM&L+fb#$c9V*S3?-*`A!~YG861ul^dxlm>765=lo%%-P1Q~{Y z*v>NJdpvV8lt!?!Gjk>doZBW_n4}O!a}|4( zkv(2yJvg&l({cv~3f)jyw**N@^CM(u&YGBd5TVA-lB<^Rl@MyU8eVrEV=tC4Fkr$| zRKgGueb!PP{K*&$agGZ4&Q(hK9$ug?dWIdi!sq|SuPwR2tR@zZ90qI;*I4r%US3?H3^EX(9G)J|4{mn0hU}MZLg?Uu_G1xnDVVrv)G1$ zre+&Vl`EN;&q64Tw<+PqI0<_+FSMH^R@pi!DLEN?-v)bQlV8C@rBC;If%;>c`V{m- zw*GG!=nR1&E?u1k%A}Q1Z*m##*uQx2MOb*p;5M^CJ)h18*#ciTt#c!Sb#G=wp^OD~ zxMdfS3uJxp8$;_Ipn9`cq@Tn`L%p;hpU(V=Pp7!ov>?L}N{1fE99Z&X<>Y$&-{H%) zeetg;82g!M9T+suj@q#N{++roNX!sm#^elWA1j-yMe$oduNwKX7bm0t4XjR;3C6#I_!lpQ>B0zQ|F5_vxOyuWo2#k*qoUjT~7=C zwlcX8I0?^sdUf|B0Eg~CIME0t)==Kh=EW$7kGNKNl@I+vuHm7XMu}wDkgBbO1LmZ3 z-;ruq4udrpF1WN!o=QlZ#lu~+B#&*fc|E&G4)pC1Z-?virVx#A$< zjLks#;xLE#OGhZ^&?p|bsfLxEVzt$_iT@sdZ@v4Kp}aD&End{S|GUy$F1r;0_udy! zAuC^16F>KjbM5Zh*P%P1;q?G>hpQc0hAyClsK0Sk$a7(!$kDN9YKkDMCqvE0V80hF z&kLa{ubV>NXhG8F3wN3($z*~1B7s}vWehX(I1MNe15D+jcK!n z`&@sTK0)T}sO?B*>i?IP3alYP5}PAT=6OGKJl1y)7g~R{yI?05-Kmn#!O?d16K-6z zQY*9(7J|7J=47`$Wz!?h#)5A@^aS9TLajGzksg{3wFZPn1J`ZIjw-Jt zvJ(zvv~Z^52HN78@%=GAvk-3=xd%7pD7`LMLvAx3O2a6zF!wpiAf5sT-{2_tAEh5V z*IX8^#O}oYf8S(l>@m(qZYc7jF1cp{D_sMhi&vu`07>Nj`(n&h>5uKKCsjBv(z>eY zg71G;@ATs>~#hM>e`2_jPRRPLCuJS7khY7W5JhMr1Z&`IlK2JJc*&$cQzpJs8%=b zaz`k`1isQ%D_saDStL_y@oEeI8^c8+^9wdOA&l6K4$B0GtUDOt#zSV4T2pa@oD^p4$ZUB5JwVZMW`IW=4U@S1ruGWrT@#4l$3DWX*`wQWDQfS zhDIZ56+MjexB;5xS^<`>nsm!6W2d1-?}Fr+$Cias!VQx7t6eUjfd1XpMvpD0ZvCZV z%U4_{MC;rjG(+Su^XH$WPDCr}cbV2QBBN>?KK4V3FZ0ihbE%4EB3z7HXI3h6p%FgJ zwXCjGZ9!+=x0GMcf*HBdb0xc=as3ja`}rqMloE$fZwrDy~nWN)X@$@&tiYxGtSwVMs7 zI3((YsLQ;)5v@d5D7HvX&H*DD4nY#pE@o=)Nawcw`v&`=WPFs!F%({WI|;jQ(C)5u zZU=?LzlQl(%782d%q-FmZg zAW!~}Z*EAPp=wToCOZ10H!w=Q6f=*k_V0)A0}kHZs?}Z|VFD?iN%srU z48AU{;|+-5Ph1``5F!PYZ8UT{gs?@L zMON{vkd0P9@WYHYU0IH8ch8K!_UOvQNJ@iE0Xv6rN4TMxP@U;f3{18U4)wOG`WZC}Bqg@Q zv9NnoZp^zj4%W($V#>*1SDev@(70esMlVBya*{#;L(Ze{DePYKAjF87>aZUexf|3GakxOey7CE?L<<# zrv4Pbrk$bkd6yq=RgaieK`#LoW&81SHyJ5`A{X9w*lVZ|I{19q<*6I15hQK^R6O(Z z?65W=@W}h_e#|boag5O(Rr=$Gl?DF|L^(5+(@!zK+4MyreyO~E{?89IG|_aVN?)#~ zh~@|BbUhS7pnT0uq}HWaH!;>(pIme zyfDJfh>B7s8iZd&@9bsGyDwwSZC(93_)0WA<qMGKOch$Ps~Beu7H>pw0UJGzB!Fw@>a5|dBy_+76Nt?r zjWjZ3pK7t!5DmA}O$OQHD!zR}?2om{2vyU-`Bfbr?3E@)4~Ri2lJpa{dbef*aTZ~V zu^f^$)N2SKaL)xS=8K(b5@b5B(gXmdtJhKY76iRT_^x4V6aEGWq_?>@+FNr+t?)#h z8PDBp2*J;;)JRJin(v$~7w~R_s^YV8$Hfbcldvw!cE0LyxFtvlVb6lNxir9Ub)L=V zAg+Fks&2d?C-0i;BkOn=?y#PDp7#E}=o7H3o4V!i_1-hUWcZhw z5Lt}+;xY{bAo2Z>S>qdjC24V3@-Pct(%YA#bzc6DzqiT*r`#JFGbM&Vw0gEP+B43S zn-L|eayX!4p1Xr-XESDz6$?-uQf=u=`f6Y%q=e!(gtzmEZ($N{&ChH;E7XDxadYZXB>kc|74vyKF`Sfe zQg)k9*Hn3@VSvp8pYyS)mid_~uZAyX2X7799$wE08>r-p=TifyyB|+YA>1~LuV?kOX0DiL=AHP<;ACpNuIHq9u$|W<#Xp-TsAER47WaHs4*&|(CQKNWS#s4rn zXM_BWBt=NLQLSnwHl9iSeO5a5rv}AMha})UB<`EfWJFBeqpYb$*G{U1n31640E26< zYD6~82K>xbmh$2Y_~nO^xwG{qL1r?PcWf}J=2)=8?eSd<#A2?|9C^bP{lu4hwDRQ9 zeY~R8&7LgD%3aix`b}-$YRYjv!aU*+Q7UCmjiYm2AkR4y*vhq}Yjtzzj0JPE+@_T& zy!;JW5WH}j-jT0{tC9^n&%*Q$d^zv&smba$Vcj8N7}jB85l@wH-qoqwQxlBiC0A{1 zlVY$I?U&wFDlyF8SrdCK$1ePkACV`oeaZ2n6ysqd?i49!y@W-?8{QAdXOf`FoMs&B z#(`(f10#}8gI4v7$4}Dx?^QtySjVS9EB#K`BU7v8*Ap3d-}N4%Fh4<{baB zb1XY3B39-vOlbE^vgd3Z20U6H*B{f-Y7i*_>Bpljtxixcv8SZ%ppR28d?rPul`JnB#Od8XJ+4GlaluDa zP+jwsy!&*Auz(e{G=d5}7mCIS2oK_(uPf&zzVyzV?2OHp($DJ07)FlR&ny4H`=-dQ zmg2AGn2y8H?`zQv_|w_m-7#CS<_#JU)S(oJI|T-ERc1r0t5nk-S04jFi!j5hz$ViB%#%6U!EvdDhcMx z!+eM&0qt&ddPjAp#za~fZO=z!%iaV_+6DjoPBdN$`%M4Pa6-YNmD~@_qyJdMn3*?8 zW}7z4d9WK|kmo@}5CbxPQw=Q-PUK^HhL4>e=JQM2YlsWFfy0T+ z#D^L3)c#d5pjJ{efF57DU*|`iNCn>;1qC*u-=EK0jPo;~RaW?x-OSSn`RLj&41**7 zQH>TJ9?g!&%dhTMGUw9f&oKWOG^E-3kHk_SHP$|H0yG-1pnY|r)rjuA^ly?BYs+!6 zVkKxk(cqj>&ze-^d&dNxT+Ivb@+K`5E}2gfo0hbou)c5ixuzm{5s?2nP)bDe%e^ak zx6m~vUNEBIfc1~aOFS0{p2>kr^3*R~^kBAr`Bz~8M#L!zX}v(}A+uTt+}^Kyd?0-T z>9B)UZkpK%fUFG-bemtlh>T2NGAf!uQ$1n_#(=9Nf1OGpZs}b7SsLe&WzrHyF)3#j zk?z3oHsn3O1E77j4q1W`e7u)?xN;b7%dm>Rbb(&$YrVfEVvE3}`Y5!{B~4`r^(7&c zD(MXrZlJEZgsbbCRQz_{QG3U-HNRDXdASe@PN&q#tcd|xYJFaOu(Q8vz4#z!^TcAvB5$R1Vy+d=p6+7VnB+~#QZ15Ek4wcg?v^jD!Rp|WIz zdY%|(&F)7pPQJV#NJMvY0r#PeG=u;$Wc|m%Z3Dg@R(cB_mSm>w;M3a~+#e_O2towM z=t+9xB-DzO)KQx5G5jF?B3Ul*gFxk&I+#0!E9?`*w;W*({O!V}AlcEXA;4{tG&&J1 z+(7r9{rl;%^K6sMe$f;1646k zd8Dz4ig}h){WO{K(TyS_OGhY2JM*#n>t*WZMixxpztf@DqlVF|2~Ze&|Ta zNlt3`zf-{_qg<6r0ikD=$xrg&9>xG4pSR^`ivX$>d;?K1z?Pvor%051wf+8BVg6Tg zhXegz;#rLyCR95xF1Muk>>e}nmOgsSt9K^I#{bHLL34F4@Y^Pe^}j9IoL4ZsfXUP& zQx<%ZcMM6hz=g26O>3A5#(3b6o|nUQW$T%U8ABHMecWJ00F$rcNjSIXs4AE<2KO@4K>$h^eQXK?SRX#aby{esI@%HyS&*``)TPv|QzFWFRa0TnAhgJ^$bN0L&EZ2PW z3hFu|@GQgclz*FPhyR|*{$HoqzeINCLqWP=-22eUx0u4&SNt81$`Rc1F7=9}K3!Pn`(v=G zUZdES{yilU;yhhIK=B!6@=6mR`n!YnU}?Vmi;-o#aT!3fC+10tE6J$Zgf%hFW93cA zZ}TV)el0B)D!0eXnHJx+`5LrL>|6+ldu%{kJn9}s^18Q=*E*&9Fgk64%SQFGN0HI`NEcef?ZRN+1`5Jp*BzH8;G*_4@Lby zYR-y!jFj5|LWzQd{^s=Ja*^motwFYYIE6?1K{jMn=pZ}Ec|21*?~~IlhA?4(;GtHT z`>zN}q6(cb8HG@#l;h`a-{Ui8t=uiYx~dpX*Ti;5le+tZ^(A50Y8)DKCxL`29-VdH z=bswfP>-r~Zv2`Tgb@K(bmyPp>)p^!bq7ZzSS#;`Q<^x`1S3yUF@A*S66qs-tw@D) zv|Co}aRT1?M=zz~SZ1#Ty<0p%)G2>1RYEErKWbH?3w;`#JI=h>sRgRhd97!yuKg^% zc%4~gx%Wygzdzx87j}(u zB~Iro*;|Ii!KGW;Ww<*@aCZ+*@Q~nc!3pl}P=#BN0D<6c z!QCk&K=1$of)gOP1os-=w@;t$KG)1Q^Zl)Vb#18q?6vN-9&-ckfUw-*-&hh`h~arU zeVO}LNV)H>FaV3C^tvmF4|A-jY&fV_kZ&Y7lA)sd<1w~L#B^o+4l|i3{hA+L zts3FhKUn~m$QFVTn~zVAdq~Y&KNEHPec5jUldkN7^<=i4uP{{y-G2N!Pac%@xi`9) z%N{(lX!~UP=ZpmqQEy6gDDtei`Nwt+g%%+ejGzI$*63qbhF>A$LMDJOA#@{};0k$f zB5k^eo|D@VoAOSLXUQ5CZ9f*=XFu#yCcB%%xDZ%ZQCDpcC=_#00$F9V%ql(ZzlbDWh1_M=1*uB+RM21=8Y_`A`tY9$2X>%%qCT+70?r|+1faoyJ3 z7~!q5&@Q?oeis2O}viTR($$lECwmxjb<=C<1Bng^9G@0Qi1j~3zD0_2i2 ze_=0)3i6J8^iTnfpw(!R69Ha8dhasl#}IBLw& z(=ocLfv;1B$BN)Cz9p~1LYXt|Yi2Hiydcl->)T8-lk@h8o%tzjFO4+rV`RcjgE;o7 zW5eswdFg4mh4&}{UP4r^$pYqjNJ*~Nn1W(!VPfyha{()xqj1zRrTk3@6Z2tGje23H zGp3G+vj-*^!S6!XgGI~{y34U*@0r`uLB|5yF88R=Kz5%l5xSEUAq5#=LOtWMnujms z*7p}i9RAdk8~HuB4gU4K`EP0MuXFlq6u1qXdD7eb#-1*oe~LT>0o9ir4&Q&c$UMNt zRkqcP$dM1mKWsbqFC}&v4M1BI*)04%xsOJU*Pt$Q$hB)s1J4e?%7TVTELBT^m z*LVfjJ~eEirePTbc(Ww6yZ;FXS3~r9{ttP)37aL0^}Asy?i7}li-mwbv2ARwkg#8I zC5SAzk@q9YkuILZ3-YUQ!{hA0XgPGaIlJ0T=(`8jY=ls40D@M6abjYcYGuUc zcvZ3+YMSX;xpyl~Cp3IXLd8_RXOlI}4UD9@((rAV#rC3pyFX;!6VI;{$O-J8 zU0s)aLxQDCS_&Q}2S9500GVq3g@P~IKTO~3CU4*kTEL`bII>hGup-|G0rud`^2@)` zucyYN=s8-Z3hj1dnUB6$TZf0b@(pYFaFA#GndD8zl2jl}Ld z1cX*hld5j|3!&_litL7^TARQc{*;ibs_dmPJuK`?fig%~I@Mpk#Bo2Xw&rm?Z8a zOy^GPa9rRLepk)S9%#4fWK-ef@iaWIc>ZI8zUbh1VepqI{fK$y`@Z6f*zC%bV`wf3 zQ*LY07g0l*N)tvXQXnu5w3-GP_Hr6H(c}E!{8O|7A6lVrwuu_KCvI|LXWtBti8JVW ziDMfXcxM~B}l4R%3KszPTC|F(fE2(LJW|R*4jrmaa2~2CuIhrpeBrbL_cZ3dz)j}0 z&o)5e$*S)bH7_la=EALWWG1Hqdq0P3v>h0ibI|cKsXL{N0%q^fsQ8y7Vy$Q|OQaEg z)?ND{VAohezRM$=5WGQQ_=HOuc2f0W^OpdRyCU%#ufu}CcJGn@)@q*pbs;%y|5LkO zIrBZt{PIwIsZea+b6g2EW#ht7b|a=h6?{om>%1btZlc6zJAJIJn;cNY`~_k{Tk->E zm(Y$T;{3aQU?n)24SWwM?`7N33>1%L48O$#?XeAgUh|82lK_u{Q^3@UTq8OLD?r!1 zX~U_rH(GLf;>&hqTA=VMF%7{M@Kh3<3{v6%WKyES76XidS&WSbe7Z{Vovo!1Rb|nx z=df5QOPZ2S4yzQ8%QO%D_a=xSv_P7`d1)I$a$r-|5j=3$Lxaj&-EUqsd&UZRJJ|Dj9XNm3bv=USpv)o_K66PA3lsvGacJF@G$J2CN%ILR}G8uHit~`WV0H zjEufHyp@8!AOt?oSKaD|mwy~dffGG|19Y{)(Dmm!2%u5jh>Qb=*|@~2wOyh6c}P7r zxK+iR^ZJYXuqEq)+Kl#D&ND&>GSx`2E~Uq@&-=FMhgo9BcTpWCGnkpar$ZWyiz)dg zXr(=v)npF3R*7-*DA&Gu;BYY1I4zI-ZfBlP-;{uMvBqEOm_bRT#ed9}@B>JP@2wjAv zbx#J{FAyL9B!j<>zrp%6MS?VM9Ql`KT<5Gx8L05 zeU=yZPJ)?xPjWk~ki@59x#Au-xi6PEMj|#uSRg&~Sm z(^nc;fO@2f-j~F=|ABmEr?idWmFR>lt8y(H6LN3pD+6Tr`001+ry#_o=V@x^ZAZ1T zvEO|>p^^8K1Nxt1+COa3mrtg`lQ!@VLGH41A)|RhaZGw1I{}%r3*1JdD>v0A$S6fx zGA!}wiUey77lgyXMOG>sa?DwEa8@v(m2BX>OP5J9AZ+Q$N!$aN(&gb1!{Y57%)?6! zv;%AE&8aUI{ZMrEwSpRe$ADe>RIDFa9(7}p$I`e8Yb!vKqth23pS<=wE>$&eXN~9Sldtg?e;a% zPwI1|6~^a;VgM{|2moD2^ZbIh%rfYjkGl(j_KlM3tlivk_Z_v&MsD58b~3$L8V!%f znIV!y(JuN6c{M-l9!8};6uh_gY@?=}7#(l(amSC3?|lJ7*42caiDqT$mdAS#vwl1q zfp1xzrZG^r2e*}Ls|Lx6@^5QXI#Clc@CA3)8XROqto@?KWi=yq5gl9cDgMq_C;1Xo12@|KoY9@HVH=ah52UyVr#O5 z75#DAsX(K#Qzym5kI%wv7|uxE^<)K*<12D^V3_gr(fDtfFlMAo`dswk1vXWEw#3&P zUXD0XY4CgolT*jLtiTd(9boiY8EcqOxFgMaUT>?eLr7w>j zTK_i8b&46C2940MFWsJ(?t}y$*FUc5>udV`!VXnq*0DoR;xjoE*E91^te!Y12cHZm z`W^WIjcD9s`$GBZdv_`awB2F5Dgq1;WW^(nvkts^C4S!sZlNEz%Ha~?&L}yKYsjRd zW!sy)VANPadpiCPa^5}iYL{vFJ`x~vGH8>4T3&^{iaq3ak|aB-%-bT$xZDWhlF?Vz zi{BO@8p?5g1+uJ`MI)BDh6|jP_RPPL=PapPs}l79Pvb*0e#nkrqv14;o!@ug)?R~$ zqIat7G)y?goSXVDR$cMeG~TLDnh_Eo8{qs&h}dF60x3v)n;L$QZlF2*p=HzaD(Oq7 z&KHtu@u}vR=FERn-TpNIUg;ilSAXf$yL)L#53NcWhn!$;O>3B>H^j}o-oiN+F0=d5 z90DD{obKH#076Wupduf*3ajI#1XW8lLdB6~zD*?Yn%HDvEfqO~Rq281TjNP-%wjKz zp^UP3B<$k3*7qEu)1;QcX_C$wtsagN%O-NcM@lV9S6XYXZwhO*1P?_e>%qz?fN_cT z{noa@G;BRdP*5T5JLjzIl zlTvc=pPEj;g>NR>8C$554bzro=z{3D7-~7=6GK@%3oMXE%9ifC=)n%`Pz7H16=eAr zo_m53#BN&-in+Rx2?f-Z<>I|KKP&n&-t$i76NO1RbnrSz;h1|H{n+C7b?|F0p=daL zi|G(|;EzVJ0R!Z8bX}?@>K47S#qwt}h1=$Ph~DY=wR;BU2R{D%%j5pn1L-N%+LUYJ z@nzQQ?a6%D=ij*+H=YC3nGwBHZnT*qN3&h9?-KKKZ+JgT)1zRb?5kpz zaJy8bx>D6}#iUh56SGZdwNy$$J6WHxEr^$+E!){)5MzS~hJ3_Y{3F{ii(BzJK7uwt%Akc5fyh--e7 zlvsHk*H5Y&&bfVuqLu36UEi=F)1>ntTXrY?-FLz|H1xrf*o7-Lt4<`q! zuTiA%`~faRX&50oDlIal3PH=-#yOPxZwVB zJJas5^BnjP?J1PdUDeqzZFhNlYL3{C4+#AitMlJCmC;$-Uw-L7!5;AiU7hzE&5fMt zNB7}nZ7I>N@k-vd-|y=UUMhY4Rx1gVj;SobhKuBC!hV%OD3E5sZ5&fAFH^!}KRWxF zV^1Y|MdquZ4yAq_3$gSy+fIL4Qu@vZkg?=tSC#zp+l(IJY6|5GmY*Y#1D8%?_Xxs7h4{5si9TI+BOv z92lUedPWb0-Po8Qw&M~-1Q$9(l4A22)6rhjyf&km{gvP;)=w?jvZpQ#BJXDz;X*xN z6q3&d*kNg0YfxRkHe~#02j;}VuGKtiWx7k&L54H=j%`IO!`VPHv898T;PcGriV@XhsrG z)<;SRg6C|R?aVm^>PgB*x}4~o&*a;4IRVM$CmiUFJ4tU^TLr%IFi5SV&DA*HX9KmU zqL6g1^NwUUIU3(KA;68|v?t=wd6yFr|FN?aU466duhnlvWgm{y6Q3HboU54^h{5nr zPkY#gAQpS%2klUE1s?BStC8Jz5UZg+k*T<6e&>)lz@>r z34ABp-714fi(Z>}I@YTsps;PzRI^K}_9W1CuO>bAgDor z&y~8DNUk`budMt1qPZN!CJoU65XA}Dw%-n?vp!X}Q_$e$L%jFxW6)C~t|aKE?cp2Y zHcVpB@YQi7Vra(fMUnQKguL;U=iAfqb+p?JW$g-f&)Ky6hTx50AuZvPaUNL{3Mqfn zb#a+=EKU_=BG}ND1v9awZDRVYvGY-YyhRW+joAj}GjwF_t(M?qTe9_~Mf#i4SZYPe zZ{I|4-l?ZxzrIOV85h%Ap~?;aJxDWLB);|`L(PoK8@8>vx+QZW?rlcl-_$4inRO4b zxJXOYeRukV-`CFF29zB;i6PhrZ?*qY8U9OZcsKF4fA{3GPH zx!pCR(5Y$-cSK6+Qb0g_Vle`xCLVW%RnX#HdtIdT8C%@XJYRbe%BQuU#H5N7dcqD< zrFQFgo~TQ04gSR0>Q^0oTbu0eX~>8(J(D2EumH~*J-1|Y`ma1*t>WxdG8t5p7kFP} z=Vn86OC5e)I>E25Ut~K5$w@v38C%*+7n~ibb}tNLFztP9#RoWifBd?e1RbeiqIx8# zefYX9o}Q1(&5KKqQ9UG|_nQ@LZ8Gqc#$w&vBxIgEc$v-mepfElUUt zX9Nn0TiEv0ZvxBJtJ+W3Dw(<5eEf!=1Nz#T)Y542k|Li$-SjtmT-qd7=Vz4WAWc+F zR5c1RT&VqA3e;QVZuw)K4kf>pQv-+gq7xeVm?Uy^l(y$OkC^OpITc1(SP>*<(|=BG ze#RwgcFFtA2x?NBV5_OsLFcREAFk{J?Ty4wPRGP=|35~(?zs*lzhm3(wobl{iS!ix z@T#Mi{5D1Gf@b~%KzqX@GThncM{*Ufu%|YD7GQrWy|?-eoijZ5HEkc;1*v7{ z)+iEEHmigqP)#0qXxg;-dY|9`PbYO&`zw~(0QD1B9xgJLYPa`<614MC;JJLhW_G03 zD=N#z0L@N`T%+xlwDz-ZERP6{Clma=z!?mnfVtNSR$TASLcg~}Ju3qln9*?4s?l@! zVnd&RR=9Jp#CCwdNd8R8qtpT7gZFKew(o)AuT?GOBkyJ4K9kK%);_?VX_c&W3PVr? zWFiT_+ZG!~DTgZ&d<`NrTfyz1wj-@*n4(FQlWTl#w~KAvkkSgue=60@pcfuS-ZFI8 zY;)p7QUY5bgUuD913D;NopP3eugx5GiwOxFtiS|xpuu|{c8pIDDqBnti zVkN=QS5HP(oYj1L5mQG$X^rcHjYtU+Z&!UwPv|r$z8MG;p!b~D{e!*AVj&rRNgWv* zK%ffAd`N@-InJ#94*025yZxLBmiV*`nzy>W-JGRCa7`x}V!bGOyYk}|LIlJAfih|? zF6gj!^~24Y1{VJZ^Kcu8VQzSc2&83OBVoy!TWjpjNlNeyOs7}%9TOclb~PU( zeiCX4hsJw(Wl|Vprz}kc^O?k;pnOdiIJ#RfIz*(XWf=GxD_H@I?RAYiAh+(+O~7KP ziyHgR^Z?N0y7ogi(u`du4g2`6nwo63Xw(ipqSA#whP+oZkhsRiaXFseDpI|qm5h}Y z3jkNp_Y0(FqwlTGWqoim~q&nn;r8&q|#DbVCDilm>Kh1pXQRFJau)(XllGemB8ZYxp zzaI3zh}r6~pak`kt|WiP$AM@D*N{0h-L8$Pvw8Eh;7-${@U4Oxm)zklT3@`VD8IMH>VO5`83 zw4m=IMMG}K{kaPCnV|^2mJu$Q1#`OG7f8;-c8$Om*x0bH8A)f)3%2cVNt)CXW3T18 zyN7K6^3?N6dDT_KYj>TdzSg)nCak-RkF{rGHCgwdW|GW_A&kHU6+olyXbG*-m>+;>jv$_(gc5Z z5|k>Lk$qVjuo1`<*!Z!M`v(INczBT-_cZ&V`~7Wk{D(O>_hfuLQILQ0Lk~-TzI3W= z*r1{JKHvWum5ZgeF2Iz=f)9WZ?}pU$az$nhNcYZ$Ewk-Z+MI^Eq&REa#e7(I2Qpbv zY;^>LFk%DK8=QUi!F-OxHI|F+XxD(LEtG;}zZ{5XNS*bz6j`ostiBd54fbzoH8npt zaO?wo=3c)W0G$Rn>qufrU$vG@4Io`;w&Au9Sda?zX#K2nmNuQjJcI0Q#rJ4E>rZi5 zxIR%`n_hDDms$>#@&}z(_gmrQ0_~SM~ubbO+c3wgv%*3@sf77Ju>zY@qO^vd} z_QqsUKJly5_kfVNqhgk3y8;=(icfXX_{ zHPTMi)9t$sF-g7W{luV}SbR@;1pz%1&|HCAF{z6j<@DE&8gE2Q7y`F70S}G=zMa=! zV^%@mk8)0M_rY|Lw}jr0;sh$I$C2~YZ+wt>9RL;edQY>i?`C4uyde+}@!WiS376Be})zjlAt7g}9=Ll+NIVtg+tjBK$D6DOQyFt&Tp^*hA*p3~ZSA97#s zdGkcL{-4dPC$GNos_OFVrJLog7Q+FRS+wNxf|*B><-%ItWzLyu({ZN%|3$XCebNpHJA6XQ-YQBKX;kya^npfqqe{kpPrvXfBWwWH_Qoi0tHEuM_>|smmQzuxD zVa;s^W{|N!PQ^lxU$#OZ{TK(Wj(4$7>syTF;s6*gJ!4e_L?1ZUN)Y&^Uzf$#Xe5?m z02Iev_q$gr&jH;{M8EGzX3n~4oDkrC?8$HVj4Y3~0UCK&rIB6iBmiQpP26NsDt_J4 zY$NM!#5BkYDyG=wnc5?<$6@D|67~_WHufBd7d>N@zG5~A(+05~)A~t6J~b;GMCrTr zDw{0an8d$(T{({R+k)Q-ciL4L38kbK$c8j_X5}`AwBuJYSdE3UL330MHqpX{DrMy< zhH)Q~)`+?MbIqCsE?Krj6o9%wu3aT#9l z5o2yD>|na*XSm6_a2NqhZ;$iM&-tme`jAH46`P)G#Z}|&$7biY<1)`8ssm4Ge~qKD zWEpDHnLNro2JbYRV|=|tm$T`ZaO?{FAVr&7@_=*#y!vony*AywcB1J&rtH)CEnf8$ zTEPM!9)Fh(!7`dFYGF_$yi`GeW`laBgC1AsA8!dR`Es2aBhLo7Dsvh>LgQtNPPgdM zqI!CXqcR4gS^BGDk~=lk+@19)lJ$tIP|f7PcE6Zmi`voN$NdNDVSPrK%!6<)31xX$ z_XS&Ii24NX(4eN$w}q(Zty7qgp@6=X{%4b|O=d`{oQKmT=LA@}b_Smmz~N%=gjBNm zY^7ywny>5Y^N#WG4x-kIZ5tPY^&CBi6A6-jE z!t+5@0pE(Bf@KTl-8!pRWd8xT{BK;7^9SOAwuR$GqehW(*5` z?WMBc0G1~<*(&UvbA0Jm(d0{}Olhh%qt6;u7^>;spZbRtVow#h@t&6J+E6vJfZbIa zckiix163?G2>|?T+?TTvc5jl=M)lING$iwBh~765P_f^xh&L3W#eXOmhH;3x+%3la zF@6j#xfNKOHddR*N%U>{;H>_zZT2j)5va?E2QR*7j7yL5+68PNT%MHGmwHFOi?68Ww^MdR;Yw%r0Abf?Z*M1T4#xktS7YbywQt* z2TC7yI#M%k532;ZNF%9SQFlt1dFTwnC55OB1!~J!&^nvnO}RixpS6SmTp_p_p&UE} zcrx#yg?q1T3zJ^jJV5#1x8?&<>{Ln!LS0W&qE%N)s&-rWn-7zWmI%l#d@hYZmsU$^ z_ogbOrpJp+790m+*`INxz0v-QO!}`R;QwA-bQ`R`Y=7D1t(Mnzw&)&r z2XT}g1vFui5+^UBDYjV#$YHDG-m{$;5}(s%s^koZ9e4bpfdg$od;}uu!GRy8z`8>j z=gTc$b&Kr^V(?&rd%T`btzD!8po>g zdI4cqm`0j;ON$T7pmDA47^7q=lRG_3byGag4hbey;||D=Guh)MXja`c&Oevo;ifG* z?-rRd4l~QIX#eEyD=}L>Q^WLv9`jQWIJ+CADJQaqz}z7Md+Lt#E)6C=t_+)=XyPZp zCI$u@qCm|IN%QOnxn2%6;03@8Uu6}E>mb%dXuFduy#J~g?+kiNkA7DnEg?=Sa(SpG0i_M1Pu|dLdK8{+7@BNdRzK4dgp8a z3eGY9W`|&qi6$aPTrk;1(*8W;wVHWb8vreZ7V~Fgoy0_Si#imZN~x%GH+GnskKjBs zH1rGV<<{sWgDVDYJu<-I8~H=aCY@db)= zp{f;rB8v6Iw*oq9qU2>MlMc2zY>5p#4r*(ORcyeQgqRx>1`tdS`6|x9aw-lT?HfrU zEnIYpNVQG}&y#CM_m^{myWZtnyRNK$WE-k?)I8mF+KGYy}L_&}d4bU|=Xg(lWa3=g!sEQJ^uA-U!=czs0R>Nr#vEp44R zFYr64PZ6LSh9|rApdtcl(mc;F->RR)n7Mfjd8%0)0Tz7_&MOt~Vr+s8BzP&(U&nj%d zht*&I-Ew)-A)9SxCB9${Va+?~{unBd*;>UwDM%gkx*hOCa`*Rw`AOFmiCpr~XK`Ww zd`JoMp^Xbt#=UTtN-1&=R*c$VAAsroz-J(FjtKi|HI*`hpBBbqMhRPn&76jYSYo)Z z@sQbOmps#m!v`n`RC1e$)CSiS03udk&#=ax@ap6&mTWkdr(+?gyiYlj4Jp^EsDB?F z--$BHKCg+Gi)*}moZH%2mWGylgW#kCOf_GI=&rkX{?cIa6AEgM4oFZP5G$BL}{BV}YeGs(U7T`)mpRtdw(pbZ>zoGMYGjwz|Df;-4G+pXbBbv$lnd zrfMFC4KhTW`lg|#JGwxtv{LTVKGMeJ*>7D-xgOKGkwPDmj4~#dwVh?_@H|;C!#w*o z_!`-f?@T&s~23l!Q|mvgI?b^_65KC)gvBd`>XF-@SBMLfktf4g|KbrO+(GSBna z;Bv=CkLX%viTS5tcjZyc6r3-i)j5Q1itF72(DsruOs5F(TjNBOCAMFbF#M`{ikpXcHKtRZ_G1r~c z6EwHbY#KjG$3PEHKz?lOCoz%rW9)^fX|)uQfw=uAJf8z*%svNKD@$lCYf-*om6hR? zB;y}_BZFt2>c>o*nw!TT%S40c+u3`+agOTwC>GCs0TJnhHzZN1z7UgJv_!+CFyeYm zU3@1lX@gmOpYu9p?7ob9yeZISImgZpA$q-%Q`vdh++y5)pK(v0(dl__7yn=suY=D;Ex0b~gFGPIqG zJN~icy`#o%(K^54%Qs$*0Zn0vWDp0aF?)lTfK%#iMin7$0=o`W7oYfmAPZ0EG_Cr05?xJv?*|K@M{T)V zG_b~;28~Pl;E#L?GUhfyN1kz_i15?65%6minK-POoLl<1R)atphfMq(2Y~T=_bk}@ zk2Jz@`A-ZcAd?)VTOLx~3_lbHnEYaP1ne^@$mu3e7~yOiInSsYk|}B`AN;h%7jBm0 z^xf#UIlGkl19<%oug0nZz0@!}t1+MbdT?Wt>(IhCu|3&XFRdDLhjs_co1%rQqDe?P zfT&aa^DqT*5zCu9Xf8A;hD=`?+Q$a6RjwqNv;bQ%r*4-SVtNXXatv}uR@RV$nZ{Vj zf20nMujQl@Y*Sm--u?V=$&|gr_dbu`;WSaz5$l`_^VZkH^SMC~L15~o+v^9~fcF0v z9Oo~XRN(WeyX)Y+pkjeI3V8kamvew$Js6!+{=-J3d%b&Q{z!12&^1NrkE0|moi46& zg+&+GW9fiG^jb(Xm)xh*2Ndk}S8J-R;#>5n=d8UGaq5Hj>g}Jy7zr$k}EbTL^kPTaOm!4hdlcjr-l8S8t25jz7E*BU!JMQHE)= zq>>@Q5NFT5Y+FG!VZX2zRS3ZFvn;FM=haC=tEmvg(FQ`;t*?yT^UaInFX_To4lQB` z@Y&5X^E^Ig+?8h(PJa`>MWq-Nz`T^T{ z1zC8ey3SZ5hI#mHIMC$CO{Yn{OJyO6(J3Q`b+KfO8_ho8CW^KZm>_U0gY+x{4LhEu zUo$NM*F46HE|VXQ(mej}x7FkPp(}BR!aMJVf~%7&kBxj`(+?BMkXe%Rw^{WsUkd`4 zxmI@U>VN{tU1ao@o-)+gGkKnX>G2S1c=hRy!Ff=MboE!he-NXW#CMhV$%)q-82CQ61Y$}0}MYSL#-NihZR$IW+3M$+&aj|YRvNDih6;ZoH zK;5UIj-7k;dzHee3Y+r4d_#z}ssW0i5oxO#imllqBG~s4Mb|Lmp;pNa{#fAPbskiT z4!24~kfZ?96V};Wq9{fg{e2$=?8WaRODG@FCeiSJU45}4*8k>ICLl!*{GQRPLyk*p zB4gGpj~M9nQZ2*S+U#3No*w&ZntqbSNJWiCX#n@Lg=zU#OGM^Ve-{xV2-iCMc)DGY z97Xa%hk_b*z5A7tq9k+mdpSb=a_*P%#HW>t0=8GESAA+hJi+;O4Oe6QeM(n61Br{= zS*zjzdrcO|>$fl6OI&RuH;g9e={wrERqO#u_yBHCkR{L^F|ib*V81Hknp+g}; z8FV;LyWPE|ySn$6qaT5Es!;9Q~ed+Rc`d{d&o%oiq2S z**~_zch1b+%A9eU#?05O3BwRuT!F~AZthw&wZj)6x|9BX32H+#9PoT`Ii$4hIro@9 zh0+G{>^zHz^;mPy*1-@BGDfYCm`S(^^N#u-89BeF1c?v=N`{2z>MyE6gbIT5hrZ9Y zGQk-f91)C+@a)AZ_fP0IOBU%gJ`X~@swW3D9_XtLiNSoBNGb}?@$2l6J7j)8 z6@jObia%nlBF>#m>@BhQ)a~d3JA?@yaP|-}UXYCi7+!Joy#YG>EqHA!FcZL4^Uw^x zBzh7>y{lw`)S&Bav6*hg^}wu#elGud{E%7^9W-pzkSF9o>v)tZ1Km9op~ zoU^}DU*w(_STsK?v3{i8R2|~Ln~#~qQEamDc$De&N5*7?HOxgIUw>gUwp|x$IkiQF z+fXF178AHDJ#s5WG{~eA0S3bV; z>)%PO)y{y%Rt$8=b6s}sSAyb!sQ14`Yg7wsjU~$F>B)2~62*8U?c6CkromJ5gL4(j zPzv~bzhhNsf3Mz}_K+m(j(N18&d-A@^UhL5(=Rx(ME|)f9WMGD$2Lf9zD`^J%>Ak8 zgWp-6pCQXuLdS;Hr1bcMX5sXeCOGY`bA{YfWmoq3A}&ex@@QcB7YarQ0THmAfeLkN7=>;V zK6XQ|J%w-tG*2$b0#)*M?i_$tWFY@aCcUR-{w=LaKZhfh?^o+&frowSVsi7q1YcD% zT+^_zln`)fSHbSd?uk&AE4)7-5M?Cln#)b{9!0xUU82}d<#zo%M0&WM?~a;rl+&E@_sZDgG$VgNG$)xLoORA`*bjjD>HPN>tRwq-NYu|!qU z>G?o@lQK4N_wix8DWGypC5^G_mNJ8zJ;dP9J+ur8XWY8j;7;FioQc!Ld)F{rc=St4UEQB-yd;QyTm#07jT zN5y4?FJ4*iNx>M{k~cmSA4y-q(NbS%mP2bE@cb*WSNn81nbw^6B^q4)nN#%Ak(AAm zYf3U{EJn2~wfU;hBs!U`M?dA1vX4Pbe&)AWrV_L+?+?;$ z2(BkUkCHPuVG9JKyz^%qx@-?kC1D6!+;5hi{?z6VUgUn1k!Ml5r zro(BM_4XcNo8_foCQR@z`4`SoTLkKwVcZrq=-=700kPz{cIrGpQ7|w40IsBci2i)B zh3dxBKVY-%v%W^gUC~?ROh)SA_A?P0Xo*rVR4e+P#4bg;(B@*dA3BX3&jJEs-6<2l1aG1h5k0eNG)csN!=1~u}z4G!2I?kEtmIJ2Ycf>H+ zXK8fr3Wwg>JGV8vRsH0<05lN!_kq zU;-@~@#~oT-iL9@JA25=>@j)%@el3q7T`qCkNhxTl`o~v{#Y_`fQh_8FGU4(Ppqy` zv|CKCqne3RyDa&Ejs4y$WT^5J2@2qPiH4*YR!Fn|Qke&nFYFb%9~mKH4Q@mrg5IMV zhXP$1$rv%iu|&3hz;875G1jISvX4PC9T9?W-ADqyX?7p500V!6S-4R%-Jh8#M?3Yd z)YcH>E70NtvWJDl^9#?xdBfpNXmRJTBu;=3h91wVC5~ZgM;cU@fIhM3(zv01E77wS z{L0CSARAp|=faNh{(CRR>aTxXeE+Jq`ge|7$FKhK%jlw@rE7pnJOK|aB#vPCM?Ahm zP-t+>+d<=qm+;|n7|=e$dK;4XqHw8O+Sj2UUxHE^YAhL0p6LT}!y$xmXBy!^s@}nnH7@G)$4(x%E4Y^GJKJ4(60$8D}oS%6CG?n$eqA4ViF)|{Hr4p!c`OW zyyd~q>|T5V_3eH&4}tOyw0EpA`4Mf~7B?3ro~I+xkES6)nA3I(O#Icx%GtAg}mZ z>MeF&MC^m^P+&u(oGeUbA=1=MC%xBna3C}kS)ib|VVkML&Cd6L3x4(SP$S^0=m|Sp ze6j|>*){gO`Wd029zY}&oDcmf<&AdBsrtnJ+|-}m-)`M)U+S-lSoKbj`EA}ell`CC zenvW~E?*s{+6U4s^T!xU_9YA~oV;kpZ^EUOh&4ewGfg>Mj16&=rGhf1PO%P|0)(yQ zO;M#*ABYmdQttEC9GrXd*r$m4pEC=~J9RckYD9JCbp&Ebx!w8L%cOEvzYYBil>P8c zjRRw7E4HNw@Tvd>P!8IKT4icfJs1lU`Ia=yW#@DGj=w!9IuDaak?IK-!!oCj;m4@Q zzpGh5VCOdOUG|UKXnWVUeZ{XPDhg+K3y^)USd;zd{5a~?j>J>+_~UEs+lPaQ65}NV zi5<=w+RNfL{AnJas^}Wu#?ijT*L)cdxsx3~DA?BC+a;PM6k0m($TI%NW*s^y9$E>kh()9Z0L-G{wzHH||=j$4X#{ z=v^vRS$5xES}8Tu_wIzVv?K_&%#0(l9au^I>67r}k_OZ1hM|6c{f09)k#{ks$fLisSK#b~;9%~)&rW**{flNZrR*VXKL@vh!kP%5Vc-y2ExF-w2ahHSZThSOJ0 zB011!@IAq?Un)t1UJ3qm?8Ol2?a z0O>8`b+GF;&YBCl{q#TkHSxA5VU@WJS_+RU<0V#-)7(D4kKtfb9Mp*6~< zf3g799n=;4{HEm#L_)u{0T_HkDtmOufEq4pD+#-AMdT<#%zX|ED|U~J4zQ;-qBKi> z)wqxVe37E-)vZmz^p{n9&~$(&FSu0emogL`Vnx4~JsZV~93lfqtud{9nj?@H1PRXg z|EyQ{3;ZE(!dXQ#VYjz$^!Y4d)y(B-E}HbH(w#F6$QA)$-q#0R72rIDGVgV2UxPM8 z)-L7L)c4AuEOr3v!UnH5c-w@A6j5nt!k;?;F|$Ok>4K@z+uQ`vB@W=8oc1A+Ubwp9 z1D{pP-~hvz@2!W-5^Oh6{A;fZKuY{t{$)~vRcVKf9Jvo-#?o9J&yV<$ZB#QF6fXKw zL&wBQ?)-EZ&v^>R1dmLqljN-xE#3>*vIX5}C(c45fP-2hoBu{XEn|?EfaYNB%_jm_ z%{drdVmV;%SeXbHI7+=Obt7tBizTF`Y>Z}=H+WX;-Kth~>3rAPJy!jo6jXV<-F0bq z@sR!(TVDAW@YVcRY2;JeK>YdN4Fq<7wG{sS*;72S>T+vQWg#7>BCN;WJSP%V3>Bo> z6E}T*YdIkCjI(k6200YmC`9xU2c)QW0t4@a?4xPx^WW>G2a89((E;Qt;Hfh&?;7}H zD#@pyhbH~jENoJ^Epj2g?*O;&`>*d=p5L1;bd4m-v3xZM4OeZI#yF4KrE0qD`Uz7_ zs5eUuF<(kvpmI6uMK<9~(O8vMh6Y5`EHRBH?5x7j2!uwq-w$_xp<()A4ii55Y$o9uke^&UnYyAi@KhYDzoi2h(o-_Tt_jxYSJV5}gAVGLxgIgHt5=urc zTySp!s4p4q7YTlMup`N7!tzf1KO0qxX`3)0Gaxe#d`cT9H~Ci2YoOzT;v&%bh`feV zrsT|MU@s>Tw564<-N$eXpr=&;Jz0-KHtJU5$9 zlGw|4o$c4`|ER&K{ww45KTntIe=+t}aZxt<*Y^ZDbR*qTN_P#RARr;q(jqAxk~4IO zfP^5@T@nHcNDPg1ONRnOgES1oJlyyF?ET;Secn2qgE_fA*Y&HlzH4T>%>?CqB9qZ( z-`qx@!X}TM!lMeM9kY(T2Zi1KrdPGZr8*OkAKiIRmYZ$9zrqY4;$nT#8gQ%>6+v*+QY6PC;VVSfX948}cwfn?}kUuXf;djE7 z%Ftm*V{6}e6tj@$?ulnr<2Ox*%3^dKWa!yCteB?yL;mmFDc*a1d-tL|Y?O%M`P7eT zKtx~7q^q$?!>Yg^g%^)dx#pkFlX`IcynN1n;@lAm65%W_W;Or&p^?cCk$NxpiECNxPHl9L1S6P{)TmbIK4)t<3daXU_7PRC- zG(&5;F_8+@u{eEi__}^4qc;9QPyXAMqcD+#yKId0BJ2%_FMWPvSpSM}mf?r?sv4`f z7WtP5kBz9oUGF_F?p~S=(ceD&f+UpoPivFyVSS;GK1)cJvTaT+iW^cbNYI5nDP(zD zas6qe=)>$~#ywf_5bs>UvWQHi)8tl*Lxj`7Dr-lYdd~LdY7KnDYlHr}&4Y(E)JQ%QgWLLHBBp=Sf5AgPki@&SMgm8*Oja3SfgRHpFreN;X7au+Cuj@Y; zKF18!8!~*WXszFO635KyUtBvS1m0@IpZyJ{6!_=Z`gehRA$~b;)7s!?w*PJJI$Jvy zL;9%o9?t&j4JVYaj(ofrgEy~g5brEeC74G4q2o_Pf$KdK&%4|(1LrzTXfO1&!9 zXaHN2aZqX!$q;hr%ql*{_LYfMc%fYlcpl-#>M12y4oT1Y@G#ISbG>Ouv0u6v1yyh_S?ic4IrBu9j%5%PKN8vkzd0qL_sT}`4pLF zPx4wblG;{t+BrosR}9$l68X}0Xus8 zo{#6EwmebHSa$~E(JK~m9Ku9u0%tyoXfnL-wH_awOq)5d`9mc&G_fqDq>2@9YGzl` z6TuyDSpJ=-4!f3C^wv3*;l5DKvDIT9Z>x)z<&Ke1o|4D#Sxo`Q4#Xzb=K%<^T`6a7 z1hwaAk&CW7d{`yZK8Rysb9Xdv+xxF>$G`q?@J=7*hDx~#o~X=ulkApALjGw`F(jy7 zt104w!Ki9YtvTeh6(mF;!OU$ny*ZeR(NjMb}Poz#Y8Qx3r1yfq(1nCCr$jp%mT!{Fzg5lfFCU%#g)`ZVF_VPuE^CU~y~SOvAT zLfIZu-(?s4F2x#KWyac!EI43i*?802HKiEE*uK)Sxx1V&o zj+o5ev(XY6L5Qx(K}i6@MCZ}O8Y{ozioG2!?l!_arqi62rGjO}T~GemYz3&1hN?(H zi_I%nJ?1Bo>ZOA|Ms7=V)8h`p>$S8o#FJ?H(34msT}HLNkEIrrr0$p7fKSLhQ5nf< z)o#rCuCcVo@;+ygxs|vQ=%S{Slq<}CYZNlEM6t{$)9iW_Cl%AYDvRth@yND;XFfkG;8?>Cm7!4z>>bM^q`o}1ozP%^{dwid*H(^7#PQV0 zP`zu1Y=xOksR>>dp>7UGi&xW4;S~(cQ>-gLs^o`Lap04ECO&yA0if$=z?-69-bNO$ zZUSrk|5N;4VfJ+R+ivWlDGgz8JPoixKl!`W)WE0&>RWj7SMtV#Fla^--c_?&y~*sC-8BjF?yJmY+Vk_>?y3`8`jmI&OiPW#VbxS+;jhQszL z-2J5czM*uNm!HBSzx-@GI73XRrXE|Id*8BHv0aZ3Ax~}Kph73|6!cxMjwYGaF{a** z^A*Pzj&<__v7a@Bv(13f85#U#f(zIC(L}IPS2FEGoq9of^U5pL?;9JxuVj#4(J$9A z4XSb&^bwC}c_jS!d-u6nh;M$dTH<%suLfTv2&Io#R39k(s_%FfN?}9!^?kaT;g^Dg zc+2WcLh!g2Mfym)g-?n7K6h%PX=qUEk1rjbs)Oh`M!tDw-}@uZ2Cr2Zsjy;cwb77`zskOjsz5)USCDBrG9?PQsr!pyX8M=Z%=Ira zR@?Ny$XGxB0%y8fRaT(&=KXj;uil}S7xnvT_8eabau2j4zD#7AmbH^*VD*HoF`Q;i z=oCa?2C{nZux5cmPji^C1<7mi3-Gmdn{M?ooL`37SwAZ|6#--k-uzx^|ZG!<&|= zp{t3ckCv&d-jq*{K#{KYVM&_JyZY=jiET<>ern)dX>c>!1>3Vl{KA5%P3453SK!xo z5qaKQ-C1l08LF<4IXW0jsWe=^_AF#X8X&NJo9~g1KNcpH57TM(%g|SdzETD#$geGZ zTlvk?-j#Xyycwv&gXh2YapVyhIgw@@*=(84S#&p!wJJmGNnPQTw*4ROgo(#*Pv%^< z{d~^gIBjcuJXzm`O1uCr>`-Lu{Q;?SgZ+!gX7k{pixJAV1`L4cexuGH?$QiEA*&!= z>$e(nQL6PDY)dLlN#&R6#mU9qvwZ!PVIXoXV{QW6XMG1!r!`R4WhuGbJ#M)Cf)xMa z!tAZ{+jr2Bh^6H!w|jBCyqJ>c2ig|0mtHay6n9>(>+h!t-_pKT7%m6wH=OKNx1J}Q zqnk!Cf7|v3{~0s{{=szLeMntjn;W9M7ZjX#Lme|OS}*SrYSlyG2We(?*}oCeTMu8! zNxU)N20zUru?!phT=H?UEhd3GZ2y^Hiu!0auLu`hj`PBB_`zYWH@*$^JCghwTdTsF zVSYBUXtgoh#o~xVN61e?+}QUBxzr17kp|Dm^bu@a1%gA!Y>6llZ{erJM^fP2KloC3 zT!j(SG zg(p@P2!s{^RM#HAC8kbe$pfu)K7OF2rWRd2=8sL+81eIwU5zzNN?3vQK?uMH$NIwk zG2bytq!>pq#A+y&D*Zb^TJ;_t?=+o=Ah&GF6HQXFbwX%~f;RttQ&sr~P6MpKw$Ceu z&mC2M5B|QMy4tJ4$rXjGu)V+2qASaZ5shLDV7r_q_@~rrN?iHy9j3Y0@M$elnX`kMtF-iek~#4FEX8YHC@iDF`7GigMGExL=oRiS_sk@ z=VrtG&4fC1bOr6))o{=>RQdDiibFXuyhu4@;t^#KX#j_eFY=n+^S?@8kU4?n_;|7r z&!|ukZ0X{rS4cnJB< zyb@}M-@5WY@w=xZ_~yZH{`sc&)bvB0ns4usSBV4k?ZNwvq{@LJ(I0!jyDCh{?Qe4AnNg9_t*P0hkb81f$~6N;9< zRe)>@>k)cY)@*$gE*JQrjX&-3OSCOLs&Hw<_kO~Y@hpF@8hYODo*|v|1GxFnd^xO% zC}zP!1<)18?!sUMi9Yi;#47EC>tB>qGOtk9T!GYhkP>n*qZp5jukyv+ z7!U4P#viG6!WD_S`<4?_$;n952~VL->?Oi6(I!fiU}{{=*I!SIHu8jABiz&K;GB`r5B2!u*Ecv1?V#1hFu(fb z&lkwLAUn9W6C34PISyjU?}2F@q*#wUR>P?9X~42mn%?T**PkG4tmm;>; z5gl~cke%Q*0o15hkB{HVQJ^T%?E}Psg%YFwr^KP)0IJnk;O-U3Oh)qlX1@7a~0a7#rdvmA7? z5|XjYv97Z9v9TTq(R^2R6QPoF@)Qr91E_E#U_E6v16czuaq{0RYP`REKOi<2H6Rz4 zH4Bja!<|JFlUldT11x`UoIe%tiR<}9H82p%5d9Ro!6cbt!I~Xah6#$NU@6^_N%#_y zo&tFM1PcT%Pq_nU#jw%^9XXK@zD<_=RQB0z?+i9wG^ zi1^-%9wDW`C3U=+AnhMMo&B%t&Cd44JC^bY{|CnFKQ ztOGfoEg~R&K%WDdiM4)Rd(K_6-P0=oNs4W@-~=$6Nj=cM&+M(qM7mYN02E8jj(cOC zP_?28=(6WGTh{b<$jB)trhGNVj|~cN`pm=K%3CTUxx|nAtQqK;zJ|uy)5~yIdC(f6 zX=z|>&5K!4+!*lq*z-&pz{MLegeQetP9D+w9DAx8tsUcg;rgeK83VCauGMuig-Ra7 zPpfs&IT)thhTe!Q&}v{PavgQ|He<|317&v4vZv^Gd9NZdoI4em`82KM`K~XooTU!uX}MA-6>>`42 zYEczXz|QQ0b<$kqi}V?d#t378U~5DT#Um}?xM#+=rTe=zO590{c&dh+&WaWQY?pAz zqX!$Lx0`5M=9oX~>PHdXW%Vbr9sVM+rByLiv%=luav_R+rXm6693(rLdsA^G}p5Z%xZ-VDGT)<66h1{vs zyEXynY#_h)^XHM=eSz0b%%mkYm-~NIx|e7ows5pq#{DADG~dh#iLyy^N;9oBVKZLX+un2SCb(5Yk}XxPb^ttZ0_ zcytaN&N~Qcc`F8G{%*-XqZE*gJM#xqzYI^l$oa-isSSdALwm7Bsnu$S>GIFFb!kg> z`d3`{#h}Eg=|*%A+mKEl{_rx42pr87CsJnlhe@41&1?^#rbYqy46aF`$+8{~S^F)D zJP-c}Q@wc*Vrm&|8hg`T-}hD~(5eFb$+ysgI8=mU6+XN49H+({e5-&#yzNs3bRVQ& z$-80N+)yVZwBHnd2V*v;D#k(qpPxVBd;C=#P_kp(`&lr3_Pkq$+?TNIX;QhL_3TXE!uw8^8~|VtN+WKR02)9k%z*_2DEBbb z1NV~3dH4FMD`cGwWW!IjA~i=fQVHJ_@;?6|B$#S4CUs3=8--&w(Fv6&o&f`$l{;fT zB9^XH=r_oAcSYtkwuImQ=v)?4HdX6J3dtrgG{|dP7hwTPDARH0v7Hs##ftXoUY~#H zWU}zA{9FEbw{xBNi;rac51aIEu+$5(IB%b?p1CCxQN@Gt=N;!eEl}8)T;%{R;=dBC zjsQb;d;s0=p9lir-lePU;<{<1>(9r$ov2`SHTYJLn4|H~J%26g-b52C#f_VcbCOlk z&Ry9Z3Zp~v;88R{g;Pjwq{e8DDbFMFd4?#wNBouAA7=jUQ(1A#1JOFVYeJdH3_OvH zLkVkKGG7M5aK`BG@p1)js#aRtIr`l1WV!}0ANxN(yOsFVVq!OPS2w>d3D9?f< zX$;EgSHN|1YL3*Q29lnJPF7>;e_?hN`lMZ#MReK}v=WdefKeuAAw>2En$cuFQjMfG z5Gso3g4t(r2W-7ZAe5A7$K?$;h>2Ety>^2?JDD<@n4VfX&*27K^~rgI`)k`rZA3K& zJF)mcTRqpM&|w$cSOVvleJn=wveOSUaE1Hm>OR2*`LO(+qB3N$Za@@6^;6;aa@-$8 zO}<%@qoe}OMZ5&;qiTL>g<$%v* z{S$jqDRypIa^RMt*{D7wp<%Oz3ra26cnTKWHpx-%+Oo+UhshA7-9L1+s6?kc@$+y0 z)>(2Z*m`~~u#Xb^cPsRNyFU0EwjEPjb#A**;B(t_gP9R?t^LkjB=pp;G2a`^|V>;c`uZ%hLqIf8W_yU7EqQAX2Xfx~I z-wu^wpp=y*m2{DhN&$_9Ji>|vemJ>ilw~$8qwCBf(75Y44_=l;kf>4%65I>9A88)u zwbUHD;6r`O4u7|5mP*2F7Oc~JmJXEFHFAb-%nWL}0#=D%(%opUO||;i$b}}u?`=F< zQ+zg#R(i1a!3K8+?4rQ28AWtO6YzMT>^Qg{9EsR1!tA85EgO;I`og4u1EgM$5IJ(@ zU`%z3VP7wddidN`oB0;|Yz?0b0~R_^Gx8e&1OmxHl_{jFDHqXR>pA4lqCe7Vxd3Jpp9O(Z**+U=8hz>6( z*8Mb<3CMrBdLl7gDB+eeC7mYIVHq&yc}{Dp`)TB4P^SnymI2m3rZo60%-WS7v~7c3 z&+|Qg%jb@rcI$RIZ_U%n(h7`Znrbe)KyR}<(u$lRk(vx*fm^+tagve z`dfi^bOGs{%XF{ZcpJ0vCYKoVn4{ERgwQJM-pWMBlA5*<7dM9Xl*EF{$U}jutH7cA zP6UKDbrdL8aQUTp$gFp8az@51PN%8HX<%$mP}DR=Pm=7r1M2JBfkq8}Qq7QCyN#K6 zM+ibCUdDs;TM6t@(B;U9Q@!8({azD+)Z6d4Kkrt4=&J*&*4n-HD~B3PAVh$;&#v0h zDyHNDrnuDB#eDmYc0px{V$?K5Q;*Z~)QB8YAc?m@z`|QQ95ehdk8a+|6!fX=+Ux1S z@mgdLM*0wYd8;7)=F$f~eZ&?vI0*)EYT|Nm?d+=95^`Ig)bwYf7(}}N*EDLj@AvjBfj(iCA6|r>hBxP_lt@XSbAn$> zT*gx(Qia<@5pd-SK5mBRBY#$I?&XTjg$sG;{ZMGmWLfwKr{D{O^4^3`(zvb0>D9c! zzLz{}H~T}k*Vb$MjSN;&g_3ca00+x;TQVxSo5>^7*_gK=y<0vj+Y3FJK1gd+HYZ*h|u`kmS zfJw7+!Z?crhWBV69@(TJuI7~X?^wCZfYAZWw9^!ZRF0iOfDfzw_(n*`^(R)Z1$-eV z`kDz5)JN+()RO1)Y>UFS;W56NiWiSuK(6>(wUlSrU*GpX4W$K6f6wG3f_pxRnxT@E z0c7M0Xn$ZJ>|zPXH*i65k3&8D(iC9{@!E~?Xr$4_UtXki|vp~CbSOafRYrLmRcaJW*kNvTgX z9=@wzDx8apaV?oKqsVxjw2iUXvoAk?TaXr5Wr9J(<4zPDy!LeKK8wzJzM_=)V422^r&BljNjFpf1FCWDxtGbu ztE^u-CNe(kF;I_|a<(+~(^z9cX=DaoeJOd@HiqZ7`C*rIe~i~v6hGnBe3Q`i+np=s zLg|OwqmBu8jgoe~|DT(S;GZX^-@BTf-R4#w4Bf5$(*DU?y!+~=Rbx~FUiVi7HKS9q zZprAs4DL&%r)lN9V;yLvR)f}c$l%$CZXA(N3f}mEcVF$haK3jFnu*ZI84^E7%W0lP z)dG`evXkFP6=xDYaRAuEe;0PqzN(GJKCPh%VZnjW>%9-!IrFf(?$vdg@FA_lyVl`Q z&}p<|i5f3al#b);VuLjVm`g+}>PVNoAAL()A30aAXREa!@RA}mF6!P!{IxdlDq=kU zG=paUvR3FCP{F{QnEuB90=%;VyL-sLZXeWA{#rV_if4;|c6h^0WZCKiLTk_*OyS-o z#w>E&Uff*7&z}E2(rsNf2Rodp1YWKn&X*Eqm(h%Y*90}6T-~2VJO4Bk+viBRSZUY_ z%SRn9TLL9Z%XZR$R(Hlkf{ADWMEqGnN7NI+`f zBbY3?E8}j$Y}oUr~K~S!Vhrp-H_Ln>b{L!_VX=4igvJ$ zekZRg=|t~J=MwUo2o(1xQnzU!ql8&n-OrXRd^{%{&8jxr?>FR(@PDV4-bqJ-)_n3X zFh{4jNkqf;L0o*wZ+5xQJ^-(>KO;zq;OB;6^AG>1s!<-!xhrbowUEd#SUaThGzZ(4 ze^g)g#J)3T{O}A3MqFS5*bmu#a|9!6z?P}R>+UT+c%nW`@5tmz7&^Ihr)snA1Qf66 zlADxF=-v`B%$51ATQULN>NkeQ)cAm_a=b96cTynEm}Oa2#u5 z>fH=mjrB_zo^r^`OAW=oZ6`)R@f?=uXVnp~x(3`7nx)#{Nxm=j-|Mg|kfUH}UYz04jSGgExdSQ3X* z!gIurttSIFwC!-$=pqqcrD=4E_Z1-m+yP#i?Y!FBPy&xH-NrmXrc<4MAIU{5Y_Bq| z&_gWyxGcQf=fWm-Pc=ay?oQ-mJfk?qbA7M!io3DLr^jQ{PefIb=Uql0_9i0zMHj3m zhFtoKvp^4fzYPNJdcWg$4)pXp;it`@eC)XUq}sIF^e)V8*nLF12TQgXgQTD}%Co~J zrF4oH9ZOn7(Ds=i?M;0M0L4N40FWBPQl5DM^XHhjIvni*R^U#G|2d^VMJZUxqp22h zR(>xruYmO?j-34hz6YqWYm<}Bqp|Oa@{;v~Ey1(AsVF5W5-#v|a%`fjv(Zuu zfHufZ+ZFoU6h7xH&>-Uy6uILaKCK^U|IC^cI5rp*2g0Kn>kJza<~W&Mo2G>v#77S*pnk%z-nb)(_YnL6jNrxmuC&CeL($AKN z!{*`%WsJDG;aj6G$vh3`E|)@Pf?qZzfv|4%L2lMF-Gq0+;hnJjP7fvVmyM8=NhLfh(kT zOVkL@s=K-On3M-I?Qh1mt9CGb2s%o|lC2KAjj#KV$B)hDYdY)s!N|KGRrkLQN{!)C$Y4rS|Z_9bOI* zc~3vq)oAZxk*Z3OaEn$SwiCkK`DWa2okGLy{4yC~OP6e8&PnV8zATx4&O_@^3>jxB4~acw1bI|8409Ffa_WyU7hkvc;(+mz_# zE%r_~8Mkhsox~=IKNRI&bvN?l0XB#)8AL~eBnZHXVJzVr=K)fk)vB*PKZDD4c>PeI zTn~&fm%Uf?fd~?Vf0H2`$9akzs0EIcP%7OI@A`@DVa8XH3V z2LX001*b{XPJ(vPls{@KD-%ZT)Bn73MStxH|F=xxP7m#L*y{Xqc&2NgH5vWFu9I`D zR^_{4_rfl%S6O>!`3`5$LvDpOxcWo>McSB8@rtVjYA~p7VCTgx7H#M+4gMhA8~P>g zrwo+d!GlVgTV^vE0^m|s1E}f_0X2?lC`IY_1nE;h7rFvSx}sGBxut@8SA+lq=`g=n z4}3-&4~z!sbfs?=dk!S4tt^&3gA*lPGydkFgp)7{gvb$mHy)%Shg|m5lw_(03jU?JE(P-1{)9Pu|5GCA>43>r!m_@dVUS}-?>b#z<+rg~8C!6uS zlEI+pE>-1xu|$UzUlC6QcisLbI&r}L4Q4~~qJPSmLDH7bd>~j9ViaT(AbWp#TvGO0 z>?2^v7ihNuf|zac{SI{rErMZQbCQOf$IZm_$(EI&*Ii_-?u3(AYx{iYnnj_mP8ANz zqdw`+%wUAhLGVcDSZX=ldxs+?C>sgM2P7RHGGof5HpYX8*zAl!i)2=eW%#A#X^(MV zDE(L(HrdYhU4|uj|CgOoZuEwyc`77QkLOJdxsFMlU;~G-2jG%TLun*sBF*$m-(<>l z3M$`}W^uah4JyTW^n%pe|8{<*LK{tlT5M}SJ!v=i4->;bBEG+1(1*;-0WpB{Va)p#m?Son-zi7J3Q$;A>ge_mgKbRl&Gq&^$d^AOjO^804!A)4 zP7;|KHxZnIp38-dx?l`7pgO+EO(3HtsLWJ3_Xz@xE5KsfRY}8_B1{~($XRn|6>5ty z7@h)&kuFO+W~Z36Nzg~hS{U!p6lC#Xw`kNv_8uk$Z!8AB#r^O=DprkvF2yjxyv3)n zsWEp~{%cwdTrtk8Oj-RfcQ9PVUh887cW04^b{r|-4mQAkDO#i8SKPFw7Q>zYj3&IB z>tzBzTrY*v<=iEE{H~1LOEll-Yxw5&^CW=ozZ7NvG*SPvBsA!2o~Ln0$T%ch!SRl(J4Ius6+D`ua1adM}w`PeaY z_3Kr!Vk*`Jv^x>OJiwBj1*?|54edtIi)U)=k6Zt8(4_FgW2zbe%krlSBcz%2u~~{e z$uq7NZA7UBNX2R=dI@&G10RK~qM{f%Wiqc{M3itZzJC5JbZf47+QaSx zsG+x3RV@ulMXuclOKzNQ|3w1B2w28b^aeaWz-%bUo`c+Y!FZXO07<|fP_L{EZgvF* zb5nGeB(#DF^~D@Zw9rTRD|F0vY!$i_X&##Eq6vCbJS?R^(lB;%dag}E759z7!6yLc zZ|o$IUGMFYZwMh<-`EPxv<+TNDfM8nDf6D&&0SBHRVBUo6wZR>W@fwka_V7|ka$o_ z@!VaxUi8#8teN&a%5GiT;kKoHp?kbs`QRG3TG}zE8>~d{PX0c&chsu-7kq%BGrPv^ zhkSKkxuw-=!k*s`26Ru7G7aR$ABl=e5aJ06(N&dKH{Q&fB>YbZzfS{3?H$51@GfHT z+vCe-iINa`v!2S6BN-}|fsQ7jO&Z5MtPfDhEuh zlVAOQ^+&-_rVCI*^`SC2tY2%>Ldh;l4^gved{&$7>1(eez}TRYnaPR|nbb*tGK~{w z`Yz~;@|ynYfko7xcRkmp*0g_GPGNU?zZZOg6ndHY8B_-eD9Xg9oaUIOZNvMq)o47Vl??(z; zH=U9Wqy%2S2vn5*1v}?IKc5uS8QfMx)N{H%QEDdCD(g3MfY^~NZzqy8yk$J{+xOf@ zO?)^T*hSjhon}VQ?gW1d6BkZ@sr~-7Df)*tcQ?TVlbl@t@L5s``g88N8MrUcmxovv znMQ{~9q|eeSOlqpm`iO0Qdo?i6)8xPTuU3(i%sz_QBPM`1;Jr?Dxk?kDoW*{S(_p6K?o;M!vbhu4*HM0g_oe zJCL=kgCBy)ulwOt#BfMoOQCA)v*USD^u6RH+gmG2AydegvKV^<5^<+sajw?<0R-3> zi7?MAPHswYbfcGW*U^X3%mgSH=ecepItPnSex9RKU0@bay>WSB$CN0CHS_^*wXE3c zheKVS7*I*$g>+M)2T?glAr%5(kV!15vm!mS>bkw?K1UwvF64xetl(Ytnb-=NWY?04 z$(e@~-NVj$r(`C{t~UgzusiULIqAXSd+z^mvoYD6P}`fX+l7i2Zx7u6>0##L({5&S zBQPpm<)x)2i)ze{OS3{iEwKCX>-dl9bsxUSAMF1~a#Pk~l*k(veQc@eK)-$jX{yZj zaE;bwB{5uZ&DbQ5_@SbyE|9B7_=1|Wh@gUNJ#RiY_@VJEr_A+Rn@0!Q$Y~4tEDti$ zqv}%Iu-tUq(&C5Pl2!?uPu{Lyx%AzIs-J7j&lOfLy$m!!eO@_x;T!z7J|08%S03cQ z+9mM zA#rD2xCGu*Vxj~EG~L!LVm74Zi8E<(g(Gba;RvHtngKNTMZ8@3XqPAqx$4OmL!br3 zh~g!;0p82daF3c=eaKPvWGgF$0iwHype7a0lEZI`3CZ+q4y--_Y1QKR_o&iEhPb1= z0h$Tg5BI;kGJlB=UVcBzE)@0W*gW0S+M3POII+__bplLkkjw?Goos1fIXP$FykS~c zxxXo|^Q{h5;(2BPxH+R3h1s!e-C%ZBMq3HJ_wmMFv3v!^2OfeTSd|ZrkwMDME#TJG z5?u4p+sOj0_iIUyPIzkCS8D&@|31g+8Ecr`kJz4o^cW8-mHQ?sSy2pg~RI~NGv z`MN^PXvXnYl?N(BBS+Ycp)u|{x}ZyJfb!#pkU*_Gz#}-h(7^%hfF{GBrap0%Ftwk z@3tzMT^)ji&6+!mUR&%Z@7oPsI?7;{wvahr&YY@Y2Ttt~|Do#sztrHrmENd+q{3X) zr;-&F(+mCLO8Ri4pp~ohSD@}!uRnXvi?X~ra6vS02R*w~y$pkT)lBuxhIkma@W&e0 zP}Tg9s_6!PGJXL<-6MzWFy(oV?lAN^4^b|}O<(2|B|fxx0LZCn#XZml22$)sqVC~MWRUsc6k?%um)@DU*5M=;=R|MHMIh2!iBQQs#_#vrMXh=q~K#L=Zt`)(f5oO+c zTf(0Z>RrZSJW`@ZC5H%^v4{G3ezvr`h61AO2Lt4U!@;=hU5+eT9-rofIR9D)+ zXsp2NQ;!50B6EzPq~Fep@`Ox4YsR|`(m_CPYMhfXnSQe-QEt^6Gcv%~pB}ogKeuFw z|LvYYADDFAUtyQPmUlIxYD`27lU)XviG8JW?u)?(Y+dkH;ss(G1_yME0HiyKqzJ`V zMhzK~us+k0Wa312c*e9T=*6(D6?bTG1epNDjBOP6gLQ8&(n_ zg^^zA7x59Y4(!~Ly!5?TE~)*Xa}J-$-S4uN;$0uV{ON4rDbW!5RaZ8k2ZCQ@&gPW{ zFFdB2^hgE1NG}d~%A{?CCGx(pKy5L*4Lj%dbdJ6_FUS*^t#I_CPa~!6b5|#gvD!AdrksdSTyG{LZT7!bRt}snt)Wfq;+7}y`JLM(K zubZV~6B*Uq>hnPpix}kj+}(vGLM~YQ|JA>}(rKhHT}59muzdOJhXw`gG*jnFK}oT* z_!mXLqR0msWIJ7$i2za5H7qj|)OKG$1R@T>GUNr%>JZGaSp*%%_v-Xo5iNelVx6`_ zcm;?cY)Ykpn~Do*iQlyw@8NJS3P<$NHh$-4VZaO5tGwWVS{JCd+mQu$#Gt+9F}dC| zajB8DNrhO^i*e&aP?ro?O-J+VHBms}M0qlzjqf_ar`$OL71iBVB08UW&i^hfrFhZn zsvY}w*V02``O6bw^7pRdi~rIB1h%t#_Mt6S*38g$&I-X%j_&m$J(y$%fWYysMcerv zZj=vGf?26BT!8tsH|$vSi)O+q4>ok6CxM;#vn=kuWp*Y&7*|&Wp+Mxkg0+d^h`wk< zZ{RK}+}w+)eMTaEtnGSU!_f*_E6T)VjQHx@!V2vuBaV6~d@C8eA`v{1*bk*yg8;f# zJt!ruoc9hOsa?_z(_cV@)@zg5!4KZ^L-gpk_E&_DHY6fn=euNP{vV$zdgcxjXYozWqxw|psZr4%u+Em{r_hf(;hgZk za=Yno5FJUi=`<<{(Ts9n(Vc9hS=*k6_(-b zb3~_gxkdC4f)Mn{Xq}y)fIQhhtDvUH3;YV3E9CX$WqNlx^VU@Kz3d8&irv>zwB;J_ zWEcZFLE-qgiM8sOGe5p*`q?hci=~cWCO0)Tuw5@wE# zsD7yb#H${2gWARzvSH9H(qgNZ>bvYc-$5&63b(G7EddD&uq!4MIswtfNDeBB5qx%k zKO=|`U&2xVh)H6xT*Qh~rE0@3qLO_-Yib`#kRXsD&w3r~t-{!bM{u`tuns;Z_WaBv!wwfR~Lg`PZ(=GD!nr^cs*dxG-Z#9D!Vy<_-Yb#4LYNmrlJybD|~u6 z?pQJ&@HzgEykp6O=Q%r`cLyeUhZX;ghLs7kQE#O0+-i>43@rR^<#qYxP91l5)zwJw zZdlPm#fh9Bn(~!g0jDguJ4! zLFTiV#dROO@F;<=4wt-)xRs-P?JA^r$0$!JPnc#AJAkPLiEtgP1l~O$Si&EyK+H)c7VSE33o}s76D<6Fyr&! z1nOlzU4_Qo*M8An<0|DUmLq<#juf+wex|(oRPYguKn4-i(zHlQbIfvE7R8pkl6QQg zyG-YuE{@aV#ck<3poB#x5!B{`#9pc=In;ZeMK;4;qm#!NsL=#FH8C;wnkGB@W{@ob zahDXpGlBqhz20f%)M=1@O{-NWj8kLa6mIkxpKenM*q8q=NI<(eJK#VzG#h88ceK25 z27vNPHo)=VCQCHD_20(aL5>db$4_|};65CZj6b^_2?@&iB0dsuCr8+8zFd`+0G_K= z$}_r0ot%0CPB_$RZ1Wiy+ZFHwBOY~4Bt9p8Z!&apPv;CcGhz1@I}yIL>H{@$$LUe` zIkhdbw)YtPar-Pctl)y@m3PKK4v*qFJ`Y-;z^7)W(?kFB_2Jo> z0Sh_3E<^`DHZgQm5Q~pbw#&U zYL5*_g0eUjvk+`$*uSLfs}h4v8qo^>2qgjrzRDBN6$j1|m4l5XK6CqqYOB0cS%i0x z0wO*3?8;ufOiP3Q*rie?4*mG>%I=z&iUpC`gF3Fmy`_NQ2VdJ#+c?-shh4+~+>$Z}`PpZ>;rN66M|*KdJg z$5Sh+EqDM#I+lRqq{>q;;%9gBG3a5opWFCg)~;HC+@$T7OUPSElYj>g(>u=pOdbFC z#6a~wFL?g{miN8(?Z%bhw~29NjG8NVE_kX@VaaN5hC@|2Hl3@?Z1k1d-hDFD`rZF2 z{4*`Rs-(TXY}|UG>_`|4Jtc;3qY$*k@Uc^01(6m&Q9eq~^MjuE`NrCpzXCAbf>?@4 ztfIS@WQUlH7=2m@eXR!Kfek2v1d=OPi7pl*MTi;Se#FnC0(I!@73h=YSd&l3>*?Bh zX3e?;Q2**4>Emvn%=1S5nM0OExzHkGZ3;TUPMZzzLn(@ zcm#UT6ci;DCv7?@EhRW3K7`n@1+LZ&27RON@P}=p#2PsSLD?*5S^IvM7ex9HS=yG1^`m zSLej%+x*|{qu8)KKB~GvKS!9xI*liwEnBswv(s8@Ri{%h)ZqFJZyHx)goYAq^g-j@ z(Sc?8G-y0H;XSU-xMg`D0r(i`@as3xJf&$r6&yM)`w%A%fzqu6x&^t{@`~mvYF1yRy4Y;E_|5U-hF%Rsu!wdO#UDm#CT}l0K!|4z6k1NTmXQb}PwpqkZ z@1;-Fn_TqFH5Ep4wZ-Q|_YCwd$+n2Ce-wyfVsaoB48FYs8)6{Bb{2#3wA+t_FX`d* zZeBq9uj6h}YUmnc4omgKd1(MT^I~tY)h}D<=J+I?RiYa?wwJh{W&I z{%bsKojso=g7caJO*AEMPhsC$g4800iI`##ZrlD-#oRGJWX(M?wIu>T57aKQp{MW|GgZft`&tBcx3WAIipdR79^6%lOW}Jm zNzXGnoNQ%A#5pGZJ0j7k)pyptEp4)QZjt!?*L?&u*I5{z(jdU<(@Qm?W6p0RW43rrSae zKWEb@g7q3##*!o8V-MOB!yrYb&1t|JSQk+@XcOY|+9xk8j6A8${Bsgbo(N>*%o^ia zBcr%Q4q9%f`~)G?9FPdGZ^pu+7$d}r=n>3Glfa$BqI3T0?c=}y)z43UqLaV$68DH4@glj z>GM0y-_>KkXO4MiD3`?>X2bR?Fg$%Im^Umj!JfVU1Nlg{c2&`0LZ)d#f+JQa z3r{z;rz)LSw%C)}yexF%Ii373juC8*83;7fg7lW;f^(G}j9(AH0*|OC;qVa5ZHCTq zx2<-bBEd-ROn4FScOw1jt%<)4b?h(j7ahE(p;RQm1d`RlB2y!%TU_P5VO8 zO_Y}3UP5D%V^|BjEniq4}8BvSvz9e$kc8Dc!V9g0bguMuSzYNSj2jz5a`>Ei67 zN-Z$-B6*~|l)i=jDbq;5{uHq#ntNKOEJYGEG2++GjdO}`NqO6W)C!tlB&&Ruh~;D`Cw|xWBdOc^yjKQ%U4XH@dOF6u zm`y_G%{w~ERyIa6G(~8H1&V(V6r)E6m*3X?5WR~=f(}0qJr_5?uRp{6umZPZuYFCU zes@U^2(C5Od3e~}ZouktS_8aFb)x_f5to?QgJQmh#$7d%-|A0CDL8C}&Ppr(kQ+J5qyg*MzXuw9Qsg#L?zmPAVT<~@#b zv$U6_KOji!2|a}kHZFdN$R7#X{!Stoj_pJp#cGtJ_3CQ3Vo6*Uz~A-g0qpaV=2qA( zWdHi=(9gQVL9`icRt@T-CBk}zcN3E6{dy!-H zxD~dsfHR_FjmV>+Z(J?~k(~=R1T|<=m+2=(WVg(DS&%$C`J!(Nyo=+xor)GIK76dI zievOuByjSp+%EhGj3`Zvhd!#=EFLw0h@x@RWjwKPQj01RtL;nN{!@PORB@F*Fz&#yJ+#j|#c3~(*y)a5dBf6_%> z=jpRYcTUwL$tzi)RR`EBn2xFVM9X?2IXA)&ew`9Z+7ROsdat&%&XaK{OufV zC`>AKtc8t^np@gQ?r9}d8>~t@>}^m5*EziW3*S)YetzW#<+G5x z2wtr74ds{7T@{>gyQqR5T@y=ML{6;W&Pg>gA;W;5=h=@HWqAlFl*bP# zh+F`((!F$yoFaD%j-CPU6~Z&BT?4L2ZMgc3n|ow4wUAOQfLDc$D`H$L;Mt=H954Xw zy)7#MAwn`RsmqH}y-C)urNZ|^;aneamkQ-mg>IMBqJE`WEj`PdB(!bc8~;D;;{nYwkPW+fl77U7b%6*vCp$(xoXA2*KfhP11|PM z4l6rE)pJ=j{!N}=+%Zb5^7%{mhEp()?LS^E6R0h}`pKO;YGaq`lLra`{D!hRB$4Wd zyGilTv4ca;U>^$xqm#dvd|?_*8^1OhBZA1bdo0sw=22>U?bH8xnt3hU->bH!gDRXP%MT~2Eum6A z|GeSmyNg9Jr5m%Gah`dMXTN`CcHwZwI0bZ*Y&NVPfk~G5#TNKr?v%L1pSsZvgNAK8 zDyp35(ddf~&2?$%y2^Cj3Jn(_v+H()=Rw*4K3=1}>)69MlLA*9c|CP0TpYE@)GQ7B z4j(V|bCe&MJw}#5HzX$AXc=)FdsQlHCc_((j!xI|LJpmL@OH`h99QKcBw13+e6|}} zTSIFFVifZ=g~T-S!S|PRAb2s zqce(Zt{k~wGjjPbC~bk$6tT&^91=W}tO*|fWn|3d{qb!EAs~0FupVatIb%x!`Wr4> zn3l|k<~U^)KQ-r^2=sd%5)yv4AfAW3C!TljZ+oXwD?#TIcU5oDiJJ|i-OU$lLg%1f z2ID|9Hb*>ml9c7}dwWG(DP%b65x~IXMO?LK?bN5s-Cy7?*?^yTgKWF(X)k4S^;r9FOg`EmjJ<7B;&~-Z>@e9qpgfidSDFiRnoHxn1qR~>Nwr1m|pX^I}bW)hX z$DW15#jcXb0kQ#p&e3Y7_d$FXOdd8b8T=Uz8ZFL?$3dEOQM%#)lErY{=u!P}rO7N= zt@=_<^|!6+y~tZx z0hLd+IV_;KG4Iaq(C#)}o$ki00a=tEfpl>J4@m#_T)&#*M?W?BHlrrHX&+bgdGyH` zQLmf>g^pai8gK+>L{R6r$IiX(XS8+)2??R2m36ouNncptV1_0F$AHrIIgq<)4!8KE z{is$}S?r>GqFR8{_+GUiN3N1StAyk|XZfy88GTeez-ZY=4-PgP1^hWtX$Hbf`O{7& z2k7kj6w8s(66>T>g^9Cot%0fiE9tyNXjtS?MV9t<6L1A+Xu%Yp-Wr7erRjKb=+B^d z7RM|d@8if-f6pj>rB6(9fXTU6M;AQq`y}m8#fV8o-#l|F{-(+Kc7!JphxJE{jht(2eH1@smncBxaPv+r;x;Z&EzEc zG6{W*g^iX!!TaUOt+4k+bKB02Or}XzV$YyVPKefGThHxeD5+vUg}Yj-Q7KG=wtv4IKGYC#p|3mgo8+Ef|d@E4)^0{75d-3A+!I&8=Z^{n~@J zh-ksc-r8t%_nRFe(#ZVa)@5 zy)W-uB%-AIV@cipflOSLh-jcVGlIFq6KX4_h>@jQyI%ZXrCfCApQ`>u3mcbIe_QVP z-$aM?54SA!Hm`CH(2`lyi(4l*p0$}bSD-RusNXy6)B+5?YR&zkXtiD!AgUtPN4InF2mOXn=&c}~QCsdy|^YqUl+-uc!X@f;vTaw=nt78Wov zeL%@9$QoEA(@~erYh*?_re^@4uxaTMgug6aMz>aEoWT?mOI_dGgBhg43(dC$KqJ>E z^|&G>BZ||{)nu5a<}RM*#*KsFHW2aZ8knh}LOjvd9Ba1m!~47qA$JB0D;wB4?S&3*BmcVS#^$MLU94 zBk=V6JNe8bTw|xPhMDCHgh&sb+yl>V09#Rt$ac zncrFifO<$Z1Pb?y`#R?FU3QZz5-X7cw5x25iTMeIC4hyN#s$YAPOK$IXC~r!;ORf_ zYUR<0VKYh^O4EAX^_PxuCSJ=14Zln&B4R7maVI6JKnNH8Jq2AuG7>(_E8aE!O0HUO zm#LJ#U$D zo>J6V`)cvp^zg?mLYD&YrlkY_;Wy~?>g-Af&2{gx444e^Yi&ZQprS2{*a(Z*4L>#n z8OYcJ7|l8)JwBrxK>UeEDdswq@PIg~=7gFqrdG={anrRK6%N zlWPEg2gxcwOHcdlQq+=P3P+ltWGGlAwl&m<-;>cw4wA`v2&a2@6(ck?Gq`mtGt~dXK z(NJF-l1{DD-Zcxq?3dN|7+>4K6DVC_C?Fvtf_>NK$;#r-x^f05@WIl`TUCB_m<8|` zeiG8n5e>QYC6zC~>*6sGrJbPnfKznFddKCZa;zq|m8M7j?h zP}Vk+6ZW@dc3rI%?UfFY0uD+R_W{FkBa^EkHkCC%L1QjFhp?@cBfKngj7qiPz`TZ; zUEel8gNRBcmsf!;3aA5+9)4zkMZR-^5AJ`7zXpSQnZ1T?CY0}lTQ+f^U6;ri5<_r4 zCw$Geb8b@EQ2*}7uElVj7eXveQA1;$vB$f>4=f;pwMeDmQw7+qj8)wguSl04W={Wq z2)nU~>XN|U8**1eiH3$Xae^!|wp1NXcSS)K3ql0RQFRgN+#DNIBiL+YkRr|Z4k2Y? zEOSm7Jv@9wi@xiBjeM@mMt-PeQE5N*M+?uMlQ?+WLB22m>{%5Z<$1CdZ#OdYiIWF& zb(JAy2OHl^L`IAp*ai~IC||Su9H9nA@bqFi@i+!VQHuBfrho&Z zKXGPpbx@XTO-ThX#VxKh3tqkn&hZJtjhzvB!%tg7pdx9s6!Zf4vH1BEdAX12p9_2x zc0Xqwlp;rgbnG2FScdIR+9BNdEx_&|_(yO@KVTqd;aXzG=I?3R(SifIrZfut%%m^6>YL#U@EvCL;?I=0}^*P4K;!@EGdLOr}|} zxIlt%4c)DOq3yA8uax8zCX!&`<-a=V9%hRD0<%pxcA4$C$6>@G7vdqY$9a@fxeC@U zB*!*W#`pYbD1bf|eQVL)d-1NQ81bYOsn$&(*_&XFv*tCbf};)NA!7LZ+Xb3xXJbI3 zETI12ltl>RGcexeje`GRHmDgkP$%XPDv1*xn-#Ys&vW@sp@q=MVX_p~SNeCk{}+fC z9dap3VYFXymCFrMEeu zyg%1yEvUR?@my|el1_Jxc8b^~T%_Wh*c~$$bJ*U%2J<;Z4Mp~F&yU!(^S}LOLU07) zxJV=*G?4g^f64AI8rNDVA@ya$p9fm-@8&kD%iJsZUxx^M)%$IL^`PavMWHj4N*1*}lSIb#1n=Y>&MyNbp*RFMEEq4Dc+ojNg|Q83 zOv=&VH0%TN9m61CF)JWZ7Cu45-g9a$(jetQFqGkwcsiTli{#JMO&PF+cpumW<`DJQ zJ3V}FETEWtvC5YsirDxXPWE|K$T+TA%m!eyKcTb$`vr!V3%uZF2$RQxA7lV{{pUmD zB2~vnLA*L=A>3ov5#$iw2ip}!X3)7C>ZIwFBR>(9{+Z^R-5{gV%4ki0wy(HCg;UgL zq6@b=|Dj<2!EFB`WnB|G`y0F-qgD$jg7356NfkZ;`8|$3Ixqw> zn*@zZ(hQS#FRyM^Q~RudeO7?w9TOrt%hNkI{fFXT+ivjhPcZhjIbx|9%-*z`K5ESr z0OA3cFt5j?RFqTPoo4T+J7>!)5uQoVzzfV8q~`0eJZ|Z;s4Hm>->WOqmHQhEfjf$= ztHzv!bQEv0O#-gUvfr>)TL>NJ`1`^qXc<;{fy44R8vDgrSCoIkPnH??H6XaUq*R>B*Ax8;b^}cMrua9 z*N|L%rkM9dZZtAKaDU~eY3u(^&`u*u0_is_os)O}I`gaFC)MXS>XSE5vLcj>>Mi@i zve5df(Z0M9=71B&IEX>l`bI2U6^B)}is)LRXWZQ76`QD16OOo@;DqO=#CHUo(UiY# zUV*$t>>sRI2mZE5<-!$bRb6%H1%&uSdbD`1J~-L}ZOC2MfoDaPpg`4Ua;%dr}!7ig?dzOP`NQ@=9bi1V@}d zvBG4XmxuL@lBYL=KVtld0(z~z zW3kzXn}7-+UA@qEKs|Sr0ib~&bDs@Gn@b3o+O0K~5b@pdMRog#bnLj^Va)HaoYxYO zeECyBqp=xjVN3;V1U5o&E-POjM}6%~hDYkNnW6{g>lf}UbpX-nKW35VBxJ~l1J_8< zD;Lk+yTUp7=9$VwlQN`#B1npqm=%F*l^meD&-Rnw6;7_~k2~i`bI#7q=!TIpVEBQ= z1KxQ$+1Eiz)eFndFG0O~!rXGv771do`63KARt1o$PTAfj^)SaUfVmW-_zgR9qF#gv zU^xT8n0vPbPX5Y^JDJs$^?(3oeUeGXvv$Gs`!p?n)ZCwR>ihfMf*@k$=-VC`KYeBL z?Y^49%|pTbV zBj#dL*Q<CZk^No_J;e z@YscB$m1nHAKKP<~U|0eQABUCMqV)>}fts9Q zzd`WxImAJ(bZ7829+}iPYMD=;`6ivFANr9-G_8R9R9twhtW!f>zK`jl17JFT@x{75 zbiD18$PrI(pIkOjJ?>&hJf;1uzx07qL#Liso|%tJhr->hq)Esfe*Hw~cm8(9Uv?RU zMIgeRdSI|auhd?RtAs7-?FEMU$6aZ&7OSGGwu8NQ+F}=H&nSfdxk0L zbtEzDETn~<=Cd{{L36M4f$X++aHM;s(Es28XgG*nZB&fIhlyZVWn0L`VCss2oXnG@C2gbN3W}D+FNk zXqY*(5hCzBVJ!*7c!zR;2_q3c^1}t9W+J_LHuMpv58hF^;j7C${F4(|I%`;EBO5}I z`)`O1se}@#?5#|y!P{UG8SZZQBW**tO@^uYcYv)DCP_#RJ>UuzM&q4qlE#<>8;C>1 zmXYYbKZ3&-8dsjie|D|SYNs6x;YN0}A@u`#J~iOd9yAVrzwIvT+ORNvF-^U?<)htD zEOGkkH=xTdRQc=$tr_Ynofp1*qLzYiH(WuAx_yKFM5WYhNNNcC7>qUUrmmx2*ba9Z zq|Kn!WYZ*vV&Y{&Wc-WRfA)|Bw8K8`D+>-ySW}ADGL&HuT2jWi%ixzQ3|MCm0Szn@ z0wd-?y*ZywIO9+sU?HiQlJMT0SlaCEI0pOCnk+RO`1u{gvJCJE*K3rid&THaiQ;h2 zb82Y!agTv-?C9YB_J^m792%wS{8pL*-)@MWjRnV`maacHVZMCkKPCA&*d00TQgz0p zBa}}umZ5q8q|=mWWT`4!7IKRZ%IegX()=B8LB*;e1Va~!F@R$&p%>B#`D*hYtLo|CH{~7AckgEHf2Zc2zLR0Z+gLThPHFNs0$R{0;te*FmjYVgYipuORclB4GAVuKkt6z-WcxqGe9Z^s?c7ThYUvri!deNQIsBxM1HCps)uU%d z#jOSW4@O+4^|>>;i6=VF0?eNb92ToLRU#C*Tm3vsvKYUD!EB)FLsOIP_VQQ&&#?4P!eYnE%1dWfP@P;NyQ+&-zbK_G))~TfjrvLI;|fSK3jCX zMtf$Bi#3tv9$Ui`r0A|bKLx8VIzpfNyk&?>cf#^92RJ_Ufr0LD`42l-|1jVBiO5@5 z^MIc=z;*7)$+3o$V+yjy8+6aOokS?3tW~lw__3S1HP5$gh2KV|e+a?IULYcOY}r)j znKAW^hTxdEvWLrn$73_Qyj#MsKe%+I5z18V^0y`uD$aKRo6LVKXCs3W^h7)-0dRS| zFl49|pVD_i>NU$~}-jjS}*g>AX-^xfVOXE2RJM znv0J8u*YIvVOkH*>{K6zZ#*wpws?3d9#=fX80Avb`cr{?C%mFOtIsvLDbkF>N)`& ziZ9jF`cU{7{>mg{*Q?}0@9OJ})n$G((dR8YpoKc(OfD%oW_+8(j!~a;Z6{eYX3!`bY#$$M*c%x{uc9gq_mn;mEvGaT^F(b94 zROejy;W5k%xM<)qtrc%my03{Xdbvr>JLj<#^RZ}^I9l^~daAn~yLkIs+b8c<|Jw#Y zoo=~vW}Vsm6ZfX)xq+$44wHhmW?6R6l;EEm(9kuJ4TJNUYm;| zn(1C+WDMyQchCOh1$LyHaH^8&o>Q2U|J<93zk?N9BS9J^aKNxdXzz2VsUbrbd_O6z zsYzU6q~8Lr^C=*_E_A0A9{7>|J>G;nTv4VL$?V9KkRC=g$x7d`5do*gu`2> z4JAtCld_HFiFx0z_%KFvtLBGNK;g&d$C&CF3Ifpt2tPBQ^jT2>Yl*$MDR3NvhQ^70~(x-r}!GRr~`W6 zutow_&jgjZQ~+33S1M_)fMGLnM=o*#mpL*To_YQVCtia; ztBG1v9ZdFzn=wp`hqSt}I- z6I84tjeNu8?K#H{xBY>oJrZw!(m+ne-ULthqB0hF3%~tepTK{ceFFaJCdQT?#fIRx zhG6F(C4uixc^h|4@WYd9M+F9$jWKs}}WyuTm-F_Kqx z^|Q*J3^TB~X=Fd$nlvdMkE7O!sqb5XWKsfkT;(Ot<-B7V(?i$WySPBy`|}WB$TiUJ zC_%V_=eUg*KL$zau}A{dN(%`ptc1t=XLeM5TgfeKrM?mXls)lwarzt-#RkYm=vh+j z>QR(TbT_%xT|mKpg)8v{W-4I(J*i;F6m3+QVAtBI_0CBNu` z|BODh3Os*`b}FkGkeBuKvByYavS%Ah)`4QRK63Gb? zP$B>vh8?P+((zK&UIN%Wa$b58?~5@Ki?V^oSg;>^8L^&mhcCr0n25ht+J~oEM}enr z+n0dmED7jhvWv5W!L_y^gNFfK@ot| z+SQ(Z31{;d-Ts>k>62fmE4=c?q!6ToTtiP(!DC!5@?9+QX3-A7N-wiQ&EALAE$(@_ z*hhT#@Je^~M6daC{;R_D4{i&-?9Et!^2;@gfVS7)jdKENIF z)1C|f!1BrO3#@t9anE1|<8E)k1!$u}@EP*iNtv7=RbR_cJN`tlemylfBva1qq~%>L zV~aMUD^~7XBr8J}O`N*=W>}}yOSK92dQBH-X1aBPyy*rxem|e@nbM>|3V@?xdMxSe z@S~I2;^HQwYYTx*4q*soOw=Q!#| z(dmk4x{JF0SfFQ=;qq9xla^XPQlQ$153xwtt@MyB``r^&sh20L|3x`Vv{IoOklw1H z)fTls^Kr&=V%j^sTsY2Kz*$`jkVr6N4Mpt_a@WtUYldTcAy~>!5)bx63PFd?aBj+h zg0;5Y+-87!~XuxDU%iU8e+gsON|Rx4{G?M-dxgtG_el{lszaB(~- ziJG{_$2b*wc`kgyEEsP`-+b)o-WhdhLslQHK0unE`1ty679F1`Orz4t0G;io0OZ5# z!~Db8Iz1n*7D12M4fKbOuP27b_;UgPq0gwFFjp5#{BHAsbr`1UuQ zCUCrknT$n{B@ie0FcIMErtOk;$`vP?9F>7~pQ27Z036?62zBklRuR<8C?z_VLsMXpfs>1BH>tPbObxI1PE$&k8oIES}o z!R;`7S-qIp%C>N{j1b*j$Aag_x?KXofa&(t`aZ)swG5;e2?}*3hY+Oh;`c)Zg~_ER ziA2Trm*RXvpnnfu`CeQGWC`=3)et`n-vLl^A*!TBKWh&bMw?q)TK(^OZ-Sjo;s9?! znp)}K9n@N1S%yf1;rzj%&T+WatVLsOF1_GjKC=wb$;1F6*Bq}6X$tA!uMD9!Xh&lC zdBk5FMm&!oAF;PxFMT7%$0R-nnaoei?gLwinbu&q~Fy_PsT1y3}b>_RzF+quME(q0$ECXkL+c zD!y2xY~>@I_VHU`dY4^Fv8%on-6N!(*Y~cam<+F8-UVwIP`Sovso-KIDsaJ;PBAW5 z`7RA4TRJ;Hq_y}S-N3y8SFP*;Q{yj?DJJbCTrr~OGGWgeIK40HqDW7w?({x7UefEB zwWEH2mRE3^)^K4TmEVSZu=J9)L2+08uNXqo0L@hjiJ^2uvSFEyI-00d`x4iR>0XuB z*T-Q2sh4GWDq}`H{|bjeZ50B~#|)0vd(d?P5<@yAC-NM&hwy6PbZu=tUdw1byMo#% z-6UCy4~D6tjPn>gR=xvMD>1)WTMA+XI2hJo%KUj%<|5RAFMPSkqC&)bJK&1rM_P*C z*G8xa)VX7#$TRXW`wP|VV%i`P%-=zKA6?2V~+$_^~!c0 z(wLC-&csF;keuM5#|prp0gSu++`b{!cs$w;{TJ2_rgPsZQvI}iGf)}Ecga{JTQF` zM@BNu2rxSdcX%G}nVe)Rube|1HK8RPNqo4udZ#vio5_sAlhDC0xEdL~RBKik2CSRL zZue)M85dulW9^oe4io6QNqgweN0klH$>^>~v{koLKXI~4YLXJ=A(PBw{;UmZFvCvr zWaLaGLXTj7Ftf-_@Ml)7>5*r_E}4UjY=*b|`h82y=W75;MgoYAlQW)omnqb=R_T0QLuYDpCoQ@Z)MG06Kc0OUT_ zq<8b%_RxJ>D8IXU#Wpb8^9(Qiu53h_0xrvvOH4s<{GlGb{xhHYTX$mSn4-|42q4z& z-!RUx_L=E(6SY_Dovw>;nIFM#?2&-DOF{pcT&E89pwPCBdFe6c@N_NX{8srhgir=q zjG_=6*O_gfmz+d}0cb=Q45Kc{uuE$$m+k3vg?Fw9r#S-%jGMaWeicwg4JYg8fOncp zfoS=2OOTc>0AKTK#!49QbRReNzq|l(EIe2fQ|8XwjXtmkjKH(mq{eE>pQxu93g-Nn z$I{(<9ara+m$j(eH9&)Mz&GYhqMF?M*y!&0>2-F?DWA z6HE~SI&)8o^5MD^Ms80fxN?Gf=PkdJXU(2-g zoI^0{)zVisOMmi&<4nISlp~`r)qoCHpU5t-}0LZ{He>$mYB_p1(uSn&1P?QDQC}93geN(|07KQ3t`^BeJmR$P&3kn znU=%%yK$VzWn(qdiCyBXiu!2tvdlt56ZqtnHX42(?1580o77k!&}L*P-pdy!%ntx_ z^%U9I$#V>w#LUWNi9}KmQq@XxI}V~{^k6IDmwt)Q2g>gSV{AK{L>z?`JO&wbCA&-U zrOhX{0La>Ya-Bu*<-vrw9k84DO98JJWOi`6#FZZ~>`}&j6tw$$G4iybgaKoy&870| z6&Wkc?f6iDpNNBFcXERThf9j6>s@!F@5SbuNSm!Z3_`6ExudQ~dn zg9T0gCkF01QE>lx<~b#H+V9{pxH6o1WJx0HO3MDbr=|e8`XpU(iZQKTh_Zz1&s#oy zqvA^o>V@IXw?xIT4-1WY z%7BKmO#EM*gtwD<%l@z?ZXa?86s=FL7KN7;T^ELx*%L(woebmG?SM7|m?=WgcqUWg zUvP#K36IETfFn}DG7wG}*HXO!<~g+hN6*u6MdtCKT`Du6{XG%BfLf`(fB{3&wmVM_ zkMdZT*1jf_B4#9Czw$X|r5rCZyaE-&w3C=H392Dj{=gv0Ol*ARO^#TKJ5OpvLE5@# zPj>sIftch_fq2J9!&1$W?i+2?-r0uRfcX#0M+UlmcUbO-b+woPuJmk%cQjw+3?ER| zAy<1bN|llXm{K)xo`A+(E6!}CWg3R32nwjMPmKB`<);3*rv-N0U^P~UbS>S@#@Owq z+I;cfROCfafe-PnAn!sU-B@4-s;DSODg-e|7%M?nS7We;0&Ttkj;mpl3SY{gB(jT_ zsXlAnDdzOLXZomh9sqneEH^s>XJYo9TL+;TlS54&E8q zgNvg{RnbKhfLa8T@{*VVaw9&KM*J7Yk z$<>(vw>{W&Z>>moBy;?97Eb(8?Mbdk;|2-Uh<>^98mZ1MwTdxFYs&#fKEyf9UI^pq zDa!n6y-p%4bg1%tnH?B}MK(_tUzF=HdRXiV$;70eprI}lI!VVzgheHpLtasMY623U zhRbzrZN{3*JYy8$Bn;20ch=PG-YrU+2lO>N!+McFX|^5AprwEjI^+;y8}u-UyXztI zIMybnZ|DBh^=g;;bV*YrKlH3ae16v;c-5C|yHNX9gd`Nh(e*rWql5!_j?f7eMF-y#Ehss{xGU<4s|fE|%+Zf%k+JBHj89 z3PZYfE+`j&1iS#hU^}3c;ra2}TKzl(tP2(cjY2Y9^DK%==$$DRLvz(V8U4jR#N)2U zO{vH^kWxO!XfAbIg<1e%RZ0{h!eEYCo2OySiM^upSccggxD5nt(I*=duvc)BrS`sv zKZDV=p)P6We5D_Yo3%A%q_HepzdnK1wY-Is(~=dWZB2>F3FP&bm!U5PQBVN#J3`5L zj_QrOG^3V@)2}A^{h9-eF^-PZXzsm9-4(yv z`99-qQLL{HbfgE-X9iXLrYsU{;cK^dGG1$mpPN~W8^g%{MKU0queOC_Dd76dNOm?K zt9}l)`GdUo?!8ljqWVr~qCK6pDEt7*NhT>&NuVgi3#lEkLr{3?@STAKms`}{CFnVd zReG42nHf0JAUPx&;x!Ah7;GWmE-olJT!Om}q>1)WBJ|DzF|7R?8Xw0RT;BEG-Srlf z?^-q*yW&hMdCeYFNNHWhpXYq)b#I;q`N|NRnUIAvM*=05=Wh=M*YB0AP~tg1 z!Z%(MkC>(7(y1wzO!C?h*&-~8I6rDej0h(6u*I=Y+PySXn9^Kj42TaL)ex}kmSR#9&GIspn>yw;Q!(4Eu*3g*mlt=h7QRAX^=*S4v7&EP*PAj zhLmn3B!(JVKsp3OQd%jchDN#sq!H#V)czghG5x!3bt_jO;P-@U64 zr(JE4#f5n6-{`;ybyw|GPMWJ-Ocw%9a&_*psw2nl7|I{&w3?wmE=#i68F*CT(iP01 zdScC+NAuYpv5ywxe(zG_3E*&?6@_bi-p$xNWv}M5S2$}nbtG9xk9+-^HC)a6vVH5_ zf0@tzTf%m8ECjCrKFa>skwU}0qZlLb>*`AqlHhnf-JsTOfyKy74!@xbtzLL4DK(emkYBS`wNTsiH_h%QA!e<<8P$$~XUyUvaK( zUWCD-k6Y;>NR#d<&mc;P{A(w#^o)JB*KkX#ew^}`EvjfMjq`6+n1337EpG!A^OY^) z5NUm8u?R&Z-l5B<335>E3|+WJ(T*TYXasgnGDXvTwZSyzY-;wa>T8oA#g`}h+*rBB zmBo6w9gl%dD1dl9{F7x6H%CHx)BK0!Axm3Sl9YMM$U}fIpX-5VsLSsii3m8kNm@aW$c^xh$iTiG zv^Uax{=m$i;5E_@(yO`k8x?=_Vo%__oea;#4~|PrvVzbol9c9t#bO;tB*fG}R)abo6NDNa;kw^7trI6>yn0kqURIh6PrM@yTUpsS z;>s5EE8UQ~I0K@0UppHYKn+td%YJ zSx=-0Yx(2`p5^VJDs_X-zgFuP#_*L-W%f~HDXCTC%$~q;!=^WDG9@S%_-8~&^c5hV z_H4LE2+>Ipz&!Og+2?h&@> z+rh?x&igSOJqkZg`^Jyl4u2e1>ERJ}WsL+pE{^5g$_&`(XB_xTVg0P1N z(Cmc9rxsp$q51TZ67AHVH*wURAfFkC9s-EmeH7>tPju7LniWOEY&Hr6k%pwtryI8F zym2$1Z1EL&Qm|y+$ZxkjR4f+9*F!F5jrKiW7m*-Z-%})4%!i$F~^s_ zOHMPu+i46$yP0Iq6oV#tR77TE-Zf7tT_^jJO}wV_&GXLg)gD&VL_XL4qfDm7JHgnF zCHF*z_}LO^BC~G+rPt~=zjr4cJHMJsFu5anCYe=VkqNdOCDk)2aoSkQWfDOjD7{1g zvhXoBk@8%ReBwG)vRHnQfTA{s5AkuoK{0?Wirrj(aax2{C30{OAAi|d3vbjbu7%UD z_zxDQ=$NtWtuq*OD1oz{0tA3@E;Mn2$G!rok(up zsB+yvbEJTOW9L!)_M?f*6HAm?H1LPh`(L2zlassaeV>$gLLk}bQkEI{jP~f8fDO+g zAac%q1k`x)*=*URL3gxKBXx!qp}Dm08gi>*3WzPY&MwrK~HDQIUz&GUIFa zVHFnQ3M*1(AEujlXop9HZ=v=8u`z&$nPjlFwgObA)&o#UoALpzfNewgQi&KmjzOlc z0FG>BHtAr*A4~iDFTOE7|Lm%TD}~^wkM+>EKhW)TOfs(OV93R5&AU7>UeE{se+bH@ z`&^2(7;epl5Ao60L4P5OjW)$UNplJ|-2!pW0|e^)gBG`N1Hm={9>=xT6Mf5uNV>ggy=yX*^) z_+Ngu|IH%=+6jKvsh%n?eEO>(Y^hG{wa8BFS#dF=&QkQOc@xDzaO%fg-iHPhGx>eu zkyJzzNsD}23rr7*?rCP=jf>WgcRU` z2P-U#%F`E{c(z zjNUx3Z_T?N*%RbPT_0iFC=aBa09=DU;SAqnOt-Rg#h0;9&#ru)JP3=|_*|IxUA+ zGooGwBo>aP?LAW%K)_u}q>uJr4A7)`jA!l7ErZSdp6108WsIvXE69AXdzP7T{DC7y zY+%le^b=oP3d=Gj)a(>FCAuRPvF6--2`3&sZg7P^P_eN}5c-@}XeW1DRdGB`asFdQ zc~Y`pfahK4phCmi)tXnpZcW;pWlz1C_J5Kk{x9}*BZnO>GuMCVSvD7C8QM2%%tq-V zj+Gb6vy&xXPNyZq9vKd^>xL#o3|Cpq?~em=y0ZC+1)qmRv8csSH*bc89E^zg{Ag6^j}6WgMFy_96>byC zSY@<|1yv+Pcej;g)hxUVv42Q}#N+ZA?xZwl%6cEdO~srsiGCo0AzJxNbZ=uB+Nx$C z;2#zhB-`X*Kp|(YP!`y5SDhaK5hBMPl-oAOCw{K2aS54 zm3rYv#*rZ1ck)feasrz{Mu+Rzy~}m%Kit_N;=rqwhlan%bX>`7s$s4k1zF99V4!jm zHKGvTk(zP`JTcWyI}!BZ;>nOJW39+X>P~!2W zL-kiRlnG*H0EJfpniKj^v&X}$&;EH=$3J+#61(@NKRTTvL?C?6CQ+LSF8g7Ay#3G>b~ zEf<`h*I7VWiS`bP&s(3O<2w(g-v-~_MdZZvZZoZIr0g8kF5D^iUP+c!_MQjf^R_Md z{g3c5`-k%V@5^~7ng7@#&yJTX{>@yUAzG$3`5qEYauPG9Q`$zGl;v>uFn9{-qEP`7 zkDKRn?8{%zxLJh#IemBrFfN}; zczK>^OQ5q!965ZaFm13!z_M3wODQNviZsE$WQ+Xb2bmHi3r*)v+>FMGyGpZySITpr zt!OPks_vr?i2v*#T&~MKS-cs+*|{Jzy=_rvc}vOo?CIt8-5p^rR;LC#%>o4M2L~;O zygb&5#I(-80g!zhu1XV}&}DiYi&NLlMh9T&MA$*t>FruANgWqdcfA1BzpA@tv0*1B z5o=4XhJjt%K|k^viXm*w1JQvy1hTMh0A4Lom|Ku=1TItb7}3TyZtg?F3u+AY*hET5 zN46mRmtMa@B>!r`&*b3yE0`ThH1n$xi)nF#F?CADm#Uu0Gr+S=V5NhaWo)9Yyy$cv z^>U<8&!e#q1b1-G+h+zO%vXtZUrp(L;|keOnv^Kwe;Z3TSD*!EPfIfY(6T7vx6>Vj zoPYN=H7Y&NGIh5WfjzEKFpv!RB#4Zx!_Y*sP}`Uvk{A-ck$$}ZULfvl2VI8r_ri25 z<7IlNeKw8%ZwPYdR{7u8{)qh{h2E-*y}WEiZ0#`d;29QP@g@{7)y4R}K-sToCp8#> z4;VFWef)AgtK@PEp~;p`B`Wtc!ZLi3`h`6{9}?!#0q>#a*?AX12fqC+fIB^+!~kv} z);q1H&EHu*i|wNP+X?9DClTdhY>m2O0_b)a`Y_M-Y*!9~*)n7RMGlAjWx0e|Rx}ET zo)n;7|B*W#h^=u%13IAS$@{Zbvd96nQNa9^g+X#tS5Yp?wrlO#2vCZQHA z__>^w-gwIJ_8}oeV&Wt1C#L;jb`x38Bl(1Yfp`V*#pk)CQBxuJQWa5H{G=vJDXp+(r(C>#TU2 z*dCux1MYiDm@l67i6kZHoAZErfQ58W4K5mu0@splUjZg^MMjqe>2`Eq^rk2MGClvA z*0O6Y@b343>G`pnsxYR9Zq>zbRsPGrL?QASo)=DJk+=o=Z6RU=QB^G9$8aj8-O236 zg0D6yk-1(#8`VZ!>Li-^Bt~C5;H&8U($`b$c#)uGd7G!RL9Zmvi{kL?36Y6<*j5%O zLl`uidgm_UAzHtOAD|yjk?f&MvU0r5J7~WBP$Gkh)_CV3ioR$`FM^37DJ3v5W6tjn z-=1G~q$c`hgxUviq|W#!`{0#eStu*`H*8AU{p{)?!EPE5MG8-h6hnG*0vP0O7LHi4 zD4M09C_eL0VyMYLp#k#jCd-Kym_{Egy1q2>9_zdI1-KmSr4vxyUbvg|E$;lIC}f!h zoF|(l56qrT_2}&0aEbud_RrtZ`W$r}tzt7UD-6zNZQTn^(<%;*PeIfygoHz+cs;{e zxS7PU^cduAYVbPHEZw~-t^kVKDNLH4r3y__a~?UohWr@I3}e5nas-Z9eFQIUD~^A$ zE@%dy?oXE#fMv+M_G@~!0R3FcPYACFX z%--zv@@l=qLFh;o>G`oi@_@46xk;>Eb|ijzFoMc=pKNmW$NUW?R4uPc;>)2zur^u{ z44Cd%7drz9>6Zc{yNk$j9<^LJv1s%$gWI#u)Hc|hseZLRP)<3PLqZ0$W?QT_LChN! z50U6l9KK*3x*w8`pBiN2#GMnn3~VBC1{*m7M1@!>kEPX4A$7xuL*W@9P@y(v6kv@b zp%04a5~NoyRC9UAfZCp0p}g5qxc%70*-26SK!UgkK*X*TE3c$xo(?R!`FtT)@YtpO zJfhmPzU#Kk80K^sX0s zn7!PkKkL6#=a*VQJ=(;RL%4&WzdKLpMQUF2Mfm3XE+>FZ3_#lXF#bm*w)v;1#RF*3 z62M&>WeAtss8-}zFK)MzF`78&=CJuJS+Xn;{*%uwem$QUM+p=oNff2!*D+bQpw2BR zZ$X_M%SgAMBz;u)l^sF zn~xV+R6>7<*leZd@XDvOkkM9(Dvo3p;wppHlbUQ2Kmj^x&QYO_%vjzoK-8~SZzW5_ zEdzx3Dkn?p_tsX^1_Fn8Kehyj%;i?eB=zP@=K^2_O*sTq@1jFBbrh-@F`zKzUO zjWWD@;ywwj&;N>8xN-@BYqj|foKcPcCkmZiisezGjxH;{LkJDa{(k?ck&(%HoUW7L z5a7Et{mwahV<^0_FQQ$F7@x@6hHhU)nRP5A1Mh{8D~zESkbK8*n%=QKD@{d$sb0y> zzg{UT2h+EQQtm8yFe`B$jv(HX zQS+A%#3VexM0ooB13R|{#LT$_UkA}A2#Xcu6xZipZhTK`W4`@PfH}X$xp#pZY}Fmi z528GlgKCOe#ny8vK?yXudwU4|8o(jB&7r)!ZMp{j_tKb+ux0@rX zo=ZYhQ2sxLa;C&iMTO^H^#}owN`wIyM;93Z*wsbFyAj73KH9rHFkT|G^ujg2!fux% zCpNCruaC>MGuXurp$!kcU^=npH3<>=FxWbwx`gaYLe)n7VJc)p5I)>~Mu&KNp01iW zX@wpfC4Az6K9sj+FZsujB+yq9^_iomi)Sh^-A;8qI1h;{T|+dX_*M2Rd>g_HltT=u zB>qn>08e^0!ejB;-b&)(8~kvqLyxf>9_W`?2362vMj|sw<}2}@Fa5=ax7XC6Hvc-uzmOx`i={`ZKyYr22iOiueP-CZOzTw`BE%j~^$X?vm~D&U&Y z>K5w^Oohw8SRJTFe^b&)-z{?HT}6!_r@->;;+$Km0b&jwS?|l%%Nk^EMJp-mtj_4Xx2H4*9hcici48se#KG@acH)b9=?REvj+0d7i2Y0=5)Y4Q& zZMatK=v)^3bbC%6@&KC*&8X2-0{PZPJ@8qbq|{0VDB?1?GHM`?N;$V-+A@{=wAItE+JT2crL+bc$^|fHRDM$nX`MJuCg{o_~{noyXa#-)Ha~ zIX3UFndvgt)$Eem{5RbAo_gyt@A6fm+NR{i;LN3ARetk9{z~sTvf_Cf04=X;ZcOuL zJSqZSX+YH^hx2#sd%ZP-6i#^-umWeEox~Zf%X8=MEKDS|VgV!_HE8gx|J=l4((y-l z=(`Ar2ge-n_A6~BA;Qzgh7&$^I7Y6}ID%OBv-< z9fg%KZ~a~g%mb?$o1t?gFZB{yfgaVrwpSr(HG%**F_L-S&J16-WAP;%e$Z_%cuJctygAP3hxWzUM4dF=)m>|ZU(?wVFctz$lL_g_Qf?f5Lo{9QPE|YtZ~J&vxUr+ zW%5o0v-HY(=EGO2o_@FrP@Wi!9lM51`uV88Y>?r5wIm8|WvXuz?E9Q8s%Qar%8?}A zLd%3GWa_<9uBXSAVrQmCcOID9?xfOwT9- znu1G7cr70H2?*1@4Ej=OYWPRaDr1TNqRsgCxt+7@;Pd?#Elvw%y>ef%3SL3`M@%P% zZ4vihnCgr6UgzmW+;>d=UmRr0{{CC~)^hW8jb>|`)`t}Is?Whhjjii`OES^^RKA{g)%BgOB7_9DgD?J{FAU}m*}x+r%#O`i27Q_d`p$`S zsoGr=22icaTbf_lKX>py3u@`y`UPCNe^2-v#epyU$DCMCd1bNqyA11DoJ{m7M_zW*i4(JJkO72M&g29$5_F>N6Cs8V`Dy6}qK zl3_f=5k*vp%lGJo)6acXK(%65h_}lfp@w&`^*`vq3hw36h`&5b2`6Kmb%zBe)4WI` zR+|H63+Hnl=RdSl7uK^Uf~Dp(3L@t-lh1+`J_IhBpivYroB@Ydy{?ma?$er2ZH+#uVtnCwWR>)$CHs$L9;Y!T`XRc~89L37Emme9%a%_|gQdKf znL^QXDG@ zUU5PY80_;JLh_qHVMTyc)Xd*&&j&OXc-*HN0x11f@L7N+dew|yO!G@h3;3RQ`rpe-)Z-AJSfdz`5^%0&=C0I-Occ@2|cVeVY=k0A; zOkJ}~P(K;lCt=Y>rpF)l6fLuL~&==F)xTHd9gKS5HeZF{KD4D7R4bdI~J4>KK zc_5Cw&T{V|t0}!-+jT{BF#6~SJ|LOvq?k;Pb_oRL&2;=$Co$>berY_IDrsiow45bC zl}9b-*%GV8rJbTj0w-0C#FtaH1?*y7B_<%z3kmrPy;>>>yz>ANJS%xLzP5LBaLu!y zy)-qgwdx&I9**fy(~#P1iaB`}x&5VR%@5ppH3^wyxTx9`1E6dNO{e_7*4_Kf_ok@-?qcT~S0&ckaVp-(%}%gq0GN7ZjO3@xeUGMfFw1Lx4u`jU zy?wFt1;3TD2=yFL`B-jxL{eufV`^)im$62O5#Vsu49WlP2_hdop`(rc-Y`y?B#ZFN z&l)-tM~JyGB$+1xiF`M8Bnl8Zup($k)N2>RfnHX1!9LdypSl2OlY4p&e+A(+u#0XQnOtoX1mFsw~-Wv`9X zG~4vg`B2*NWsc=^UHNEM?hP1QVTZLZF$oNEO{oB$WD1@n9@mPX^oH9OrdFfLb3%^F z$e81-%YIpAv7l^#47nSnfPvwcQ;aCow9L`*0iwyp=OPG_+Sc4YG(gjMy;4ZWP_0fx zAio08m~DRJ>hbbVqOFW;61X!vPj{+V|I%F`Ltm`s#M;63>A)n{mD-sq*-a+EO;H26 zN1XIWgV$m>tzN3mLQd#XC=>h{#~tRMoSy$mkwL$RwP*&Wu^nK*E6=d`)!qgMln|qC zc;&9N+7u&!i`>|;@+SQmU@(gAtL+!w7bPd#*KR{PsM~{o0tR1Pm^@mIQ}^g!Eit_l zW2(Jud$T0)`aMP zNd#F|m@DcVaUDvhVa#VmdgMj!sYyvcD}cU2VzmI&JhHH|)R+ z6{PPN3m^cOAT~?T<~W4*hey8{dbWs7Z-fu`gX}MlsP*rzQN?C>3dfKG?1A)o+ixB~ zBNfgm?wihE#5B3NLZ?jTfO4)9KCOD+5>aG5=0P?7qD}u3-jSeteGCgT-FlfAV#=xV z?}?~vU^wn~(-#6ifyLh9_Y)E+ce6*FIya3Xx)(6^CijkniT2zYjh-yAqQuCiY@exa zLu>JB;e0lYZnD`Vmix~qxX(iTghhzmVXNm6C3~_{mwww;mz2tCV{^(yeXr$YZrY=3x8cbM9ELRtfL+GL-1YCZw zjX^Xti8te3`IDAnr|G6p&+NLudBdqM)m)@12djPZ>Ja_GZzhBd-;38+#%-V|p2xLQ zeFs-3TCr2INfOgOZbxk8wU1?MZy_`iNGy%9Y7NAe(w?83E6Q48Ii63|IXLBl;((o8 zZ)`cJRkO3NpWuv+CUnGaCt2Nl0>sP;0cuElaM(|u@vYcqWqbfs32KqNqhfl;{xDA( zYuA1lu7W9TM@QQ2ZZ^oV9^cOn+||!J)R?6DyMEnw8OYTJ{vCbRWsrx+TwnvPQQ>p( zWn(aM{|VD%9n&|_>4D?rG-5bUf~dDk>&V05>JS|ho#udTPAatC(h1TrrHSxsFVnp-QCF#}dn~?k=95xztFE$vlf>melZ2t?w z?*2ETZJp8?Xyv$cN-J|90+*h!)R$HK{uZs9d!H*^8<@z+WBCpJfGS83AU-+4bLgB0 zMbXsLx#!SM%st(C_fYYf6U+7Y^oA+-LQZ|(rMUc1;lDFeaMUE7s@q_pCNe{a1aAjr z5ztArX`vX}XfH8BDqJL_hJX8%&&MQbSh{kXRgDO5u_Rodj8Kqd;{3Ot%S;&U%)h3k zA+ip2(_81`D^iQZ_lnsnTL&uig08i}=E3ytB+B8|X@~x|MiwY(7hU@{&l!_miG>v( zhsJzH-Eov)B^05E!h7b#A=oaJ|}RaBlM~pf2yz; zr0Vne*!m%u5llSGWQAL+R-0Ho3~WLf0A{t6d1WGq`(gxKJjL_CA3JU72)?R|*IStA zR)ZOKm{k~l2CAmPZ~+qSSLCPloEsdm0DdEAZBM)Q(S>MK1_vzwmMW~Y^mnKV-3Wse zIm8!`J%7MmRNhKwLSf20rk-S~+XuexAF#k>G-AzjOGpu_hDuB7Tv@woJI%_ed3oK^ z(el^Szn(@{GNdSJ^&}qAgE9YaqCHTrTkXooh|9uVn|Au7(#yI;V`M72}I$0{fw``050my9m&l+Hi~=^Pxsf-6r~&o3jJ=vg$CDhTAuIa z3rNmBrIWFJ@*>!`m+nb&Tz-H$+kH9MPn0ucD%6vC{LFVfAuqCNm^bZv9B4t#f9ZU|GMx-cUn{2J zwz(`>QY_quSaQ#uaaWx=I87Hf-v?RVlVbk!Zv*-rZVms}|2lJLvB$zB3j-s3dV*s; z>VChP;-f;V?xv)-R+c88`{vAh_^qj#w;Pn!fORg)lh4LB`5+%Kva!Fv7Cg=c_Yu%g zI|~7Db)@~tU5$*WE{X4>s~4X#V-bRnH?F4nIYVbqKdt)QNmzZ6f+-9bR+IV}B%b%~6t_&tmk0`8JkwX~^&_iQ9pYEp*;bCU=MQ*5qOsX6w!bA4msaD;!b z2x7y(SygNn^0Ub9>yS0DAbL#~6^R(ZxNZZi&@%w4+-xpah2Rr_PCo8p%N^a@8xk}B z227hzoR7hmH3zG^ci1_f^ME3-@hX=0;eBDC;M(u1fQ_Q?z4OCveFfagxU&d4fF4Ir zv%BL^T45T7M5ow%h}4XK~82^NF(YF3HNF{yC-&7O`nT_p-|;3&>pfBF{2@6Tmb(G{xvSEB`_&nh(P z5jUY(P;%jzP0Fdh6cx5*r?(`f6M_U}6s*qV`#z%d2vzh0tlMf|sA=P;?*Y1bMj;Ql zM=K`dK?nS&46$bo+iZ5c$=g9tQSwYdHH%2<$u9bmL4wcU7E%lo1Pup4_s8H}{GH~s zm-)bh>j5XG%K(8k{oliq_b2?(dPk;T_4}4VH@ROA(!N~ZkJbMXoZN$3ucmtlGhFlT zUtf1+p!Cv(3Pb0%+auLf%pATroNj9ue>8@_@FqXc<=5dxenIo3Lde_7$)M1V%^XPE z5=Ghm&F(O+L z^E}@5MPis|iJ0%cQ+WVVhcfs}=*sd@J9Le;*MUP`@=hLepR_?oFizVhAT5d>_{2$O zWKL)f5otG zHg7I@1FUNO=RI>w;QC^Y4S$NTjIOU7{*L{Q>HXUpr*6Q=ICkiyLgjKC&((nAU%>Th z%Cpn2CL+bqfhmQ4)eSJc$cSYba(=4OaAWq%Rhl_63%LA&IKk}`(DnSl&-$&i#k_c9 z8-@mZ5@HRwons@3@a}Vjby^Fmwh#pqfd|(fXr$xPgNeb3#HvtX3J4B-o_=cUtnH=r z&qfy4I*L&eKqiD=h?D;j&s`hz2N6^^o2gT6DDk7_#H06V(c;k>2tr}S4R48dFS@_f z5ipYbBKL#L>U`S^m7dF;s3(0zu#|YkPXK;IaF6a5(Z9d%CLy-AuAcaK9VO!~8ZSGY zf!@9O(&;K_GG@`|b~!5QWU`(gpP?b@IYU38>Gro@UleiOCK)iJ0o<>n)~e~`6evD! z83Q}*KCPWp&pNC(w)#h{H(6vcOb0Fv2$*gkY+8#^z)n~9--!O_9@s)Edv*_c zyYpT$PLH8V^ zD2En zIrve|Wy7HUnNM#l+(9I8J_(I}ja12rR8rMgjkO?-e}tZqSGiI2$9HT+6mIr2DYM@n z#K#q`);4z@?>)GsIy@i1sakABEeZ5Zg+G(SfT~YM%Bpi+2EqC=*l+s;$0PMI`hcd( zW{ZoVyBH53lK~hpax;JJ(hoGqda|l)-&6$7i*s2OBly#glX#dFJl7_r(16+>ypektSiOx1^^mfjWO$nLL#%S=g~fH7xxjt{o}dwRZ9@W zipU{5+Ao`Bw zG0U)O(3me}CH~%1pgc3l3Gb7^oU9xP_NVvmWP+hjg@_1>BhyM2E0(*YnK+DAs9u4v{`NSr|Cb2LOSAsFoKEg!w*yL}9@X4k#^OK>E=doh17{0zPwZ%(VG~|k z4H0Rn0dUELAEG`f{Vp=!l4yAszB<O2DtzRXa815E7Npu2LgYt*nv}HppG1*GY5*t!)R_;Sf!;;L=B53hy8Z+sJS_+3 z**^l9F*}o|69W`6=07=onMHf0Du@>W9z7d+N{aR*haUKdf)gB3b?sC%41(2~11yqG zaE@Oha9S19@bYQdYZH@zb#=~}W2gr#Wmdc^By{Zk@DE7G_%G$2Y`06H0!k9f*`3uG zu0JdE1?m?R?NOaX`pIBXvDJ4P^ZyQ8q)v|044edV%N?8E&E3Y=2vqJht=D{)KCryb z@wn;zZ!mLz;j8%%eX@uvw_(V{SEqCtNqE?DQ|o^AU?(sSw-FT>asp1J6&)ECoGp8C-4lV>4cgb&V9qL#d zkxk41YJ$1Toq1D(ow+hT#>}Lm;xfL46-Q_0_EgV6MhSh!@qa^)=C%4B3#g*936i)@ z&8D9tI(D?OPbJ?H;*nbCTU!*Y*g`tgXC1+a1N5hpXDZBOWDc}C#?sm5n1#Oa{YTpy zrzX{7cDNpr=Y6t>)ba$iD}^B zh5s8^Z#W6+e8{co?N;cK@h_W?yw<+`#^gr^9)70npAc(|X{hS`hEn!_TnSCP{6EBs_BofBLN>83zp`~jfm zSKVAw!k0P{Ged6 zNpeF`HxMMLSn2eIfMd!PcSo{Ae@2)K>fLDNtJeM*r8h?$1m_R|ZQ-wY~Ak>B-1*v5eDH+?cwQzu#623Y{z`qNLclDI52?bOeicM;Ey zGda^OT!`@_izrc{ho0zRjsMwlll5r?1V zhd+=kO1_Ane$Q964LbPj8sXNI0Ey?XE&;LeGBPXVub;bWpS-Zt2VY*5!8va(nxXIh z;iwJ?j@&vu5%_iC;I-s^(_8ufgNTDl9ro75jd!a{7e2`tZnpA~Dg$z{Y4?jg~ zvUjeU6=5D^3M`eI?bi3JjatbcNoctlarpcM)KPe%^yZDBAl|E@p5Uofk+G&Z4ajs zT)!4o*+Qj-ikKKil7c_oP7{^#OcMj-J{cQ@O}MimqP|i~5&;Tnvl)XLx4R}m@PD@_ zYLykn^$*`AHFw$s>zlG3Dxa=i`0OpQ%+mB-x>GHxMw&7a(1{1@LRZ8!8@>GM%_s39 zgT?6lpVxw`mXg^f)G=+z8#sO6F!dJK11GyAe>-RxLF-<|g;ixyU7s51AW|aF5zG=g zk_VD@w5ZJ=J@TrCp2M`lx$+@L|8ig^Pc=L=1Pi6jH8h16^-E70T>Z8=0lIHN0bb(C zGm$YNa>?VN_SoI)2Y&yAX=}mZ+?y{me}(;|;ngt&{tVtO3JmFB;Y$o4riu)d6-n@t zX_=`PRH7ZJ`KWb%JjZfEky1i&jD&{JPxa7p4M*xI$M9f%(6+dVWkhZE`xd5U$_J3TV4 z_H+MzI7IjT6zEDu$dbMH5?Two{^D`7 z`u&NK!=i4EA{XQJQ{Q7)1*LkL(;u-$C<@~RX5lsy6M@S~^~Kf~V!Otn&L8VDtHVt_ z$NqMbul7(PFGMX+LOaDn^vZTQQ>N+K2hkjZ61}dQ5=KTKTq2ZFAWGd5Ahr%LCb^XwjW&k z!8_i+-;N*HPN`7thGjpvd)9IRn>jyzFkmf*WoPYan;km!*a@usKgrx`D!mGKgQkN_ z*2XrF2iRM8EG?*=Vi4m|dpjH<8QQY#JJzwaf&_ z06~kI>kV;>v#rYKVmC|`x8iF>lXNA}@>xb;YRJ4nFQrgyDrgV-&{#8GNqVf7iv+hB zEY3#8=JrCFsOl9?B+x#(bh`hRKnsf*xUD$7FJ7bo8bwVd!s4Ky(3hIXYE$8a1u`^6 z2{6HCSI0GIYc%EB8#b!o2OySU6=d&cB$#Go8xw}t^8xiDT18mc#{bAXtZH?7#X2xw=1m;%X?5zfBASq&+Pk z58ABS06X*N7=WwT7XId7_&M}a|5i8D?<8;d_N?9y%m2W6w%7?K3|9LR%@*SJfCYJQ z;&tk)QyOEm-~@8BZ}e?h?lzrm;?^bhjK?XWB%A#`M&7M%Od8}ZrB}T zcTCrZlZmB&9wWzvz*UZlUD55zR%*AW zhoqh3$#i4|-`VlbXD9vm(mbED zqPl?MKHBhNmZCDCKIP*l|SJlJ9iKDMU}fcq=iR6`76 zulna>u3%{;{D~+f6IA-JpmKiJCnm?mv~VIOFhMUzUzNz(l)I2Weq$YKA3CE%DWmfz z%JEygSKJgsBn3l8JsGJDtQ?HXt`TE#qb%tS+#wf=u(wV-yk(GOnbz!-~-&UDppTnc0hZNUPV=lMYy z^y5yS^?Qv|C10OpzrLm)?c+?bLaeQXZg}|m9Ro%FmHzh_fT-E z_LyRaOtm7Ly4mO9Bmqkm{m(fqQ6XVrqqUpzHn8vTT#{Gw$Bu?5o9z82I{k zk_wDk$KN>>izh#u2rMxr8b2M=1!&L#4LZQ-r{2*49z*u{FRy|(%MwgI^7z~NK>0s9 zf9Zm02U6i?I8#OzUp?&bnH%A_MpACa-G zkEZ`p(K==b%ZRT((yb6wUF;;&HKZeE>V>0)QE$^8k+=Mg#WGb#Q`@|2iUnlAIJH)o zL?EY(65R;R(p%hTcN}|6Ps@P>xop4pwK!1yc*v(@?o$5o3U??yZvnS=H{ue`iT!da z5^l8r4_$8=)mGo_?Iyt?xCJY21&V8t04-45?&1)nNQ=9Zpv9qhp%5tAqD6~_qNO+# zDHfmhJACr}}=6}xXcg>P8x)V1BEI^&nf~&!y8`fnit;14& z$hSH^tlQw?&C>fu{Tqe%xTqWT(UH8J8=) zma}akn_9v%KUEC-pScJO|kx_egHVpVEJYb`S z20(AwZ@Hjf2>k9TK5uhZyN}49eQB@+BQ{39P%IPP+Ln&_;vB{N&HNa*3czl7GHz0L zqouT5=pWz*JLc;^F)Eof@kaFYYW}or{V6HpzR$W;SgN0Xe*Hc;wQ-GA*Jz@6U^JeVPjV#wz-SF3j&!IPd&@xMYx-zd2H{v6Y3Ob>Njc`zjp{SOxNU+}|!qubg`$sSc5 zxBc-JcbD!3a*KleTJFn)-dxoC@$Zw>ZM6ZK7S4U8W&!s=<4Ie$Dbgs%7YBD}`dL7o zug~gmjxbVxApnc!ht{G(_O~(bYV~<;_W~5vh%y~caaBpQ&JSE8bgynA4ajmTKtZ_I zU&wX_=rDA$WsYf9CQHJ<#lk+D+BvutaIP;c(3YcTZv7T$Rt#@1Bn`y8kU#?~8W5|+ zcWtMn+BSD0I4olmi3uAM4|-S%82EJe^n5`5hLn&8#rFHk=vtu{n>jOjeUE8B^T7QQ zqb+s+b#-rr{{E2pg|(#Qt5C`mP?uZBeKH5ou(iwOR~HdG!n*Y4b6sn-mL!&mw&j*y zfiS26+0j(GlwUK`Mf8MJUSVwB^`TL`q{j+4$sS=acA9<3+m*Pra=S|^p%H#BL}K|G z_%h>@4p5|Dvt__qOui zKT1x&b33nTmi2$46QFyZU(@d&(v445k^A`8+Zs3F(S;@&o|D8dS4sZavC6n^pJ$@$ z%Ijrsx8bzlbtgOL>yA>YnDZW}Pbk(06Gd~~Z*#H|-# zhcqhQeCH+pNHi)21An0i#7)YPGSzjq_y%Cd)mFcf6iIogtjX{Xz<7W&0RMcm_4pkJ zKU0qmeo#cNA9pV;(f&fXfOkaTChOA5jDMKf-Q6Y%^9^u_A_LHYkSErOn3}zI*3I=G zgNsz7)k;}>;H7jL8cVfY`z46v6vBWoLewtW1Lq(BG^6gHLGScqn{A-jQYp*rEw+Z8 z)N;rT_1ZqkNSAVFTa3Vkqej^frxcv`8d?9=)<&QhxTYr6di4DDcs!*djwW6v{$lZJ zr*KmrrDN{xIWcl}Mcj!;WjXO07=V0T(#?^nI2P1eE;G&otCdH1ZkcmYYq4)7a=B|0 z0{Hti5qM|PutQ|I^&E88qRCzztNgsXJeyZEKjNiyt=Z6f_8+rDxOMauMZ1+nA!3n- zff7#F44W8P*P?(Zyy9;F^XUR_y~}uB-L=rp8NrX`bo1nA6vVGwkw-}Wrs0>mY3DB? z_I|qu|8FeuVd@af)%QDr7B`247t0B=0kz^O*+2(2F_c;(XQF+~r(1tI;+Hd1@*$P0 zSF5T>X5KgFMc9Lh-Rl5osE%^+M^+E$H+JF0(n5H#<43f=aB*X8>BpoumS&Lw38M|) zC^`8D&xQL}B7DUr&ln}R5zg6yXx z8{6CWZfSXM&cGB~5lS1Wy>buJAZVA-kOB`D{62n&p}h9Moe=xwxdQYK$dZX*yr{hi z0+TZCcPibS^Zf-mZ=v`GpP<>AKT5~#3nv1n$i^j^$sPYY%;qOas@ zj{pxOyWPWS1(#RHI|r5|nSK<6q4s`cT^_|4z4ole7yF?^o;JEVzuL1Z(W~Na{6JV_ zg1x0kl#t{}w(EDr*Z@ijN&%v&QXN?>>E}6*g{f&*qC0;?tJZ3A4EwX05^GsrIDd`( zOx|HZ70j2OxBGGY2-ku;u{>~P>UwvuiZD$I-#?WFA*V>{uxuCHp*?JYfRW z8Y8Sl5$bG#0K-|qQO_xm4@B_-gvw;O^aJ^5d~DW8ze`{1x+q%qN`2iu{wv*fM08_Z zG=X9+jhk6{=*Cjp%W75)Vpfzwr8r`$1(H?w)C#UgJTJ-IX=T{6cBkbhn2CC)y*RD|)(IP5`w0u`|kR{ch2^8X= z=mkO0@w%-5TvKavsNaYn$|%_-MH>qEktJEXPPB*_U?K^-eiW0N)zYKUi9YdXiTD!X zTHKKR6b~175tpW~S#^?PMxfT1rCo37B;A;8f@accczg8%7e&m3y&o`6l*>4+P3 z__&Md1wEbqrJJrqBsMoGZy5bo^_1j%+^A9iOT;sSUY$rwG`1|`Ot~mZD$qzG99ssh z%!{K%k7aB^gV29~Z*XEW$Y6OLx$yz0PH;t1D+9Ng$G#RWg{~`NjTMc(LvPGvJoQ#8 zg^9A*HpTUK;#vL4d#z{BDoox(m;$ckmMtJywFtuP0*i#;*^p+9}Vb zEahG1N3F6>W^Vq})vIT52RUPEe9qd~;VW*;!NdQi9zFiU3xAyv9ZI|B+TBRY_&m18 zEsvBLX5}YASXK4B`4NeY@f=aX(c9E}qh^C^y~xW0s|y$TgFQgiE-GvjS8EIH}?sR~i+{dMmwCr-jH*68ekFC?S|km!e&kmvzZP!7UZt&}zPo zYpRs+ifK26ygF?WJ1IQ$L(EN)x$V>)m%mbe-#E9}v)opum$DJ>;)E>1GlDyy- zdlMFh2=&6cBXzuAI3QI53;~d1orU*hd8??1hA>|zu>UvXuBNX3P2cLE zY#bKmm%m1PNaZ&JI zuzq`PB^t#|48n?LB}}3N^xYYI!pe*~b#ucJoL^MmQ*_KY{XJDY2#QR^vRJM!ZOv04>{Xcq+ zZOsqtg-*!7yG%xpbOaPO=Q@JJZ4T~+LJqFlEIqEleLpQL_TS_rQMNpBP88dPWVd`n z3$R5N3gUcS%fW@^p*Jhrb z>8xKb$9w~jP>nuyI1V51FEaU;O7KjHqV)QwEJFq5-s3n7ftebx14-AiC#DBB&S>A( z9L7L!Iie`&@_)!Q=GTOAv!WC~LI=Q@k>B(kcqSwjV`Wp&hk8h@@79kfLH&l7aEE3n z0U}BSz+v_goznYo$ec9T_B7Ac?Qm^>1-7nH%*VZ?;=f!vi#fu)6oB)EhZ)ZwOx+~M zK)c+BBI+z~GtW}xASa|VwMLbBU5@l94fb!o@%1BTH3`6`#~9I|k77U$gH#8H`A(6| z3qQ;`jw@-+(O+g_Ka3m8z|;22<^zw59-}S#uegA;3}R)&^}DW(fuF-Tn9=B1kg-l*NUCyCbbE64vZ+QuqGq?FpmB{7xc|;R<$&SF!IvLRG2XL6)=kPgH5t6G%?ev#gQNY6XD&zD@g$ zz0*7DfSEe`jh8roUC7B2oVPj(H@R$~)laG`55tXbo=(dbWRF5*77-pSZS&@{DF#yw z)%LID%?d28TpN)|O<(+D=6aT)iroP1l1Y4+_iKQ+hBuxHuC~08ie_P#?rj(hUxDIQ zCxuX?nw9mLhN>z0{@jfJ4sS8f)#Ku?xZAZMkZ9L^;Wp?@Vc{)Cs}=M0Z`f29pD1)} z!fU^IPfF6+6j_sdbpLz%K)r7V4EQH6`*Q8Zbbu?wCj8L?1iKO{U%Db+jBostef9~{ zFUAB9>uQx(IPR+0Pif1kLPdG=N71I2l<94F+5={{ha)Ss?Xs)5nArO>IkFE!*Mz`_ zUwnO3JSFw`nt}bV#dOXqZ^lYiTD&|D5gLRqC{K;CNoeIyiqY5YyjAHw0ULIkO?zW~ z!Pry+@)sJG0qcBYC5Y`K8$f&-xnf~_Bxw&&JE9j&G(GIN?+g~6lV2Za*auXm9+8p1 zMf>o+H0~)V&D}dVtF-vb(=#aRxNS#Db?HZP3Z@H^wf?YIb@ZIwc`~1z>kn3eON4bI zAxr{+i&p7Jtcv7=O%#-mEK~XnDPseQIJY(Jv}+HfnPXk_>tGqKui$hnlKnX%t}Z-; zXO92P0{kF34*Re%Nme^bGy7xX{!Mh`z#O(t)x)^6z~G|!*Z<)bxmd!};k{YeTG6e$ z2(`Gdy0T89UI@IyQLzS@A$!V2e4IjPm6Q1JknV8Yz+PL(4)<1xi1S*{)x2sHHQAVZ zBL68P&M?k(56^hk=T+3}yKU@4JwHmaCzGM<8KH`3l)+J;_CKK)u&wHSzf@M3cUfju zgmzaf5&p8*V35@|hz>{VmaKjJh4&>VMGW~?qV>0^dC2SBwBs%kc>0r*iMRs9>j?9RA(eHT-iXu-XmSk}BjGRr zXV$Tq6~#cXcrrAi`O{x-0pM!%s~S@%eVF+eHPMdoxKxS_m)(~Y z8m%D<53YEdH0>e@Ce-@F;69L763cIJ@oToQ3)+rI)|%DhD0~+;+)A}#z|*Dfs_;5_ z=1#ma)DQb14=(uge{i9e*+7+mzwKRFI%e|MCysCMx%pEQQE5B+fxmm;;0V>xVT)nE zF`33{?3Sd{+Kkca>r*0Li6zZKl!{C+U_4+5LCvzU+}$V-w33IcWmfRpnD0=Gw}ux2 zi571AZ-fY<9M)Wh9%5U$qnfD=<4K}603 zi#-n_$?e6dd;&kLwjjxYtPt`wy&$SvP}KiVI|3qBhm@)vuyLupX`8e_zM@6g{W ziUp|lzn64|i=JKs>$=|DFgpU~uCFSWGfsdy(}2r4bjjK;%1u*1GzHe_PxknKuvqMW zKPxKYp?dDw7$pW8|Mv5akMTy%Juo77gQ3?yF~O*o#+_96sR9CQjIA0L1wu)0jch;1 zrRJ1#T>5TidX%ZT$W|=$`lP=y^|38r7tZV19O8JUBd04FHz^I5BJh7?Cz6lqaV_jAM;9xymAr1JUkI8ZcxUd!vjvX!;Zlu6u)>#v6C3|N6rB}s z0`Y8s+-k(A0A~6uhcQ;CbO-^z1!dQV8pZ$1a8)DFNTTIFVontx5M(so+07#VIx#-u zd|!P-GCSwBn%F^qNxGn}9hp>S)*=hb2dG}@4{I*zs_$Gr9GNPJE?)4H%GhGtU%>w6 z_#ArbWM&b@;@-ZgTKG!*w(hsUpRA&kihQ#b*01i3R3uQj`fR_rT)V*ZFIB7iqqqJV zM={&RyCvWYxP0`i=_C?%R{jODCp05DD^o(KIuN1;A94W53)V6=IDWz|L=PUuVq1x? zf7h*ToCtUuNvhf$#JC{o?<2EX8isReq)C|_B_OCu+YGwb!5mocVx|G*_t$D06`O(6 z0C(!s&Ax*JMWuiv=}m{e3bd>aM;}Y=(XE$mR%3Ak5aMto#14o*Ug-J#!hzijvV6Z; zP&+4QdAA*u*D1%A8N}br-J4?Oha1Q(1TvXUunX3-Lk0k7cF=XbT0{+yL7_Yv(|mUk zLQS>#Zt4hZ+o7Zf@%yXl4s>e_zuwcqla;IR#(r8BvBJx|Kd%9Ffn_DNy{95@$Aq>E zUDpwS)8Th#kX*Q+5Tq4=_2ne^6&$Wti&Z|y5`_g#ryehoq8QZ13g_!x#jYb18c78_ z9*HYtem*P6QlS3If1EEf8vNlQDg4}*_yh!4Y zt)PG#amFug;wz2|iHFjm4)+RuO&8FyUlAn1{j-X@=R=ws~1`|{KK>Of-| z{1;MKYn&lnuj>zA!0%F6yb49w4AqroysC=Zd#TVDg&yIb?zeGw-_0pO>>u&Pm~TIc z1V5%S&|y?5BK>ydfrLu!k;kTD-3gT+y6N6xSp3Hx7=3=F(Ft)rK+4uEUc*K6+!@w# zNN!70&Czj;+pBgH0iNFQrlZM%{`;)fF6MyCO{{^jgJV1?uGhK+4^jhx*!4rWDC(~8 zL=y|8jJ9+2$C*r$A3S?IZPGg=C7;FhJnmc{@a{v*mB1on4@WfY2?DBGA6*OEea?mX zX00?#eOF-YVBaX7R`*n}bHTcsI`m%QX+Gx4q5al3Mp7Y!y-~9YK#+}N+w{Pfu2n>wWB7$r zMN>?t0lm{5jdoN>@9-Ow`1ptm9|aJxonCr*0XH#~aXB^AR{co6JP|#a2n(j&HmhPF z1|s_;nkm`8!je8?f3()$=3yZ(LWvu zv`M8A&9LOu%zV?gNqeWDX^0_XZwA6;e_4`LEZQY~AviXRIyZf^7eZuj{L%6yFS_2f zQ7_+zGV|BgtoV!HF|-EnWgVlb(1W7SOQA(3Y`)MZFUex8e_C#0OV9Q|Y^owGw!ZLX zvV4lja2*f!=~bko=8?~ayufqC?O_EY93{3f4{!z#7FMD_PfM5rU@KF-fXCsLPC}|@ zBW5WCvsKr(ogOyz3NAdMake|bFYKj^g%XB<=$y&q@&C2YOxao!$;8^ z&Jsu_orxq36P6v}n;n>O?LFaasQU|yq?$SV6&Gh?aHlX*@@G(6TZ7neYTQadri7sO z6$Ap>k6rG9u3&HiE=hL}3G)TXj|3Jh&3(5t9C((OR_O-qPD7ue5}e`BSono1U)1GK z=hXI6pz1XjA9SMvbMqna(|1TUCf_%%8je6@N$R5;@3@P^!5kC#H~81mZU)#(_*xG` zB5r*Qu?>wKjsPo3DL>Xw(64L?J7cyi{eg6RE(b@~_ym$W#-Y{NqD0Tz-+4@BafTxyR zn*SdHqfgHv&(%PDW~`J9%X9Wm=Im?T{tW3!S9tMuS$wtaS!{Rs1Y01yNS{g`rK23B zqu3XHa{I28S?1orWwwO$$-k_>&vt}@3UhGn7Se0YJ?oetD`^#mw zP*di}PFwm9@f722wNntC3NzitT{VAKuRah33vIv77=5{C&19pTj^J>9?X5R0b%Tl9z z)EHIJFm-}Q&{KrGOe=9@RrtR5)3{Q-BMkoCKRQHw3BmEhM*bdit5m8{pR*^)lUS-(|0LxzQVGu`{51Kzy?+G2x?g*srg{+LV^-TBre~8D{qR0 z=H1{2$XvD8Qgu0xzR>!d>-Ei8?j=;;@)rNVM`X zZs1!scJ)!4+ozh}{K*(zq%AIjv(wF*(iNDM=KEsJ_z!_!%Dl%>IX_Pp9!2d8tDI`!WUHd1BiDzLbVSXMo zpz$^Rf3GXzI0<{=U(GHOPSi%Eh+%BGYZrrohGr7?gSSs!-u?VUPQ7uZqe&{E88q57 z^BHXX{721Z#oXO1qDyRpp$OMGXRjC(a!uz!?F1`rzu_||bkTvR*uwL?Q@(_8Wvei3 z;Lrvb11goM%5z|xL(h9u&d6I-N3XSYyWW!-zw#9gEvvI_oA_#VLAX+NKXC^Eo?_k9 z2srC=)Q+KCuu16fZMnXrMhIhU-;$?*vEHsR@tL)j%aUaxstTu)6ER_*1WxMC6dVCk4jCO? z`!nb6w|#`uG!i;gkOt{X2hG9a`x<(HR{E__={-9olDDttB@ry7lXdpQ4f~hIz<%zg z|5?~B;t1F3!G7Hya5uJfkog_N^Ha0lum!RFAc>C#KGu|h<0PeGRY{x5n2LmUNKQWW zWv}B9qF?`!n+=!%tN?{fzlj(GY$l4)ro|`_&%8i*L>NlV$7Y_E`h7%NA+E4X-*2|# z5%oOg2^=ub=>$|s-^k6q(U@ZL3f+{afM|~Zq+0QcIDJ1BMrqXqifzy{;WDULr!^%N zLYEGG%(KaNN&7hWQs%zX)1>gQri-vUO5tafF&AUF!2;m;qZ9MmekE%QV;k6rIoj~D zX6{~qx^k^kbl3U#3EEgV~_zg7vIl^{XT;ExLqMKE~JL z`aw^+Gl|!AYnsfP#XPg}{Hg@Gxp)(0&1!l-vmL2DV0?8c#N+KiWY5@+cQM{L%K&oF zu!%04$rqqkj?>aEnNhnEtfW)6M%hprdZ_uEd0?g{vObd|=e}fAr?}u7bC?j?>_tb= z1AiHmDTW*Az6E`qaGhpjh=`6**V-3h;cylqP)|m3&;N`F4y6b1mrdBh=gIhud|m!T z698T(9Z4KAS`=iJB1j)CFbzIG4dc;++AiGzw_spu|#C9)C3`iq@moU9@VUHCt8G;FQCxvx}tASG0QXc zA>$vSXmM`DXcllxxbMgl+`#C#O2uFTewuUC3d9rZZ=`L}geg9pn?tx%bWBMbS&$4g zqP^7XXx?XRtgR2v%93Fg4Hmm2y8#jtqs7y&Hqu3$Dk9bPh@Pxx{xI)SY;U2yH3(y% z;S!Y=;pwfQ{owPuyTT0t=pJBp8lU7`jh><9^=s$Bgz`puy6AkMSA<~n^O^p1HP$@j zO8>Rom#r5jtvF(`00~ikyNY)lExHW$<GaI07(vQ)w=fdu&WbP}h}CzWq(b0398Ji{YW=L{;#YurM*LY-JS6mMBS z^dqVUk>{iHj$n9dRlJ;g8z5-C&Smx0xtxcW+HMfc`+POU@oGz0?yl#1Z_-36WUzbO z*&sSHMVKYER$YJuFo9TTo@+Lf-C0@N(7`0k_^FXH0z)Q5nrgf9CqA#B17=Uc|utLhwF|Z%zw+*0p5wu;Ox@X0dZ2 zwdvi@Pk>=5q!Ly)V-f-GmRz%OS%psQc#CZG>c@x?7KILC1WZ9QxXHhy8x@@ zYE_rwM!pczt-Bc^F2BU2qUMSrPRQpX^VOQe4P50rS|#_r)$yLcRWvI2Xu7@yCM;h) zpDt9l_yR{VapJdpbX79oe7t%+0dDQKm-8H_06r_jk*F8wHO+mk&yz^#3S@^e-l>6)c&}hYnhAm0c^y zjc4wE=52qZ{C>Bugj`2Tq$~G_n_q-cGZcW9GqmYJzp1rT@EG-m9NzEB&>Y_iZpf}# zHqg}?BQv(Ftl=!ninf(^&jbkgL0?S51930k6=5_sKb6>Qx|BAbvvvU3FO!Q2yA;FW zxW(B6LNhL{+L2Q!g}Zq02}c%R;KhD)L^ig7#CyEjMrPBZT#;tFTB$zDpvSvNgnC#| z9f9-Gk7N=?*X_IH^g=FB3_hcf&=>Zn)L&y#6PY0G1WM^Sb~x#{0Jld68~1$ztsUQJ zF~0E&H6XVFi`95ZK>*~73m7m7F?$Y3uE0!@0SGYNr&(%^+pFlif;x=sj_>8MPok(S z_;4)5*Oc4i!hG}3vY_J}_GnOyw@DR>F@3MuO8LFg01Rv ze_ZP_j_2caN`uN|$7wG26s=Wy4)O$BdJ%i5;m4G>Z-4xH-yM3!%i#|?#G}ohaHKAU z5mi`Aw77>`>0IM`5p(o}TV*MT!Q_pb>Ho>{Y5fTDMj;06-KVO@0lS6U8SBs+H1M@4& z%XN;?74xyXMdj5W`{kz_Z)BjAmiHsZGaF4=^7p&!Suyp1t!uLlj7bwzujU8n&%*2% zf9I($OhNZoqp382LF|V=x>R7xn&}J~T$~Sz19bGgA?6e zASV@YcB$%%qhN^kKZUWlrj6zwBhm!9(ImQZ3JB>rQ0$YsgqK9>^J)!S*(aBU5MBuF zfaB>Fdoa#IYm#Iv7fH&%x;9qq)E2sRX6Wx6n11xFv>qk)`bV4;G0?C({L_;s6jjaN z$8qSe*yff^;b!n~E`hIuYPTFT^m>DE2|j&JVpwodg|wB*dG330*t*@jyG+(BR%_YK^GKak0q%(+ojI%y3aP>c2U zb0Q+UF|c~jmZ>N|dj$Ej=zCjz(|xc5_~7zuY6=D{#s&#zYv00RBe(-ePsza=G#y>+ z<7O#9Ej_VfG8I$8W@-zmKMsHt4b-{h;Sq_X6{m0WiuJ|p!Qhkp3d||b7$#v>A?ae} z@%@V4UDrpT`!&jf7_g9l*~_NoIv;T$)ym$>KUIFSeO&lqKP3Lk{#mN}Q^eR(L1g>M zXddoPA~~|Mt5Dlg6!@D8FK)-)tF7cBo+mHoq9Ww!RC=gg{}D!WtB$u-SPI8FxrBiSLH>-TgAxu=N~;G9PDsN zvBp>6mV^lg7s=cB9ltWJJWTbgbEy0W&(|sQ)s83iR)HU%;6L1IUCsYf*C)5llmvHf z42N`{%wXAe*Y@9$>djH_Mv1wgY(u2lx6|eu!AP@P` zC8mG)gY~B@j_FKD@pfRUcTyvbv22p=pwQ!Z#m&S1yJp@DKc^^h_;$aXFoz>r&55Bn zfufRBXE)sPXc-(r8N=KsG1y4_u=oq0&Qy2k*2?&$bUZ>RJd6$;ogh%!XxqZo=&rZzcG^Zuwuvb&^2+F) zv;>u`>tDu@OTQ=pm2Ggy`qtQoosI7&i_<&?P^V^`IX&f>cdYNP3^$GFp$2O3o{UJh zr$1+08hR*6!&})9LE1PW932}bpYmaZ zeKy>N)j9@G*#fkyb+G@A8N8S>Z>I-}T9wp?=icVkihr+a&o zT)$(zTD_l&YivJPKpkYDm#XYUL3@v^} z`eEfW7%%Y6TJ-TthhJjREc0aJTbFx3GVmDG zQhNIaiDqUl#rtzYara>Q9?){;F0rvzg-Uml4{S+X%dr!!v((~uP zS%90Dk!M^xbU**%y&We8x+!N?A~K14^3pN*yYH+4?8Gya#Ia3t3D#rS{mbKdSvD*&6fbdQ`XVECdE^fEmYh264eZsQer@($BPb z)as}b$ys6EPXb_kum#8?+u$bReRgGL(#?}W9 zjLGPuELS7xEP9Hz6j3L(6yjgs^MvnAv_DN2J-+C2*}BHLt&>?9o^48R>V_oAO7+;# z1|B2+u|a zd<`#MIf^JRnZv394AdY(7$kQktLjuoaI35d7qLTr5lJBrHg5&j04Q2mZm_Nj(j+o@%p?AF%TeCYa0#HwHuXi0`^E)0~~8BcXMnA?fQn= zOeyPMNmJ}atzY?#9bShm!rBAl1u@Ochx>a49yj-{-u^2HU?d+d3-6#){?8{ zsO;7;>nbiDcwa*kXAU+{1oG!rqZi*qim7cCrKA$RR}wR>ze}0>(hAJ;27b-1_$X^T z1{o1=YD52`G=Lk$oDdm_|Fx38T$7-ZfshmV2sG}iJA*j09Q|6GBPou4bP6fRwaYrr z%^L8(D)1f-;SSvWgt>Txsj%GP{f}+9WdFf7TsGa&uye8>p>gFr)Jv3H9o!t)A@Nai zIc~W+TT6I!VhK&;P7JaV(G%`FY1ezMfCu~w(!Hr@{|uTgee)e7Y0?0YJ10k?EkEuX z4h1ErOT5(ZCkSuOqu8LnSs|+}+$-dKc^5GAN+A65@E?w)^cwfi$FAyCKc~KDs+4FL zJ=e3gxLE@_5I#$L7e)|6I&p8|M4Hx$?bP37%C=~4j6+O8SOw@c*X^%?Va^T1zPF?j zjkgsZWYqFqNhS1JWA`JV!sJqR4{*u#R?&4CV<%P*mYxd0)*s5nJgY*DZk6z!f>yJC4amtm;jaYSbRF^)qnx! z4!d1^ocRw&%hGIczLX(x=tztWuJ)jB9`xkn zPO^vH&-t;Gak&}aVh-0iDOdIJNm_4_S-G@GOKp|+s(da_!M2LXR{0<}AehPWz6 zp!-=xQJtM|BW7_-_WhghxxPkzcU*R=HT6b%dQ6^E9*EQV_uj_mYck~ZAOVzkXv>c8xBK2EARtq(a_uLv6t*MN*U8&P!G!J(Pf=7f>kw;J^m95a z=g-WX!&IJ~jhS--g+f43AfHaxnw^DpTd9BGH9uYJUnC8+a!{j(t2$18ojn;Kholit zpug(pvit{36Q>Up zqC~_-xu?voFdX%>B0?-^y(LJ-7goq2ncrj(35tDTgLM$~uKY$b9jFr^=c%ir{lHrz zNK5zrxsLzQ-vYF4S%Rzgc(t1O)%Vk73t*R*3;^f&PVLk!BuO-x_;FQG!_}MD-?t-c zZ@32kw4^of=Y1TiVFtn8;FP?Iv`)M$FahMvJYN2$-xX77x6lAj?wyN$hSTsPZce3+H4~tc`kS%$+mlAxk0O6#uBkn&gSBdhO7YqE`)6Vmp@J zOP3|zDgN+M>n<2uQ?4SEMSol7Uq0UjmF)0fy`_Wc?;WW5i<)!O_D1YCA@($Y-VBYp z8J$qiRNm?8Roewts=qdycXiXGny&pFT5F1lof=mW>3Fjp|2xPD(3b|iIOd`CnahZ- z4wm>V?4%8-4TY9xK;F6slQn@J#D~wTE@6>ygpg}Oqj8dQYR;Ou2;648^_0%A5|9I)=`t;Q}qNSGTk6cQ==ZdP>r)rgh` zNcy#vma5rR&(I*eDSuY4qI-LgBNL@5DOD;Q75$#Ba~vM3Ti%}(Vs`q_)C1bx;BN6S z(rrm_{FW0^QGGVS^{yYDPKLZ5^)mhRXTTfo4>{m1gYjM^wF^9gMs}?JqcN{h;;77@&v3dViihH9ajpwI7eH z?xuco7`Fj;K)x#K(^UZw`t#$PTf>B#oMU@kIWn<*bLM;qQXy4IxPiI3bWT@Twc5V$ z2&yyl-$#$&KH;`8V)FVs31H*XMas8=TnATxV;Ch}*;<5QhSv|tLM(gZ$s9sA`d2d# z>#Lh;wk>^hVdI5ShJKRI+u}InhJ1s;8jSp8lj4p%Y*g-tC`Fanmuyi=e@Gh3+V?WH z(T`J~B0`+#c|>gOGt>rsAIik#JX{>1G=xXxGp?S;c`}6f0@tRT%^v2)FMGNfSGYwl zm%rNXY|^fGml-u(*xgmk1>b8J{q>TR9cvHU?1x3!66`#ojdDMv;3Af*paBb$WkbOJwkCYRz|x-%kK*&b zsO`>KK4SGN(k4ur@3WRc`cvNfCVuIk`y)aXw?3LD(6n!`V%E5f+*`1=n|!_Fk!;el z_-DSQJId8LpTkFzEAd3)W@aVZIdFvwv) z=KeKJB8pE>tc;h4Z@aGfaj;8TZ0_+r z-j?Qo!;0s`LAq={E-C+qo%WUk^V~7!$9@n%fTynbn(#^UU)L(a1x;XmmrwofZz;f3 zU}L{QF0P<~LnPNsZ6tFPuHmQXXG%3V%hD{5sd1UV91T)9_@DF?z%OEVHZgJS0WohG zTGCvV5f<*A-a>ZWlyk(MkAeYhBxw3At;ZJ; zOp+faTocL=Gzqu~nrPH&gH-8RHO(U_r)RFw<`nMql&y~EPrdk66nk`=)Aj#2{;jv6 zVo6=CbwA>!N&-w?~Hgb4w!@l)skB5WeUSV>7L*s8W-Pw?U0F&|63 z$=}T~iWr*HB{Bj{DXan4zd9idO;M**+5Zn$Z{Zeo^mcns(B0CVQbP#RgGfjVNK1Ej z#}I-vN(fRzgObucG}0xVBHi80;dh?rIp;m^b?yIPzSr!1uY0ZaF)QTi7iznHhAV7< zf-DP1pq3greFPM$7qg0RmzMT2ncE|nl#Wmh(nHc{(AoINfLK^*aemD8?AZe1ektV< zpP=`j;(pEl9t@RQo;?iq#`_wQm1f@A;_BP~dUqKFUil~_FTfm73dsPJknd*OVG%%- zeH^e}_Gs0tmI4fQV_GTJKnT_MNjRgj5C0=x-75!DT}2#q|D|4xBYPxn9g~S!GOO%; zUOS2HjVa=*1zG>Iqy0v>*(X0B{(7 zuq8x)tEZz~kv|>sUJeJdvgHCRx!wOLBJnhXEoR{5b`;`is&invy2w4Ace5_y09>LWJ6=1lh4%_FZ3Zw zy<3U50xJ1TsLD`wQ}VqYx(}8^htL1sp8J8pe(|=k?8;ZZ3J&SN8tE#j$CK^fm>un} zXpu*Q-6Q%4ovQ05&fAhU>Till#)(gy@pNSX4sE8F1c_ngsXvL(1*?JIDa;YVX0QwK zntdhUSKs3ls*95Qc?__NPe=DTZ^g-3%d_g$+<(^lta@EhtUMkn#hRo6p+G$T=X}_O z&NP;IU{Rk<*e%v@rdGbPVK0;m!A&6q*5zJ| z6WdhxYuSdYm9b;)oWB(hp`riv;r+)Lc=veOS@_^O2sTHIwl+G`2{yb@8huulx?IgO4TwD=}}crf$ZpesH}9Q-k0jXjlis$-*?X4 zl~LNs3f%rpMb~xqfffgNQ@F`D{V8%U(&*xkqw=!{2L3xk*%RR62CcbI-~3MC0Zi=Q8nnbPYj)rtXTQI+pSTEPU)mMk8PF z{FG-Hi4?z1s7rdvKPcUn1vHRF-A6-C%k;@&h#R)b%=b~s+||4g;&4Ig*`-TOlJVpr z8jVh23Lw;SK>Z~G^C}Jp=Am(I51;1Fu2GJIs4cYzg#=P&BX@DRR@S#7sh)Km1^)^k z-(17Z6G7k6sGAa~i4zoU5{(R}fH2*fwfQhnf})`YAjW1Qc`!%k2xzJ0Fl3t?i4LxH&!PQGpNawew!X&&K@x#DmHYH38RIVoj~kB* zzPUm-3Nnm-nY1z|j_j-YbIn#_j01Xq_gBS?*F+3_X|jKVKawR_r8$I8(tB<*uGnV| z4F(9tIA(F;`$Y?1@@!6VE*hLq%ih&KHMuW)KLxC{8S7um^al@nJ$|3P)B4Yp_>4+> z9u)loT{wcvo-fFy^V{DsQ+x7_U62pw=zvCQOFd<`ylKz^8I%iUns#Z3p*DC%vN7b1 zC#gmmmv2FD%&ua&Q~W{a()h(mG0Gkwjq0*he4-T~uw{|AI#YK4ubO1U$7i!PXtHd{cK}fo_Wv}cr@%h0M5DaL3c+4DKpD|)_ zjxLjMU;}2rlRywILqAF%&-fyDMNq4>Ny7DNYtIl}N93)0A97=E-`Ea$0UHFYJ^O7w zZU!gqtV--Y?P;Bx+GD`7siS~S+o2MWgo7JyF`eyNamWk0QP2tC<~6#0y%d+Xl$1#N zx`OHQg$l+5W`W{B7d-+$8u*4rG?ov!HTpXXQ%%-1Evb)DxNM~4l3!q_FQ&^GUgzNb z=j3mP;rbzRY5io6yZ!DP60z8TjLi@pTgM)8RqmB0h_`r9a1WcOClzO=jtmL=cbkFk zH9w9pj$B$sp)IF_{I98Hq^pOkZ4oAFHKFk*+!$=WRL51m!iKhQI zQTmItyGCvzIX@9Oj+iwab>a@KF13%)f@nRFz;Q8dMiOV{-%x;bTlY@si&x4(bB}#4sl4zlpl#)Af2$|8j0-1WQomlrQ5^7UDg}E zjFbD(b7_OI=c+eD_3`75{~i#SE}pN++`%^3rePL-tMhme2Whu4LtdvuiWp=nblz{A zWCVLSE9mgdG?7UaVBp{EE72A&2VYKfAJgVQZ!5g$fVZ)la8IO~JV+&1<8V}WX0CN~ zVVR9DI&p8+h3%l?Mxjm4nZ_Q{$yrrJiZ7QYFR0Wa*9Saa_o5NhV;z6NQfvF6z7xXX z;MsRWwU`d{aE~PtxIkb)JfP8GOgND)Uk%VZHe6(=KX*`)Gft@FF2GHDXm+gT@Ylve zXidt3$H~VdTOT_+E*|iy9ZWnXkwg1*gz9F{2wCP=LtSsj;=&_09-nJ^+ip19ALx$9 zjSo()g4?=|q-a{&I8Yk>f;pe$-*pgABHxza_!ssm8ggDBvEqY^-4IHYbiL{6U z7iKQfnuNiurl-0Q;XxE&fKY4jwS*s??g{b1qdhzry=L1%?O#FvFbE?HRSm`ytKWVpH1iu+E133ooX?>MU(ZCBk~`SEszE`@ zlm2Pjy=C%BKr@4lS!t!!D&RgIovKns$(8J>vvh7^*fTx5-NhZ}i&#Sf+8wIfyh+KAf?6)ELBQJNHi zjFO&o-+Ev3q2{J!wfq2r+Kq1illzrL+6EdbwOa-shvkmz8@2ymprgNertl$T&>XE( z#`8iilztgJ*V~K~{uC=mvQbhm3fG3Lfx>NkTE1&f#-E^3H{0qTa-}`)?GjhVvTUPp$W=!)=-j zx|nt!Bd?l>Zfb_-(QUB|Fn(d?*_7C6G7MtWFJEMpy(!<+Do}^#>fCj5`YyyVV8^0u z_04L`4?@kcx(LvHZ#5nCqr7yqs~C=v$>dfJkyUQ!Nu9Z4k%Bm63Fv3mEjK4^E+K^I2wWkxPL?t^0 z;Mm5mPXft9euB%jfmWQ2ifiLIk)KrTeg#FGxGKruzZ{p*R(CG~M}dCnH{t-$*aAP{ z3>#*nMSG-~a-ob~3Q74%u4{*#&A!iuLh2vogl z>W(LS61k)K3CVSJ-Dm>)r#n?fbkVt)&&v)^e@^jYt}Q8iYdQ?1Vt4$;(WuVwcHGrP z-MaIwsp1x71h6qdS)T6B?Wt$vIbxOep6LYz?ElJUP08n$p{$VPso$sDPi0rRn|P%8 zHGkTLXC;grbSqg}ogKewy`yJOJlOaAc;DoJ#e(ZX=WMUwbjX&$;x(}Ad(6-HT3f?G zA61Z;t>?Fw6mvMaIQCuq7(YUZ5;%rLF)CB9^}0!-BMh}22lY`RMUD;@F;JZv|V zLHxBWB;XqB;5+5znclhwm4bMCiOV5 zjsC3Q;yomRHDa{nsj~YRV?2lII3eo=^7C1Y4B$t=K)xr+S;KbCA11quZBONpo^tuR zzn(V%mVnr^D+A1#Q#2O0Xb}JV91u>?x9f{5g4=YK)XGXi=MKck^Co3A;2L~(ht+WW zgrcx{{@U`R%30#cM})-q0kf`2elNz%p@ox|lP5WDP27BX85fzTRZuPqe8><2`h7gwVg~1dI z$OG(p#09rs_wB^)G&9tJRsS*f4TGYWXLO;%4_8-Vz3Z3iVPvX%La=E+KpP)eMso{{ z521+-m!^)sK7M9D@`sXeLZ$fY$ndi%E6`kXyA_u;*yUnBkQ1;vhGy{#PT!Dm=9ZPq zC&6)Wy!eglbELEmx~(*F*X{ZHH{$BAx9GblvnS;tua z-#W(FXsdUTkrD#U#U_BO3&8?fQQVxDw$|+(uHh(+J|2dSit`jR@h=C8m%A z99)dUL)!!O?{65sEAFEozTA?|Bf$Yh_9moJL4T+D0@s_1InFH(PbNoF9<> zeKbBDSwuYX8n2z4QTl2g98g+rw?1Az6SZ^29|D~GR)q8bqoqi?-iI7tM0`$82Fdo; zaNzmYid(dR>R=ceK*Ttq?;xu$3zRwnuMic%U#Vq1Cr5G8*K?sH*qKGaGFE%7?)q=E z(X+tpO$pe#iDny#h$D4(4NEQS_HPY^6 zTo1}wyy9$m@uF>obpk|f2%y+L5M0IR$MI*;?mKIGkK|xW2N&y~p!_)oZZx};%O$$e-X%X}6 z-IVZ#^%vz$bnan}xG<6t2TFsBB|$GvBd)>`STw^z>}kq%ZBXu@)>^wBic->gJ1jd% zvZ>NRdaE$t`{t5_XoH31mQi+)*HPMiY<0r_4)kkWYc|gmFZ^dLSo+WYs9`@0pNz&s zc;!+>3_Tcj{DB$jtO4i9WjWkws5Tl);7V88Z<8uE#d9w$$1TbVM`o@ zg+EzQ)hhU1YKaoEo zwqtwQ>ZCAceok3H;Kb8CAP5&fE6Pqu{+kZbg2f)e(sAHawjjzW3xkyL& zJvkRZX)iRc3)ZtNP3RLrx-$_oWgrmASVd5kuE&{q%1lQP#fmYf4T6Qt|7D=1Fq#%sWrZc#c<{uh!r2*M;sebM|K2YV9~*Qz zJRU&@iN41sy@UMeLnxP9cee9N01JTV@8iYa;eR!?je$L;Sm75<6ens<~aXNmG4IRo~Z1)!B^en=fFB4$+#v zO=p9U4eKIt*2sGB#f-0OE7AgVMabV-7ncYK1fpYC zGk*jf3MHpQ`=Yd(CEbtsBw!bIRadp+7Xn9w+_kG(KWx#jv-nEF>XH<$VF3@Ffk!8{ z*07Ws{It$-)9F8X-bR$zc%mqAXu$AT{Dpf_je9eLUTm4+)mjQWLK!>=ILjHlgSAV8 z=AqVuL461Hh@iSASvE!lKezEE(FXH3&q{c=$(^mpQTZSroaY`-DC^Nz9vV=2owJ|g zX*7LZ>IaS_L6*R@>}TBB?&WF$u+{i9_@46I&}d^m9{A*?xYW|ID!DwG;J-E1bS`c+ z|D^H?K&$CdnSdgdJG(i|!mh0dEyyN5i!?E|(Z8jBqE`3vNEva?#Wk7F@l6B(hKM!lw`0<_#N#e$Eygu|YoQVm{5^Tbb~TgRU9q zB?qy{lKKjUKPTz&33xq6b~()~9OPWT9)AG51}a&)pV%I6Akk_Id+tJGj0%On908%- z7&y^LjS^@@GLquDaG#W2tu8pCXpT}!JD2EBAHT;32VK37jtx8!6Sl(&=x#ull3u!m zjMD#O@yUVuo~g}j3Lj}ms^g@kr!eLk24Zb4m9GRqa{<2%ujXs}l_a}9I47jo>UCa5 zl>$GAs%Z{5b&@oxh8zQ6?I1qqsCw+1uL4Jb_L!yIb*7%|uPA^-B2#C%Hn*w#3jcbz z7N6i`WLe4F#JV7`*2;6#Tg8Kq^q;uB0(}Z0{3P^l=41RTrKq38tu2CsjGv{<&f5Y4 z2W$U^9nzr{P#u_PUWmrhB7qbPcxmZv8q*;%C|4{u!sN3#U@ozO1X2e&3b6!pq$}%Dhv^om@qR(jNVvN!V&T}* z02zY|a9@(rGBw~;ld2y<_80an!p+Zz^F0JHtA)c>)4nnkU{~z{$M44)DOY~H)$3LC ztvPe}`qlmXiURMrz5nvt@w)J_tB+^ce&vcuEa$ZgSr;@D(RB}1ugM$b`6=#(dHr?+GgB3u&!v#4D-D!Ve| z6b$B(WkHzghB7nbc`rZYq_y6WD&@Qx)8lc@|H9Dixty5==6Yy0ygMSu2etu`!49+g+6A zWVK(J?zLGfi~XW2_4{UR?UhgF<=w%@r#X9d*&6?~Z8BPT7SoDpgE@j@pWkN>G?y28 zpD2XK#pr&w*;ex{0=QDloZbIAC?0S>vcWv_G1Krw0xI6k^KKvjgsw`HtDLn$0n5&H z1up_hLQ+xww2;mH#twu*d3}P8@*Vd8f|kY6sSc5(dnOF!#+AZa<91R*A7rYoJieNbBIHz9%W~#z)(P zZ(~7n-AafGpN}di!n7}BhC!A9jN(^ZviH~2%FEW!71pcusy-J~Y>m50{x3{xN3Y4J ztS>r)^aS}M*v!V~__!$Yd0nCV5l#$y;xDpLgqjXj=84`O@!1)rn%UwGM4LK?o>4?O zWx_@ZJJ--^pyA?6avR}d1sIA|c((W^n3&P(0X<=3Qy>o88P;ayw~U#8X(VG~0%mUD z-m63xzlO+vVVqc3x)zUP_IlGK4*#J45CgCLO;mexR!k0XiHwYOT-5shZDhXqdG{$m=f2d||1g8GrYXzX zQT(53fd6rv%^pAh^!TC?Je%GI4o}y~;3Ho>-oX!|5|e2ZnUL_97lp@4N8M>?_(_{l zB(yNWio7ci4p`EXHLHnYV3yJPug$ek=-r@8d0@|_W3wjlxzk<_dN@Wy^5`WXf>5pq zFYdzh7Uj_JCR{(q(`JPRlZeP@qrpIrgrL-600Os#$t9-okz&mF(DnWhPdK=}@6z~1 zgk)n>XvgJ^=E1SnDUy9Nr{`(ms_E}j0YYOyRnYUaM55$bm%?lvHjysl8h}w_JwONnz2Ccmh^U zmDka30`FIpv#R?(6Nqc@u2~_uhp(XzpS`7?p_7mH;;SFmudL7!kn@1SS76=pq}@6jseY`02V^D$J(ooKTba>sFswA27yo(9E8XO-sVTP zKpjz1gat&{DUJ);Q?149_&D@il~#Fx9=05UeeW3R=3X90Mw;fv(8|R4PJuR~2^F<) zf)FpF8AO#A00+02Hn>EZhR#zc^W%SUzdKyfKIA59m7%^ZVa!J)p+!NIJ&{&|Gxo5=g;X`*`hU8tgwYA!LqR%4|v=`GANqfmi&0mJCbw5~Z19yM+(y(aXMW$a|`X_Ol{) z(#&%>C|D?T*lp{d7rz4zMjhSHM@VXBZrS-lx0TZ+MUDyv-*qYzHm-?iRVquhAirl! zk#Ty3azq%&Zi+sUeu!)mjlF+{d(p7E1Uy1XnK}pAl|NoT5gRPDV$3e{qc-w#Dd0hmqmd z_s*W~*i_$-;!K?;N4C$IHiPYLSU{gyPo=PsuLO!vXS=bN=p-B-V?4`7IG(vp^SfFi zS;E#cQ|`x(2_459?#IDrlmLWZ4ROYecXt8GZNURN_xmjjwTTGBQYOO->OZp28Ry!+ z;b5v~BlrHyVorNc9lpuz>C+#vfcr-^-HJ-r^DDJq0Lqt0S>hA5V$T?!wL~);lTOO9 z$?xk}H0hEXE*g1Mn3TX&p7CaLbPrECY=91eL4^Ce&OK^t9NZruKr7W5WyfO$6A1hr zYfbl^K997V0j#|Io&zMI@`iqpjegvD#DjNE!8tMIi+lN}PIR3`!H{z@eE<+q5c=Kz zyEp~sq)jVAaKZ%S%sjWs&F2S*6e_ndFu}bf4heqA62;Y7*s4)ez;4j=q>g*3>5D8j zbfhqvKK?@D`gTxJzkd&XNSXn`|3o$w%I14e)|f1%--HwQA9d|EdB`%ZIk}$xEEZ06jzXwqdu4<~)q|wWXXAi>Y`qdtV?-S(?G(|0*Ypz+|pE@i|T@7mVZE(xp3$Fn* zp86H+Kqzs5?j8Dl!ksWt0L42pmzPX>@liQkI%v>^A7B80EPipn0db#mvbm2K(J?lC zvAVHW%p1id)Oo`>TW?ej@4x}Is~m5)OU9=G&F}{{j1$VYpRRx51!;j1A}`%m&L5o0 z&3~$9Pjlu3rfag9x*BCAmQK-RB&d7-ZTL%z`A&NizW^R99UOG){zlakh(H%+p zx!1I6?NahFjhD zt+fQOVrEsiNuOWP&+|VCGrtAr?aVT{FI!SOa(cHDbmMhe>oP0iy!Rwb=9g*R{Z?u= zt9cOr6N@wdf1PR)7oD0zTXXk3&owDy|Iypp`>SqsDXr0D~C?!~U_$JJqnRoviT_o#iPfAI!8&s0PLZ`K@k3sM`h{bdF|@q--!YGHrTdBX1A!D>*vZ zT4hCnRt^!k+|h3a|4A{}Knlx+;ywl|of|j(%W(Cw_FKwQ-@bw^Za;H4f~9@G0@pl} z{Lsf&Ywnkx+B2Ui_7@qo`=$+UZ4_mZV!>BGp886lo$&+tl;Nh6$p4(F9|tz||EDxwlYIX@8SZB#QMfP8n|+Ai6`?0Ox@=$D&5P%f}e9J#s;p zSd4gAe`?FEBIwS=9YVt)UY#z-=zX&2<1B$3-e;!+qVjspF(pU`+WXSueW ze#_Xen^$!;xo5S1du`-@{PQ~5{Ym0EqWS-Q$xWgMtKAOxPb=Nx4kZC1B~B(sTW6ui z$|gte+As|>cD9Kfh+%lXk8N*wgxP4|@?N$?YuKUYIwc1v?FJh_;T#YCS1!SrenS}x zU*(D%l60>x5IGNt3kQ|0=d?6Zr6dvR&-Cz@KkpQ*_qtiWh*98OEo~HgU=@+djFwR= z|JFHu(z~BATvYe(OIKY^k^>vO`eXL`RSUxF3udCGb*{G^#T?@XDuQH|VO$EfXtzke zIGafRWlqVNOKy^Z0vw2vhc0)#llT{zt9ePMoSQ8|f~@3GDMeDnQAPfYZ!kv2?jwET zmVrK(yx2zV%j@%t5w+l#;*?z+1^=9J0e((w3rMz=rfS%gfOb3i`m9PT9FMlA~^Erybgczc=z!Vq}pdB0Re990m`R zacQT#^-R)2Q~UKJQ2{{l8KW^HBcr3;(`epg<>nxaXeUu-4>R?fz*Y&b89ffv?ps0k zKg4hXK7;=Z(U$fCr5T2DVw}V#BA3GK^?NaqVU-VHMT!m*nJ;+f2pgy$Y+i6F#4JQV zIb{*mA?Cz_i2O4=b&9IUE$FUwF}2%xZR8EhQ+!V@I9n*|hyj;y_WI>a2#apN)}w9T zF@Bcy^nKC3g1WPGU^q%TQOG+9f$j)V4@rQ=Jy5_sge#;cLMqElZPv^2|C}7OxdVqaefL~53uS(8q}$i)joPA zKX2QuO0yIo8We(dZ!cnNDL|P%h!IL`i7y9(c|Of zua+~3lU@kMzmOb9mj&rQRhpYXUg^Bq_!8m~!K4Hapj?_T`Lc5girnCBl#uLac*5xp zdC`cT`3voR)9&U&jvJ^biP!m4r?h-G*{*Z*CW{{5C5_ke6JH%07;w+$RXktcy;SKX ze!s?|cvry!wrb4r<)|~l{YO6$Q#M)mybzH z=?0QeYhKy1mADV=4eDX$6%LMJz(T5jK?!m9Osl~WYTMr>LQ&Pb3#wA=?{^kh02gg_ zk@P#>j`svtk6L4w$$?UT+$Ahm_dOqjwwvpv0{oRPR*xRsO#Ma7n`#Q*%F7F*nH81P z2G}l&+(-N_bDaE)Rp_Wj1|9TGE&71-!HW&^n{;OMS2i1WhGP00U$Za3UAH1!6k@XZ z`1P~{fN&^TjYc{ksx1i7&QwHEga!17rIER+3_A#&NppfVIHvN;r$A72DGA}G3$e2m z8a_B|PO8pDe7*GVHqkv|wced@pusc1DSBEaxW8PLH~|W=MEj{{NUG-98+DC{C7fSthY1rKq~`>iSpxYj87brW+P{*V!II;+heDj*TJFl zxNC~lD{ZPz^X=1g9|IbMdXemR)RSISwXk!JR}CNiHoCU% zXZDO+!i`Y?v>s>Gaq0J&S7Pze7FOEtkw_yK1i{6vS&)0i-TGX9E$9&FjREx3n$80<3wd#FF{=LwLyEEDW#%@J3}BVv{DP z2$al7vGyQb+6r_uD=xG>Ca)2{7v8!35XX^(Fihm_S!?_jhvPo0 zw$Vi=9tpwIU>*6hg%zb1{CtrP?|agd((B8B)pO7LcE=8{)z!P(Yu^g|%jSx}lc37| z1@w+5!{zJfb|`@GR1#i5lJ-*mT6w@4Ev@T5EP;Y;XOYQL*N@kl%nkAd5nL zjJG9|K_V8_$9d;GY!sLtm%@i zK`|h^YelZ6mO4OzL`)}jHEa@xnorZ?-lfNdYxGyxdKuB$yS02_aMw5i`O8l$(Wv5w zdYcE`7Gv4VBty4B&2D!xpmq8fAyZBKm=B{EXcmBpI16j=D*})%y6kT;lpd{rQeX+) zEio^8L{*Os7dTA@1S1#NrlT*Pu}J=AZ3S3ac?uPN(h0aUekQUSJDpzfHuya0gn3`- z^j^j6wRqnNZyWOl4-fHlB!a+Iwt#~RfYrC-t*B1b?UDJM7u(6p$SWD>a?45(8+a}7 zHU70k_)%?^rhxD+xTdxLsZnE1*@PdkL$?rcC=1N^R6h$)@DVKmBIa{KscXJ|a+?8< zUor#we|`&=s|YE46#n~%S2w$@YyAW#@S|1npFi^j6*%;nVN=xN=Oz^+5MBJGT08?B z`NXFU02wnL6Q8z;jhhaS2wS>oig`{V(|pR}Ml~Nxa)T4kMI{s_c(WEth0C?eHr@?L zVaT;v9mlm(Aq*}ckk2#M!<5C<+El9sX{(ovQ`nA0ly(`PC>Gun7YpJhTN6vNNqwCi ze+?+vSx8#|PI=?=^lAPZhg9aHy#u20@TCjFi%H(cn8NwCqu$-V**I;!YmbV4W{Mxt zQ6{C6e_UOMLQP>Now`JhHUWQ50NVn6pMn2@h;WmZJeSM>cZC~KCyqMuL7^&THtrW>u~r7o#vfM zkdl%QF_n-IdJqt7-yOp9#h%$jsp)si{@YOpR9J`ZeDPlVMOy4Xm(UlO3w1`R#tvEwp`_K%URy-lPQ7U@x4Y0Y8aTv$nd3W{p z{aT9#msKIBfZV;j#wA^?zdyv;IHUi<*Fp{F!EfOvgAR=`0{ z!L!?=?den?;OTa|vFTCFD46bbkJ@W-|A>u@%GdO7rPNADOiz0!K15CttPgWuo7{@4 zE&1@vns9#@i#U0^A4L{XPjH)A%RWQ<{!lIHd>FMlUA=|q0fVt5Ht!w{52g5>Y=sPG zefr=9W($lAgSa=)qELcwGjFSy<=g^ab&`r?qIWHv)s*WSBzF6f02ofjY{>LC;qNQL!*+60dui{UW zZyU!vsi`(bm+(oRH&e!nZa$Zr8ET`lr5`wUaskP!mCCgSE$8jg*mG8ro3RAd zYEyMn(?Gr}_0#Lq)|7B|kxGH?Mz;U)0@VC=8D1y1vdM;O^Se?6(1-n*=5>3b$ju+s znLmJ)ToG}yBf3DkT!cz5y;r^JYc(>!7!4}y1oZBm>~F|R2QH1M`F7R94{o$veo!2m zh~A)}b^#0!3TYZl5iZfxT$i)x6x|fiA0R}t*F_zZ8NE3@dj2DmC}VTaY!svV9j}!w z;_dLSg#Ih6t35Vxe+r++ZxK}Y)H%o-ieJ6jk^#cHX($J5mEMo`LG9O1#IFO>1E=d} z?zzFA`>C?GBe=6FGN`JH!b(x-t!yJ0!ux9MBw2?`& zhe-gRC7po&LD*|bv8Ti*e^Hlm)?MzY&8Y#nx~cy8M(ss{hLnI;T#M3wy|*v~eMI%~ zYjI-3I=d(MtHW(hOm~Pl^fVhmUZJ%5*rsmE=KJ!q7Q8~^+R`C45%#_wqxfu;905bx>>#yRz05k`%?fPa`3+P}L)9dq$U+!k>FO z2TaK2>VdUYA5=!6W~Bf6e*b9YMmKv0tz}C-Uq$g^cf^ zyOB)xrNq5H@LsJiKDalKLi!)xmuByC+#6NyC(NQh-=LOY$*Q4wUhCue<-n;;|L3j( zL27`g-!FNU5XOb%Up z#$p7Z_vqiwHA*kGzX^^VAbAogy7Q30r@O!lA_ViHxj$?c%nc*iWZ*}MEJIld^`QP7 z7oXG6(#D*?s2=WJU8e+}^C{lOz$cLL)1tt`!zgJk1$#pnqba$K(w|Cnx7TF*HKCnf!Md-1FXP5+ll;>33FHA-pt1`ayIZ{y z8FQOkh8wc0T)h|3Zo;%kh5tUv9##lg&SB27<^*G)gvPWI`rdUP(dIw{%D9*&#ceL<{%^YTgM zQg`od!L(#AM4c`n@6NuHTN+U!T3JXo*J!fkFzu=iX$*j}of7 zcGZ^OWz_rpkK|2M(R~KJINfg(N+@g9OP0papf+%SwhvXogMcHGYb=5f&5w@! zr_B?*Ik<=CY^;2M+yb5a62z5;1(imX@6bCv*OB^r8{Cc<`H9GImh89YMTW`*F&tKZ zJVF+dx4%lO+dXma3JyARJ68dWAE02kY+lc*{e)(lDxp@5)US@AFCtw{+r_PnBnl6kk_K|H$;((!SeOU@au0Umu&xTu+ke`tly6e8doz88*F~Z zZ|phsV;%-M#ySEh(a(PTV#v+(n|$tMd;kb?M|Yoi}Mg_lGy{G?|=E-R*| zZ~4b>3)u8W_b)ZHasX4pv@hej>Owy{f$` zICV4K?w_MHq79rZ!rUBFTQ{GVXD9+ByXofvYNv5@pKoWFCqOtwc)`}oY*D%`tqC0<#Ib8;=`=b-h<=2 zg_2x&VFiP=;#((-&+}U+!g6OH&DK=BxR@S@*2rjH!%0kZE>YEW7%W!5t4CnizEDW? zS12C*vg1Tzt2O9=LocRBX3r|e>^6S&k(=X=8;D>EW!#Xq&k#YLdFq!}&%aQ_N48J)4o|1x2TIh1crYeG4Pgx@~pVyEZ>N)tuKQ1qh#~jyyc;P z*{is}*wVP8C^6cO5BXePj$a01QF*C6%&!JteMwGe-t!JCs$l#ST*oybG%F#dcvOOO1zv#0EQzbbuh&#w&XR0XsgY7p3@ zrfltCAXz0XLKd`OdED~;1!B0zYNG<379kFwMQ-7WmDo;^k@;808<8jq;f3(-)?S4jRDg zu%fXqJNJpZJApVOeQkc{K(jhk!UlPhQE(~*YN?n7A6gB&&#t0b``vbaY*?ZILv`hk+4IvxQG z!~U(<`zV`7Ue5Qcot_X|YD$_rUK#EQ#>?p1HAHRBJ zcYP^elQ;@KESgnqm!E!5R75|~Fd6xMl*Sl{EtM&geco!g@q$0UCbO=j5E?#JO`2`< zP9KRvv!QzNawTuVOb&ly}NC_!j%p>~rAzISqksmDK zb6z$t+N5e-^vTJpiA5Vr3^vVy2Wo*c^aSR@_*fmUZN0aCe-aAGObB|s>#jTZ^jzhM zkF2@gr|;NpN6w7@b6&od5uK%5|8FTIFnfPFBYXO&=1;{Tu~S0hd_pw;jDYMFjtXf! zJC@uOfgJ$Pq&9%O3N0-RZ=6C1GKsYy6@~S{tUta^6IVaYSZ~J_tN+4P0LD>3qMglo zxXr3gAKMkI1UiINDFEsE6ok-ruj^rGA7(0>#b*Umh_E0y-8?Z7xbok-H=1IaQLL zT1DWl)BcdLnBzKpd^$2jx*^q$IBnVXdCHNNcvTq^ki8!~io)L8;J%5>LV@3+z0fTb zao!!h!0}dwpRP-jw>Gww9nO9SBY`O)H9Nitn9l`b#x*bCmsh-|PD^IxGa zVHR`(d2t`YY6*Vi={`T?S?FS`s6t>Ll1yJ~5*x-87LPFhAkr%B{a;+2^;cB!`|T%S zK)SmTkd%_{?k?$)E&%~SVCXI-r8|}G8bk!?kZzTd?igm~^10twcimskI)A`f=ly=3 zz4vQ>NW@L`ZJ1Kovw0Y@<%uawc;U0OlP(V5{I;zc_3PVXfCO>iGais8M+06snuV~5 zOTD38>kkEretQV{monbCMkG8F~zYk=OhU{VDd?K!X5jR#kPiA$B?MHH<~ndZUg z9|Tdj5>@~2%Vdao!F`-u#=GdVkyfsa-Mm!W+Y^&(n4NG>$Z(-W?`I|MD zjOSmk?>?-8k>7s?!C&3>#VpuO!M|Q2ns5JWdtASG?ffLuuEIrrv<9P1Xod6yE&3n% z7W~oh;d~RpxmB@$j?;8>L1Cw(TaaexQRyVCZ=sIiT#w;p2lEoE1Dmn$dWl_K-8xgZ z{o*T=pSSNTH$dgGd1QX~CiZexQ3OctpKz1$e%E;Ehvrd4vM8A7iv!L~GlAqkh>Wnl zRC5CDhJmXX3A#A|b(4yPXn0riIg_pz5_wYccuGe087Xt1T> z?adhAd_xb5s3s_95u%9uEnrzBkF!3=AN=XTc7BnQXqZp~h*{)VM4vMyZE)j>vwNd_ zcAEwsgfubPi1KEjH9v+!al@ZKZB6K`N_&H&gxg`;*Zu)F?WgGb4Bm%#zNK!1ARiDjbx?D>BN_-6yUJ@cdg zycE9sUF#TtybjMoISv)0VsocF-+q8|XVVv6c9&gPXZsZ``9k|bcYz}yfr z{m%d*9fZc=_$~XZt_mq<8xwKzpVOMo4hFr(^lh@OC?_Oh6hB$*6&5$sAs?iiNuW3yt+v1N3Y~r@}*?6&AGp4 z0!{9Z8{Yfe8T}bunNjI1P08`+sjElP7gdSD-=#)gkJdYDkhqx2MH#BS3IF)BZ&U-P zxcz5w#d%Rs$>|_GjT#dzw+LoQY?BOI7ZmkOsV0C8h1?Fe1`{3gO(KwOo82M(PuU1} zc<=wGXIQMZN>)p<#t<)-yUf<(iBveG-&^s{w@OdsR=|S6>kt&=_O(nQQ9FN9WLrzoy|>*I!k9o=++&cH153gck$2szO9F?#q0guG1Y2+j|v8wsdD?~Ia|g7SSHV&cDGyxe zXvz<=>oPS-RxG=CYm5)OrlNi+OMAkn63?Q>$$S**@zOZ0f8W66#Tnl77&k6Grlg0rul@n7?Xm90qn zgb9*3iueGGYUEeNk0!gBizn4Y9K<5k$T17F9AgW-FF7RYQT9wge{#u?6pB<1MP1TW zroU>tO}s6>yMJC97#%aud>o-6)l;m_;&&BL#u<#wBca7Yx-X7>ZeU1|sm2ZB^$1tI zCYTi(bKiDNCjLx%#T(z4#6}m1QN=G1^ss!ium&Yq#iv}&XXevg%PbkABsV=oGjAg0 z|N6(A_WJ+1-=&(O%a2A!9xIrEHiP39z?!BlHtF^bYCV#^nq}rzaz3t1ag~jko zwXTD|kf-h8vX?Bc^=qOSmhZo>lagFORAlG6Pr95n?X=CvfJ!$t*wd!^pN8nzqvm_I zFbWH;_Mjq`TKf!Z`fmh-EEI;illD=ZFQ$!u&4%S{=x{9xf-oJ3cIeFdqd4D@n4wCu z0eFy2g9kAfQn0*<^)3XD!5ICJ^Y~i;eKooaAxvujE``Q~k%0k38K#l}PmrM)132I` z`X{iKXmNVksM2_Dz&4PvJ9}9TZPw14-_CIOE|KoHpOh{-ANq4H;D?o-ohbMEyVD>| zfJQ@^WzcYFTaMJ@+cq{J;53nA*$@8~KG{F^ei%aNu7S@}4|&xF5GeLs z-B=Fnx9>s>(<}wVa~6X@dELg_mNDB%F7WHez#TE+%vPUNJi+iihfay>ZY?(kxx*w= z3_|k}wQ6a6V4ViKmtAN*GeN18r%LglCAICogK)*9nK z+DvS)y5rX+u?Z084AU|yPS&Ui3v4N<))ge-hY6;6%}D4S+4}7)d+ayd4p{lLZK7TV zON5kQg&N}Ca74Drboi>+3RmL;O zJY#CTR6#0}Yk;t~M;p{|CNPT%ZxT*;m)5k&Hb*A&)MWP%HlW{I{|{$)Yp>*z?zN7m z&GmP}al|QBiPG6CrUu(0>eqnOej;{W>)H5-wm_msmAzB4=(nrqV|&tD3G^X9Cd`I& zPy4>@Nk5_|NGdH8(Hb@V93=jBk?{v ztBjj2(i_Q!-lqx`!`4YvT1d`xuJ&n%&B~>@KjF>xWpiS7BtE_E)F#jT#KU;1H(#mw zS}6aLA|v_VUyxwxeXfm(4HrC7!7AUcpPimw=L%C_Wd);xVZ$qT?}BAt7{mXnY+XDL zs1=U?2BoV&FkdKUr5z68RdpL0XWhC5dPVYr(TQtIGH@A`i_D75Y+GS7kU+QhDCTD% z`{+DW>b2Ik^m9a!7e6{z3oYb|^kxh@@to>CoZBN41s%TB+{9J9VVk&*Jb8)H@4I30 zuYTZ5@%-sV+eqjRQrwCMw?Vvq-JBPdi-nRt{@`j;f&~DJ=?RYR65S;mPVR!CDMJAsR z89SFO=^K*b+1nK)v#FQaQ$<%_{glP5Bin{3O~#<9WDZm-yn4{w*@WcZHloRO%6uW@ zmTYwV3#_bCBZFw~F)f3Z!}SH+vCx_Fzd^}Hq7saUGuvPiY&?R18PSp)JxTXRy2Rhq zOhm43c-|%did}$1MoC3L2`exGP+b|jq*p;IAf>i$Z2Fs{()5r%;`0am$zPFFl&5PVHyqJnTy^kILNm>r=k`uMLI8K>nR?u%=GS>cMS^!J@KykJuC*GDShjE zpCq>Y%^$~uhov_Cq}*;+UB2|6=A}qZowlA<27awP3hMoe-;V#Js}=m>fiq_L_c{*4 z+w`mIYqa>}EL?-e@|-)y>m9vHU!gmY{PZseL`L3Q%T&|mg3O1s-nmU0l^3JJfcLeV?gy(#HpO10v9%I1sa6g(M`E+-;~y^uPd%{_v2vbv(|b zRX0^L%j+^t(NjR1i*`i|FsH28NpddCdF)1(+B;1OR=_en1j+VAuIbT$Wbm0WZP9E4 zFX&{Q0SgE6N!D2M2WXLewANP&z6WfH3a4SM_`W!a`)I(XJVaPnkzMIX=ugFqA2BBa z!7;*9R(2Ep+X<&uf3AgPLXk99eRnu|7O8x_JMhy1z^2l+>eo;K2%|c9%i!wN~-Z0P73x zt)nIIs_Ec|a25GM82?DrX~d_#H${xo-x^*d4Q$nE_Je}Ai>^w&)7Q2z!sC@2B$Ne| zGV#5bJZl_uL{B05@dJ-H9JLr?T`bn^hn^1;YWZFq;bJ%#sey`&=?XPG&gC8^L~pUZ zinm4mhCLVs=Y}v=i{;uZ6m_p%-|ik0xRok2RvQ$({S?6z_8t=l+yuWusE^n8Sx*k> ziVG&v{|6$bxLtFNq5$YZzeE_%V z%>vqJ>|QvPNl$R5We?lF`NAL>dI#a^(8S0;XgaDt(ETUQf-q5eq?h8o#!@2R3Dt$V zF16HyL5_8g*ct#9jU9k2p&Y&;)(fki6ZK&YyH}1@UsVg)!>hYX!J;5Oh!Xt>A1~MR zCoVwdo&J?{*FK6*`(xB3-~}V>EoM*W`?vsvutX@aQ%pTyL2&X1Li=-}Rs13MEm8vO z$|tMmJAm4KKNOJn3^Xi<2T2IJTjoByuQvVPx zs4(~%3o(y%S$KYQBWl_EkZ1faY+UcJ%2O|T@&LMixttq?gg8bubr0odbUZ#lISx(+ z;ZH4H7<%+uK=m<%3**L6TJ79NRS)t}7sWgLFO04{@TCR1V&8;MrUg5O$be#0@`uqG z2j4;vW0}f)@I}UWJTFHy2;w?=>zv`&5Mkh!`@zQ0#go%G_L+v)ue0Rob1N$HB_1y} zQbkYM6+_WY+O>soUQ^q(=h5ho`z5D)tnnbFLv@2z@72^emJt~Wv#clEK%}NHG&}9t zy;dBST880P@_R{!cOY&g8?l=9HblwKfTBC@ zBeqyUF1hzF_Mt}pW5v_H{=ec`-`A%hWOHdFXACuhIO(bE$OblZ35YpZhV10}hkOoH zoPEm?T!xTmPq)Hb_Wasm@`7GcoxI_Q^vnNv0RY}hZ*qkw?TTfzKDp8*?M2u$Dd$qI zd?7(`v$rJKQ%a!E=xrl2g|4v}Y770UG;R8!KRdMrH$h=G_M~SztTGH$FOA+jNKgj+ zV_kUR&~;w7`Q^{lsEv}ixZR~_4gUJl?RLq@DM-&~pb_wHqG9FvwK&3{2VSM4`0s7Kea>z8j(IiRARQ2m0?Rm9p0)LthFo`=f+ zh(g|ao8MmApZHJZiNW7rz`=#@H;)klfPZS6Z{C9{OH#VsvyyFCNnCd~|L}wtSw(U( z+7Pu=z2L1N>SJNP14lDzLUlH73xL)>qav4^0*)Kqr#uZv;o!KpZcdwPTg!zW=f6?! z(c$OlD_QNl5*X8wf#<8Ak_SclI*ob=X{s<=jwC|nn1IS1f2Yt*=UxN3(6v>*_D(k|0pkEmjAEj9cie}@h*KSEz zEIH#U(=-`r!&Bp(;t%bU>Tsx|g|aIMO^euA_rA$q_pXKc^3(L_K?LKPA<$z;4&`(J z_cJ5zfH_bjAjactyIC91M9lH7WC@M+JEdNhX1QXv_m|IPjzzJc9%(Y~2kKO8Al~ke z16iil`M}g;*Zc}y90JRIz7&7wrz7`B+K8B8ISJnt!+ceFo+tbZ`AV?*{nLPwSorC- z$KM$)50|>Se{vh7^!)d%k`3Q_vbF@b4vQi2kGn%XiD)==m<8$-4#y1Q%Af*(WmgVO zjB%N~+!9o`pel4y9H!Fqt_h%bG`yg2fX|Qw3d|rg`@+scUO)jNqk-WPVMNvtK8^jj zxCgIg%gYizGQhcauEevk%#Wg-O@3Br#EN<1G@NrUH_}mTQ+UI`KmN#eM0|m~{ikmm{kVqAVuHx?IF1dYic9wwWVR3JC7G3wne{t^%@YdAhuezBn_u6UJ zfpNBQ#Zby<$$VZ4)~!W-9GquJ#kyEs7PP9LQ8-~>TlE(?QiQNo@{Ztp5M*lz z^)BJ&f$VrV+9W#fl;4`Pw!J$UWqFP|uO|YnW%v2Z0Iu)LkYI6ZnJgAG>(gJMh&4YCHydWF#+zToQDl0gR@-EvM9Pj63W-BHJA z8W0eQ(f#z+j--r0O6jX^VQwwu80aP-TKKTgdgJZm!7IEm><`Gjy@1PIbs8&rlKWjn zEo<3MtxQ?5-WVA`Jh~}Bl%_UK&DSgQIi>0-acZm8=w}jfQp7G8daqon`)+f#V$co3^PB;&Wm9)p zW7qw$OpoQ+`vWBdqMn<}Xa4+BiOGUEpQ5dx_MYZH&HTAY60JYWJpV9DkBJuP%m>Ca zg4znoBmOwExj}z@OZ&OjIt0Zr^qiKjB3P?P5W0R%nl%w6t*PR_1Q8pTXr*O1`x=X~ zTLR37HeY@{{^WGpm9dvR7K}Gu?tY38y;i3ea5Eg*hB*QmgFhr{^mVqQA&2bL)X3sj~%93(#NpA69hD zCdJIP-Y$3XZwA|>_pzjqi~q3a`=Be-@bFS@Kz^#ZsE~a@UViZv*jb<7TKR+z95fMO zSQAYgFx}?`Q~EY&upRHVVIniZcEHgft=XOdm0yAoSWibM&t9vIbY`xk= z!BoJlki*De|43$w@AYwU%nv&(414(eY2|0tH)wO9f}%5daw~6pnk&6 zRmO>OCyT%~$!cnEd2&OSrNW@yrm=0OPXFK} zn9$8W9rM-J-YLJK^smP$YhMq~TZ6eYE6x+4+88|%exoI~BxQi~+RYA0F)g*{_+X_{ zomLz10@;I%?*3Z3pbEFw#E5=drlioUiFELKyFKQ(Z=~PBDvaU_sa=99I()bNJBeGL?|N}}yZMPH`@q-W>ZY=q@fQy+Y3 z0cg~;8|G30Cle7|9n)BRn=7wQjYv!a*<-;dE&ieY>HoN=@G>J5Ne;m}}u*CVy-0Mzy;HDc0NKveu8o21S2>`Y1ojASrg?B^j zPb}a4s^0b#%2=~0efAE56HVtTpD)`OFo+c9UE%3XW)=HUhm~4(aC&NrMdLIO z#idYrE~wDtrn1vtN+|fV;pfrW4^noW@hmWsjrO`C#^fa}mWB}aTV0-U zZuV>yAWay(8tKUW7TC=s>`$E!r(^;ZT>iGGKzE+)bu9e;!*XfHZGfFm>jl?Z#ZRaV*W80!iY){Wcb}SujP(`%>nvzGz3!4q^vQ3(?7Xg~u3WqsaUc)v z_22YA@!8hA{lZ}ofIhkOS=Qhk$8?rm=g3m3bh6_8-HRYaM*l2L%93323_3uqxvC&< zjo`HT(E0GkFi*S%v4D3UC2h!R0x6~gAHdK(drkIVdIn=OLy2lm0Zi<#zaL@>%J@DO< zoXJH4j``8(n10nvYNShMEDy!D^dy-;#lD|X))C-TW-`jWk-7<^D|xsLYxGO(D;ZWh z@1F%!akvn!C{@O2JX=3Q`@x@z!1X}hU>!Dn>$}GjKDM$^MORowl&PY8g{`$`)$-hHeXwGrxv z^{{h*^a}y#AM|274eS=|J*t@4D2QW>o8V0kUGgI8!fZ$F=+ObsF?7k?V;^Zcy>gl3 z@B2sL%i&W<1m)2&t|ju6RM;vwWmSIg@cjDGJ9o^ybt534eSqo=uZ&M~VBKpZ>}l;M zM{duS%7^!Lr5KW^P&W>apQXl$tBuro&1?;Gk|+}ZM71W3&sL=F z{qTMjw8Nu^JVT(tRU6CFLH|9n*md(rNbz1Q%~`F|_elPombTec|An#@G9n2GZ-zkR zMkh1n`wmpYgz(Y>v6Yr9P3VQ_+d-uA$&IAe*5YP0;UUqK08{(I=(mMf>0DZSq0R$K zv4Ch@NFo52^E!xDI89A{DJx~++GvP%N1zO3b_8@+E@4+>incjUF3@6?eG>8?9 znHyGb?mS%kjh6l4pZKS+{J7VRu0Ox8;Lu9V(SK$U!&%1_d7e3G#;4&7VLbkN(f_L+ zEadL|rjH5Zcvh-v=G{@89e&~~0_JSUG{!=!-9)k!q^bGHD)JXHNe$KLgBX8k-!PyMyFX8}?NJ@i&LWHp6Rv`HJ_hH}1P-;Y>?Vb=q0j#A6 z@V`{-&eNh3zvl~;F0^ce?`+(jIG-NAJ{u?pNU(<+h;LjPOf-Wl@}@b|hZR+rpfHl( zIM0qV#QMvb>-c`Zq)Wzj5P8;L;DsMx%ncqsCpGOuKif31dh#3=dY<1K3kM*^1QY}_ z=LL$3DSdRQA_mt6Q&smisIs(AY1Mrq(dT6i^8`v5^CISB(oYVF$hWeynS9X5h;)!+ zItD8pOkM-pJKge5hsjulZHk+nZEDw~=HI`$UKnji`Q%C@v7jQ2x*o;`)&e>j`}TRc zw$B_Tw8)9NRRHz=3=$^VMuo}?5iHy0^J(A_MjPTmgL8lOcr8n1tiP}u+GzI3jn`r` z&r3!y3_TL6pD9MejtO2Rx4+@6w@o$KGMdB(jN!S=v^LJYAvoso`?Hq6-!Y)G!jUn! zAV@L`HOJc6z#V%Ui}8E%>rwqf&RzfQ!eVQ?Fd;Iy$Dl>p;_#Se=mX20u@;#u>c-*= zgx{b!@!?096tC$}DeXL}F@J7zu{F|l|XMDjq@xpfN!!~!Z|Ap1_BO-Qm4>bHq%V*(UJbK17TyV>Tp}$ zm6(fsQieBOZnC`2q7gb@n)|!KrIdBeq0u-$XHTfa{mVzS*p^mDrmg?siGBwh3w!~-+4e2h<~a5Ng`XO{=Q28HsBrvXxI{OIVZhkfB9&y z)8zrN(m&W-F+jHa5W<2Kft0?!0tYE?8S=2<`QtI#RlUN1t&%^;Cxe;z*+I9AnfpVUF9b?Q36`X zJ$z4uVS8%h_i>8!ABW(uJ*)NK*Du?XUjtlP=?DNMm!Rl@=OmGG# z)B>lv?jrB0U>DG5R|ATp3i)bKjw@cQ-?Df$-pdnl(X`(PunB)sj50S#kZQ|*n{fEq z6K@owaP)cfj%9xhZ2el!>-Vc-&qI~E{6$}IOp=Ut=A^6X(Xg7q3chbNCl;MNw)eWv z7s;~gB^n+cDpRytOh6EWoqW?AbVdz6@YHIOEX@7wS)<$%J*44--TLH!RG~(&6i~;X zw&X`AU2N$C6At!LWd`{kM6mstM51h~*<26=SG$o{V?3p=P%Qch`E$wcXSEu7^)D5{ zw{q|G-YM@W3&95LO6kB8hg09Wb$kBr0L++wnBrwYZ%S|OviRz9Wy3M(S3r~hX%Nx< z%VA~b2uY~CPD2NGoS|&8_X#IJ??&?|GG?~usb`VCLlW}bZT!!m5URnDltbrgIsMRN zCr$nNd&~NgOKzx%(`jl!VUxhSFIwUm6zJ%C*~y*i8?Q3H7M%CwacNdbkIVbf_50So zSywiv>seKmjyzH}Q|qR7~qS9JCvaE3^fitF%};E`%e=gIQ_ma5mF&*Z_YhpUi?6 z5cJM_d9?Yl6HF0seZ;ngyZ{N;(|Y#bgQl#Ilo%g)Xa%j+0#|Q7&xFJwj;$u{Klhu7 z6F#~c?Vv^kg$7CJUrNS{t%qQ(1JV45M<(0WZRX5Be@MycA-{QFIF))k3g{q5s}eq4 zzMb9Ma27e)g>B5#?8p5DdE`O>8fKbJZxIARX>SOobuuqx^YL z@TZ-Z9#^>#mBM+QD4tTKh}fnpk$aKR6CV#aI_zEXcmPDw3xBl=jr z;GcJIR*ksy}TT)QUU_yVm- zO;w{-EN--HIg7KuhOl6VrQK_8&zHl9R9K}3*ixstZMa|1FwGAzuHDb@4+1|H#d%t$vP`Qq%DZXJ02&b=!d0;F!l<)gm*`{1# zmBq9Dw6@7VZj2b(=soPb#7B>22;woQ>G;`rjb_ALo)=c0*I3J>4q{lhNV{C{GisbU zFo|~BZ99PQk{S$)xtVJ7Z2tqyvEX8TGx+E55l^}r@i2*JDO}c4=v`&@g00WSsLflu zBkSy);$LF!A&7}VIVVmUS9?49XEzWgp7R@7mSLL)0~F<7Uv+is=@U1#TaBuzXhwst zF!eIijQW3lUkk@2r}ZYnt7HcuGBq0x|iU=MBBD-c+< zTf8djU83wtzd8m3#1A%B@8SEcC6KzO9 z7REjro}felFR37alIu+7UhRd z9{rr_-^4*86?yK$UHlK(HU77$K9;&cSKsBL$P)VwD{aR2OqUw{43H0u^NwwbwGllr zZnk796pi=*y0Zu-lqxB*;x$phK0%f3=+vew$O)Jrs}rX6B~6K>q=#OHpp@oK>BkUE zClfcb$K_8I9BAg4%A2=5{q5~}Z*KmXLcKp4exAA`$ZeQZYg0JT=^*_xz>3S0NciCW zW3cMODr6vCROotI5y0~-*2@J~W(E9V>pUR}$}W5$N>$M@Hce1BB8}2o(gP#hs50Jq z;Y}`kcu4+zx9%unwaT`7<9hjC+$!tT?DEzXG4u`@z8!dQ>I2<=>^SX89`^W;qf7a} zqfEfcgRuU+fRM7*o4%wjS9oM@{$qgG=CByKZ=+K^tNlxm2v=O&G-cv^8&Qb$-`5I; zai<4!O_cffrK9b8&q`EbA|#zz-1NB6ixZ21kAyo4Y}Lo{+X@jNyY64g=Zl=>06$aH z?!?bm-@SJK8n?R6A)z#HmQP*_nav_g@W=|q>;o=-)3PtfmJA+f7yVu^q=lu{9+|hl zmRx(IpX=7Dl6z!Q>w=+L`2Ex7dnf`b>ouUB!Z0M`6%N>cpzB-qRpc$WX*-dn&z2SR zsNA=jyam(R0~F}XP>u~(erP|Q&@h$LRt^B!&JhC1MSh2dslf&w&$AU2^;F0mx@VtX z&s~byhs#?>CuQY83=*zEdl&O*K!Ya1wARJFI)+Sg-|B}@luw^E^?=OffFIU!>+zb2 z=yHfq{SjgRQ^Cf_-T+1=@XTygK3`clXfNoi;V%klHqgeA$xgMl=L9kDP-z9f)J+-sEl9Rxv+8RcOxKA?&1i2VwhrVLs zAu?hPgu}Gze{c!o#GGU>70NVm@sl);I+B+xA2FJX3J8U&rtDsrtOzdJ+KtE1`)L z(bVc?uC&9PLDoJ7o<^HgyZ-H-l6jM;Da4`2AiFwCqz<2u-IHv2na}0+{zBd_?>HHo zKtyFl7dP7g(b%u0pH3U6Hu9<%jP5W^xhNE|e@Ib;%$ zUlX46MNq`e7AyCn4+c`;Kx9vLUO#7UwaL^FG(6;3P;9$kaKlPV5j0t;gBk|Ep2y~I zcP+}^`a#5<-%iAc9bwZl=oQdYhqWfoH!y~j`oU-+*a{h}ps zT_N%;@UKIHkaL?hhh`n2N$8u<1>xRsehqC4RQG@Ka{I^yp&4muQs5dVa_m!X{qS9K zA(aW-1_0RMJVn;ISJ8L(xBoO0! zUCvwSh5&}7f)5TbAL}s2+=K;r$e?Xqujn_*cWf3=(E|+J4`8pY?^g2Ivy7zkLJC#i zX-BYPm0IR(Fx7qW1N=n`qWf&wvcFMp4cgGk)XKEzjCL_AYJ$j*i9~F)dLs=Wyx}Ks zubDMYO{VN-!IqWz3&6;7<#7K_z(GvyiOT^c4Dbv5m5%9}K)&gBg04S^`gx?USd$l%!~gyhZt>K zs^qc^^(|&0K*7kWTr(K381ig`S|kkn(EFc_$&RpLp_+qDH20jzh3AAqih?ng48GC> zoMK;fpg#>9To=2~bt#PcdETBa6f&yRrXfP(S_$Z)o>-f-P|7{zfjK> z9~*kV$$I6uAVdqzf#|$k%|MFl!*3Q|L$J zfA@j`w^SkIc@h4i_;dFizS9@Ymsim+-s{Vo{IAzWPEKyzq|^8-LBi!&#@FPYjTDaszL} zY#`LYW|>RI%7ri>P0Rq<@NY)b&RMF+(G8qTj3f8G59*CAE;DR@DL5TB$VAtGi7eT< zbbX44NummTKEIQg7&2kg-_p%7dtCl#9vJARr8aN%i`ja9q z4wU5cq1U`EK$U+$`5k+`2T0~ex@mBS+M2>2sK>wl5_iKu;PV0jzfXg&u6UuNx^uub z(N}^~E=OeX{jTJD+fhQ5`^-1JZQ8YxzO}cfh0^3V>O1myNYC>_9?2{oi^br@2iF@! z>g2U@$JZxT2Ydy?w%uZtzE1LqMkY>w8lWv@Tg_{;Z}BNv7u|dIuDP`-KRwq2CgL{r z=nG?dn=R=5nc)i)lC-+bmg8TK-oj6bikI-9et%|5gqmLBvW@Xqm^ z1NnSk39_n4tLSHEJ)KQg7|^};%y7Q-Hz1LvGU*ho;Ryx3Zgh^z5&bajT;CJoKYCdX zUeCi>SK-RpA9NZMrgO|@r1m1X^yw%D+k(LuVsyV&KNizLb`jdVP-l|m=XAk>Mteje z&>!$f!T87bitwDal||TF+&X58gVQiNu%rqig^%}#OiFTr-G&=8m&|rQ$15e0xFYC~ zZ_R40@yH+StK4WmxTnckWe$X|_iOd!aMpm0B^GMu%Co)=)qAjGwh`(|g1SVEJzwJH z282s@Frzu?G+eoPQ?>>3PzjR@ZFVD$5Ew$eSvUA^0O@mh5+~ReXK=^b&fH7b+Tc|s z=pgqrDT!O>)g1QsgoB*~;ItYTma}SKjXqTlW++KXW#zD}_^vO=*BA;EV1W_at!>>K zKOt`RFdi>ZQl?4&;{`y`rqzeS_N-{n{vG?rIyLXIkqqozN0V^AcW2&z>=rP0JBh_K zf#A`d9qlhPL=Obn>bB$x(#s!a|Ef8X$X}EzP~z(bF~w)$?Vc>DIiRsi{)p=G{+*8> zgC4DWeZa0BTcdPP`b@Fx@nWAFPbv6Zu&Ptvk6%%+cj$e$b=C2jwXFSpU zA|EY-rPyqUY^G5lWWcVg84c%UtcueY)o)&^z22##=@NZW-dE-Ayx!oro>U9o`WluO zcqWKEQ|6stW+03&@8z$$*Di0^n#?bu*zfTO9!>7nyI#0Ty;%4(!K(TuayM3wbuGQ3 zNUW93av5pvxcaj7$tmXk)VS7{Y(>S9MbpYw$gEAj)$bw_Qnzsi@A;}-j9)N2i7`5V z*xwdv6qF?&+O~NzT)J5r%GLOrpUXZpU`K<>V1cqB!%v}B0#VXf=@tV%ru&4@MXsj0 z6OVgEu@Ct?FJoajG*7>woX}dXB2t>v)AU03tShutQp&{mPspyd9H+) zciJnh;&dPKt8h&dx4ET-s6-Tn$xWM~17;tx0H$uvUq>k*V$4(D#c`GoNV$^m5ESSD zv;kZo_ncwMaCxwfb{nM@lAr-@JnWiq?Ya8fl5qxH8$SVR>HXM<${kLHO^NAgI` zJQHM1lQZ0(Ikze9?VAagXE4`75r7%e>8x{qhu-7afa^U%WrEJZYoM3NQ^&jC^F9)x z?_}=8ly_7MLJ=MzdpqQoK`SVGP|I9w|EZ<;t#%+_spRe(^Nrv4$57$olU%bD_oswK zs0N%@53pezR2G%hT}VR7PGC*^P*h6KTlvrNFD1ab29Nih%&QUI*D8CCt1v(jGXgr( zr&z*l+5i2bXZzl9>g?u@@?j>fCz@3UWXW0M5^9R4l+?@Ak9P|GA_|1cD*KcTO3YxP zG?dMt5iWzOZX|79HU-f>w)(H5yvMNz_oEG#GrTQ_RBEnt2a9d zl-7aSULTe+dA4N&OUxMZ(_f0$@IxW`lCe0^EX5>I?+--|NDd0|O>l`ltC)z*g4azW zp{iE$7XpJajWUw8ghWTcvi2ej)$q|CfcG2e-4YDfKj5H)HDTJ6e6{}tx-H)Dy;|)Z zH5%mUx2pdJAj(DPJ*XHJg^j(|n%#*}-s&hn5~iG|m1>G|8*7Hy1IZ5nl(To^k2BbeC1OQw@*0J1V9Gk|7)O{vn; z8pLTY#YAqINDNF(2DCP50Dj0kQ?Oh4`K$Y5k@cs5YXI&kt-kP})^Rh|#?m9PXosh> zI%&cy`%5L>SFPcpgxSfVQ%NWN$zf7uXVMR-sf}C@Rqr*GQb>Tk;mdRt)pS7t{|(g8 ziKswnl$p=LR~-K>xD6y_q^_=U-J+ueTy2u_m?h3y4Kz!uCCjg zOQlvWf{l=8t5Xnw#Jj?q{z5SFiGQpuSk>111oC_H1EuMvM*W=k6(Cv(R)fQvCwkt7 z0YJlK7(2&L$5bJUv2P;&C!Rm&zqx6PK>Dn;B@?1x-JTo2Zwo`>VBy#6>VPuo`Ja^g ze<3@Ey51D~7BARIUy}QLx5l0EqcI^HET*(h#$&1wrmFkl;zXs<*iBvx4BQw=2ea=j zx+*5cPzb35KTrBU#VadFK*mUYoY@N-*z8k_T{eCq+5WbIs!d`An}bIm_Pa0fK(gq} zBtb!Ev6k<3voGS%#C{vf4G|pxwHX_!%;U}=-gh_2Dmm}sN0=(xWEfQMjsJmX8>{$X zG#dYc!%YCKb}<*lBG@@L>bldv3*u*8gY`b5aTvA zo-~r!Jeief>`z8W_#R~A=MVcVB8=NnoePLB1&i{hQ@u8$A^Jiat-)>+Jjna~F7m}7 zd%IFAbc2n)JV#+AB)COZC`}w`QGUa3A9cd?kUB@75KbbSi_?g%{ki1YP;d-apv!~S zXF7w7zVxx+Ohs`xhjltn6!pf{aAaZfG%jq<+}8>~iVz0B1~#3`-H7UF0C}6f#)>!T z5y}~6=IwySbn%h6hI6A@UQFLGMFdMr+D@X_HAvJLt1kYOzvZRTaMo#&9%P+{wk@~Y zNC>q8ae@J&ZYvwr4C}nPfCO9j{bb5xwN1(a_In!xM1bfea{8vt7|KWceJl09#++8)>R!fEhvD=&XcSg$#+&#OBh6S~&%+SZ;myhdt# zUapf<#E_QZ9iZ{j-A-%Kbc~Zx+*NP<`EJ&7l{sguu=x1JZ_PmFR~Wl_b~sCvBOmi; zLZ_uB%Sv(96Bb68l5Bqe(o3gOEj}EIaeF0?#u@)!TS2T#VCk2_Vxl#ST`^PzTBoUK zPlV$)bMjng%NEmKkEA;t{(9I_wxA)$lB$@)2AyVK0OB>CCzrfVaepf5btHd}dW!g$ z;?`AQqKeJ}zQa^Pn8cXu9)y0SV8%ul!Eu((X?sGGJe1egkfcxCxt6!7pWe*fOB3F6 z`u9g7{R*q^PP;=9T&J6~U-C1-YkQB2!L^kkAi&z8a?o}kZ_(quf|QUO z5-0|37$RkFLaQ{z&pGE98on+?|LUSi2J#FBj9>7n)my0h=xmf0Dw5Xo*RjgjR4n_M zLFdcK9`d7~f8fUP!++pfSob63cYmd=wuQ()+_p0xouPYplCNEBM}EYz2OLK1O570C zIO_*^;PmYi5Wv<7zlY24(4&3F<+@+<6vtk z$!X*_)6n;T7hVsAv7iD@76K-v+)CDc_yu#nMcK^a=u8^Ud(i#}zRk7vSWBx$JGj=e z&Qz^?=%g@|(7SeuVXPTf_lWpN=`e|^;v*U@_ikkVSWP@H?8YwpBkxusZC@*Ld5#zF z!*0i)W{%y+S7AWvSh#gA;^^5hl9BCr1=+jm<5g6-k*{9AVRyRR|6ATt?1%htukVJm z1HACU1ckSEoyWHuyb<=KgIbj$xF-AEo*^|W-y6ulc%$ON)@F%;*>2q$MWeRHl+I$y zYsX9IToT0`Dx&!Xk(!m#00wCJjt1LO)=yX1xO1Ydp-}wpd&RAu3;2C6NAS5Gg)05W z@!RJS098aCBEV+Oi;03i449Q9Ql@5A6v3`Y@x+AeqbCrt>8a;y4 zT{OE2)sG6ZbYu$>CUtWI8GK8`(RD_fo)pS-Apz)2aV7lxC!zJcfi-mq6E_UV%>L+a zAQj5W1fGc~2^A&zOR) z^UTV$aLa;)D;uHMS3RFX64k6$UY@$oBh431=TC_~*lb~luWmb+pQeG*lE1XJW~ghcXx`{c<13Ed4si7N83NvYQ$P{n8^m z$zxcXy&pVAxTJ`>V439n8t;&rEB3LKYkN>@$(tC2| zvgYmvl+I-h>}dYnf96&W_q$PDW-31GuRgNk;{Rh0e?@6gEcmTyAb!&F2B#F>#P>$r zA>+>_hZPruLmPJ@Vq7WxOF?tV+=k!guYUiGKAGW_2MDV{YNbpHrTMRml94PgOIh#? z%LVr;kByA6X~U&RV@*x^ECvWiaCvfB+YL_|&0AzYJ7yWp9_R7@&~%njZ8qW7P6+N! zaCa!s;u_ptt5~t31&S0&fEIU(YjG&W-4dMQ?%Ec2DHb4y_k7=3Ykoby=b5!<_P(#p z4B)vQK4ZkKPLPI31xADbwr)7V>uvklsHUq9{a$9lO#1d zOiV(=6q{6BNy(0a*{G+U@6}QIyE_cRbtr~M*!n$iFja|3CxP2&44w@&I**%#PCj;& z183IT?x9Ub=466Jo=dp)I!G_q!^ceO4mc0sl*`?!YmeLMXqm|mfy~^JpukHWeX|PbY)q=e4nN@ge85Kn@6wB0~PF!w!_=R)~#Ny zZzPQqg8z(*uZeuJjhLo(IDcu+g{d!V%mdq%AP8;r;`_E9<{i7Vh(C-?XTnlh1Bj9y z7U5>v0j^|xCsK*UQgc8nWwuylV;CUu!uEShS1$I74@ZcsH!=^V**!u|O|`n#=n25< ziII>;*X1d|#Cn!UtCTsfl|nfK0uy+F$?IPnbE>q|uQ0_B`u)&{40!0K?BmU*XA_E6 zRpC(JI+2B$61?8A9+lT)d%YowAN8(SZwwx!QGrg{yiSt_Q}SFT>YxE-WPL3*9W~i5 zcIN8PcE-ruBG50RAL>~ym)iBJP>`ZcCopUDdj%QmWZ6*kMR7hAwa0ol9)pliA&wu7 zSgTh@lefR^>|3OEJG`lMJI}`#Ze3J&h8g!cQ(ea3t;b=W6^x5Iq9~kezo*HZx+Xke zSjk*R(;6$%?Z@3e9!9L?!>Gpby#ex`N@sv%Aw`3#rkULa;=N;$v#3hMsQx=dv0k2l zw2%izEG&Iqb`e7lpuU%#GL!NuMaeO<6>3--+2hDi8jz4 zvNAO)j4}dVClg15Ip9AG9{TTxvhy#JSmiJmd#nfY--djHO5O$4U@C;GMV5zw=IO z*CWUQS&F>P#NW`iYhR`lXe!eDG34FF^a}Lh<8jdua;Amet#hsD@mjCsk+`^+C=nQs zh#*9?T)@p^>(-l(%N$IyFB5B2}QJ(nFtzk3s*Mcl(?Tu=Va)X_3;q)DI~U(7!$>R`}`71 zZ!#|=Bu+lE+IXr^&!DG}*ZBQ9^HApwxwdogxj|ldSi$Q&Kg2Y3gqY-t0}h=L&UXd{ zamD{WMcKOM^86{8UKkf&z-ZF|v*t;e0$90Sdt@Zacsvn7> z+Z!E`@yl^;cZ_eY%Lr$L&j%UQ)2Xxx^)NMAQ%9?l$$=o~3_6Pi$dHjVNb}{*skR`qnx?)5On(}u~Ky$DT^K0+T zR)%Od!6YUdPD|Wli9t0C$PxDo<+Zn6VsGPAvS%K$J)$q}U%F)YBKv$s+56D80$-gk zO^^mO8+_v)Nn6roeqsCkWfXtL=VFZ}wW49lsDhFjmTx)E0NmmtbQIXh7uh+qaXlVjs8N zO}qcS1HpJ6cOp?wY(^vu@$Mh=&(nxe-HJK?54%(;!HtR+PcQj7BHmj?4*}pKDiGkA z5?D*pjR?u`_watse%}uq-8QTo0wl-P3IQ@8!7CH2WDppS z%}yJubCq^BRo??;?>SBG<2Bv_Q7B`lPt?^pp0G#7S>h+d9p^s)Y+funB~6dPGRh-ZG9_-c)(+qSMv@!NwssU_-Tl2#}p@;J4PT?=>@$(2` zaSPHI=k_?vB2~}ja(ePUt-M}hNSE)Id7yyDcN3_Gc z`Quze)_WlFhCfx@PpC6$?P#E#a{SZP_)g))QH}`bTeItzJ4hklJ^0@mucP}l*~>Ro zicdTh@==C|yIoPD#W5=QP%qz3Th{*G-x4S0t!mSVo%~Z%YKvktHM6S8U(YanU)!G( zVqh<6apnai*u3Bs)L*P(u+aXDA!WOM^U1&&2Tqu|{M9+Y>0mIF(2U-AbHETutP zlgYyB>iH+HVuEiSNlfv1rM@-1yh$)lQ$oKo(>=3Rs^kKqqNQT9?^~xJ?v(B~7@yKd zi&%<3(LD4>EmoSq_dUaedbl z%G#0J{AlBpV}NQxrJm-h-?)+i+egs2IAG*0UI~vf>l-r>aP%d)1yucMZ-E~XC#vQj zRJ~#&u6^fE`d-OKf%H0_#WMpPmE>SXLT!}^uOtT zb83#T_~C>%I~HH>+})(P?098r$PcP z5!!2djh$M({d?7p*P%^dOQUBgsTxsa_Ho9M7D&iXAVH_f7%u9D7bcdF*vrFZ=Yxt& zH^WcxY)pR_|CE3kdIV}YrV)N5wLma)n_(MEHE$MvGRq$Go4on7CK@hlx`)Ugj8R`~ z@^#hx>`nG(G23slYySm+kH_zYaJptGaalwgcac?=t$8{}-9*is02Z$?lz@cze_Wmt znSo7sXA}I$E1>g9YC2&~q$Fos)b<(RTs{N9Vuex8gxm+ip@_>x;|O(8!}YAwT3rR; z*N{fuq%oVeZ&$FOb&69JdQAXwJv`kS9*;SWr#IT%~zuO|EsjFFx<#uBs z4e!JOExlh#$!_w^psclKmMgSG6m|1Of~SIND{M zNC0Ewm*bviDxsdMKd7QRp`UcMTS_C&y!vRKFj2Q?!!e(Ai2IUe^ z2Dz2Pwhs@3(EAjIXqRI(-aqd-8DB?+KTVg*=niJqbE>&K$xbQ^ehlzIlxm8^$&(6Lg3v zK0I%uEu4JO2`j&>c+vgiUEw)y54abfx9P|B7apOWso=H`XuluZ?DYV)>1oxyZl4z= zZV(kD%A$ZtZhu2zamSKHRV6z-92;YRYn!)Y+ReWOinAYaeR zul=_i?+Z@fX)35bP1Afu_f-%v=iY>{$%Jww4lPcNqrEG7sA%Ukip8{)KckqJLBiM2ydeob*jIwv?)420l1)n`4jMl4@C5r$)=*v zit9eehj0?&Futx|w|V_{gE5K)MNs%#Rr%l>rXc;6m6#P7+#`ZD*+UyHYx~&_|EqLi zrm;>QUNkm1lym&;m6iTM2l>q=-wx-Wwb04qCsnM+{UL`A8d(9s8HF~VfB-V+1_ryG+21_M!E;s0t-X`?J zt=-7@;MguakO*(zmD!THq|=~4=Jer5RZx@pMp9c)AQDXgdP5iH4b2j*KI%ACw_dBC zvpt4?d(^H+**fp+=1M)Z=?VearaF$i89o&IMO@h21^yDR0Q)g#G`<$oHC>qllCastyvRS&!D`4aOUD*( z)vF?<7jiB91VW%=y;(wAK7S~iUyPnjc*LrwiU>skk2_VR{G*nab=|zZrGB6_r)#)^ z`HTfb`suj&u$%x1#yELo671Kshz-bUOJEdYbYBfCR%KvWzG#j-BWnW@;23+{RSR{e zBnhR1iL5mhk5P1m-%M2emXu+x<2`EdmLLQ2E-X9Oi0b|RbSwUM!}80Q*=~l%f$n}ZpmiU0 z*FKy-5dWKLO@+UEcU8r3Q1)q@=!U%8{b?uHG}&GDgqbuq9V;ShSK*aR!`1xz=Dr&m zvvd?%3BOOUmwuTL!jpR{S9uV67ajKwOZ19c-?v_iExKcB5d;aR{Ar`Ekb!=C+aV4< z3$;h`Z$!d0*KlQ<$2{+WBL=YkqairqqE+RA1)}dg-!Wzx{Xe19tg>Y1Q>38sKgBCL z0Q%AV>3e`yeE`B!j&xJ>=%s2o`o=a+t#tjUy{U0!`8O;8-%jc?BXp~F13fq6jbAZN z^AiE?i|3OuiqA6IpoQ-7NiD;2Hh>tSRIk zBLZ`nDKB2dOp(Ms?irhBdTG%XER%V~EnFwk2&}?6G$*}qt3(l3P@~d5dFvVjI>pT! z77_+D(r8Z2eo^RCOzul!Qdc zBtDn!6G$1K2pvC?r9Tar0N;H)aJWpA%){Fyy1u}2a^IVj0Ej25qkm-^n;jJ+vESpVR9^c;cql!#!`b5z^sCIkV?Ki zQ{PAHr$kiYgPq+kxz+HBY`c+e+jM+)7Rleoj_voGQWXL)R}_*Gj@l%v_s05iebirY zeu3w;#Em+UB?maU3F9F5kRzydqet5Plj&xomUFpO_>IuG3|t&=Y8_qF`YVpc!uPi6 zK`7vQRVT2n4&Io>R+>a;ogU--{*T%g&%nSrjBaw@@52|zePOy+S3NU)$KIc7nbWUK zb6M6ZnvqxhuTZ36>m7hY!)TqsIG-F{ELsvlXUAl$B>FXcZ8WS#g-M?f`Yg{MY88`$ z5J}yqt0^WQ-QR(UzaKa97W&R!84VXPZlyJ{y^!Zdhjf#F^!_)rvbtVAOwFtU&om=v zvcW=xE2Zil2}Y)JF+!=w{QaqFm&io3USapQ^BgcGE(8br#6VOrCkp4LNWeL6$@afY zZXXGCGby-PJZ1XDzJ^?ztaizF1na|sFPZl5t|McSR-wP7VLR_NAT9P1ja|cr z_|I3HZWk^T7|Yr_*lL|?f?n&ffBiM8Sxcs}M~6=TzyYq)K$5p9^pee;&z|+a+{wI) zXxOOlS#`XQzSYc`e}b_2HSXw4$bBV4bsqiZeS`>az8q$F9XmXKV-H6P4M@Je+WjQc zc>fd~wRWLeJ5V+MAy~$2BXPwsK^T*L9SbdSae2zPVr+Gbl|=-Wm~LS5-B+1 zHmN|wscC)OBK2?lG){kuZ?d9D4P`l0T`bJcH~Gxids~4 zqmyS)B2Tn?_ZuvCdh?<={;3fI(Bw#j;7kXu3NPS;o-)$rlNh^m5-?O*}^-LxXVUQ58VoFQ8WOh;ZRI8|Zh*S{XSc$Vu5S#V5ab_go z(f8w;;G21l08=oe^7omf z1^q2>RPhv>dhLM+{aF=XSvW+%e19YL@zEjkPi2)Ul+@ZGG=qF#25cfG^yf3YwOXa# zra2^rfP{QW(R2(jIzcz-0KgFIi`jEHZ?afpa^*)B{PM)43L2(u#r|TWsPgYW3_mnV z+*&hXix6h=#SJl(3J0mjNw^|qy~{FZd7#=Zn4eM11WR4U>*ASO#&vEv@SAa$B<7|)rxz&@X+jQqwOG{R+lK7By5eVvt23w z7l8XAc+TFs4h+8OV>8%8u3yD0FX|@ zonV&IWXJqWQ@x}mHA;$$ZiE>>FDMzW8vHyk@9o00Ek#HxrkX{ow*@_ZPK?C{kBU`v z?^4KbDC>k&*`thP?3|DwaRDn5l17IDSLY=R{29+kE6ji@~36TMPZFyUOQ? zu`uZa^EmCfRKORzhOoQKstMT&a#+WUe}gA}c7c_gQ7$wBQoNyMBMScY7hw-Ll2)0S zW1mwn4~3CJsB=CNNQc@Uwjf5Hk`Sx=REx(P)vwi4+cuefx~XagB5V|1$~;aRQtEik zKWup%-hZ&pc>2&Jkc`H(flyO^{=FI!Y}dU4Rk9{9!lUaY9n@JP8IE8h#8!sV|DaZ3 zOTk>=XT9TnDQ5;@zqfXa2ku%>J;&z~z@z)-Y`Qj%z(HdVZJP5C#(89q51lN^;fYMf z;T8hD*@;n^>@25*^^*f%Y~K+9TI^4~@4vrr_M2Mt@pOTBK|~tK zVA2;38E!kg_Bf(GBXe1gwL<%}o%XIFZNwD1W1|DUExCA60Ho+!L!_f?|*e_KB z*|8jWbWEazM+mssvJn|n5o$rKDM zQJ^%O=lw(?7Fd{FbwN&iYACrjjzJxWBZ%h1u<@U?ef=S>^F&ty6(@nS!*sV0 zL7Yi9!N&W7W-&8GKUOOw3>^}v z3F@{yEV)XK4DH^kwv{N1AGCm=J-VU2<_8a$tBw&gjrLHYT1dpIpY z)*fik=&{`r=y8YzoBV-~IDS+heA>0aWj}a^>5ZqWOmw$5QacPBQYDPy0yoc8#qhV3 z_-Yk{;lJSgR6d)SQ02+|0K6q{Ny-sdr~a?Rqbh5Ed+otQ@=gw8pqxT zOmr}UcfnitJBauN^K#FWzd#(o#6QUA-^le2Wd?ZvQRaytCBj8+pbHi3B^|$~e@mm0 zTe-nb50wI;rCqolS9f5-q}oM%o@x;5$bb-`C`~+P$;ajO*{~}BV*B&rgU!O6%t;8* z)o|SvQ`#wS6A>QZhH5!PrGL%0x{iXewiW;NGqUPgm26&dw63S;*_Cf^5{lFZ0i~_Z zg^kE7Z=>gs^5~66w$i}gIba`P+XLP!jyYF&@9>}bQz`*~-&g#w2y>f$AXVgUw^`FP z>8Tq6vta$NG&4(ew2(lx2$R3O3X5b-r?T2BEVq)#;Mp!rW?cZH)&lp*?UTcDom12L z4)vB^vEuY+M}Caoe$nIJ(^{x_yNZ-T92KF@|)mf!84xz&oY{F`AykUs|Dd}`F5 z-~5812TuL-q!mJ(cg9f2v2nSgp1{7w{~bH|CCa(`;W_3mucGnH?%zZNHUj)N9`eEv zPom0h*-P_c(stibf4**azc!4MKt^5^mU1opg@=8y6-d~~WvrL*+j4Bmk3dkQN4Hv{Hq;Wz+j@J<;-US1cN0??}#MtE$^8;-1(kgtB=gEgixEHCobhYoa2D~AD_@mmr+u4E2oQ59= zOxMXlsdH|SPG_zTm5=rSnC93+3lSfNCA|=Lw$E(e*o*=@e(ym|s6)(V_4)38n}W z={9K81VJi86wdUr;?}~*H(7CwZWA+3i55o=8|OIshT)YqSAHDl1RyP$|+xM{#ckf#XO(PX*S>$mkODcg?)?9Ex;LSog-Z$$vB%i*CN5}8KLD%?JYN2@v zGb7Rp5gZxdvGcR0GUHIO#>v4b`5k1xP+4{$;b6sOD?fQ#YMgf63y$hA5Ehl$~+n{&(4z+x@sL1_A)DRKBuf-kjhdD=K0bC z2mv5*Jqu{-kdXSkY4+k-%pJlu%NL2G#eHl%FdPRT0if}Q8lRR?~j?dz$Nx z7`r*deGUab3-NC&YPN>_m8cj%5RT|S>RN7MTaLUhvn5u7eY1&s^rLCp5<{_AM2k{C z#B17x4Lw-Vcu9ZMpdkh!MBDdqWSBIO!R_F%XsCs+S(Jg$2DqG@#}sPf;T zmn>8^l-qyz$P@#>@FFcR+VVWU#uAA^BXjOwlw?htJ+Ydz)utU*{9!(fI+WKS%l(`k zU%X{{@h_yT(PoZe`8a%5K@q%tkO{0ejh%-EMl_+W3B92x%3)4a*w(4}u1^g9+qjrL z3%i?kA{R_0RZMQ9wcUvl57^lRY&`!09K&VZ3>=+|EoZFiayr#BNMN^st!`|EWext6 zz}hd2WTY(X?bZ9$sq)HjHSA5m=ZciV(otX|%!KppPY0_dys_Cl$GkrsLuXE7L1ff} z%9}3QffxqOgw8-?9c)|>M_4(3gVoMTNCldS{OL=TalYMnF^kC>#rdsG@Yq!NacCdR zN+M0s0j(bglZTA!^lP_>C@(p_ZZvz)yWf&}Jm{P>j#=SRS91T*g8@Kga*y({bAlNe z3Owsbkg@hA+iqR5-HZp-ZjyvhIDuB?#*kN5Qs6_l2lQiB^ONs-CD7=xvR5;|JLRg| z5xjG9WPP!Uq#+p3X1vB6f`4AY0=C=TKMGMRKe-CJjjHc^0c&;nS%*yhY1JCr)3be{+Q8UZB8`)R=u=R zSIPbvLG8evubmA`K@gxFg(d{n_O$5lX1!VS=ZUniDL_Bk_l$qY7^z}Z`S<~n7qa5L zl=nX3RR+GPGleCt9B@}8t{y;jLjxh0Z@>oGX#>zMx~E@KgqpRhNumbupTbBS?nh>-1Fch= zjPfK1a8R^7;OUMA1FGRq5R?0o10ZwmJ=KhYv8b@+lg_@IVS-LnTx#<}oAoVl&};wZ z;^ak*oTDJeoeK@%Sr|FfF!?7Y>xmQJo~oMUWMC>9=8P*01bFHYuKgtsGfe2*FMwgG zv$abRx8BYt#3w}XJRDm|w-dmET$Lf5h9qx7l^`Qg#in#MU(VccLVP77Kw~S!7R9JFcGY>OQ%+y{GlZ z;y@S}&W?x>$Z`S+Z(RTfyZmMf#lgvx)x^|sZ#}IV1K`rHJ!{91;{Q(C9vj}$=3EbD zY0=sZ=emcEFMGgX7tSc-u)7lB=dzd~+fPTfouh912GQd^YZgkv1Ps`_oG>quu>ibE z<^COA4~izn5)G2QO~u7_8=nJ9a|e9?og)c`U>9MS6t=xW%R z>|3C?^Ka~22W)D{l~*^{YGvki-PbHvi{h+Gyd%-LZ%KSPC-}iQ&DcHQsTH(bhx9}( z646L*FN9>g?F;%wG(()s4XvWME8^i<`ya6h?hTMa{z2Cg_p^JpRL^LE z6a>QT8n5N8*V?j=d>M?Cm;MirLWJ4^lgHA`XrDjqEAHKAbT9tw#f!vnR%R0dIWpEcx!l=PjS?4h~Au z$$cl2H^SWUxKUh0ohdzEz)3~Kh#4Hgt)TQ$a}qsjI*GH4ERWNC`W5IiQex?$Thk8; z$@w)eUsb=`zUAUzh3o~q@aEULl&=weHxr zbL}oUUDBc?_qwsKG`t!RTyAN;tT_B8R=qrm6SQ$p67<}&&iv$h?WX=Sv7DmR$3@xhD|rBbij_roWzi#J^cSJmr1Ib|X(+J#Le4*4hM<&A zj{kx{B&LP&YB1qjEbSJBjdIlwX$wP%1SJ(i@>fW)t3xC@C4mC}0>d+_h=jYSTtodi~_23u%*PGUu1rSgh6cFN>6^&Nz3HFc3dNnnk0 zty{$NVvc_Dp{z=L$;nj~u2(NcHbMq4-7`Ivz7BT%=##(*W@oMM9TDJDMXp3s618d@fm-UYNz?~lYo7=vS9Sx!1CL_ ze*Tp$ae!Q7tZd}sf8NJ5;=iH5Z-%{>tATTeQec*BCmWsihsS`#FQSs z8P3L^7{s%9V8Tsk!|1L^OZvngX>d-f`EB$Kqz{m1nf4tMFI?kWa6x zuWB7adp-++e94J&>6+2uc_^k^t_#T~^+N~=m09Hl{@IqGhERlb1pTFIPdo2-on~xRT#r>OC&3qF6 zrp}D$0KKCeODj9MtOo7+qsRR?YK?~DzSSlF`4a)vzO8?Wvk2@wi|50Uf#r0Om|KI5 zL1=TrupdnYqte$j_cFRwR>2hM;48mgf{g(b;~HG0vjgL|h{mw&^S}9MeB|BQZwdY6 zha-e8PNwmHyzoF;gotbs40^6GY%z(3tycF~epTAVzFPf&*7}-s6%9+`dl3e4=k=9m z(gA6JqOioa6CrBPnJG26Q)F0Rn{+qDe)Xdo(~97S>7s*WFtPPw&osOkmR!FR7li3cYdw%1Ae^+l87@|(4lJMs4D5}NF5DrAMIEJUB zzC{;IL)4Fb!K$WlxS%X*g$LbfizS!$g>w&kxtc#J6bfwFq_lIi; zK8kl{b2xN#Ym%&~b6troI$%bmyzh{kzV+VOgvUC9#*j+WLZS5AH7Tj|j0mt=OG!M$ zT(ELS0wZBSArotrymcMeg`vQO)x)zj2f%+Oz|qBkp9goYFB)Q8?|5F9m^8=8S`*v* zkxf1^VK8AZXV=<-9z+i!$-mlpQgR7zw;oM;EqEZ*sR?(TRMe2EyFW%n}<+qH?OCM=MGeKDM1(@B6px+o4F@P?2;fkRLjjaSB zSB-03k=J-{we77wPOUOy_MltzDrPRDVeT*;=wOU#@NseLqZEFs++kD7%D6PLiAsHIX@(lzyQZz{t|YG1y6T4Bnn8TbKDai znGe-BqGxbiYD|miuXZQlRxfp?QM}DStE`VyC>PaF&rUj~DOWR(>DtI4z zMq=U@oA?>kbWoA6r*>Z`c$|?h7Y#4R^ECJ1?UUj9pmY>qUNdml9jMY;zb0|>$@g6w z{E^-NFwyd2Li)ehi|cfb&u#9(gxrDmC!f^nkK1FF6DtSm`+oIGVa`^4?u~U^mk6yR zyyORKn*8m3b`tvOKeJH_nLivll)<$cD0;`GCl2;Kv~@r zac)dB8_LG|*m3MVP(P~@37o)EVGJjk8IBCnkA^oC@#0Aq} z#+nVto&IifJ-vFdkqPfa*sZrKv^lDo*Ki|qfdB`deS3VxH#ETi+I0&# zp2slM)iiC>=DnRL)^H6NPkpyvd7UC7s2`|xv8@UM_+uZT(+O%Zi!2j-NMS$U9MY!> zP~QS#DCVQ1DJq-%fYH6Z;^&9_!*V-sm6(!8TKj)lfM-w;fETMu7VtXA z2IywpYMb9XLS^_Z?bETi1NW;H($})D-a1VE64^4vAjP&2GUY}T+9Cwi2ts{t5GyBF zrCxd3+oAm78dUjdi*9R8Jh!HhV3(qXw>ofk{pHx7_YB{9%y)i-H-qR_JeH{ncKv-- zfYAJY^NJCBs3aa-i2#IcQzbv=QR ziP;ozUbwjC$2jL*cBiXocfVfeD%yNyBfCK_^&flw|E=`~gI#?DR4+EBwdTz%z3pNhP+xYY2 z7uRc*jjmjcjn5L3kjI&6Xmad}z#AcBG$BW5 zXEJ>SQg~e5JHP}#{=(TJo{xTT%(09V)^{WGk@8Z^zSSbT8<6>;-{D6!~h+pz1$Z6r1lRLb6YtOTbemo57R@;jWxLgMg z7t4$Ep>1?^XJGbP0oaBwj1%Xj-+gz0HS~%a2^g1@+B)C3DFu=$|JzHD74C196LCcHVYrrvUH#E|HGLV)1%G16Z4Oj-GHO_sHx z7MTyWz^1nE7RDr9BU_8nzny8@A~(~rC_ioE*m7Tx5U2dmK0E7t_tXEB=XN(B6PfZA zA)ksiI^!AC>u$gfeQ#l895jh-aARSE;qgwJs zN@$-*`3H~*pFpAy=O>1nT69+=1|~gi8aD<-#aSyy!Ni+z5{TtrtKQ(o3asHbQrRBk zD`sdaVX_MBl?3AGASdgI+Z?qh?gdi5^!AtfgCu;p!Uc(jf)$Nk)0ya)&hUF^xkDOGs3{}PICWgj}MxrhX z@vP`5AToF?76gB9+YV<|= z)-@3R4SC{B_28Phk9vlYm!7Nipewhqg>>~rEr8IZ{QU1^+B$u5NZpns#sk}`e;2f% z7=N+d$)f?Jp#F|KIuDDk*L;Q9TlL<%Th=bi9y4jnR3hzxk}_3CkTT#o-NkdjA2$7s z%dhnkl5TMolzJg_FbTmq9Aoi@XNHw;(1hqzk#u2H5Wj1={}M1RuAN<+@U}kh_0IlX zyb&w1dc_(71qoB7ql%ik9XB)ldX9bZ5`1)gP4sF)LaQ}Vn#7MIX5SQ#3F&x0VH=2> zeKEj12_gzp&KJ{hdO6-J@(2TYJX2yI3MqX2NVco;p@T>t)laEmWdxAF<`S<2F1}yWHXh`D$o-LaPq4R zGusuf9>d-_K48JA?j!FrimVOI-D+V%mY4)T2pUv+0C%5U98s_qlBtQ9RXF&|Vphyn+#Ny!zk4nY1sk!bHhn9oDe z(yeA~U0AkKs^xc3ZMvOd0Voj{ctBJQ-zgQe4+zaSNlrZ#C)mutF5p5P(;ltUW~1gd zEMlRKZ7Zm|wg})v;|gjHoF*KO^TedMd_3v`H~|oc?noU8lA!6T9avXLzyibVXB<8s z3o*DCk_iagsqff)L4V(lT9#3@l>BN3pO4DJzHIz+)Fizuub`9c8lp0}Ri& ze|{z!U^q+wD2=x(B6mu&+xw6MA7$R33a+`w@udZOLkFVTs-E7fKm)w^N!~77{RfA3 z7=RGY>^m*Q0K$rQg{&ZqrT@_1A%Zd}vodJNnRnR0=!NFxv&jq$!*mae;RCU%X{v_u ztgRF!age=>I2gKbQQt}3B*8(icKu%IEukRBF2s&Oq1IUU>wr;W-^ehQLTsnhHGwvy zlGY*+S{0tD2Ork#uuWkThn*_(sD46e?gGmOKjzi7Y-6i#Jdh5g_ScxFAItR z1hNNC5t9ql(ri|B2c>1p?<@TzIhXK$-mNM^5P@AD^hjP}H)nX)74gj{hr6~Xh_q-! zN!HEvitXe5Lg3bYYK9!bx0(AV$+Olb1VHlQJ+PR2{T(tqKPPHwjr@!H#AC$56)^Kr zU_vPUhYJFz(I6a*qdgxl4*|OCIO=#Cu6X{p`Xn9YW%&#AK_%9-WGbHg zbNcAdV#^qm(j|cBRwc9m3zfxB<}$z1qS;?QO4#SJ;_nT$>Asp#j8*)sBl1xD=Z7)V zk0};9iAA&&O#J;o;8N#g<(byxO-w5;o)PvNz*h|tLLsi7hx~Qv%x|p5L5K|Z$4{Tr z^HEsEzfou66LHahuM2O?E3(m`5^0iBl3a%L*qj}3GXOWGyRk^Te%NU*jrkw9Ymt<| zkh61v(=FZVH=e(rjvD4lTm}U?Q^m|~D5o!~?mqWXG`BnO`rG5R78=HCv1z^cqk#C? zXN3}c*oDjIHM^s8-8hv;x!S8qGyvRI3XAcoln=iyg;U9wdyd2q=#|ZzO!Q*t^$M3> z+T`a$18_M&qYFg$OO+vBEcZ_m>YmW~f%CZ2ALN>gIDCP=^qy(~zbXX8jqanAd`U|_ z^;wc}aj?j$=F5^HZK7*x;L^-Pgb-BbS9Mt2Px@R>Y_BH()nsTZS1inF0U9zQ5M8wV zVwNu-0-c|1s?=pgpIPh1LDxZ@mM8U~Es`o@rf-fF^Hks-165a6!OwQuN;rfWL zZJ`J0@0E%c{2@H%Wjf;1Z1&ip_$H+JzWGa3l2=@^8`DW2eg(juxA^o_?^Z@PiJ%wx z=lcwfwV-3_9dy&u8JdzU38LmHGV79BQipvqEMni+xDE0`iA(T^E>%1-&^~&YyY?`Q{nzVxh{Yhv=)5*N-R;?B*>b)yRf; z_IjnqYMdh@-&58#pOOs6KQ~}|501ty;No4oFtnGX_>NFO3jiCH2P*t5mqg593J%2o z(H*ZZRj&}1OUDkTGYAfnGEIiZ_SS;mJ#LA_ns@fK39RL>J_@8z#UAIfOn>Dd{V;+C zz$cF7jqe)7uO|Nac1uU{7W7_9oDy%vf(bJo&mx4YL}UOB2iPAgPX{sJo3Y`(NW8Vd95G0VVKGs%7Ya38I6X{1wqH0St}>!dI*j>FEN<=n9T*;cPYhT8tB;^YG^p@?q%)SIch zN*h7$zF}VxqgIY#oZ^oR0>+P|(a-eOAhgU>f~A&_E#78e7<=^!`h>w1KkM12O8o>= z9NPCw6{Hr_p8X+SG2BaxL#}Q`^06+}8hG?+BkF@X{}Ao5O8EqfFH1{n4#li}72~uo znB@NyKq5RmEM9HC67vQ*NwRJW6H#kPrI=+qP1EWhAl)wY=aZFP77R$bVLHpDnPzGE z$dbcBhKdP_Y`)b3S!;9^Hf0p?;3uXSEtu96Y8rey4z3p30E3H-EP~Kn3Q?J8ax$ID zok;WcX1}O^aPvQ5a-IFdC=ovIAo~}EhORjHMVHW&3#jfM6lqk6dUu4fI+hz_y)Rkc zX^X5o&S-nQg(cl&Nt}QGwB~&qHX~~Wuvjl1Mt)44b^{UH?)4Y4BNZox@luv(kWt1{_{SN@wKq$Y$8kUUClSNaWvi^oo=g+c|0CFA) z*t#A(FoxmlFa8LBH(>sEjN@C}-u?~Efw%or3YgTz2g?M~F=HOQxpK$7{PBfIa14y& z3J+2JMXee~usQ%(FTO22LpqUka2JqTz79TwWnRBT?V!Q$kcvk0X8JH3EYO{fe-E^NUZ-~mju*F2@3&$NOP(is{|;mMr;Ff>hWygxSU?Ku+Bf|Ptz9vZ#g zEM>eo871jzgfzg4Vg}WaEk;Aa7Xc0qWT&vAgE?}c zcO45SP17?AdH)*=gA=8L_j)oj1aK@(=>IDEpSDFA7((G&sKS9kVuu133Y6L9B4%kI zgpuyJivo-t{9gUsPCBXj>~2JTP(ZMDvitoC23*^3wf(EF>mE+Nwrl%Mx92$VKW3X} zcmP(B;oLj_HdFT?;XQ-s_ljnZVH*X$=CyrVUz6yb6c5`5L#ksiJK+hE$Fm+!dpmi*)U{xwnzyJGaa@qiKdeoX49ch z<F9q<*%M*AraN^2Ym43*fc zC`8sjHvNgR;Q%Gn&ft&Ds!To%qovpgh6b`C`s!Fmu^4onis$8E;AWKLp$D+){YilU z7QpDhU9hZQ_P`j4$UyG{(FaCI?H_~G|0(z<7Jv{YeC{N=HP@*X*u+gTDS9 zx5u|gcf5G}2fX^?k7&yKFArp=PKCY7|9!`QO95!s?nnN2s{iha{?7^kvR8LB|6&CA z4qe-K#dE>GOUur?uI>JK@3G(`oJcGx`h-NQb&c=B|8(w_{u+d*x& z0RXjW=>^zy%gupEiDEb;=?>AG*hy-yC5%G9e;Z}YC`D3L0cNchw6hBk5MWf4fBWVI zn*ABe%Yfhg6Y=&97C+$S?Sgm5*JKcs(8rEl;DUOqGl#?hGlA#>mJZL3n*$KpaO@6i zzyU!8dpOn(^a!-YC{kz4QR0MGIZ!}$L-)iGP|}3X$j@c2mY#tJFg!Lj*M%NzB zB$k7*+CZvOKyDvSCW#W`Lz)C(Fwyt4q+pGUh9-b!8&nLfyA*ZaCar^z`6J#R7=3KSB6p?7g6>no4MisF}y5*VBmy&(AHa8s8gq`Hf6|@Pul%Sw#Ql>Z|U*ncCCWJhMCpu`5co3|iup*|W0R)h^CeWdI zr|H>UjQ(Hna`qtIqfY%fi15(*PaN;suI;zd9-KF??b?2;?TMHDCw2UH`=Aa`*)5tc z9Wy^46$p_H#A-}*o>x)C>72_iEJr3e&zcqAa`LhQ;VupDShrt%9ZMrcYC6u{7e5$|AxyjfxaC;lujp_+_!ld3!- zm2OGOdWMsUs$*ItnhcQ$Lw1*lokaH%Gmm~i>61Nyo5Wav)g11?G7__LHhBm0eDdUP zUc)pLluDbj`!QtawkGP^mHxVlkX>3nAA{om`D zX+JH+i+B-dDkFgN!yOS>HQjTexLOWXG1k*vRatq@0N`*qbS|phAG!pi8-a+Svep7) z`lzl`%m#%RwmlQQ4;-Uoj0FM=1V#)*u;m}d0Aj#gOaLFeFC}tdpbu(6Kk$c#e_&j` zg#Yk&M042Vr}*gj6z%d66JokynDo>SMX6rP{9o7ppM?L;AV72dteXF(A2I-PvZzh> zH#cinVt+F-vYY3#7{aG#^Xhk9V!8eAG9Ns-zULSJS&k1A0QeV=0uY`YhBa9Lsfg3Oeic~VEAX)F>v|zYdr4X z;NxHKNPEDm%Ohz;f{~|4heQGa*1B{57S+k&*wc|<=6|vHUY{s!MM<~W ziGbk1M0x>K+rKPfKsZJlh&CuDsB=}FBV6cp4+0&&vGyx6s12a~AsCgq7EoyjrbYoq zVna=I1f$YZz?6bt8IqoXE!#BWW;_>`m^J-FjzqCLbZ8`F==^y?ObUJ{9Po#n*GF`XRI8PkB+bT4$>Ut2jvAieMOY~6$L`?!z)x$&VmD)(_8 zAH>iD<)_z^fhxy>HTp{FxB^DmMzoV{l&$py%M=x3rLv)$>~e<^0@|+2<`2eWw8caF z;k5Gz0q#ogmp>2yvU~}BR=zAGOxU)-wlVt;NUU#`lmgX0(7~NzTR!<*Dm_@OpKO&C z=osoCBGu;4LkvZeSf1QF2R2J=9vJC3RAA^`C%(X!&K(Og>K#O4AM~d##=3n2eHh^! zPYxcfU1<++pHsrn@Ft?X>| zcl5#f{|t-_AO>=<3}EEI$bk_20cHJh68s~0Bi}p8?!7#8{A2$LkKcWRhgS{#liy<7 zKZD~1*QJPC5DU*a8pXv;G-7Kr_&1a4zpvomrS9*|*Wd0l=_U?-`7pMkt_VV8_=fq$&&;H489W zguNJl4{+UXMzlSE z9us~*6H;9D`^5&?U})(WK5%*HXsB03*<@+V)h$P#= zoQ#4H`t9L}AS;2jW>P9p@E^n2$JPQ{uZ|Nu#vQC7>zU|DN?>a?orBOk9-?w>#&dLZ z9SaZ|?w-cr2Yz|tUi z?pZ%!JI|H`+&;HAt9sH{yf!)9$9;TQ4s>Oy z+<{F=7v|Ho?W$o-NDYu6LfhnLR6uH^?(dJGAl_#A<7AYoWuZq-A2}*nQpap;Io&|P z>xj}opzmoemZ2rEr4mQJM1@n?|1IEKF!=7y{qaN;O~Mnsz=@Q`z!nr%?hd;cwynw+ zS7PZrN9O!*b^4lsg*H>2qf!9CEb2Fw*Shh%Rx)XHlW)BoRCWU}q=NnuYaB|uJADII&nE5Zte>Tzmi*hNk@!0_&d7t%t;8pt$_Uc;yD(k;~U)TFDp}$%GUm5?C2EbaMT?PIX{7)@_Q^5B+ zt=~@nHy# zJuoQm2Si_|K{EhjBTe2fAd5f`ZF9Cy=_4g@V`u^bdZDImDdCQU=vX=H%=23jnItb=e(9V;dD11$Zc+$OW4L<_yJiuugsk_Td!D z^AmzJH6eJsW{GZzo`iWCY*GLral}y6+h7=t$jSr(TH=zJ+4S9vZFySaI7B@(Ox*!< zwyc2=_GZlL51qRy-sd1q3~~^Hmv%Jm%P_RC*#V(S1$O>I54CDMJ#}WxWMpS~0ZdK< zXq4OOA)R-6IV-2zKhK}P0W7%v{7v)9o4$7+_wjQcZw0yT<34_g;~j7I*A{z+2;gmY zg8D!V%)0{4Mtq*ZWz~sdW$TNoKfOo=^VPM7rcO2RhE<#|v12aJEdA^@B|W6jPFuTf z11Omx2H^5hRY52wcTSKagQW{*1Oy%*2U<%E(bt)wmv0o@b{NoI?TQnV@#;p}L&#W% z6ToOH5nT0zfTc?e+ot|j#nwo}hJ;%%!E!XMb6Io8ItN35M3X-la6~vuBcj^+u{6O$ z=@7U(Kf(`{i4bFmpv&O%ktBRdYkLuJw zd;L+IpFj2f`Sp*njsFx_@G~193;^)68`p9F9EBiKG*03yMw*X1Cj&D@pF-4_754RI z0RrTMuh*H>0C@cdt8mFMG2#R+`u0{+ zhdRBCX$>uHvK{LF374YnDSEXqc1lPA6KxfG%>5BKAg z*By=3Zt*5yFI(SE`*R=naUai*8@%j3?&Cgw>LD9xNxNo#3LML~17<1S6v&nRpFz6p zHhr7|)S(u=R;+n`$LI%C+v8fU5<6beH&Jzp^ZD9W$0{#quDpc6ha9WZz}6D`1B3tR zD;OA5LkT1a5>{D4NlrmN2dWG}_Pam}?`$t!C#ZyvQCacwMXCpJQfM%t;6DuJ617g7 z$A-a^S?7;iPz`^pcH7HeE3k!FL@r+kYu-%AKc!PI7Nz`1llLvqWVQoW>14E%xMIp5 zy2xb(kjFY-J%FRmom&1~df@W1;}`=Gi5Q{U|Be`k>iwB1%NWS$O!6h2>a3OmJjr5< zCeINZ2fjmGKF7oN-ytmV*nfu{zXh^Nge6Xm;t1=8ovKbsSJ|okpE+y&uY~{9`p=p& z|EJ*Js{^mb7*7BIAOJ~3K~%u<(`Tmtx##YQ5AJsE?L%SH2RzPC<@&XdLcM9X-?>eX z+`OI>j=rBlo{ExwUSSq&Yh3txmu%K;Ih0YI6mW9C9HK+#TCo{xeHNM^(H2EpS($&U z9pLME{1Qa@`tx6-9f9q!!;f#_#}{bLfW6_!7ZX|L4v&SHY0}Lw7zVT8jT2|uKr@HA zD$>V5x&cQ=4`ACHd}B@eF&H@SpfL;w(1EQ3aKj-Kn^|WD#G`X6X^rIop+2rP0oeIk zD~N2VN!@~UdC|?>863-Iu>WfrUae%)ntMj+p-_;{G|@*1(vZ$o8*klVj{$4!QV^B| z2_Qo~RSnk-S*!})TN3|s(dxBBSs+6elYoMWD4he~3LRzo97w2Dp*jOJ(d`qM0)sgg zl?o27H%Q$tHd^XB6lhS2{s~aXP)5Dj7+$r6ZIu(0qv0uGKpEf7n9-+$p{xXNiOB+~ z=hekzh$g4!^jxK(x@OX_>Vx?R-GBzKjq`+%*9QKL<7U3OkNfx##{G7^k6-k7M{obN z#opz6_J&2P(Ek*mR!+qmgKw7K%dbmi>jmmhO(Zbu-%Ras0R^vIPitC_zTc3i(o%?i zzJetBbzEoV3nG}2Z_W-rqm`e6sRdx3ut5P}H9AsvsKCP(XdV)-BLdNEg@7T@BN7zC zD>}ri-%Ei6^lxp@pEw$j57fNkdQLU=#T?bTs$8NWVJ*=|V~2po_I05)3hB)1mq6bX zMuaH=$9+YzT%eetX=+c{5-sT)l}A74&;(}AJn8?OE*HU(Sa-~jAK1!WFCQx~g#Zx0aX9T7-DB=2kSI8-xB*{dd*;ds96>gMM$fs{bYQSIYmZ z48ST`I+@ZpV1R-%!+P)PaeeKLdjIKX`~2E&KYo2xZ+PRw8y^$^a2vN@y?D;c(S!L~ z;CNc;xsJbBL>23wgNfUE|MU9h0;*3+1@6@@q}DxYD*_b)3ijs;6Rs*~L&73~+~y=( zHDH#ivl4vCQxKDuRMzs=mvIjS@#zkPm_Oc?$BI>h|aUm!Mx`dFtK*n&gG+cSo)-*6y?{F)Am{2eR<7(FmXRQ?dX4_wB9KKfMskEHNl zpD>z~+8Z`}b=hKnJ`!0GLhTKbt_n3jQm;e-Z#VJ-1i&{&w~2w9w7_Pkr~P zVQ+l-^Bxsmz^lvS zM2!g~a7P>oZv$|N^{MB(ai$}htI5ALM;P!B%syX+!P4;%06cJ5LtIK5fDiD9iI;Hl z4a1%W>;wpG0M^%aFq1(vTrn}2q*t$6)geWLL=734y5=nwt~0PNR5LRgsNv=W>9a8#fcc z?VRw|@7;lb`}moUd*FW`znJkJH?TeX;+f^&Wf{y0&Pk`QGQc8ddgis}ki_*yf%vQZctpflIaDwL$vZ>FJ|K3?K=2p)`0gK#n=&vn^$nsumi1<@M}yh^z{AInh=(2hxH%AnjE^HS6ub&EH5wyNn>F^^;fRe0haZC?Fx!Uaj)zNV zZydQZ=!~it48CPiI}6HcII@Cx$C&20$>^xt6;FNt8GpralRp_u}~;uGB6eJ zz&bjzA>48*^G`;=ka(XZY)>>WEqa(ir&vH0)?8)nDqS1}SdLNh+!gIU68RQEj za8ci4sBMv$3sn{Z)kId^V|5`2q#(UnV_Uwxvv5m9cP!hC&=&FGa5Cm`~5z6B# zVLg-0hnQ^D+Am!tkrIis2IPJ+9+k8>QP5dSp6DimV+G@FF%)UTZR!UAn4)xmN&+DD z{+82yY|7{l1L^Y~*e%r#Syc!!q^5{0qiFDkc#sc;lpi8LO1=d_e}#~d62CLR2^v%> z> z|2R5w4A%G${T&^V%J!#vJk!yf{y)nz62MRr&G5tHKaf9sg^&OK67ldc{P9oN{CB*2 zQ$CmZ=|tO%F|M=!iv>_(e?EWTwEnYd^M@^bOX%vo7|yUs}ZTHda( zEr5!fZ3QZGr4yb+Lg=%$JJ)cIa`OCTseJS}-uZFatel~4WKieaa<_PBmym!*?DF~>8*>&EG+q(pV zQhsbWz~1)G*_o!J87xHY&k_aH9H{G1;(&0zm$F7~6oLU_He-P4xRXk_1MFREqQzN3 z^0{t=EgZQ8um_F^*l+?6noPZnv%rO`IywDLaGwpLx|<>QVChJhN)EUz1%yg-B9%Gd zHL30eX*9-OQ|fS-$~h8XNkUL{c9KVG&YyPVEHJ6V9t_0G0nn|BtTv4Xf*MXloAknU zYliClc5oj%RGI*w1=|U-Or!1#QT?@zc))BSG>jk;jORIwPQhNMHqTE2u4!Y>%^9a< z-U|%4UFZ%5+{b;~$9=s2_z|A<^wZvP;b#}M>pz+N7c);EhHQ8nU}<3*Tl$%Vh@HWu zsSezwLlpW>`EYE9mv|UJ>;%Ls;4H8qykfD0AAki*9m9bKB_-yHpF9 zNUbmA(`=FSO`QG;I}qr0kw|jk6`^&Ou%o$>DK8VF+ax7K2l|C7|3_ErzaEGfxJ2OS zgTa3vI3(;BYV{YvpUgqQzezy|gay*54Pa4v2nB!)Z#Wi=&ujg8oAipPzQcqS?y8} ztyn7*v{*@;BH-q;MMq6_td&;as4$3A7o+vo@--)D*c>Fbw@|VCEc#L$y?eG_n_NQk=yB zNboPUT{i~!0}NEtOf_jI~ALHmPD>~nh6*Pln5&k zN`sB6fm@mV)OH0oV05C}bbv4?VRKUVM~V_D7Q|>g$Oe^1sJ&u%VzgxEMHt`&Epimt zVDp)v^Rp24CE&wxH8f0y;&$9>$#ecT7fdpg)}b?Tq_(vyqY>30F) zSy^eDBDlb^D^clwla{ck{+0Dlr`@WIazNsJ$|#f7X4n$&o;c*s6vNc9YWq6~G9W?l zT+G30FGm61oPkj&`1fK0h+){&iJ(LW+a73ptoFJp&m2nBxYq9;vmA2Bmt|la*uYlD z4zN5kj4kqPRZp1w%35hwPzU+Mvjb92=0qyUPOn@x1L>x1A($xYDly=`*7|dGUx2iO za&=~Cx^_HdC%ZEFoj6v<1J`x!YVBAog;1Glgv~BZbq{4wPhb=P)Uz4u3x@3A-uMlw|)MBjI+Mo2MqxHE60`NZ#Qqg z#la`~R{^^w4Sk6dePy5%macl~BpV>1x~WvD_BoPCAYGjTQeZ_EILj^D8NqNE0%i@P z{hmEUUw#XJ_-{P8q1&ez*cFJ1E(LXTuQ}Uj2nRM!)XqAg5mNJqsl`cB)UT;lYEZbv z4A={@FvC#I+iseqU1BIkrGHBqN(t0d?|O$Jq@L@d`46N@7IA4;=Sc2ziRTra#QZM^~<%+`=&&SQuhb)v@VGo>9PUN zd#TRfJ@&qj`?!z$xQ}-ohLa5h0F@wGX#<^%%9SmY4^w(W6^x|n0%j*2+3~W4$jX+> z#vb~<{7g65NT?*!sI60Wabgn2^)v&0M*;V9IU)UCT?goTVE4fGppv^Zc$7Gw;cy@~ zD&4yn0~8e&#P2|Qs4S2BkjY@UGzP+LB^Zzr;j>kdsdJj7X2PMwOxX05EkyrUa%ijX zo;nQ})N0z)W>71)VbV9UDv4LSW1S~;0k9^*QxG9Q|g>5xMgP3;w#G~zum4r6)j zrZSLFIYI{+oyJ`~#I_9i#AB%A6e##NB5{m?%LqgS;$V$`fQ*1KI>tCA-9IxhFc4Gq ze<}SVgNy@}NSZlD9_alGL+H< zb~~OtO;5r`OVFh9^=>xnmU+|j4|AZWO%XuFmvHV>qB z%Uj~|a>L*L@;huthd&Nryh6MDm08sGDI(j{10bayLT<@Rh#W*(McIiQ)B&)8%{1wy z3*9!>e|M-RP5tGKjbrRJe{FC*(afSnVi1*od33$j7yuO&;KdLfmf=sUCR0ZxAI z41!ZMDA{C`LOvSn?T4)QW~8FCPOV^&buVNr9Rk?OgqKL*Lpaf03$?goh#yI{+yaHB zGM`RDhRwEj6RC@JQ>FGf!JxlY#{(IzOe1~ogc#7yo3>AtSu?GQCanJa$KN7>O2zxG59M?&4C1U69#( ziaJ(oi1dW*i*{H}+|>hc^Ux+vi0BiaUkxpHFA2Dh4|&}ErTh3g1r5C5NYAy{5{?*>LMEi!K{HB(;BZ1iD$4qozM$y1PvdMqQ8DlOV1(+oP zZfe_SOY^qGax>MjNlZx()%7RT)u`GP$_O=J^T56ZtTOseAOM3RgJjpyKXowE9pJuD z%ZKYqrBoGPlY$>~MLKBX&BY$5b0q=6v`ReCM=3U= z8*|;vM;K2ExGq%b!Il^szrU%pa}3~;4FSXEY~475OaM!;lU71%{su>2yfO?O&+OVb z484oV!4rg`>vL2gYG z_cl}TuR8yt`mc@xS6deLU{`>^Eimw0Tz2(1-!5R!ynOEcXW#fhhh4j%uQLEXKnJyU z`Nv+P+c@DCFv#2Y&fvil0mbd8b%tIUNTn{2&6Hlv3hov3SERw@ep8#2cG9~OoM5L1 zM$1>Q%6Yk>FYRG+LOuLb?2m@_>c24h1zZ0dtpP9dQ;cjd3}&c}$ZVu5m>kNG(-34* zxD5`Vi{W66)Ua1<`O-G-STmc{?F1=imtnw0gf)Yu0L_5j3>W08*Mc!qFPc!%*G7`w z?`e2wM1hA>J+(=H;81|v!mwG<%?bnngYp(rO}91G`S%KNSr%Z*qDKPz&h?F9$c@?l zkqWF$-!&OkBzw!su=?k#Zbr*&LK-upK)RQ7B=Lg*i6OPsD zr#%=M8{x<`5~xaEGn2QKSo`i8ug?oh8GkY1ot;KvOs5-15qK`rscvA zho5Tu%i{z#3s|GCM7Bey+`<`<%keEnWa_){>Ifx2X%K`sHbZWq<1<{kA%?>|*bPA% z2xve&(7&@+5^>%WuR1jXngg5KB_5rvnjm?;MFm39D(RuFk;|1 zI$65e5uE@4qO(jlRr{~kmh|z5AdpmRK>Ge{uK3FShU}kX>lZ}Z(H=j;?tg#{SCWco z&l35o*Q@6L-0ts6?62DW`KkWjZ(9G^spj97`oH5Q$Ug=8cJp&JdhMBPMIu==a~KJArPb3^;;&esb$`vKwyftj|8j-B1kn$uudPrmTt{$ zip-4*W^WJ!unmc?*fMxCFl;%g<_NM5W__6qazW~(kLT1-Acn$#xF~($s>wo4Qg%ZA zDWVgtzRU85W2g*aW1^dN@hXXsQEaI|yAYw1H&cPOZUHW$iQQA!sDKkI(L0^{mWGiG z-m^dhKqVxn8#X}XeN%S72dDS$qS*;7S4&0LxwmS=msmZEjT@Mcl93gV0#=#|{|X>z zAfh|;xs|Si+6#hs1Q{BtT})G@g+PyLq3B~hKW>T5NK1@ELAkEgz!HzVdakF(hDixr z&+GboJwwk7yZ+eTwCpqAf2Zx-$9>$#eSGNSUlI5}vD|BZ-|dI87n2PqvA(TI6i+t4 zsBmJj&jfr6J3r(U;*tF1iISdgp#)#^DXFJod$A>qK)7>Q;C9x1Waw| zzzl!26*dL=0f`O*1P4?CU{)oR5HnKXdXi;l0umfhEj}jIz`)}vMqqVNY6J8aH)Xjq zr>}Ar78?8VO$;nKFb@o{mcPV&nXl4L?p(Hj2Yzf4L6-1yVwMl2_8R~b1_EcIG1&J` z5n_8_0;ms_97qf?K=DDd#BNF|b=Nsz2d0ZO0Cs^Z{bFPXV3j=vm^6t4RQDe#Z2;hi z#APt^KZ1gNV+`L4|Wb=LnB_^T9vfqp|nl?T`i`WFL$KdZ+7!~m%G z>bbmmUe9wtu?3!f(4T(H-}dI4*7qR?{s5jlfV&33j~Qq1;1*K3{T!IJT>$?$cdV;P z^!n>2byY{@hz$wLQ+EJB2p`e8`CVC+5;9pFGGO+e5vRd&Ah4rvpAw>Y`QPxD-(mNL zkM@RF_6hnheGe!>kf{fNA&Qg1t*?Vm!wv!jL_gWL)sih-JQ?Uy5D%>X8B{0j8)l&H z$s4o~`HA8sX=PPw=YkN=ZRrd)sd5-V3&(IGy=4d{1hKyX{KueS@?1~k`dbn9Ik2>xB9c7s49w@Tv;b2_96|s9 zAOJ~3K~xS$h67vBh>f}wIRPk&|EzmxQ078K*O^!|s=`)-@cc-rr0v_tQ8Rgsrf84>ox(0aHdxn#~1NWoAkhAlK zadivuSzV|9KJMc_?&Cgw!J~qXY$xiv@+a{i`_z}MnKsw3d@C7`(s(+THNsS{t~R(= zV7zQJ*^HPO<0ku)<(pvH$tiLxpJkO4=yy}iyKJZh*lOAno8|Hp4OD}dZ#TE6fZRQ2 zSpa=E=@rekfrT8Hl2Y<>g^{?DEKoUWb)&8}Z!^K+N_r&s`$)$~m(QjB5zvwKoiO@3 zvnB)cvm$SlZ^+A2`^>Kl7@`^W1ojN%FpR_LCn`A-Fm4CHgVV3>ub5bxap{F#f*M^> z&A-dYfq_9l zhpoB*FfrJ-#4G2xuW@-U)TIMW&Qn> z`LB%s6#F|X{hxnq{jN>FOOXEB`*&yUM~~M5fSOEdLU}5{{gB36_Wvw;HkZd~qPEim zui)Tj(bHcm!+(PTOtwH#_7OraeFaVDwFO+tuFT#C+L;N><*Ka*)+H;jc>)JcprB^m z!pwMiDGHd_aA}`me@u)Y{)+hSd%XC=*YJJAcRzfr?0=rlgCbE2H7p$5#^B_U&G|Y8 zS^`^k?wbK<4W5ZD6Sf6(V^R)+PEX6kpS8xwG0E49h)q^)OC$InzF(xZOS@%dO=+Y8Vm$4WGM4Dq5E(W9r zteuQl66H1-)>M>A=fq$hy7pvlY^tA11@S$}`Y5cnJOi5tv+iF4B+QmqtG;N7u)q#r zE5SiU%o6iek70dBw*a#OIRkX?k^|845CCCNMt?b3P*9Gst}TXY_jOK(uAA$6j>4e? z98~+k0C2QKlMrK@9+OH_PPK-``Y7kj%&4PKD=OOF*{GcVe#=}~PSow!-f4X3bM1ZH z$9>$#Q{$g-(tnc7|LqI??GVr$sX&=PcN<_JXpGaha(+TtZ$<>-6>$U#H^$DoxTzQ@>~H| zF$QvJ4poUj9aE%X^Mt$9cP8>sJ{g_PFhlMFOG0eE*~eFgO^%=!GjD@zJ%Edn7;bN06#qZfIhy)i|@W?qVUBZvA53vG_?#AH*(hbF9tv*{LY#G zrxgEPt^d5~b!$`Qf3^IxD==V*{#jKX@ahyZpq|m%HJsj?j(vRxS0m5M-#qVEZ@q0^ z`H+Ey+W-_#9FDz>0q{$4MsMdIy!qPZ&F2#jxd97aKRsu%|MiCIbzt4Y^*1x7cD0-X z69OisS#@HTr|qsbfwj}K?yP7%LIr01lZ=aH+?*O~vPunBJ^pO_mkj)8242Q{Hjh_8U$ytAQ>_b1`WX>dNCZ%) zWH^O@HY)O3Z`eGM4@1=U;2qNqu$a^`1E@HwSuDfZ0YYUAWFnM7)c!fkKqw?cK!rky zWHK<|Emi|5^De5@fmF?20>fbk+XU9Wn5iw`Mm7P0f{cd5PP2jl+YFW?l1M29%R!2j z8Gxz95Kf&LEZM=Jiy2}xmPLKUFdZXpd4VByUk?C%W1ZxT->XDqfPh0eTHv{x6&TLi zyiCmR*E&zP)cWIX^Wy25zn28u$9>$#zwP)DPPD!D$NO#L$*-N?tiodeGc}`*IMGgD z847A0Qm?1&b5IyARQ_g43{+6xWVZ(v;B97VsY^Q<&fwPt6qGPslfekEvl1Y1TtR+Q z@L%jo2SJKd7TQD0SAu*??4H>6kXC?+6{usM3{*NT4*C(1hC|f)=83%pQ$0};8TXmG zJ@mocKyf~OR`Ka_hy)af;@>RbNk(MnmH{w`C(Dy3(qA(yahAkVPmC!Rt)Q>&|^qSdy zi6924{|D6K?-)47z~~*(rT!m*(M$2allCv_e+0#{5<|-W>|Vh41O^z;w}FmtF~*k& z4?OIDhVOp_shKG6PJw;2nj{j48w_5Ks@z47x8Irs;zeaAN(%hLeB6X?N*G;Ra<=avCp_vhdE zy?pz!dAr6N;DIwjo`M9`(L;f!=-6XE4M3X1EG8O9YLx>fwSG;m%(kZ1+9oYZyaSxi z%z`R_YCad^BYgDRPw<-;U*OeOKj8B97qEQ;>{AK4&?03d(L*yBs4`mh_8tfFNQCY1 z#>t*wM$U&bMTLt@Y-3T%E{%cf4vEUxno!e$+?Yk5fm+L1Z*C5>PGOi3?Hw*!T|ylQ z7-SA(ptzYa$djS9icS+^O>nXXgvHErmx~4n8340&_0y&iE_%}u5+DSPNw+{(Z&wH3 zHwCvc6Hv?92~e1fe(^pkkah7E&9J}-QT1|^;ZqrasC&7|R2&8y#@2g{*Th<4hognf z%mo0zR~9~Xt&loLNrxymJ|s(QxH=w413;w&X<*Bo1|aC{i~!oE>t2t@Y(K!`WVT{j za@0!<84_YuGxl#rWZW5{Hbxp82V?xfVXVt zKJMc_?&E)L{1guJGtT?_Z0pJSx!$AcQ&%PV6tGoRmLP>%w0jRjGupbq36yuS&#EM# zuMN&@WzrV2ZJ+!F)zmiu_N~~T#+b|%m}g*ihpIYq7+|~lNadoU10_T#o2b@wq~&vC zZ3{HhF|=uz*ZH>f8nu4;8}6a)2;I&Qn|lBHscT#e0Qqf+Yb}859h={IYFxehmf-I- zz~K2sf7Eh6$MM>}pMu}J2EaRx|EU|GsQ-5Q?Vxd*ZBRU^f?DD$Rcw~3JqPsxCeZ2$ zBmYX2?NsafLVjaTlEP5A@$5j`kRSaH$4DICeGfc-j`q=xXrCa_W_{6Q7${&Sr6);E z8UxK3az+5zHnaeI^cm1jGvuoC4-?ex17DWlo6VIDins?#^=;sSJs(S$fjYt0bTR z>x6Uxz|&o9kxV)qXlotN{Z=A@^#d$Wpa?DJOIw%s9)I7*ecZ==d{|@7-^BtOr1)1E z7)#JV8>WCH8-PxGG85S=Ny>U_sGhsP1zUjs@*^O6f6lgdRXQ*M;j~$HMtfg^ejsR| zntpS(JPv^hRzQWeIe^)Hz^(pXtWisYm4So&iQ0*o`(W@7h>f7nMR1ioxWOHTpE!nKTM93(IdP&}IxEx>{ienUR;CxEu*YA}*n20(oKW zejfudl>Hx6`yat}e-VQ_h7k3ifj^Y_p9R1w32^zXF}{Jl{2cqM?-36l;quY%fXg<^2XdH#JL|GVQC3jn+po4v`4 zKY9E!wmU69KR(TusAbNGQ!X^?cAI&AeX}!Vd?KVS57mQLhEtFA5Or#{g-e`30Zv3d z-^*EJU=VVN#EOrvchbOmrysui2$%0ZMY{~xK9J*kY_I-;{`hB%_FHa4?bum+96c(j!5fPX@kO2Y|M`MdfqRlCw2-5;_6|6(_tda(P-qvDd5abhJ z;Q5U=pafSeg10RD!cFjR_Nj%D>8&tAMyzb|6DDgLa6#|MlIOpHWGk1?`y`w@qDT`g$sNmw@pC(p#f( zEp~#NsPEbrZ)DF^Fg27RuYIf}hs$5!`B7P3`2hx&{>`kue1~$MD!`uz2rzs3LP?IH zvH?%UpsKz1gbVmci5V~n#1e>}&WoYazARb>J=J*Ev)n8!ad*r_3;qn{2 z_{*ng_z2-Eac48|UjhGBz5kWc|GC}YS@5sTpugEQ-QQ1?e>W2_WlO+v{>X2x*XQT? z=Jf=L>f@Vd{`~s9?9HFgPdc~jduFi@WxS@3aP#?_0f2Kb`_$_XV4UM~0M8%8b56Wn zPadx=cN6gE)ymeZbGW@$&sTXu9HIh@3h;H82Po_jz}2?{4W~Js@5eNqgD(z4!hJ=Y00rd#|(B_gTtR zGEb*ko5tRE#;vwq>HwB`8wrNy$y(%#(Tzk{pex*h7ZCh3jzmrFTWB1dhA+UP(DchC zr}~26piW>4ZzkjYn`Xds0iOYF)K^hFn}wj4e@U_TG3c$Bp5IW~IGviag^Dm?f6I5e zGQ#?Y-t8KWr%@q~2)={|G{x|kk*Ny**;OQP|4i-ac!h#@@OR>hPcil^17HS}NX0uw zYlJ$2)qGWlWSIdSBd@N_SdYz79W{{GiFeH7U71Jp6X$or8>{= zUzva5`mUizhwhh;5?@$PX<&!_sjSDovTL|wwyC0(4!0F0p?jv5tcN?W6Vu32+6;-E zcHmE64*qaB2%Ou2_o~>hXs3bcEwh?%bW@2Q4iM9T%y{lc1Qe&`x74P0XCtCP9-0S4 zUguYwNEn@dtlL4(PWWG(51CFHZ1`*d{N=ZlD%ql@(60i5l1I3gpf-HhU&Ko-RRArU zt3MXR1p?3cjagFDh0<{vvw{*qNVi7m!EfyMAmsMYFGbi&niQ_OE8Rr++0IW$7_LcB z3qG{`K5dNrB@#y}H)D2Qp1YsEaeu?~pcA*?A$j3c9wBkNO_$Ghy+k@Q=(2I_u_v8% z61toySxn`eJQ1qchwmmidsB@HOeDm=2YbijFO+mNdFktPC(&zGfq*jbY2tivM>Ais zd;ZRsty-&#_rd5Pn#tF;vDV4>#MgCf{6ltuS_d_?M7z3Es7P@*%-;N--c1i*Wu(bZ z6q)(MKp>MxAo6z_;1{@Es>5KlE#Jq|qQiq7m$)4S5-c!+>SXI~sbz91UXkCD868rV z5I2BZ@$dpwcIbp`JSR_W7}Vr6!K?WZk51O$rI!gA^Otd$bUWY;bsi8@g8M==ue1_| zOl|}^ceqVFM4}^(!*BLiC;)Vi#`lJC$Nq@ZJZYf9_!+>GCQy5xg&a!?qxTtwqbf7Q z8eoYgUnve?H?251*;Z`ejwV);v@N$hL2ZK(QUTh7fYck-4QTFAE68*+$5^tDfX?05 zD1|iuMFuj6!esu`Pv?QoyTc3|d>|6_7#`&P<`eqk`{`GD;%x)mz+W@rY)7PmZx%>R zk}7}+BQnuO$oQ(&hVoILbA1%b>XeX`M?;7 z4x`lHeJjfp7bO;TT_9@~%&sM2ok;8Lo=1=QQRIo_{4XNvW2qqJTmf_iY&^o3JQ zaGLj<9H#TQ7lMM0^}nS~iyW*w&!A^on6$o(09`N(Ki`T5E} z&u-%uM%Nzye|>l1Z+Rp5jdw=#0@z(I>T>ffFX4r;GQ~ATMFVc6m44taoM835U8yl6 z3*TSXpM28^C0841QAfXEAC>}e3VZD_i^7}7>Yx!BMr4k(`upxi+by*eT8#Q87;slp zYZuY-AIt=urq;>n^)nm0sVIyO`nQSfJA(9MdZflqv9R`Z0wpNz zLG)u8HE0Q_B?<%;Dzq~AH*Z{3$}j5LwAEQ^Ss*6Gt;8Tca!bz`SLF8r-lbD{Vy`kh zEvz~Q1RS_;m8gZ@7Jez9`$LzC{-zLFQS+Jrn;uLKF2etSHvnDo%dAL6x#ofj`lL2XaqF=NL-86T?3K>+qjW z+a3MH@*%{rMrcu?I45~la?to1E7dg2kO#u29~LU)V0O) z|7=z1YG0KEp#p@QKFZIiV|Ywtc2r`2y!tVn$U3CXNRSjRTP}Wh#Vh9u9s;Lod|EjD z%bM7i6Zu-{3uR%X^RvAARm5?S0w-wrbzPUF{(JkR9Ifl8tL87a@mze(GUrnB&skC& zihT-^oa7STL}rWjST8{xX`vMCh;BV|twFMGvz_1I5q94GXFN@Y(Kei4lVt@msq&a& zX;Vd$V=*9xDwk<*ixj`)($W_k5mIRoM9R=T(_&rd=tJlf+W(V^7NR3|zcYf=yG7l; z@9o=mh06*N6WB4Tbaws0^pct^FE{kf?~5S&!G#480B~v>b3_4$V!X0XiV9GcoL;aU z!yl}h2->wb3K$?Gq{ITxUuWY#+re7W|42{21cp}J|7mLI!7ET4G;dMa{Zq+(+~$6w zSr}~QVq1b{WHQh;Yuc+K6x#_M zwAtwCPAwYZ3KZnF)Sp+Yy@$HXNY>Z-_T#&g_7!&d>BU+Ml_&@z`X&TmTj?74;6J`M z;Q^z^@9X6w_n2GhPnIaha5vsr>Fe|C2gom&!`{YBBB{uQWB`Jr3PH0c?uy|01EV|AsTK0J8df#Ikx({a!J&VY`| z`#QX5-HE50AiGCt_x(DSMK5#hgPW93_S1Iu0=`)cpjVQ7S}OB1iTlNTfiS?NJ%=@0SAP2XDj-P5+<;1WX~yQNeVZp8qPTXxg%eMk zI5~SUIIbUwh6Nh2YonRl$C)cE=3I4J02>rz6!+$S(~WA&9=fp9pSn~P?pZy!*a{k) z_Tca}47}-oxT46K5%PMR=I!`nx*6y;kS8tQjyidU>?$yt6H59Px$At|H@#p(Wh7bJ zs&#MmGnqr|Mj1`HC~S|-U~P)CdVdOT&>Q76>G2VYMA_-nG7NvTi;M#ba=a5K$2B&8 zWF0hN8`21hkW^Avw>pM*25st{08zu#+Hb-gU*ne>6ZG(ePUKvF;Kfu&X;sV2-ZTr= zqe1Iq-<^NWNknTc3*Cjj!O@-=IDF1L0MC{q|CA}j6nR(vZbRa|q1W(f-@h?=UYgXa z#dSd^3E|w#p^&kF|2Z@pe$RUAt(}7v>-C$jN}7&VG)A5kG+cI)wYdZQDNZOPc(RNt zk!*QB0Dl>!C+4_oAglpndNQDp7u3hvZ-OTr%d9rr&Exql{L!&u&z8>n8he9Y+>>Xt^<7A0BAouT?T0J?G6%+8{5yoOZ>Zj~D1)>m=CuN}&swN#Z zMnB?ZkXUQnBZWidN;OGUMWz|2ZTKYLDTAfnTnMY6JJ*p2o3-%iZO{SOFB19=z&kUZ zaowBJZ>|@``H7~*3DA*m$cMUL{j9r%%%#oxH)vyc*wKr14HAY%nswO_9c)S0o`;6* zpz^PmVOAV3~S z_s&<`1?rlCK}(o7jY1EhZY+(#ta?=vd3g7tCDeU=igy#X$t~ZzB;1Ixgu2u*J%Md- zVqZcRj`rn1u{w~aKr)Ai7_a`2+L!QWHk$BvM=D%9O@=Fl0uEwFjPZQXtuRbiqA$EC2AiJks`9oqdF6^PdlXmGw=`vqmPwP<{>I3l^m(yK#&uP z40z8c*LPO-sOpD_WdZV#I}yClcZmJep)q;=d{s_yCm{}b&0F(y+9Vu0c3-~mzoBx- z*d;OA^LgVRzqNH@z&mwBFO-{SS-tQGo zq0DpUaTA>qAx<`vzin$Fi}gL_0n9upRe1}t9R){yJNo-C1F39`h@;f{?2x&=-Hyq6?2H; zV6ffoAp#?y3ea3+X`B3rC5pp{BWa)py;1<=YpB2cLctWFD2VQZM}@&(kYX%3p%F3w z)GJA`s6UV2P6UR8ani{FF){&m2wkSwsI=2S>K*L+QFlwx%@&zn}`mmBk(HxKmR_6oHA-7>By zJui3<5nA^J2@fHN735esar6gQC8FW-|KHLd39|2RIgHEg3XUD;XU<{=B7Fl zJbL?S5vsr)srg~6{E0;cD(N)y>`9wkq(FSiUlo-cU;G;)+5=XwKW>nCM*&HP0g}|w zs6FI;vt43;%6+8?YPT9v=(7z=4t4NZMqEq9LZr_deLLbOZ-SwFk4Ni&VJRFjT$U_q z#&|hAyfS#`C$H;DXE)JsnSHQXHAH>@5%%Q<;rcxuNX_0W8CJLQsodKV`zhUQl=fzH zOv33Id^C#IGu)LDP&E4rMJdVz!xi#R)DBvC>26=+KQ{Of4-7}od6956(KYAZJ$3m1 zM@+c8Ou`qaZ|4_u=eYP~xgbBQiCL&u`Tw&3Q`~|t^-gvyqi6cQ^&<$*S0CzGY3&03 z{Z#}sV1bssdPzFC)-ti4$wah3&jFB=A!ZesWhsF_9^oiRb|`L-1|YXsH*D98ArD_+ zEsAY4y9HS^GaQp=^)6dS3scl;n*qWDii6-ya=nX$;vtJ`uogNf zCVnU$oPL8K=#W^%do*r})H-Ezr@ zP+fd?F?*~D`)o>uq9C6c)-`1wvCxS(S8sD)1B#ZmX^{!NdCS?=2S2Di#TU7l#^HBC z9{UxKDJW0LdH;v{VtV==m;rwOaaEW6m_nM%b>6sL2CpFhhAy04C(0R4sd5Yu87>C=aQ^RwYO*b z0_L(^_-dDuGS!X_NDB7j7-&g$rEiq=+B+4JxfN?MCC;qlx|KV5aLHxB8W|dV113cd zZ`H;kFsB4$2>^H&Ko4RM!Vwvi`Zf%XO(w}Mw^hE4p-xSrA*RxgI5V5)^LYJR_(5)f!U9hxh4 z*4l<0p^nJMsraS>VtQBDo06EG;-6w8M%7xpVH^u4Z+y9R|<3N#pEAb$$@6wrGOyG_WiIIp9ObE8|zTT0!mNWa^#tK71=eOKM zLqf&4$j+*#-GcU;7u@k|@jxQ_0kk1s-4Ft+((k#OYygWHA$qXlCQKwX-p%)yp;&M; zAYgzW)NBN(T%#i;$RFR(K}@=WZnQR}{+3#l-aCiv+yDBV!*kLkox489!=5|uzabY8 ziY6m^%nCm#p`jYGBT~it>&bIraCiIl<=D^C`%rJ<`A`qK*wj5v8&_??{r;K8tMU1xTZ4-iKNnXJCO zdOvl_K+<^b%+Y(~L?Zac$TfmUvG}52DGvF*7>6-uP)v#CI(B|$@s-4pImc8}|V@EtF-caA?S9{bbO>^$*xeS;#9 zTOKAhHf0SRQfq>NmEA`RTlB?hgek+(3|#KIu-Zye|fC zyJNlMs3XE#XtWv# z{u#_Ef3E5rPG;^^FCXlD?l36U6rBecT>$qLo;Xnv)?3`=03>#pi}aTVG-n1JO?i=@ zbM%$sjODLv)5x}2B_fIE{GiF{8M57niTFKNs_K=-NV@eGB(b{7aM7g3m+T88bMAKE zSP}{1%)ty;up{A!x;yIkN_ zcRmO>!E?f>#Ues_25yRO=>X>efcW7beOsuwJx;N(B<{xiI=m2@5E~8uhsp%X4O7ld z4zxyu5G5dC$87)fHxwQ`x|4Cf;pY}m_;2*7T?BfT#uZ4wQuhnCP3&`uw|Rt9%gE%5 zb}+`=_R+L<+;)`QGb0w zgsJ~I5;&Isltu1IE-(qEQET}UvN&o=?t}VKoXS$}`e_!Z>TMX&7Sr$cT~cnbs7C5D zM~ohCmy0ZbeB~Y#^%LqPXgPzibQh~+ah$#?K5J!&<7lxSTq{u%oV0u<$op0HZQOEF z(Qn^(bHu2DNf-hzyx@+?$pt*XPz0;o@gJx#lwWa6y&}cRDcDDpOKf1lK*se$p&0V? zC`*k~Dr>SFSK^~sN;Nk?#&G_0rR%)9z-vd$t%2!wkA7~4? z{`#ZuNpj8><%YUUay^axqm$^G@ac?SycFw#UE-oV(sjh%xvk`WemGEi2pNA!hpX;= z{N56V7=DoGPZcctE6w)YuEN%RLm2>TlpXn|Gmj8!S-hQ%TJoVt``qgGMfac;c&rw? zH4JCzGpCMhU9#kKi~*Y87Uoj6e) zQ)7P3Mp)k^-EEBZ%&LvyWM_=s8*Wxv4j_tWLQ%sJ$(t4i`9|WHm6&pz|GM-~@pKiK z4?Y7L;AHSgY3QD`(o^VF=+-T3! zzaE9AZMg$Bx9ZLUp`LWl(((IUk1G$g%eDrCS$T3tBFCMEtYGHGF5 zP0yV@;6q|$N{+k*V%0!r;ag)}bS;Ft3CT^TZ4`P>aWPy2p2WUj5eQ3H(;X<9Bjm$ znW}4^Kf#!)5>dEWmEAv{!8F;;sgGWN7hYCPRx%m=>Sv-W$A>>a>r)BM#od-~%0rz`^~oJ~Ic0}1_HnmX{T6Lh+1*N^|j95?>p()m7)@;nOwmGKcq}AT6 z7f?@fFVG;Nmqw#wc_SSE9TQ>A;Hq`MkDXLjvn8~Y%8h;h?(JT*ClaDmTXoC8mLXeA zC`~N8@6*j8^ka zVT~F9&=uvN=s?qbcyKgvD2jGD9oKxP(ih8N)StrQ)DnJ8uUboq-C48fy|jVbo2V^H z$nr<}+>HvUwBhzY>P2mM^a+`qHXf4hx2ed0C#tA!eNn%}z1~+n#uN48t#t)RKo&-( zKmfujEUKint_d0!36trzr~T9Z+=ey_-(0xZ;*FU3;PJiv;Nqz#q_)dJ8b0N=vL^l1 z1O^I$3pm*jb>4))f+pu_9kfz$>kvyYLSJwZQ`NzN#nc+ ztu>4f2BS3$?3TH6uN}4iv^N$=*EX3CqHz%w`X#hY{lk83Utww$;k1nAs%H0z1Pw>2 z0Sc1CM#Cwkh%fROx-7R`4C7|u$`M!$Ve!WuDceraF^)EhG=5ZPdFiEciLKHWQ$wo_ zZkkvIfJ@U|*;e+c>XcDecq+3CbYTmRM|j>!PxZnvY@fOq^ONYKt-Bn z{>Ru%jV*E1ep>e59Ll2aC&m1xsX{)MJ)$!um?&oM z9{=2_>)l-Sx07?=xIoFfM{_djoTLYlb5^#nMf$H8rF8F;Y9+fosC_n}U!2c@*N$fH z&n{Ov*IQ;4;d`pzYP`(;cR17tbzv$ltUuh2o`y?45rOKj>mj1#mYOBmubu>;v?xaI zWP4Db9Z}$9Rcmsj1nYVVah`7=X`WH>L{ygrRh25?LYiUE6O`TUf(Al8F&UEh5 zrt-{QA(-wLLC{td_!&95FtvcVuRkt*K5Z8hLl4F+Rq()pb|HACx_R_y94(GDl@H zC0XNUG;^%57rBRmabg zNHnqT-2wgW%=edC#1)zq*)*o|(FP@7L(QqgX&Vi8Dr@4nP#e+P896 z{gl4^R0DmVz8#Q1PMed0j`|Q+tdjcXmyUeS>er3kd>R$tz2AvGrDyZLLbbscie@6x zXeK;OdK`x~6}s4{R#lOfN%6Q7nL5ULFdpxvOkw0!RF9HncD%=)q~+L5mdp=s_n|kA zK;ByE3Jff^>G`<0TeJ3)1TliSZ)L8KDEPbK1>x7TSW0X#77WV1Hy+8D*$!KWY~N?9 zz9>m3Y&-pU%rhR!7)np?J_)tg!q9R9RNk*U*N-MKRl&>x966L7$cLWA_nvw5o>57` zbch{kkEfN;?HDR!WbE6ciw$jTKjqbw9_lAU4Uc0UPAcu>pY{zM_86jOw&I@l?i=M`x*SYsYMW?7ipo-)Qre2npm_5 z$y-Y{CtkgFB9fG%?C|i|H?-Oy$V&b{jgQtuphF$xWdO=pJQ%cx7 zAJ;01Xv+Uow6ogJo37RzCRS%t}^`} z3of@wdRH(r==FZNbmL2%P6fw!g1SIcdyBt@z@{AY<%=->?~XN*@O5xQt#+QuT=pij z=q(-3oqPy@;)An#8rH(MJam9`ZG<1AU+m(@9~X04exfZZTV7P?N0k{QYz$CP%*^u{ zFb-->T&Qk!A&#EF1@1>7?>aSX$?-xDdgBBW+mqW4y*@t^$7uDTpf>PGu?83@iz{;j zI@x^^_*wG}V9$1DCY?*USnwAWooYr6EvT1De*LrP4X^r1M2HdJZ;d@O(x~0~91gWt zN_>$xC1sQ;M1DdaNbb+wcw8(FJ2>B4U;w6?x;Afyc)z?&QxQ{rnzBPt2>r+Yxaf>n zE*!#)#s2~H$o-uTposj8HsNKRi*v?E^!g}tK%TS#PJ#2tp?{tS9F6#lrKGb^M#QD) zW*75_zWpq@_sj_Dx&N#Ce19m-2fy%w&eJ|rqsQIAezcxBhc+(d{r-9wpntUyYSU{xfP7@!t zancbIYx%qp`jgq>$BNpcxVl{Hs2`cJHH4@7bybab1~Dr$rX54VCmLULsFaGs`r? zo1S68jMqb(Qjfe#)u~qUC+5FVQ43%)hXUw%j_83 z$+<5uPSte>r&w~dJXem{>L@kByNYR!!&hsg0m!Tu6O+jIYiR$P(rSHn5k4L?VZ`szXsxOQzd>bXP|JL(Y?p37y4`o@} zXSgH1F+iTuZ3OhptNmzd6Wa}O13f4$bwhJVLLO~$*4Wr)b&g|`LPw%_efR!mYET_J z-qJ54uWh2&@24%#smrN!FY6Qz&6vwjPVUaU(fL%E zP;x3$)_9?X?Xvh*7>Lt<<6BrH3+P?n*rg+B2BszHnWHr z{)&{wG5?UKo$j!m9hn(9)+d3isagEEZ(9kW0A~a_L^rr&j~_B|rSE!_7y6PIb^cxKRC{+YMp+F7<%)!*gk2h%Rh{ zB1HG3w)uKt!w1iicfWGX#bPk|J{X-MSD=ns- z`YMM9e$jpud%Xo)6AkotYgJ3eC#&J6%9pi<>3{iw3s`HJL&@>VE%UKlkS6V^B$M&k zEFLy_`)Kcb2XJTCtPbYOi4hF}hiw@^BKtRZwW3ChEm}`Ih3# zPkL;%v}o8!L~oT^_Ww?r)Cd=LAxo0O;h&?QqO4T$Sa_wf*;rp5BqpXv;l z&J4TZ6s50NT(qKdA}=N0^_yM~WEj(MzWe+(j00LY*>W`2_B_4)8A|0Q5EL)J;%&-azG2kXQQqC}vLX4v#KPLFf(0fz z{xl*g0j(O-wJujHYUMHfC(|SxaH1|PPP-o;a9NoKxo_LMuAy@M&o+n_>WTy*`W2+@ zEpm--&lv3n#VyrWnjh7Ll&cL$1DhUuQIAhzJG9N`h*EPlky=nb_Tvf80>wdc$Lcb6 z2KfljQv%Bmir(e2Pr`#c=gm15hd%Qw0!sR3zipNyn6fua+JAzq_hRjy~(;rzpSMLs$eOjO&1bjRSG(y8s^(XyF z(FN+YZ&7Dfom0q@wsUb;AZ$Ne#n<8X5uV$n%bAtp*^|h{+<_kkDZUj>eoEfFtVbp$ zmSp2NAF!2+vcmd%V5|7~wZ;l`G}4!>zI_eJ1Bv6(11$w!36fxY6c*5Scx}Jwq%lTu z%=0p=rHEE&4F)VbBT_4=LBfh(1uL)t00G6leUZrxh8>>kZ-bK_?JzW{kgiL-q`Vq0 zXxkGooFDcc%Le`K;@1P6>S3rhq8%P8GJq^@*#w|oWll1B-&|*f=_HkkbZuJ;0Jl$` zo_U=lobP`heAvBwN|OqtzKuWcir(oQ{3N}Q zMwfOY7O&3pAPh7Hiw$JXkt<)F*MKEqna<(;{GfP!axGj~JVTI+wCLzZB{Sxf*JG{c zNRHpGZibpH(59=#zVDEw3(qV{BG73=?LEAnaGazGd&(awMUw=|I&(`YUHUG# z7pO3BMP;BD7Qev;*ziu(hjohbZk5qL!lI(TiGul(?Q(G%Cw#@AGCa6dgh^Yig}11y z+C<1C{Q|Xn?K~GfrW)bO#XsKySX+C&GFe)L@sx(XPsHNejWfw7fdX)@V(opy788SG z1NTZ^-+3&t#MW8|i`RZPMZGg~mbowzE_u8)akv1=L?v4i9Ph1Ms(|9r{WVexdAXMX zKB`71LNy9ac?U#5-6JNpvUKks6~_o1l5fdykTQ(I@@wvGOZuF4eBX;~IMx>T7Y5Xo zKdNuFY|B0rZe{V})uaBLSexQs3ofd`JZ3w*rm;(RjMhFOnWrLemJ|OAzO^A=+pfSZ zQ6bcEs+lV}B8uhqG{fI+AK0A^CZP;Un_iU;n0%D>4N5u=dHICeCAyR~uaOsF3)XZE zn&(Eo!AvV7MEowkR|dAi+KWkT5~yJpOjNF!HKVm{XD^Ki2AGB|mmKIv`4kiuwH?3a zlrgXpRonO&n}P&zNN~7)o^o}+(HdL_aS(P|%75v_Dtfgae%nG!xo+uo>5pGs6Dls@ z+0GOdah}<|TtHo9zFd|6Uc>B}(9$pK(pEC)rp}xv;;lhl%HL73X@)>HQ)g6} z;r4w+a6GcDm5}(S3$fw@2CjMx^mgT8i04Ica~9_AYfuUSMoh+iV?SadBi+H8)bx2* z?Qgk3DBt&tuV-}qZHSObS9DVZ6EoKD#OL}RXGH1O)Cc^rtGl6l>-zi%zxa`WwE(slj3G(oyBqYehs(bxp91Fkc#T%`T=9;#pj znX`b+FdEL<0;jVy^p>>Fk6i+(kty?g-&iZTTZc*N#x7L>kv629a55=G3>D7)siD$S z9a8ogTE3)?nIVuPybCwCz?CzTT6Gm4?JN-xC;tA;5e~z1ugC0NMt)cV7aD04MZ9Uj zM{9=saFdUI7;A<&Xd(SLXDCkV(c1cE!nc2spqg8y<54AjDwyBWDb#3d%G6X zJs&o^*h2Szoe0$099?mjO`$)=yTQX(cy`x!8GUWCZE)}V+qL&twyoFoUHoAtyT4oJ zPtd|gfQ<>AeBqAOc!>A6{H6RPrMs@7r~Dx zfFji7nUG>Lz%j9LcyQtdr0>KT#Ky6#>@dSm?iI%{Tn;wv%0AMeXKGJ4usrhxMi2FT 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