From 1d424490b2a05af81f00362371603e5c58dfd710 Mon Sep 17 00:00:00 2001 From: Tsar-Salat <62388554+Tsar-Salat@users.noreply.github.com> Date: Sun, 22 Dec 2024 07:08:59 -0500 Subject: [PATCH] YOU'LL GET YOUR MAP WHEN YOU FIX THIS DAMN FLOOR (#12011) --- code/_globalvars/turf.dm | 1 + code/game/area/Space_Station_13_areas.dm | 20 ++--- code/game/area/areas.dm | 2 +- code/game/turfs/open/floor/iron_floor.dm | 93 +++++++++++++++++++++++ code/game/turfs/turf.dm | 4 +- code/game/turfs/turf_texture.dm | 4 + icons/turf/turf_texture.dmi | Bin 6197 -> 6948 bytes 7 files changed, 111 insertions(+), 13 deletions(-) diff --git a/code/_globalvars/turf.dm b/code/_globalvars/turf.dm index ab277cbd05521..f8eeecf61d891 100644 --- a/code/_globalvars/turf.dm +++ b/code/_globalvars/turf.dm @@ -14,6 +14,7 @@ GLOBAL_LIST_INIT(turf_texture_hallway, list(/datum/turf_texture/hallway)) GLOBAL_LIST_INIT(turf_texture_maint, list(/datum/turf_texture/maint, /datum/turf_texture/hallway, /datum/turf_texture/maint/tile)) GLOBAL_LIST_INIT(turf_texture_iron, list(/datum/turf_texture/hallway, /datum/turf_texture/maint/tile)) +GLOBAL_LIST_INIT(turf_texture_iron_nonsegmented, list(/datum/turf_texture/hallway_nonsegmented)) GLOBAL_LIST_INIT(turf_texture_plating, list(/datum/turf_texture/maint)) /* diff --git a/code/game/area/Space_Station_13_areas.dm b/code/game/area/Space_Station_13_areas.dm index 64eb92ee3969c..39db3eb4bdb85 100644 --- a/code/game/area/Space_Station_13_areas.dm +++ b/code/game/area/Space_Station_13_areas.dm @@ -178,7 +178,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station color_correction = /datum/client_colour/area_color/cold_ish camera_networks = list(CAMERA_NETWORK_STATION) -/area/maintenance/get_turf_textures() +/area/maintenance/get_area_textures() return GLOB.turf_texture_maint //Maintenance - Departmental @@ -242,7 +242,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station name = "Science Maintenance" icon_state = "maint_sci" -/area/maintenance/department/science/get_turf_textures() +/area/maintenance/department/science/get_area_textures() return GLOB.turf_texture_hallway /area/maintenance/department/science/central @@ -420,7 +420,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station lighting_brightness_tube = 8 camera_networks = list(CAMERA_NETWORK_STATION) -/area/hallway/get_turf_textures() +/area/hallway/get_area_textures() return GLOB.turf_texture_hallway /area/hallway/primary @@ -642,7 +642,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station color_correction = /datum/client_colour/area_color/warm_ish camera_networks = list(CAMERA_NETWORK_STATION) -/area/crew_quarters/get_turf_textures() +/area/crew_quarters/get_area_textures() return GLOB.turf_texture_hallway /area/crew_quarters/dorms @@ -892,7 +892,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station name = "Engineering" icon_state = "engine" -/area/engine/engineering/get_turf_textures() +/area/engine/engineering/get_area_textures() return GLOB.turf_texture_hallway /area/engineering/hallway @@ -1216,7 +1216,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station color_correction = /datum/client_colour/area_color/warm_ish camera_networks = list(CAMERA_NETWORK_STATION) -/area/security/get_turf_textures() +/area/security/get_area_textures() return GLOB.turf_texture_hallway /area/security/main @@ -1389,7 +1389,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station color_correction = /datum/client_colour/area_color/warm_yellow camera_networks = list(CAMERA_NETWORK_STATION) -/area/quartermaster/get_turf_textures() +/area/quartermaster/get_area_textures() return GLOB.turf_texture_hallway /area/quartermaster/sorting @@ -1473,7 +1473,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station color_correction = /datum/client_colour/area_color/cold_ish camera_networks = list(CAMERA_NETWORK_STATION) -/area/hydroponics/get_turf_textures() +/area/hydroponics/get_area_textures() return GLOB.turf_texture_hallway /area/hydroponics/garden @@ -1571,7 +1571,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station name = "Robotics" icon_state = "robotics" -/area/science/robotics/get_turf_textures() +/area/science/robotics/get_area_textures() return GLOB.turf_texture_hallway /area/science/robotics/mechbay @@ -1615,7 +1615,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station name = "Primary Tool Storage" icon_state = "primarystorage" -/area/storage/primary/get_turf_textures() +/area/storage/primary/get_area_textures() return GLOB.turf_texture_hallway /area/storage/art diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index ac5310f19e421..8afb44fbd6704 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -646,5 +646,5 @@ GLOBAL_LIST_EMPTY(teleportlocs) if(mood_job_reverse) return !. // the most eye bleeding syntax ive written -/area/proc/get_turf_textures() +/area/proc/get_area_textures() return list() diff --git a/code/game/turfs/open/floor/iron_floor.dm b/code/game/turfs/open/floor/iron_floor.dm index 8d9c8173f6016..1774fb5238b6d 100644 --- a/code/game/turfs/open/floor/iron_floor.dm +++ b/code/game/turfs/open/floor/iron_floor.dm @@ -34,21 +34,33 @@ base_icon_state = "floor_edge" floor_tile = /obj/item/stack/tile/iron/edge +/turf/open/floor/iron/edge/get_turf_texture() + return GLOB.turf_texture_iron_nonsegmented + /turf/open/floor/iron/half icon_state = "floor_half" base_icon_state = "floor_half" floor_tile = /obj/item/stack/tile/iron/half +/turf/open/floor/iron/half/get_turf_texture() + return GLOB.turf_texture_iron_nonsegmented + /turf/open/floor/iron/corner icon_state = "floor_corner" base_icon_state = "floor_corner" floor_tile = /obj/item/stack/tile/iron/corner +/turf/open/floor/iron/corner/get_turf_texture() + return GLOB.turf_texture_iron_nonsegmented + /turf/open/floor/iron/large icon_state = "floor_large" base_icon_state = "floor_large" floor_tile = /obj/item/stack/tile/iron/large +/turf/open/floor/iron/large/get_turf_texture() + return GLOB.turf_texture_iron_nonsegmented + /turf/open/floor/iron/textured icon_state = "textured" base_icon_state = "textured" @@ -59,21 +71,33 @@ base_icon_state = "textured_edge" floor_tile = /obj/item/stack/tile/iron/textured_edge +/turf/open/floor/iron/textured_edge/get_turf_texture() + return GLOB.turf_texture_iron_nonsegmented + /turf/open/floor/iron/textured_half icon_state = "textured_half" base_icon_state = "textured_half" floor_tile = /obj/item/stack/tile/iron/textured_half +/turf/open/floor/iron/textured_half/get_turf_texture() + return GLOB.turf_texture_iron_nonsegmented + /turf/open/floor/iron/textured_corner icon_state = "textured_corner" base_icon_state = "textured_corner" floor_tile = /obj/item/stack/tile/iron/textured_corner +/turf/open/floor/iron/textured_corner/get_turf_texture() + return GLOB.turf_texture_iron_nonsegmented + /turf/open/floor/iron/textured_large icon_state = "textured_large" base_icon_state = "textured_large" floor_tile = /obj/item/stack/tile/iron/textured_large +/turf/open/floor/iron/textured_large/get_turf_texture() + return GLOB.turf_texture_iron_nonsegmented + /turf/open/floor/iron/dark icon_state = "darkfull" base_icon_state = "darkfull" @@ -84,31 +108,49 @@ base_icon_state = "dark_edge" floor_tile = /obj/item/stack/tile/iron/dark/smooth_edge +/turf/open/floor/iron/dark/smooth_edge/get_turf_texture() + return GLOB.turf_texture_iron_nonsegmented + /turf/open/floor/iron/dark/smooth_half icon_state = "dark_half" base_icon_state = "dark_half" floor_tile = /obj/item/stack/tile/iron/dark/smooth_half +/turf/open/floor/iron/dark/smooth_half/get_turf_texture() + return GLOB.turf_texture_iron_nonsegmented + /turf/open/floor/iron/dark/smooth_corner icon_state = "dark_corner" base_icon_state = "dark_corner" floor_tile = /obj/item/stack/tile/iron/dark/smooth_corner +/turf/open/floor/iron/dark/smooth_corner/get_turf_texture() + return GLOB.turf_texture_iron_nonsegmented + /turf/open/floor/iron/dark/smooth_large icon_state = "dark_large" base_icon_state = "dark_large" floor_tile = /obj/item/stack/tile/iron/dark/smooth_large +/turf/open/floor/iron/dark/smooth_large/get_turf_texture() + return GLOB.turf_texture_iron_nonsegmented + /turf/open/floor/iron/dark/side icon_state = "darkside" base_icon_state = "darkside" floor_tile = /obj/item/stack/tile/iron/dark_side +/turf/open/floor/iron/dark/side/get_turf_texture() + return GLOB.turf_texture_iron_nonsegmented + /turf/open/floor/iron/dark/corner icon_state = "darkcorner" base_icon_state = "darkcorner" floor_tile = /obj/item/stack/tile/iron/dark_corner +/turf/open/floor/iron/dark/corner/get_turf_texture() + return GLOB.turf_texture_iron_nonsegmented + /turf/open/floor/iron/checker icon_state = "blackwhite" base_icon_state = "blackwhite" @@ -129,16 +171,25 @@ base_icon_state = "textured_dark_edge" floor_tile = /obj/item/stack/tile/iron/dark/textured_edge +/turf/open/floor/iron/dark/textured_edge/get_turf_texture() + return GLOB.turf_texture_iron_nonsegmented + /turf/open/floor/iron/dark/textured_half icon_state = "textured_dark_half" base_icon_state = "textured_dark_half" floor_tile = /obj/item/stack/tile/iron/dark/textured_half +/turf/open/floor/iron/dark/textured_half/get_turf_texture() + return GLOB.turf_texture_iron_nonsegmented + /turf/open/floor/iron/dark/textured_corner icon_state = "textured_dark_corner" base_icon_state = "textured_dark_corner" floor_tile = /obj/item/stack/tile/iron/dark/textured_corner +/turf/open/floor/iron/dark/textured_large/get_turf_texture() + return GLOB.turf_texture_iron_nonsegmented + /turf/open/floor/iron/dark/textured_large icon_state = "textured_dark_large" base_icon_state = "textured_dark_large" @@ -169,31 +220,49 @@ base_icon_state = "white_edge" floor_tile = /obj/item/stack/tile/iron/white/smooth_edge +/turf/open/floor/iron/white/smooth_edge/get_turf_texture() + return GLOB.turf_texture_iron_nonsegmented + /turf/open/floor/iron/white/smooth_half icon_state = "white_half" base_icon_state = "white_half" floor_tile = /obj/item/stack/tile/iron/white/smooth_half +/turf/open/floor/iron/white/smooth_half/get_turf_texture() + return GLOB.turf_texture_iron_nonsegmented + /turf/open/floor/iron/white/smooth_corner icon_state = "white_corner" base_icon_state = "white_corner" floor_tile = /obj/item/stack/tile/iron/white/smooth_corner +/turf/open/floor/iron/white/smooth_corner/get_turf_texture() + return GLOB.turf_texture_iron_nonsegmented + /turf/open/floor/iron/white/smooth_large icon_state = "white_large" base_icon_state = "white_large" floor_tile = /obj/item/stack/tile/iron/white/smooth_large +/turf/open/floor/iron/white/smooth_large/get_turf_texture() + return GLOB.turf_texture_iron_nonsegmented + /turf/open/floor/iron/white/side icon_state = "whitehall" base_icon_state = "whitehall" floor_tile = /obj/item/stack/tile/iron/white_side +/turf/open/floor/iron/white/side/get_turf_texture() + return GLOB.turf_texture_iron_nonsegmented + /turf/open/floor/iron/white/corner icon_state = "whitecorner" base_icon_state = "whitecorner" floor_tile = /obj/item/stack/tile/iron/white_corner +/turf/open/floor/iron/white/corner/get_turf_texture() + return GLOB.turf_texture_iron_nonsegmented + /turf/open/floor/iron/cafeteria icon_state = "cafeteria" base_icon_state = "cafeteria" @@ -209,21 +278,33 @@ base_icon_state = "textured_white_edge" floor_tile = /obj/item/stack/tile/iron/white/textured_edge +/turf/open/floor/iron/white/textured_edge/get_turf_texture() + return GLOB.turf_texture_iron_nonsegmented + /turf/open/floor/iron/white/textured_half icon_state = "textured_white_half" base_icon_state = "textured_white_half" floor_tile = /obj/item/stack/tile/iron/white/textured_half +/turf/open/floor/iron/white/textured_half/get_turf_texture() + return GLOB.turf_texture_iron_nonsegmented + /turf/open/floor/iron/white/textured_corner icon_state = "textured_white_corner" base_icon_state = "textured_white_corner" floor_tile = /obj/item/stack/tile/iron/white/textured_corner +/turf/open/floor/iron/white/textured_corner/get_turf_texture() + return GLOB.turf_texture_iron_nonsegmented + /turf/open/floor/iron/white/textured_large icon_state = "textured_white_large" base_icon_state = "textured_white_large" floor_tile = /obj/item/stack/tile/iron/white/textured_large +/turf/open/floor/iron/white/textured_large/get_turf_texture() + return GLOB.turf_texture_iron_nonsegmented + /turf/open/floor/iron/white/airless initial_gas_mix = AIRLESS_ATMOS @@ -259,21 +340,33 @@ base_icon_state = "smooth_edge" floor_tile = /obj/item/stack/tile/iron/smooth_edge +/turf/open/floor/iron/smooth_edge/get_turf_texture() + return GLOB.turf_texture_iron_nonsegmented + /turf/open/floor/iron/smooth_half icon_state = "smooth_half" base_icon_state = "smooth_half" floor_tile = /obj/item/stack/tile/iron/smooth_half +/turf/open/floor/iron/smooth_half/get_turf_texture() + return GLOB.turf_texture_iron_nonsegmented + /turf/open/floor/iron/smooth_corner icon_state = "smooth_corner" base_icon_state = "smooth_corner" floor_tile = /obj/item/stack/tile/iron/smooth_corner +/turf/open/floor/iron/smooth_corner/get_turf_texture() + return GLOB.turf_texture_iron_nonsegmented + /turf/open/floor/iron/smooth_large icon_state = "smooth_large" base_icon_state = "smooth_large" floor_tile = /obj/item/stack/tile/iron/smooth_large +/turf/open/floor/iron/smooth_large/get_turf_texture() + return GLOB.turf_texture_iron_nonsegmented + /turf/open/floor/iron/chapel icon_state = "chapel" base_icon_state = "chapel" diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index 6a375c26b2091..7abd4bc94c792 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -296,7 +296,7 @@ CREATION_TEST_IGNORE_SELF(/turf) // Here's hoping it doesn't stay like this for years before we finish conversion to step_ var/atom/firstbump var/canPassSelf = CanPass(mover, get_dir(src, mover)) - + if(canPassSelf || (mover.movement_type & PHASING)) for(var/atom/movable/thing as anything in contents) if(QDELETED(mover)) @@ -574,7 +574,7 @@ CREATION_TEST_IGNORE_SELF(/turf) var/datum/turf_texture/turf_texture for(var/datum/turf_texture/TF as() in textures) var/area/A = loc - if(TF in A?.get_turf_textures()) + if(TF in A?.get_area_textures()) turf_texture = turf_texture ? initial(TF.priority) > initial(turf_texture.priority) ? TF : turf_texture : TF if(turf_texture) vis_contents += load_turf_texture(turf_texture) diff --git a/code/game/turfs/turf_texture.dm b/code/game/turfs/turf_texture.dm index 25cfdcccef721..609af16c4d007 100644 --- a/code/game/turfs/turf_texture.dm +++ b/code/game/turfs/turf_texture.dm @@ -43,6 +43,10 @@ CREATION_TEST_IGNORE_SUBTYPES(/atom/movable/turf_texture) icon_state = "hallway" alpha = 55 +/datum/turf_texture/hallway_nonsegmented + icon_state = "hallway_nonsegmented" + alpha = 55 + //Deep maint use /datum/turf_texture/maint icon_state = "maint" diff --git a/icons/turf/turf_texture.dmi b/icons/turf/turf_texture.dmi index 6c0d5b90bdc03548b3be231eb06ab1dce3b31740..110c3507acfd1549f05d50da8f521747f3c39619 100644 GIT binary patch literal 6948 zcmWkz2{@B~9Dn7S5-ZY_Ya&)+gyzmrnOsYh%n?GluX2@Rj>JTBCZtAkg^*hje>oOQ zOUspG$(cEF|9|ayws+6A_j!Ns_xJgJj_)3tnOr=$|JZ&Af({y9(#M12`F~Fs7kGW` z<}(5g$-x%a{Pmsv9DUuq{oTAgA?RLqVuHs0HZ+{`&Wzxr;n;0!72T7s-jv%5y{!;> zsdCBavS;px$MRCcni=P`e#C@iv?jgRE>gAS6tUsIct@3#)%t$Q-B{8#W#I+tR76yn z#G}Bk`eg@2vP*(2hT*`uN1`$$QKhcdNyVAQavuIe z2l)-)z33N*BqNbM=$P6pa7}~X_{ep9(d*f{raR?LUu{E5y-H7xZjG!9Lci)s z60p2k^_=^gGcA51g&x-}`)lSubn5K>@!B5a*7zdyDE=i_=xa4GM1+NtDX-Fn`SaA8XFUCR>X;F1lrTf2=69H8fEMd#e(=q zfGuyJfvf~;^KQ10AN}E3J35`6E=%c<-Yi$iS<&>$s%3a^=!R>BtV!_dO|pXK7`2Nx zOm%ivw7V;Dj9RZzV_1*}HAgF~Wp8JZpFX=v!=a=pE2;QGHKsID-?2OGjD3PGJ>Xs0 z0hBbt5p6865h_N6Px`7&vNlqM;gOcbsoHmPn9r_tVj*ZM`zQ?gcF27<#?LlB{}qzL zn=(2$l~G8Z_9rZIOB5|`xmH`hqR-xA^`2AI(cw3yEsaI-Yd5;l3XEU8crlTnSPkA* z%$B$87TE1Br!$p}89CikssdOTq`IqEz=}m4t&JH(&q6k7} zC}|=*Z=T=znpMzo)OyL;!06=Xm4M0Pn0QCdbp9 z=l#_&cNawJhvk1_E{Jq4Y4Z2p62PI%aLL_MXf!%JIr&gV0S}`l`4Rz+#US;&r+ls8 z*n6fnr>RmW2q>a!htJ%;xU=)T1Uk2+7bg}*&^r)p{h@g9RQyLtlBh;ZMTKHQLP9t^ z63zP@fGB7>b5BECTN@tZP(_=0D;~Dezt@gnrEvZ_s0=Q5y1emlcXv0aYg|4ohq)@1 zi)*ngeqLVA&&@BUubmr<$8qR-_n{Mv%Vx!{;tX)8WF@MaLZ{DM^{L`I_ibQEw2n@aNnw<1JiJrUhHg-5*|rYw6+1mWT`(HN zd^Xzr_va(Oq5=wU`N$rw2;-oAdDjw$%It3(Sr-^ww_0tHWfk4}j3JqyO7-qOQ=8Y) zB3@Nh^((MpDNNh}5veE?*f2c3y}kW*0%HudEBD5`W!>Nt!F=8sqTUbGr?2W_FZI=U zxMsy*NQXFdP3NC<m46~iTW&iE465zw`?>JwF*7Lw)xyFYl0 zYIrH+toky3JkBpYW#!a#UD+%<5#Hg!h;hDdhFd*Z>UIocm)Z6{iaULwVX>LP1oz~@ zD064j%-b?*y3GZ9M*)`hD*Iji^JT3qa2sSiA|~Q?^?qX-1jRUa zQ_F)sB1cp462v$Dhblw%Bn4zp6WF*KvQi2@*j(^TS=z2OK_F2goAug*VbxF;l6?hd zUOf1D#{WF(<5epHCrufEE;wfHAGO@42#N(wCdZbw>~1z(rZwjGyNY0ZezuE4{bUKX>Yz;7H9)kk4Uw7Bqi|aQk;y3&+bB3ck+zIs9 zWX#pmG2wV#e*PC0ry~4D8uDeag*4q-Ml|_wjKf$B!?R(gw02~3)T{AN$4h3=K}ae- zKL&qF$+&6~!$-!WdD+|A+TKlP-Ff3e6`RJGoK<}JEIOL=A`X>e7>>Vfi;EvxeK_%M zers2mqI?n7Kd@+oqMpqYo_5Uk(#t4tQ^6JSg?l6QnL{qQ9}~}w#NmsG7!oK3et+{~ z8%wj@hqt@(F_r0n;1atx7O@w)G^YFG-b5lMa1P_%suds@uWD-};$zrpm*7H+Q^Sqmp+lPJa~6_V<&N`UXoz-hL>0JIm*}LRO|4q= zZgR^~vI^V=og$ByHjobcaz?-J6cx%`_xW1;L}k<6q2G3=kO*R)rCvI_F+g- z5fNoSF9#kcCnwjc-0MMvOH#5|HOrHgM%`5_-nrD0iv4+5TY$Xn`O`kV`{vM$x(h0a-Pfzb# zW00T1TaQ`>CTvq#*|_b9l}$wN({oYqeQjt!3S&WHKnHCf?5swe`{CVY59g=?8j!8y zJqCeFeI6Z6>hCxI5w<>jf{fRL^;_T`+Q`?c#pi=<7o%7(v(qums~s8hK_fgAvVB5k zn)AGU!caB~S3DT3#oJbo$NBcLz=uu=*Ubf0{^=4Oe`~Rk)%V&hi{V@MqX5l23#^Rj zG9Y0~PTkK32r9-J)J!BX93L+m->TL*FmM=1CL#tQD*Exu7r~B>4l_BS5RU*tY=PUQ zXC-a1{6K7MLguUg>Fa&g(@|hq=Dt@SFxC9iZUw=S`Wim3i1<^ykz*pzM?|-b&{Grz z+lIa%>=^B@yS%Y2Mr9TJ#4N~C^hG*7MLJD>>f)f6X0kRilojjJuR6c#N34o07Nm%u zr>3TMLVbJ=k@13$3}h*2b@lxOdU9}po9t7Z6)GA-@>%$y2ENKx57_^&?3K<3A|=iX z?rbP4@v^5mJ23m6H9axFJ(P|2UY<03YkdaYv5Z5Zh?patKAk?5NYv zj0+U}`)}V6FUd_Top?!L0ts{n#D%0xAS2zCXl-qh|DRK-`|(T}0!z2Ce2tE1qsIpl&HqW;F1#M=< zWtT5-hXr~(s;?vNn1E-j&f)Yiz|38|z;NbO6Qct;`c z=RqbYT3!n0OGz+LV{(FmBd8J%aweHAFnCJL7s((&&FEJ)^p9z0ZrCHZ{0SGq%H6WG z+{|@^ z_o_OMa`<+&wbv-4CecQo8_AI`8#!CAr6Pn~kt%XKrv8jCbo3$+Gq?r(xq&`2N z5yh_5QWq6Hfsqw@lt(^R<6$@CS<66WJ>j|}Y#2?1pJvmJO5;7LF2GdZYFOOY?6t;4G534j(<>&vX7Tm@d4PrJ0bJ_}sD>883MWWiBgt9%WE9 zM07xC=|~dD{)axGiHloJ*YdB)Mf#EOMI7Cg5)@udsz$Q&NM(sA^!T>EFHTutk$Nd3 z4#PAsrrib};XV7;?|Vm=#5*e{>KFcCNLo2mrg@RY8^A%w{;`FtxlpGOI>Pa9l}2`R zdY5gw;Zu+rjtgtri}n;sQOE=+rO?(co=dR{zs4E)AM5Kvaj;^+%6`X3#~ zOGqD#>wBg_*I0(^0qHa^>H&LDM69T&$l)rvm7Ck{3pIz}$9DMcS99D)VG({@k!*av z0rUx--~jv-4>DNLz^FLl3d;F$mk^3#k#R2y2^pYz6+7Y~SyKVwA~M^{nc@=G`Pi74 z8k@Vr0ehQFoxKezFyHoT>+25^6u;8KEvm058{&9ysO61NuSXlrNfe57BXInni)N%R z9Ofw?necx!98?yVIBiVZd_DME3y2INh6UD=-klhfb1v05NxEn4Z9M+=VQf7aZ+$A& zb08q>KR}!&u=jIwas>qi07SqwYJ*EB!LgU23gCNu>l#Dc-QDk04fQa6)jUE&L*JRn zu6!Q3QfTs=F`sWEzitwx%yhkOsUY)hKJXt3}_mZVC3X4ACbEl=12XM>f6w22s?dun^_(F5B|1sZ*6YY4Al^_a&vW#aOj5J zzWvEtgz4Odj>!pK?%GLn2EG38{s(VI;Nw9fg1`#pYcUj+lp=>4?oNP9Oje%VIel0d zf%wY{!LjYBR<=QHV`F3gefjdG-#rY1dU|@ceFDN-&r&u0ew8&W9Q$_uzBY)K`;qF< zcdE|b_Vc9B$rIun5N^hR_Vct4pZSbdeEt|E-BvxvgVmpO-=7|wY0{BQnz+oG1?Sh8 z6w(MbHlfb`{ucNDwuz542FzM!tNGnJc||-N*skh|dToi!cNHVs+uy!@Q(@G2FhW;; z^}p!7Rdu(|udh0=Axv_ERk_MmWL7ze>H9L(oD0v)&i2zNH-l*#<;HMT7*bwQ6Hym2YLPirV}{TSn|hJ?e%yG^RokWDmZbJ8;`* z_0BwilyZ=*iLHx@Y~p@HCC|+q)617vz9*7Mw!`y*Pn8W7suGW7rrX`$sGIcByO9S5 z9j8)1S$13#hY&G}aj9Xu=_enuYWss23Gn>FL80`LPwx=DeSKVzeb)35h_AfX?nVES z(kh#M0%eqbwpY^T1J}JAI!=rhUP#_itK-hR+mz=yXeL?8kEW}iRk)C(wf1d&6eO{( zN$SD6%HrSbcx#V~yXIW*SsIQr+zhE-cuj6ZOI3BP{Hw;M9>3O#9q?CM%V!j%P}2W$ z8UB+H1VgG`MneNCS&6ud`p(nMw(CtADMgwLp(5s zDC?u%NUP3v@_5`!jdeiOTA%R>4c(3bHsDs(47V=))+{^J4u0pB^)>ghlo{^KL~cZ+ z1T3h?;utU#ba@4Zy)xT!@na$)BFDwVcD?QFM)^8@?lbGlCbN(JbK6LL8ImLS`D}G8 z2nA9^gf2Y$Dvr}!Ff~b3gR2BO{=hM-APv-;*Re;rmyKe<2_YO+s4PDA|HPu+b5?PF zRr*>a+9h=Hde?AYqfzIqn?)t(aVKA2->~jgtAd9QAC@40{MzSKi;J&xs=cOeyLdb* zD(Y?zmAaSpV8JhUOKHUA{;rJ9M%P~OSOoX(>{c%o%r$9A9`=d5`Cn%IN$lQg$d^g* zpUt`3q092$FWuMf5>jDpZ2!LEa;C@ybwjZ^t8&2BdQj{dPX$|EX3#l4ND~$rglvCU zz0BHLUtHYR3L45tC%cy_bKuSM?d@OSaS%kSr;A&3Ldu06VuLj7Se8M{UsryC$4C5IYEbz?ZVxaH6c0cGK`wL_VYM7=yd-V zuqZ^}|4osz$%J`I^nzPP(JLo3{4gNX3%`ZBM(gmvEoZw{qg(`bIz zs+*6;)iUOHeVm+}#sJ^e!w=jraH4#Bhv@tRgIu#tf(hzfPp3eymYp>}5ajqF35x&I z-f8i31AF3zypTUZ29h;qv9PdSRwKn|6(m26Vj?^Wjtv_%Wdxra4Q18$OF>JTi)6Ad zAK2^*bvDh*lEy*PpJc4oMBhhO#BrUkk}FQL?b0|=cNUtnYS|n#w>Mzl*XhHjdMt6m zZsU`cSj(682RpNN3eLFeSr7;qH>|Cfp|L-m;(OnxGIBFA^2qpO91-j#_ab|5vBsu0 zccL%d{K)mPZy??;SrBEjfWQuXHDa;AspB7Rcr~pGL7}U~b~{_E2@Z_F3Nu*?rE>YT z`I7g3DO*8qOOrWT$4)@rgmX81UPBV;-3L!oWRdze4Z^<$z3&Ld-fTmcfPigB8y#&q z0AZK|0mC!htKE1oR6nDjkUMlKcir$P;sY`0$Ai6{J+W^RS?rKP(ba3HHNg{+jQ@he7X?D**4juy7?^04_k4_X=H( zG|jBim-nM|mVB~7&81q#`)yxGGzF$PuU=0Zw31I>PwSp)Ig{QkZrGB`h4`Y}Tj{}= z0!*VS@Ly4FIlghJVRUC<&rs-R`jqbw$C8daqj{ue{&0BV*ETK39vrC62(G0ir#T%d zz`PiyIj;NB#~qH{B;(x%yHueoP%CXa6n{lWC}unpLo%go1R2v_=Wg`41n&Klu0LHe zx!YjwemW^BiNA1sZf%~isLDGb0ObV#E-Kt*f_e1vm!T>b{_;L*p>t{RGRq9-1425A z(zFR-d)5S96shpQ$BrdgL~!{ zoWl>wYF^yyM<=|;7ro`Mw+H-?T}cmb4h|7n5IKRNRwV g**hq7r?ZE*v-<-G^2>^Bd(ZJ%p3iVnV?!$FhfR64!*jlG-|NGyosmL);bec@E$6l)XpR}?*W~5jwEr=(Gd~Fu%e!Zh?&;4#*@p4Z> zhdA}ql>VHV#*?~+^PZUhg7>RCuxllWpXGkoWeJbWIJ2Jmtmv2YYH9_71YC{v^{)G6 z%?9`rZ3faAOzDj=UuIx{OiAY~#m;US9blXINgi?N9y~)oMlw$PaHsw&3qF$f*DFyv z^F(Eo>DMzZ5~NcxyT^}eI7=D(-s{Z`fu-n$=Cgzf->tDpC~mW-{rz=g;MVT|U(NPi zvyFN!f!l2lgesMD)@E)oUwCzIb#1(G-wMq6wo$)vksB&-7U#N@RuB`;&a)rS@aJwN z{3%(O)81css`EEoba$eGO>ctbyB=Jc7tN0%tEpvnT52#N89Bj0Z?Q$WILhZ$Ef`W) zDiV*7H#rdj@96Hf^Y=fs^;m>nala`+SaZ4OX^=M$S4RP4NqZlo}Ya zbZM-vW@FTM{GwUW^)6=$6?^_WE@wJRAOb!Re_Aa};Ygoy&x6XBq(gRG7561FJHy~% zS0uyTRBJx4qOX2c8He2 zE0SfQa5RcsK~jV@!7pFF96kL}!k=F8yqjSr%|EGr%(F@;_KW!T_BI6R!M)wB&NA;| zik5kEqT!!S`h?o7z!Wn)h-+W7%IuVMaB%qULKP!Nka+8v zuPlo7T)8n)is@Y2J39)>%53zC$!b~NB2F~yTm&Nhio*$Hgl{wT&z0)@;t05kl>O5)ueO!9z$kGrmvCCPEjy=S2;TjCNk3 z-l$}Dwj^EE-l7o|bTmS`;=tPoeI{ynP#Pep1R;=wgc|qeIyuBcm??|DVZ*;{lxXVPbF1pD@}gtJLrjI57{5~f~N4Yw%1aau@d zWQazq+)B#Xof$<(uT_2=eejeeWLlkGT@qq?=8fElCjMLUOA?l@-04H=?U+4N7wi8Z z!$AibL7@47GAkc^VRAZ(rOWcK$Kud?^3}j!<{Mp|ohH>Kw|;!EZ@*Nsz(1{?9X$W? z$^LyR?tTlQ_BHhwiu_KRbJp`z6dr=4+r!|8mL8rScB`1Leo$m3Jtj`>aHZ(M@IR5> z<9nCgvhs<+tyVPiAh>ra7Z zO#0@{HT*Pqce)AZsWZS`WZdb0CDE{CtZG0&z)dpt`LG*5MoL;n=H=)EiPZMVj&vm>8=4G%oI$37 zYO_Wue)iZMvGvOe<7bUqG~}Ep5?%fZRYB!+i??^R0}GGnBJ4_>Gs6ED_U7azU8y7N z>}DvwMh)iUDRslLVg2HPFf2!k{bY8)@8O-nTkdA_%^Q2?A>LNP4Od}$h0U@S z56%^o_oq*Kiz8JhK-)WHGX{7s{jj#OS|(w|huKi%zq9#6f!f$MLpWO!sh11c{6Cr{ z#>Q5+CN1^j_bB-$`9~d{&jc*OZKUkjYRiUPcaav(D(6IT1hZC7{pFY;_ zLN$G86KcAcQyYFd%IpZ#VwK``n-{GNz~pLJ9_ic0*8a>7zN5$jJi;F1Twn)(DyoxE z^Shce88e%FMN&y#MP9bIx*KO+_YngYv zKPq6zk%}drSmIyAFTIr#NxL1uUC(5NtZ83lDo4Tq5|uf2i>J0D0Tn77p{NuT782$< zPBjyV+^1C=2|^uRT~jmPlCEL!csxtReRpI8oZSDGxidi8!cn3kBM)zhP4w z{fiS~p3NCh_J7W_Fz0NnirZ`ST^tIXA>~qkZ+i48e?o+lcnLywwzkk|Rk!*4ig-g- zM%RmQJYuNa`Gl(55QK(Fx1-C3BbYlV{y4wAb=uR>pq-_K&+=IpA1)5<_PjDuP*M2@ z<6JyE)1mAlh&&Pw9i1_VyQi4W4M>_y(kA!MWC^G<>|4?ncJ@zEsJ6u6glRWBVpY~E zw(fTD#n`;qK^&p03|w?1YJhuqgfFb&+7>|#TUOi;xGb4;Q`EqWJnU9~NqeKJ`=>mY zW>GO7A;6{-0l$U;OrXxN!r{V5yk>lOKR?9u^fcnsDLw5RCQ-%YL=;|(`-5qgI!pTp zj|EEQT?dCF4O^Y=0P4Z=Lkn|)wu_-?c;0ii>u6WuNW40$u2Rc~m@f{vg|8pp;#;g_ zFFpfOgubyykg_*-mB}aFmm;U?KjVPD&3Xoqut9aV56<-|2V5ri21dZEK^vvX$;tu* zeXI@YDeB1+e1>H2YgrR}^PeshB)PexgX_#>@d)vRgPC}M-qY$s z^??DcWhgSdRY6ix5@?@Kh;|oBGJNVS>BCR|vG-??iI9`8Y9ZC4o_W=y%d5co7~p~V z>ffDu@GR~yTdb>05-V}#9L*?k%@T&>CzH6lw&;;)yt`!5aEA@epy>MNuU}y#tnh(o ztHPDO2>gZ|2fD3h6vhQ`z#-0ub zQgHpzUL|z>ZqHG2e=qI{Mk-R)J(t800l#dMOXt_wM^>z~fEICO~saB-rVjdF!dB2BF9kS>T$!SpF9r`fU`A@@&Z0q~McoaeDgYvd3k=bgFbcCPzEPYP!m z^KR`4F7or2@I2EePo5|MYJXTWN-!ZR+*3T2R&W%_c0QRSqtoG>^06lPi4!MaVGy7# zd19B>c0h(n2@EcL|LZ+PTcRE;6kvBVp>|QdYj7r;)%XaC{MMBsfri-;XL)nO&oJ{q zmk;73Ta>OKlB8BsA#^VZcjjqWA^b+oXiH1{Y5Yz8D}DMeuZ7&F3%ivLyX9HSUc$sw zRcT~t`SXT{hXd?3H#fH>`n+qrBI%{4&GPmPCdK~cHB@eCDNlQQJAm&H>>FXWPdBCP zi#3lYVz-NCK)vPt<_)<=oK;HiFdW}F$J;a<&*k%^QGm>+`5kxp0pbYQ9-xUwj~-pv z81u0Kn}#7lIsI6AXcQj_7d94*3Uw%p5rYB9v!$!5GXQ48dP1A9KU3T7uVE(rML>0; z$SDieYAS;9hOu+`N3p5-;^^okNE9E&dJl%Q#{Bd#-iz%hY~V!xg3ib#V}@$|l>jrt z*=&iEYd`w{0cl}Xg3r1cnoeeF38}V+>^9BSvw}(!Yf2Io3QyU|RxgLB$mb+t zF;obZZ5Sve*o+9bzv*F9X}6M$eTL1mC`NK!>gedO_4MTJ>+74ydIiKW&ULeXTmy!N zff|lzBM1Sn1}Y!K97N)=cJL{gKpk0K*rbiKoPvqhGX;lpxZX~!mn58xhoG@;Kc9du z$LrpHY+;9D%Y^^!b26r{G?8q8ApcQR_bNaIGm3?#|0Rz6{G&Y`9amasSsJIN#KXiw z;D>;w1qxr7+p6=7opk2s$s!ft5sXFL&t`v8Fe#HW&X#?*Ny4_v6UX|!u3;!_YKwo* zut9#WdKxDtY|oK=Yy>Lq11=EzGJO&ns<0WV@?scmFvky8l^nbB&4k)!6+xPQEU5w^ z6t?Q4rR%cQckPx`B%qz2KYzxF=<;?w!nqDdPV2b}1BnUKy_KTklrblUY$i_oIjeZQ zA#v2aF~GSBpY5?_(>2E^5#MV;ZGC9N^Y)PQ)*DT~Tvk@r(;JJ!t4tsYat;=O?tXaZ z&Uo-WqK~rJjU_%4EG85i>!wPtx~m8O$IEi{o8o|}FGN1q4|C4#(<5M2mfBXRctqW- z=awDd7e0ek+=6=2H{xc!&X|qJ<+LTIljMHMh;kIU{2FRe#l%Yt7G`V;`?RK zvG})a&#GNf!T1)YR(F6LAwA3MHl~i<0=+1Sj7Tr2O7OZplU3>jF@%hsiY$p;0KohY z$UXD!_bFFy{QVn*#-s!PxFp3NcMwxniGk>(0*3!5d&2F)=<1gZ~slQc}`H z7I5c4$uugPTroAB+TB`xJ>cSDBk<+!N}%OLx3OHq?jNo6w6yP1v3+i;E5I6Wjk!=C z@rN+0AB_2o{_(9}eW4b#*(9pnOQ+X-@frQRySqCq&-EXm+7yPr97ywWhf=rDLm_sc zCBXK9V zkM6NRK(VcN7w@nh6TaZRyT8L^HpFf}PVveXKr6E--}ak~oZk7nR1-8p3Ej-T81UO! zHIwq?%NI*Pv;#)kf1Yz^s=2pptuhL$w^^5e6_;9AZm>iD$vRTjx1K+L{^C}J+px#4 z{vvZKZpm}=ASYfuF-fJBXt#fDt=tG!#QNF{ zvy^)K(a$_Ty1{(sKh&n-(M5f`qh}7@#H3fccP46iOf+tc`%TA7e9N&s*;ew4=i{V4uq}_Z4;sII{n~JA zA>T+eaIL|zc%X$U{hBldHf1ceUi$f@rxf`U;>5o>kwD{uYx>$mIL`x_WDGx~Z>Ai~ ztlOx@6g5^Xp@V}D3an*Q-KjWgRaKSo_{Ks6Jf)lA>o#7$_nWQNyx4V9Eq1f9v2hec zL+-};WUr?>`zCmC9)oesX7$P6roC*%q%vXxMA0{vE=tB^W~7i#?iyqN9bp-oPDMLdXp`v*fe z`fnO8^#O`;6vRJa$pZo?Suo)f`PjqWcobO| z@$4_PpOM6zDlY0iH;{)@&9o__Rb@9f$!7_mv#P8D_m?M|WT2r+chM$;U#pEA#6Xqx ztx0gu-5d6@#bAGTZ)()Bt$^L(D1*#o?8|BOTX#S|l^-uk`Yod2seee9R~k&`=CbHe z20>^+Wst!F>1_8r9b;L};So|_-dSk>@gtfO*`=9KHUQLIbx94k0JHfJBm{0=qE|lU zMLShlj~&ZJ!`_z<;ywT8`ljC=_j8u6Ytg);t%Za}sxm4mP!6Jf!zZwqqcgCMa zQu6YL)#b=ShoB~TeE{`;i*K$iRgMP%lej;LQ`^(yHCb3i!@%^3+zwn){Z3m1JPwWy z7yDo9w(pofBiyp=HFL)?8S6!>UEq248VCq2rWF-;ac`hBXuYVNdw;z&xUPSo4a*vW ziXH0hP2_>DUR>{|m6lJ`2kxNAq$vFSUYzd%3!MF#s#JufU>0$`Z(9pgVEHmI_jQM% zJ3BvU`wwN99yV$@?X&wg^uq-58(ocKWZFG}L3&qKTI$XYd2|8UmtC7-aEoFQ=z9gZm=dbY!8&CJY4$W)4jdEaKH^&zts*tEKU%jMZ#%p#lhdbZ?G>9**)Dm2W@WC z8ulxJ@;d@~4=`w$(e3_BSN}UW)|pt{k`^3=4Hay!KmXgqczJj{yh!dkrtL zvL2U!p|j8Ei($8iYS66zSO7ZuER;*CPMF>`=w0?8ABe0vzC2*AgdDK98u}Cm>WSHb Q{{bLl15^DHv~Ae`0j3rnxBvhE