From a112b963548092e32d9517c25c0a77dee790fb45 Mon Sep 17 00:00:00 2001 From: evilew <116174240+evilew@users.noreply.github.com> Date: Sun, 6 Oct 2024 15:20:45 +0200 Subject: [PATCH] Revert "Industrial Feeding Tubes" --- .../crafting/recipes/recipes_misc_gs.dm | 17 - .../code/machinery/feeding_tube_industrial.dm | 462 ------------------ .../icons/obj/feeding_tube_industrial.dmi | Bin 5656 -> 0 bytes code/datums/traits/neutral.dm | 4 +- code/modules/recycling/disposal/outlet.dm | 4 - code/modules/recycling/disposal/pipe.dm | 3 - tgstation.dme | 2 - v_CHOMPstation2/sound/rakshasa/Corrosion3.ogg | Bin 9043 -> 0 bytes 8 files changed, 2 insertions(+), 490 deletions(-) delete mode 100644 GainStation13/code/datums/components/crafting/recipes/recipes_misc_gs.dm delete mode 100644 GainStation13/code/machinery/feeding_tube_industrial.dm delete mode 100644 GainStation13/icons/obj/feeding_tube_industrial.dmi delete mode 100644 v_CHOMPstation2/sound/rakshasa/Corrosion3.ogg diff --git a/GainStation13/code/datums/components/crafting/recipes/recipes_misc_gs.dm b/GainStation13/code/datums/components/crafting/recipes/recipes_misc_gs.dm deleted file mode 100644 index 9d53cff6..00000000 --- a/GainStation13/code/datums/components/crafting/recipes/recipes_misc_gs.dm +++ /dev/null @@ -1,17 +0,0 @@ -// GS miscellaneous recipes - -/datum/crafting_recipe/industrial_feeding_tube - name = "Industrial Feeding Tube" - reqs = list( - // /obj/machinery/iv_drip/feeding_tube = 1, //Removing this. Seems to be buggy with not-items used to craft - /obj/item/stack/sheet/metal = 5, - /obj/item/stack/sheet/plastic = 5, - /obj/item/pipe = 2, - /obj/item/stock_parts/matter_bin = 2 - ) - parts = list( - /obj/item/stock_parts/matter_bin = 2 - ) - result = /obj/structure/disposaloutlet/industrial_feeding_tube - tools = list(TOOL_WELDER, TOOL_WRENCH, TOOL_SCREWDRIVER) - category = CAT_MISC diff --git a/GainStation13/code/machinery/feeding_tube_industrial.dm b/GainStation13/code/machinery/feeding_tube_industrial.dm deleted file mode 100644 index ddf73f97..00000000 --- a/GainStation13/code/machinery/feeding_tube_industrial.dm +++ /dev/null @@ -1,462 +0,0 @@ -/** - * Contains: - * Industrial Feeding Tube - */ - -/obj/structure/disposaloutlet/industrial_feeding_tube - name = "\improper industrial feeding tube" - desc = "An imposing machine designed to pump an absurd amount of \"food\" down something's throat. It seems to connect to disposal pipes." - icon = 'GainStation13/icons/obj/feeding_tube_industrial.dmi' - icon_state = "base" - max_integrity = 500 //Durable... - anchored = FALSE - /// Is it welded down? - var/welded = FALSE - /// Who the tube is attached to - var/mob/living/attached - /// Where the tube tries to dump it's stuff into - var/output_dest - /// It's Glogged ! - var/clogged = FALSE - /// Are we currently pumping? - var/pumping = FALSE - /// Stuff we're currently trying to pump out - var/list/pump_stuff = list() - /// How many items we can push per-pump. - var/pump_limit = 5 - -/obj/structure/disposaloutlet/industrial_feeding_tube/Initialize(mapload) - . = ..() - - update_icon() - - if(anchored) // So it can be mapped in, attached to something. - trunk = locate() in loc - if(!trunk) - return - trunk.linked = src // link the pipe trunk to self - anchored = TRUE - welded = TRUE //Make it functional - -/obj/structure/disposaloutlet/industrial_feeding_tube/CheckParts(list/parts_list) - ..() - pump_limit = 0 - for(var/obj/item/stock_parts/matter_bin/mb in contents) - if(mb in pump_stuff) //stuff we're going to pump are not being used to build us. - continue - pump_limit += mb.rating * 2.5 // ~20 items per pump with 2 bluespace bins - - pump_limit = ceil(pump_limit) //Only whole numbers - -/obj/structure/disposaloutlet/industrial_feeding_tube/deconstruct(disassembled) - if(!(flags_1 & NODECONSTRUCT_1)) - new /obj/item/stack/sheet/metal(loc, 5) - new /obj/item/stack/sheet/plastic(loc, 5) - new /obj/item/pipe/binary(loc, PIPE_STRAIGHT, NORTH) - new /obj/item/pipe/binary(loc, PIPE_STRAIGHT, NORTH) - - if(contents) //Anything still glogged inside... - for(var/atom/movable/AM in src) - AM.forceMove(loc) - qdel(src) - -/obj/structure/disposaloutlet/industrial_feeding_tube/Destroy() - if(attached) - attached = null - if(output_dest) - output_dest = null - - if(LAZYLEN(contents)) // Just to be safe, lets dump everything out before it's deleted. - for(var/atom/movable/AM in contents) - if(istype(AM, /obj/item/stock_parts/matter_bin)) - if(AM in pump_stuff) // Unless it's one of our component parts.. - AM.forceMove(loc) - continue - qdel(AM) - - return ..() - -/obj/structure/disposaloutlet/industrial_feeding_tube/MouseDrop(mob/living/target) - . = ..() - if(!usr.canUseTopic(src, BE_CLOSE)) // iscarbon() so that xenos/wendigos(?) can do feeding stuff maybe. Maybe. - return - if(!welded) - to_chat(usr, "You need to weld down \the [src] before you can use it.") - return - if(!isliving(target)) - return - if(attached) - attached.visible_message("[attached] is detached from [src].") - attached = null - update_icon() - return - - if(iscarbon(target)) - var/mob/living/carbon/feedee = target - - if(HAS_TRAIT(feedee, TRAIT_TRASHCAN)) - var/food_dump = input(usr, "Where do you shove the tube? (cancel for to just feed normally)", "Select belly") as null|anything in feedee.vore_organs - if(food_dump && isbelly(food_dump)) - // Best to be safe with this thing. Since you can eat pretty much anythign with it... - // Including People, Intentionally or otherwise. - if(usr != feedee) // If someone is feeding themself, skip the prefcheck. - var/feedeePrefCheck = alert(feedee, "[usr] is attempting to shove \the [src]'s tube into your [food_dump]! Do you want this?", "THE TUBE", "Yes!!", "No!") - if(feedeePrefCheck != "Yes!!") - to_chat(usr, "[feedee] doesnt want to be fed by \the [src]...") - return - - output_dest = food_dump //Attach to vorebelly - attached = feedee - - update_icon() - START_PROCESSING(SSobj, src) - face_atom(feedee) - return - //Either we arn't attaching to vorebelly, or we arnt able to. Let's try to feed them normally! - if(usr != feedee) // - var/feedeePrefCheck = alert(feedee, "[usr] is attempting to shove \the [src]'s tube into your mouth! Do you want this?", "THE TUBE", "Yes!!", "No!") - if(feedeePrefCheck != "Yes!!") - to_chat(usr, "[feedee] doesnt want to be fed by \the [src]...") - return - - output_dest = feedee //Attach normally - attached = feedee - - update_icon() - START_PROCESSING(SSobj, src) - face_atom(feedee) - return - -/obj/structure/disposaloutlet/industrial_feeding_tube/process() - if(!attached) - return PROCESS_KILL - - if(!(get_dist(src, attached) <= 1 && isturf(attached.loc))) - to_chat(attached, "The feeding hose is yanked out of you!") - attached = null - output_dest = null - update_icon() - return PROCESS_KILL - - face_atom(attached) - -/obj/structure/disposaloutlet/industrial_feeding_tube/update_overlays() - // A lot of this is temp. More likely than not you shouldnt see this comment as it'll be properly updated when reo PRs this. - // Or it wont because epic fail :333 - . = ..() - cut_overlays() - - var/mutable_appearance/tube_overlay = mutable_appearance('GainStation13/icons/obj/feeding_tube_industrial.dmi', "tube_idle") - - if(pumping) - tube_overlay.icon_state = "tube-pump" - else - if(attached) - tube_overlay.icon_state = "tube-active" - else - tube_overlay.icon_state = "tube-idle" - - if(welded) //if we're not welded, dont show our light on. - add_overlay("light-[clogged ? "r" : "g"]") - - add_overlay(tube_overlay) - - -// expel the contents of the holder object, then delete it -// called when the holder exits the outlet -/obj/structure/disposaloutlet/industrial_feeding_tube/expel(obj/structure/disposalholder/H) - var/clunkVol = LAZYLEN(H.contents) - if(H.hasmob) //Uh oh- - clunkVol += 25 - playsound(src, H.hasmob ? "clang" : "clangsmall", clamp(clunkVol, 5, H.hasmob ? 50 : 25)) - H.active = FALSE - H.vent_gas(get_turf(src)) - if(clogged) - clog(H.contents) - else - for(var/atom/movable/AM in H.contents) - pump_stuff += AM // Get ready to pump! - AM.forceMove(src) - if(!pumping) //Lets start a new pump cycle if we arnt pumping. Otherwise, it'll just be added to the queue. - pump() - qdel(H) - -/obj/structure/disposaloutlet/industrial_feeding_tube/proc/pump(repeat = TRUE, unlimited = FALSE) - if(clogged) - return - var/list/this_pump = list() //What we're going to pump this cycle - var/item_count = 0 - for(var/atom/movable/AM in pump_stuff) - this_pump += AM // Add to the stuff we're currently pumping - item_count++ - if(item_count > pump_limit && !unlimited) //We're pumping as much as our parts allow! - break - if(!pumping) - pumping = TRUE - update_icon() - spawn(8) - pumping = FALSE - update_icon() - spawn(9) //Wait for the animation to finish - - if(!output_dest || !attached) //We either arnt, or got disconnected by time stuff was about to splort out! - spew(this_pump, TRUE) - if(LAZYLEN(pump_stuff) && repeat) - pump() - return - - var/fed_something = FALSE - // Feed Normally - if(isliving(output_dest)) - var/list/not_food = list() - for(var/atom/movable/AM in this_pump) - if(istype(AM, /obj/item/reagent_containers/food/snacks)) - var/obj/item/reagent_containers/food/snacks/food = AM - var/datum/reagents/food_reagents = food.reagents - if(food_reagents.total_volume) - var/food_size = food_reagents.total_volume //We're cramming the Whole Thing down your throat~ - - SEND_SIGNAL(food, COMSIG_FOOD_EATEN, attached) - - food_reagents.reaction(attached, INGEST, food_size) - food_reagents.trans_to(attached, food_size) - - food.checkLiked(food_size, attached) //...Hopefully you like the taste. - - - if(food.trash) //Lets make the trash the food's supposed to make, if it has any - var/obj/item/trash = food.generate_trash(src) - if(not_food) - not_food += trash // If it's already going to get clogged, clog it more with the trash - else - trash.forceMove(get_turf(src)) // Otherwise move it to the tile. For convinience - - fed_something = TRUE - pump_stuff -= food - qdel(food) //Gulp... - continue - else - not_food += AM // That's not (traditionally) edible! - - if(LAZYLEN(not_food)) - clog(not_food) // Now you've gone and clogged us... - - // Feed Voraciously - if(isbelly(output_dest)) - var/list/inedible //Some things shouldnt be eaten... - for(var/atom/movable/AM in this_pump) - pump_stuff -= AM // We're putting this in. Remove it from the list. - if(isitem(AM)) - var/obj/item/I = AM - if(is_type_in_list(I, item_vore_blacklist)) - inedible += I - continue - if(isliving(AM)) - var/mob/living/cutie = AM - if(cutie.devourable != TRUE) //Do not eat this QT... - inedible += cutie - continue - - fed_something = TRUE - AM.forceMove(output_dest) - if(inedible) - clog(inedible) - - // After everything, if we've pushed something, play the "rubber tube noise" - // It's technically an evil digestion sound from a snowflake shadekin, but it makes for a good tube sound. Thanks Verkie! - if(fed_something) - playsound(attached.loc, 'v_CHOMPstation2/sound/rakshasa/Corrosion3.ogg', rand(10,50), 1) - - if(LAZYLEN(pump_stuff) && repeat) - pump() - else - pumping = FALSE - update_icon() - -/obj/structure/disposaloutlet/industrial_feeding_tube/expel_holder(obj/structure/disposalholder/H, playsound=FALSE) - if(playsound) - playsound(src, 'sound/machines/hiss.ogg', 50, 0, 0) - - if(!H) - return - - spew(H.contents) - - H.vent_gas(get_turf(src)) - qdel(H) - -/obj/structure/disposaloutlet/industrial_feeding_tube/attack_hand(mob/user) - . = ..() - if(attached) - attached.visible_message("[attached] is detached from [src].") - attached = null - output_dest = null - update_icon() - return - -/obj/structure/disposaloutlet/industrial_feeding_tube/attackby(obj/item/I, mob/living/user, params) - if(user.a_intent != INTENT_HELP) - return ..() - switch(I.tool_behaviour) - if(TOOL_WRENCH) - if(welded) - to_chat(user, "\The [src] is firmly welded to the floor. Cut the floorwelds before trying to unwrench it!") - return TRUE - var/turf/T = get_turf(src) - if(T.intact && isfloorturf(T)) - to_chat(user, "You need to remove the floor tiles before [anchored ? "detaching" : "attaching"] \the [src]!") - return TRUE - if(anchored) - I.play_tool_sound(src, 100) - - anchored = FALSE - trunk.linked = null - trunk = null - attached = null - output_dest = null - - user.visible_message("[user] detaches \the [src] from the floor!") - return TRUE - else - var/found_trunk = FALSE - for(var/obj/structure/disposalpipe/P in T) - if(istype(P, /obj/structure/disposalpipe/trunk)) - var/obj/structure/disposalpipe/trunk/newtrunk = P - if(newtrunk.linked) //Trunk is already linked to something - continue - found_trunk = TRUE - trunk = newtrunk - break - if(!found_trunk) - to_chat(user, "\The [src] requires a trunk underneath it in order to work!") - return - - to_chat(user, "You attach \the [src] to the trunk.") - anchored = TRUE - - I.play_tool_sound(src, 100) - update_icon() - return - - if(TOOL_CROWBAR) - if(!clogged) - to_chat(user, "\The [src] doesnt seem to be clogged at the moment...") - return TRUE - - user.visible_message("[user] starts to pry open the maintenance hatch of \the [src], attempting to unclog it...") - if(do_after(user, 30, TRUE, src)) - user.visible_message("[user] unclogs \the [src]!") - unclog() - return - . = ..() - -/obj/structure/disposaloutlet/industrial_feeding_tube/welder_act(mob/living/user, obj/item/I) - if(!I.tool_start_check(user, amount=0)) - return - if(anchored) - //var/turf/T = get_turf(src) - if(!welded) - if(!trunk) // If we're attaching it, we need to check for the pipe we're attaching to - to_chat(user, "\The [src] needs to be welded to a trunk.") - return TRUE - to_chat(user, "You start welding \the [src] in place...") - else - if(clogged) // There's junk inside! - to_chat(user, "There's junk inside \the [src]! Clean it out before trying to remove it!") - return TRUE - //Already welded, lets cut it free - to_chat(user, "You start slicing the floorweld off \the [src]...") - - playsound(src, 'sound/items/welder2.ogg', 100, 1) - if(I.use_tool(src, user, 20)) - update_icon() - playsound(src, 'sound/items/welder.ogg', 100, 1) - if(welded) - to_chat(user, "You slice the floorweld off [src].") - welded = FALSE - trunk.linked = null - return TRUE - else - to_chat(user, "You weld \the [src] to the floor.") - welded = TRUE - trunk.linked = src - return TRUE - - - else - playsound(src, 'sound/items/welder2.ogg', 100, 1) - to_chat(user, "You begin deconstructing \the [src]") - if(I.use_tool(src, user, 30)) - playsound(src, 'sound/items/welder.ogg', 100, 1) - deconstruct(TRUE) - return TRUE - -// Someone got stuck inside after it got clogged! -// Lets let them force their way out -/obj/structure/disposaloutlet/industrial_feeding_tube/container_resist(mob/living/user) - if(user.stat || !clogged) //If it's not clogged, they'll be ejected soon... One way or another. - return - playsound(src, 'sound/effects/clang.ogg', 50) - visible_message("\The [src] loudly clongs as something inside tries to break free!") - if(do_after(user, 100)) - unclog() - -/obj/structure/disposaloutlet/industrial_feeding_tube/proc/clog(list/clog_junk, loud = TRUE) - clogged = TRUE - for(var/atom/movable/AM in clog_junk) - if(!(AM in pump_stuff)) - pump_stuff += AM - AM.forceMove(src) - - - update_icon() - if(loud) - playsound(src, 'sound/machines/warning-buzzer.ogg', 50, 1) - -/obj/structure/disposaloutlet/industrial_feeding_tube/proc/unclog() - - spew(pump_stuff) - - clogged = FALSE - update_icon() - -/obj/structure/disposaloutlet/industrial_feeding_tube/proc/spew(var/list/spew_stuff, playsound = FALSE) - var/turf/T = get_turf(src) - - if(playsound) - playsound(src, 'sound/machines/hiss.ogg', 50, 0, 0) - for(var/atom/movable/AM in spew_stuff) - if(AM in pump_stuff) - pump_stuff -= AM - target = get_offset_target_turf(loc, rand(2)-rand(2), rand(2)-rand(2)) - - AM.forceMove(T) - AM.pipe_eject(dir) - AM.throw_at(target, eject_range, 1) - -/obj/structure/disposaloutlet/industrial_feeding_tube/proc/face_atom(atom/A) //Literally stolen from /mob. Sue me. - if(!A || !x || !y || !A.x || !A.y ) - return - var/dx = A.x - x - var/dy = A.y - y - if(!dx && !dy) // Wall items are graphically shifted but on the floor - if(A.pixel_y > 16) - setDir(NORTH) - else if(A.pixel_y < -16) - setDir(SOUTH) - else if(A.pixel_x > 16) - setDir(EAST) - else if(A.pixel_x < -16) - setDir(WEST) - return - - if(abs(dx) < abs(dy)) - if(dy > 0) - setDir(NORTH) - else - setDir(SOUTH) - else - if(dx > 0) - setDir(EAST) - else - setDir(WEST) diff --git a/GainStation13/icons/obj/feeding_tube_industrial.dmi b/GainStation13/icons/obj/feeding_tube_industrial.dmi deleted file mode 100644 index 058e5f47c1e60f6af24007edbafba2c5da0947f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5656 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 diff --git a/code/datums/traits/neutral.dm b/code/datums/traits/neutral.dm index 77b03dd8..3c1f24e6 100644 --- a/code/datums/traits/neutral.dm +++ b/code/datums/traits/neutral.dm @@ -191,10 +191,10 @@ medical_record_text = "Patient has been observed eating inedible garbage." /datum/quirk/trashcan/add() - add_verb(quirk_holder, /mob/living/proc/eat_trash) + quirk_holder.verbs += /mob/living/proc/eat_trash /datum/quirk/trashcan/remove() - remove_verb(quirk_holder, /mob/living/proc/eat_trash) + quirk_holder.verbs -= /mob/living/proc/eat_trash /datum/quirk/universal_diet name = "Universal diet" diff --git a/code/modules/recycling/disposal/outlet.dm b/code/modules/recycling/disposal/outlet.dm index 54d6b16f..cca78f84 100644 --- a/code/modules/recycling/disposal/outlet.dm +++ b/code/modules/recycling/disposal/outlet.dm @@ -16,10 +16,6 @@ /obj/structure/disposaloutlet/Initialize(mapload, obj/structure/disposalconstruct/make_from) . = ..() - //GS Add: Hacky Solution, but it works. - if(type == /obj/structure/disposaloutlet/industrial_feeding_tube) - return - //GS Add End. if(make_from) setDir(make_from.dir) make_from.forceMove(src) diff --git a/code/modules/recycling/disposal/pipe.dm b/code/modules/recycling/disposal/pipe.dm index 57d0b47a..aed2310a 100644 --- a/code/modules/recycling/disposal/pipe.dm +++ b/code/modules/recycling/disposal/pipe.dm @@ -264,9 +264,6 @@ var/obj/structure/disposaloutlet/O = locate() in T if(O) - //GS add: Fixes a minor issue where the trunk gets linked to feeding tube improperly - if(O.type = /obj/structure/disposaloutlet/industrial_feeding_tube) - return linked = O diff --git a/tgstation.dme b/tgstation.dme index 8c5d1233..f1e1a7c2 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -3080,7 +3080,6 @@ #include "GainStation13\code\clothing\head.dm" #include "GainStation13\code\clothing\suits.dm" #include "GainStation13\code\datums\components\fattening_door.dm" -#include "GainStation13\code\datums\components\crafting\recipes\recipes_misc_gs.dm" #include "GainStation13\code\datums\diseases\advance\symptoms\berry.dm" #include "GainStation13\code\datums\mutations\fatfang.dm" #include "GainStation13\code\datums\mutations\radfat.dm" @@ -3099,7 +3098,6 @@ #include "GainStation13\code\machinery\adipoelectric_transformer.dm" #include "GainStation13\code\machinery\fattening_turret.dm" #include "GainStation13\code\machinery\feeding_tube.dm" -#include "GainStation13\code\machinery\feeding_tube_industrial.dm" #include "GainStation13\code\machinery\supply_teleporter.dm" #include "GainStation13\code\mechanics\fatness.dm" #include "GainStation13\code\mechanics\fatrousal.dm" diff --git a/v_CHOMPstation2/sound/rakshasa/Corrosion3.ogg b/v_CHOMPstation2/sound/rakshasa/Corrosion3.ogg deleted file mode 100644 index cef4bf5c2d0d231fe27357610f5100a9ab01f615..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9043 zcmb7ocUTn7((f!eOBN8242vK+3W#Kuys%^>u98+HD+q$*oMFjG4iXg*5JX9WM3F_3 z2uN@ViXf<@I}7hQ&pG#x`+awwo_=box~san>(^a926yio19-qc&y~Onf|@RP9l{Rr z^YC(T@y4+rYR@htKMWw}#7l?)uIIlWTu+?jS`}^dCE>IGd{Xc)^ss?qbC>(h*A2Yx za=5!Vn4W9r(B=>q6_pW{78l1UgAiUc=2KBMg#aV~5W=O))EhFMi~s;?04RDUlNtD~ z^YC+EXr(57U^I?ed8RoY5Zwk+JDn9Qf$u?{H;1GX0{{>JAyASWuP-Xt&O>(QH5wxp z!2ui<5hI$;9HE#oYq`mpHm`zJTxTbtv>*h)iBKlt45x={aYp>Bf|j8jVxi?|haqSM ztM{={6=Y-p$aLq)DR|ERhkZm31ck1cRGm|yuaW2%@Izm0xJ1eb?yfTI2MrU zbk4+SzR-8!76%Z5^ISWH{(U3s$OP-iF6$T#uMsWpgt+h|T*_EN5n-Y}Wr8q6*x2}^ zruMgx3#5WD^$@$SRa^E#)(C8zv1$UKC9)9^&&Eeg}YSsto5D@DkGWmK^X_(DYFo@X;MiHyLcUCjZwWfXfa(%5*~N z#tH*z3S)FqW0R62bb3aTdXxW)VoV=;9xtFHocVV$T|-DDlI_o@B?MH<^pr%E;=&Tx zAo}T7j-2tFy%9O8oYkT#`rOGkF($eEZB^)8?@_t+Joi!Nl|1iJ=umcFQTBL__oy~S zPT2+ZkT#dNw(0}OV_wgr>SwkG+qrzmA+DM+2m4x#=d4w>(SuY>dM_0K}=Re^HN+fci=Pc(; zWA{m-N-Gk32Q6h!NYsE;g&D$``OAEsoO{jz0O8dC8O5BDOb*eU6?tA{f|aGIv4TSa z&xgg|3*o9~J)`oQ4L#JV6k;zvz=WixOdS)N*9yGrODEu7jQcI5?fdG2J0vY#=X8UxoByf&W2{rYHSC3hQ7Bk4_Vh-Up$P zpOOZ9k`r|5V7M4F*i10^PBJ2mrEMmqkdp}Hlpk`Y1!>h9WYH3|c=#V>+V?+^1Hy(& zE^$Tczmb!;ESt!!oyud8%6E>Os_cSqRmJ}oa*CW|E6}kO(Xs2%i2^a1E-^XPZN=_G zb(`(~WBE67K)`@S9nPcvU&!eeV^syg(ETh z7oLJkO~Hi`CW?sv>6yYo3!K=D^PQGb{x?hDAi6g-&^ca(B488koft3@&-Ko8i&`T3 zA$bNj!NY`XwP;Up($oQJaPMRaV^tmIT+b`jhkwm0`C#Ol=bbJOV=JR~8)_~wanNa& z9+d+>g3AC@p9JH3&dW!daFK*MhF)c~L>j@*GDw%hSDw z-K4@3vd4G_DroeHZUZdLI@=QkMp!wn8*@ednzCz(3R0sf1Jb-FoS3!GH&FF)q z(Z244ui}J{jrOFjF`YVMO3etNXV#3GFhN>Y9*Uz81<`ZNQ=EK_|d z18J7&Yny>wm{yzcRi8??G4e%PW!NnGAuSH|rhoY&G9y6gQmd~G)4fHR0??2xC^bXQ zT)wv;9Xxj!arb;w69}mZ6PrndFKBlTgHvVJj08C|8K^}wo0$VCBOjXy1k%C>VPT4# zIkd4j@HIjNS!Ez`(nHkZ<;WRK(2|dh4NkME#X->AbjB*icj>q8WDDq^@1$?g;(_no zY+sw->eIi15Sc-a%}Cqd5sOtv{k!qi)tlAZWUmF^zilAz*qiSXN%x)mjas-n-<7nx za@?QdHuqL+v&DP9t4`?kojlB~wR4cUJRT6_>}|Da&HC1L3xXvlq2bR275#kh@jR$yH98dql>h85SCoJQJ+FR6eIGO9wwS}?9Cu{G9z zj6*S?Dq+klC^$Dh#RB?)`2^0@G^nboFUM{4%>dfbKp4a7IIP&0={C}Km}8X;LY+bu zJdn_aL?CQQ&tV%b(8m-`#Mz&hHqOzD_J#}g=Y=K1`q19gu%Wy#Ll`U@q_m;wsW4b= z1RMsdY6f9ThJ&s9c)B@j5pL5_76d}xcnZDWQ!|o6&NT9j(Wy^@sPw~eCL|G4Ey5QZ zFo1C!6U3CS?*bhzF`5P=|M0wxF9-*{Ngo_%?jUGV5;5(I1owG+-*XNIFe^+~ z(Sq^gydA+9mH)<5`cZV1DI5;hF3ZpmTjxkmg~MtQquN?!Wf;r2 zMlXGE6`C2X;=y3FbQSJra@+!=)Y451qy);!m>i#pVJua(tD2b{S9&HA*Z^PO?bGJG<;-x?cFi%MZP?JiJ zHl+HP%CcCWPZJLiq8u&OpXW^l0$2?u2C6yFhqa*p@WPY-;XO@98&@wRT7P!b((n0Az6z#t$_`lkf!eRgP0K1WLp7+I7Ps4Fq za1_q&IVD&|4*>VSfJdSoLB5lTMR)?A^#kBM@WE7>W7N_es)3v6$afsQ9Fb(uzPx4% zXc%j`E;KwnV^l0MI*rkaoBsaTy$dn!YKP;;Vw<>lIJr1Dxw(X(TzBkTGjiNq zo}^Ykeh`#enHe2h_B6MuwywRp=_~V;|ARvZ5v5EB0VG7CU?5)+{SMfx)5B^?(iEnC zr#`0cWcn?P`%09YP* zwdIv}OrZefX$pgl4ka-$ET-B zyB2%xR&8ZKyK)E+61?fs_gf(Fuc7H z4(KNw!P!_pbbp^H#5xJH(Qf*80HzoSX=YrgbkmQTlgNiZgSk4~mei4_LfH-~vTIgp{n4>KmYHxjxAoEcnpM`Bqo1OeUz}R@ z9C)zVSt_$y3zH5}R7Y-Ew7nHwtLN;Tf^_MeS{K4pkO$RO%AwyMpWQU!+usf+QU&_a zj=*>rxZ-xRSD&iryuay~t0?#_c&DJRS%mS@B1Bmoo3H$9b729f>ndHnTO#jP8`#CXPqN=f%2Z$!CK!9%iQ?g*Cf>>Uo`|kMW5CAPU*)4!1!vocN7yv$p_pHa>+;~;s zkIZ=*xqxi2acV#O8*nORu}QE_8Lq7PQu_YmZVCZ2@#FU^`gnweQfyV`>h421-A9%F zDNDzl{#>$3ImxD4@_;i3(A9p@+#^`7AAS0qau=%{;5FY)hSzwo#K*9T7<}{p?zgKeS@JvgFmW+y!|F} z42`lXWuF$*@Nd^BF1$`Dk##w#+kRm;y`C?vN*v_IMa*5D3WIRWp=JyC=FL4z5BBb7 z|2Y*EiZTccQeQP#SKSrs3J;2BGz_LIG?9g4$3mKp$6iYNCQHbQG^JZe0U@?rPBZ{e za9tVgM^d3_vZUlYX1S1w3E1({+Ef`rJ#oU&65--w{MaeakX#>XJZ#88^sv;z zksYzQqULjYgMIa}j;hqIMTghOA~0BgnB_9=BkZL>N814DxdR?}%4b#`UXJpANsf-F z9LuF8l3tZpevb?sNaO63{8c9p^Vj-0qGREobp5z(TCV+`7!x<5*^v*M2^Vs%Nsa^=c6J~gtjlmk38hrjdw){Ttn3uoL; zfkhm<#hYmF1vo_9X}LAt6-aGe%bBJB_T<^&?`!E_780%X!4S}3F{f$BDB;e|#sj<|z=J@|XH%u$kekD( zX%hvS8^fLE9bM1Y6Jwx7bC$is`~=yWTe42yr2xTW`Wx`s|zuQo3{d8;sGHY3}B z2b8K|?NT(UGkA@G22DahxtN7EZ8lGTq7Ne%*e5Q;`l%{dVea8iQ%Ujo{8oo-T?ZZW zB%;V&_9*6M((P?ET_#aBGN8{}RXd$AC=Rb@CZ@a{7xeq4QHeqpcg3_tB+=(RA`v#rPKz7z zte^BMQ%o#Y;ACHpRIk1Ieqed)J9|gCmHLE(WITJl9f+gxmtDl2mD3#2*`xwM{PF0=-igC^ zI$N6VCHx1kYJc^V+Cy`wuGl-x_Z0cFbM;j;=JhqGf7EU0PTvjtCcz{*qQc?c&;Om~ z`Vzh6TlM6$JQ<2dg4GY%#|e|^1$CW!J0-6Yc83vs9twJqRD{>R*dMxG@%j~IKXtsI zkrQ7wgu|_a&?`RhaYsCQcH!{v;u(8xco(!EOHwYA*XqxBPrA=jBkn0NebJ6&l{pi8- z+L4v?Gx11&W>piKfYGvUVF!ahW~}`WI;=%36MGKV!M#1?P<65mpQ)0}xTP`k4a2nm zknP5%%;|d*IsG_G9k=2FziFmixv-h1L!-Pa0%6}ixlHo#=xu)s)qxOp#VxFyQRyk4 zJZ|_pxQX`Pt8Se6#U3?_m;Ah0sTxMcF~S+Mc!e95xu1u!IQ2j{CaS-}5|}eC-DXY* zRrGHRjr!)~0C~8wdaVPcmwexBsDJ6B5Ae=5=a=|$JO0gM7z5_9!R^CuGlz#Vv}%@Y z^R;<}>Zdx}zqhX&YYDC|XRF)37EPO_!|Kl&{f_*(=%a>>YMPwID&2xlF!Jl9Z{+J4 z+J~+Y6m-~h-(0!=!ggS`g)`)8akLMs7k|k&JGy|}ls+Tzlu|%+AQXkkVkuF(x{!5) za%=ifX9T`|=TVI%RFSYJVN3eQ@usVbXY|7W;~FwyZiPw`j}VzIT0r^w z(v<-JKJAnrrI@zspPA{DQM!R9!#-FWB7$*#cH_+i5SZ4ssa^2mvvmj!bsXMX7UYoY=2pAq z+X&Y9NMhaa!pw2r`zN{HUM6KfVP!cO9(GDGy#zJ9g7(fP5A~u3(iYC&r(Q}W-)Fg3 z2!=z|q^C-%oyq`e+BDg{n{ej46dBgPVjqY| z$FV_c!I4F~w(!sI9ghQJr@eyFz#j`}q*)Xz>6n~DxB8!fl`TN`C$-zXr01sKy|;b5 zv9L4xc{1;v4E=&|wzd0gyG&zzsdYjIqzw zGo9QQR&Wk9Lc`t19c)6h@L}AydbdvJdc^{#{62>q<&-+8 zZ)QL^vMjx4&&a(BL`IVqy%bNq>mQnr3w{%a)aZxdiL(BTt9xZ3e#28*89DFU+n`{P zF=dE}fd284HEP51OZX&dcsvUe<}CfW)e5_GiIdwF^+k|b+re^3{!TI?$d6A~6jXS13=_)oqAo2sYQ`IbMWqEB`LQ)N(a1$E7KmYjq4KH&q^KnjKNB7a>4=g@v=v0WDag$eFCq5?rj2tf>HfePfTahAptI%aP z@HNc!@Lr=$Tyq48b$L@zPg6Bhfa0xewORv00daUSB=c`~Ta7%d{{pI$yo19|dc8yt49_y95{b#yy z{&It4HZw(WmKK*n?tj=kz7w_d2Z0vS>MRkOrtM(cnSS&_Z#A<(8JpYlmPu710kOvX zu#bQJxIi1OM;r6_<^9d))s2;JdW)=^vQlLF275z(t>=eU?zTgHTs{DQOiu_U{8wX| zm@=Rv+t*C!&7$+x28`L?4ipoueMeyLg7NwOf>7k# zsrQ^O1J4v4%=zjzmQv5X7++eso>>AJnk__@A-&-Fx+MN^DRJbiq(6S^gfe0Lpk7+< zaEMd$lS$3q@SWl!SFuhF{y4>$^ckR_O<{q1B9`Wt!NyFW9OVtJltfr{u@M4kH`nPT zm{IQ=BYbRRe6uxpT}fj^$*g8LUG@NiEDpT&XzunqR}{Vb$sgKmd$Y0K&Z7$QccRzR z&g$|>P1hv0TZYBdWsr(#K-|@4;T6&TtB{8z^fjf!71e*uEQ;o9qfMdDrq^e650rGe zPOS*z2F-`}XJVX2enibKzv?u4F-5PPmiYJDeQ7VVdNK+^*eJbzx>`22c7)uZ25$2@7|U-F!07fNHYo7Xorf-P%^u`r@f>I7W@n*TiXXYD`Pb={KFBvK^$L z?bZIet{EO>L#H+N6HCCepEJGa$`su03D(TXS@&jx){a0e9b}%9mCK*0Z-(6eBtXg|=i|fA^ zHl)3*zjQ@jj7#7N;pZI6!Ef5E@SJz@u5JdkLE>b7F!YD&fG7D9sry)sO({s0F=eJ| z6Xg?)VO{ewywY;|H5KO@jJb8KGshEKpCdIk%#K>O1i`B-VI*OaC!J4?vb z3VFL_hn-lg9vUOm3lCxoOnCKT#we|HdHaUTAvcD#Pfyo9Cp1TD!qQ^(Zx+qnV8}5L zVtB{g+jNR{jCBz&Mt^JPlk%=_CA_q$ZqFrzm#;%v9o>DSoNc=#zBS{tditikB@C!u&a<>p1eo|dDct6WL z>xInQCF+lJ2ZXSP+-9(m64Wk_){Hx=@9-eG`{M7maeIO7sQ%3>-v-@ZRfr({)CY>6 zU=I`3?C!YTH0Q~2LUHrDg)wt=lm-)u{aLfms*fV38B=rEMlWBN4>~$#Fj&vIUYEg} zVSRb$$)63!cZN5uv~{x{@v^b?4wLbIQ8_Sxj4Id1M;W*;(tWjO%MktfdN4UUZPKkJ z!)Ww(vz|t-4HN}X-p*n@lmPz$`w7YPP+zk$MOYv*u!d-bmf(R(r4fHssRO_GmHM=2 zH>4)9M~#YiKVdfVRFE9o zGBjoK&2bnc=F&~H=Anu1`0&H2;f<$@x6P#!`jwWi0Uw-TuCh(&-q|@) zZMi!Zxly#oXq3VCS7E8WV%0N$u5y3ccSkD@xV{#YyQ#;&P(4sp8~(`YyZikS`QW)Z z_!v5=k9Gs<`&}K?E~2WE>BIV9w5_Th$OzlM&k~5zjiLc`?I3I@`eozedkTK^-nAP$ zX3{aSSxW-Y`u2{*985t3Poi=5jh~7SXsOl9XVsz-RZHt&(9M04k6%@x8e-`C!9te# zM(?ma1WK95i<-wz0IDwn9(m_@b9>kcf9W@OAQM+#oHjf^HOq!HXZms DUL8By