From e1fdba452890d4881d568a8296ad12a71a748282 Mon Sep 17 00:00:00 2001 From: LordFowl Date: Fri, 13 Jan 2017 16:39:22 -0500 Subject: [PATCH] Fixing Airlocks (#1546) Fixes #1519 Fixes #1531 Fixes #1487 Fixes #1475 Adds a new airlock sprite for freezer-maint airlocks, and assorted periphery --- code/game/machinery/doors/airlock.dm | 9 +++++++ .../objects/items/weapons/material/shards.dm | 2 +- .../objects/items/weapons/storage/backpack.dm | 6 +++-- code/game/objects/structures/door_assembly.dm | 6 +++++ code/game/objects/structures/plasticflaps.dm | 1 + .../antag_contest/contest_objective.dm | 8 +++---- code/modules/customitems/item_defines.dm | 2 +- .../modules/mob/living/silicon/robot/robot.dm | 3 +++ code/modules/mob/mob_helpers.dm | 20 ++++++++++++---- code/modules/surgery/generic.dm | 4 ++-- icons/obj/doors/Doormaintfreezer.dmi | Bin 0 -> 14865 bytes maps/exodus-1.dmm | 22 +++++++++--------- 12 files changed, 58 insertions(+), 25 deletions(-) create mode 100644 icons/obj/doors/Doormaintfreezer.dmi diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 5097fe72e84..c71dba9ee98 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -152,6 +152,15 @@ hatch_colour = "#ffffff" open_duration = 20 +/obj/machinery/door/airlock/freezer_maint + name = "Freezer Maintenance Access" + icon = 'icons/obj/doors/Doormaintfreezer.dmi' + desc = "An extra thick, double-insulated door to preserve the cold atmosphere. Keep closed at all times." + opacity = 1 + assembly_type = /obj/structure/door_assembly/door_assembly_fma + hatch_colour = "#ffffff" + open_duration = 20 + /obj/machinery/door/airlock/hatch name = "Airtight Hatch" icon = 'icons/obj/doors/Doorhatchele.dmi' diff --git a/code/game/objects/items/weapons/material/shards.dm b/code/game/objects/items/weapons/material/shards.dm index fd4400e68c4..a428f451a61 100644 --- a/code/game/objects/items/weapons/material/shards.dm +++ b/code/game/objects/items/weapons/material/shards.dm @@ -68,7 +68,7 @@ if(ishuman(M)) var/mob/living/carbon/human/H = M - if(H.species.siemens_coefficient<0.5 || H.get_species() == "Vaurca") //Thick skin. + if(H.species.siemens_coefficient<0.5 || isvaurca(H)) //Thick skin. return if( H.shoes || ( H.wear_suit && (H.wear_suit.body_parts_covered & FEET) ) ) diff --git a/code/game/objects/items/weapons/storage/backpack.dm b/code/game/objects/items/weapons/storage/backpack.dm index f3f86b155b4..3ca7ce50aa0 100644 --- a/code/game/objects/items/weapons/storage/backpack.dm +++ b/code/game/objects/items/weapons/storage/backpack.dm @@ -181,8 +181,10 @@ if (!..()) return 0 - if (user.get_species() == "Vaurca") - item_state = "vaurcacape" + if(ishuman(user)) + var/mob/living/carbon/human/H = user + if (H.species.get_bodytype() == "Vaurca") + item_state = "vaurcacape" else item_state = "cape" diff --git a/code/game/objects/structures/door_assembly.dm b/code/game/objects/structures/door_assembly.dm index 0994ed3e653..0778246a81c 100644 --- a/code/game/objects/structures/door_assembly.dm +++ b/code/game/objects/structures/door_assembly.dm @@ -83,6 +83,12 @@ airlock_type = "/freezer" glass = -1 +/obj/structure/door_assembly/door_assembly_fma + base_icon_state = "mai" + base_name = "Freezer Maintenance Access" + airlock_type = "/freezer_maint" + glass = -1 + /obj/structure/door_assembly/door_assembly_hatch base_icon_state = "hatch" base_name = "Airtight Hatch" diff --git a/code/game/objects/structures/plasticflaps.dm b/code/game/objects/structures/plasticflaps.dm index a51e5576e80..5615148fffd 100644 --- a/code/game/objects/structures/plasticflaps.dm +++ b/code/game/objects/structures/plasticflaps.dm @@ -68,6 +68,7 @@ /obj/structure/plasticflaps/airtight name = "airtight plastic flaps" desc = "Heavy duty, airtight, plastic flaps." + layer = 3 /obj/structure/plasticflaps/airtight/New() //set the turf below the flaps to block air var/turf/T = get_turf(loc) diff --git a/code/modules/antag_contest/contest_objective.dm b/code/modules/antag_contest/contest_objective.dm index 25fd4070c61..abad0999fae 100644 --- a/code/modules/antag_contest/contest_objective.dm +++ b/code/modules/antag_contest/contest_objective.dm @@ -21,10 +21,10 @@ for(var/datum/mind/possible_target in ticker.minds) if(possible_target != owner && ishuman(possible_target.current) && (possible_target.current.stat != 2)) if (require_synth) - if (possible_target.current.get_species() == "Baseline Frame") + if (isipc(possible_target.current)) possible_targets += possible_target else - if (possible_target.current.get_species() == "Baseline Frame") + if (isipc(possible_target.current)) continue possible_targets += possible_target if(possible_targets.len > 0) @@ -33,9 +33,9 @@ /datum/objective/competition/find_target_by_role(role, role_type = 0, var/require_synth = 0) for(var/datum/mind/possible_target in ticker.minds) if((possible_target != owner) && ishuman(possible_target.current) && ((role_type ? possible_target.special_role : possible_target.assigned_role) == role)) - if (require_synth && possible_target.current.get_species() != "Baseline Frame") + if (require_synth && !(isipc(possible_target.current))) continue - if (!require_synth && possible_target.current.get_species() == "Baseline Frame") + if (!require_synth && !(isipc(possible_target.current))) continue target = possible_target break diff --git a/code/modules/customitems/item_defines.dm b/code/modules/customitems/item_defines.dm index 198753b094d..d83881e73ed 100644 --- a/code/modules/customitems/item_defines.dm +++ b/code/modules/customitems/item_defines.dm @@ -190,7 +190,7 @@ All custom items with worn sprites must follow the contained sprite system: http contained_sprite = 1 /obj/item/weapon/cane/fluff/usiki_cane/attack_self(mob/user as mob) - if(user.get_species() == "Unathi") + if(!(all_languages[LANGUAGE_UNATHI] in user.languages)) user << "This cane has the words \"A new and better life\" carved into one side in basic, and on the other side in Sinta'Unathi." else user << "This cane has the words \"A new and better life\" carved into the side, the other side has some unreadable carvings." diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index f9f138823be..1a82285359c 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -268,6 +268,7 @@ return selecting_module = 1 if(module) + selecting_module = 0 return var/list/modules = list() modules.Add(robot_module_types) @@ -277,8 +278,10 @@ modtype = input("Please, select a module!", "Robot", null, null) as null|anything in modules if(module) + selecting_module = 0 return if(!(modtype in robot_modules)) + selecting_module = 0 return var/module_type = robot_modules[modtype] diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 66e0d172cd6..11f86ed0f83 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -42,8 +42,14 @@ return 0 /proc/istajara(A) - if(istype(A, /mob/living/carbon/human) && (A:get_species() == "Tajara")) - return 1 + if(istype(A, /mob/living/carbon/human)) + switch(A:get_species()) + if ("Tajara") + return 1 + if("Zhan-Khazan Tajara") + return 1 + if("M'sai Tajara") + return 1 return 0 /proc/isskrell(A) @@ -78,8 +84,14 @@ return 0 /proc/isvox(A) - if(istype(A, /mob/living/carbon/human) && (A:get_species() == "Vox")) - return 1 + if(istype(A, /mob/living/carbon/human)) + switch(A:get_species()) + if ("Vox") + return 1 + if ("Vox Pariah") + return 1 + if ("Vox Armalis") + return 1 return 0 /mob/proc/is_diona() diff --git a/code/modules/surgery/generic.dm b/code/modules/surgery/generic.dm index 4250cefc5f8..2ef7865f1c9 100644 --- a/code/modules/surgery/generic.dm +++ b/code/modules/surgery/generic.dm @@ -109,7 +109,7 @@ /datum/surgery_step/generic/cut_open allowed_tools = list( - /obj/item/weapon/scalpel = 100, + /obj/item/weapon/scalpel = 100, /obj/item/weapon/material/knife = 75, /obj/item/weapon/material/shard = 50 ) @@ -160,7 +160,7 @@ max_duration = 130 can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool) - if(target.get_species() != "Vaurca") + if(!(isvaurca(target))) return 0 else if(..()) diff --git a/icons/obj/doors/Doormaintfreezer.dmi b/icons/obj/doors/Doormaintfreezer.dmi new file mode 100644 index 0000000000000000000000000000000000000000..618549290f355c706bfe8bdea77f55337911f40e GIT binary patch literal 14865 zcmb8Wby!qU_xL+>N=YLjErPUkqojZV2nZw6Al)@XhX@Erw@640Db3K`NJ)3c&@s&1 zc^m z#$k)^_eb5STlY~z#pN2wA%==9&uo9Gh^Q7Zn5s!tFjwPN3iJv`*_#KCe|%h);y9gB zX&U2b*S6N!=JUR1odL_sQt+if+PWh-?cF070%xvQ_A6iD&%LAoYTIW$v=!{Uw|aG7 zk7G+qM~ch$%7+F@xqq!m6l#Hsg|fG!zjz4?39&LEhJ;6RD6+4+xY*^PP&p+fCD0>T zKU&Zei;vQZ_>GN?pq;}*j!doOCEk;>l`1j0U2 zD(DfO1}KxgpdgReVpn4qWanfFBo1=MUhl|RuYcyESaDr5IVUU-kbh$o#Ef-2x@U$y zfhc3gn4=@cp9oNVWXEB(g=$*1rG2A($v$1LY{@Z!NlqR?B9MT|23+6lrR?Ewp|pHq z#U@s)NAYbFA+Y!>)O#>!ws~(k=S{EF-xjLLzfkL5A2+l9A1Vu!Y z(R5a1wSUy-v9o9nf}x6X?|ak`SM`!P!m;5DN<&9 zj+00{w9YFSNgg%ltF^XbOg%Uv9&H7^m$sWO#Zanp{m6CZ5O%d>#q9cHKgGb8+UZ0~ z&GBkCB4Z^qkY@L|dVd*}d*ABybX7lGXA$eVN38X6W>2;zrxg;pDz^M{|7QZo>vp$L zgP@IwbICusJsDh3S4R_&93Cd_y8FhG!T{jRngrYE);H>HZ8ap^jnd(x|!Le4qF{m}AzhN+OxhRg(Bn86QVXQ4Zr zkCQSRzAN)!kVhU=d~+uHlyvW_%*w7q)_m2Y5R>lCYEJwc?IlIi41GX5o4sH04T0(Q zUUjnEj+Kkd087wRzDL=dSO^c@w=#y|qrJ~DVS2k(c7Sm`mD`LbAR^MGW^8N`EtjZH z9@VW5wGyIx`SK-5m7T&p)3edFYkSDl9n36+d+@Za-`G`^{UOVtmZ?yxc~UBC(kKPr zM!%Kt*J$mJk0W~4RZWvya4wH0j=rd4zoC8K!J4|$b+E(Yn9{|{NK37$X|9eexlKAt z4^;TKd0fMXtaQiNHlDk05tQQw;CkZC#H2;voYp|r^;kQs;p9Z(M z*0>lA`g1@TjD{VX*9%2hwSy>ZA+{VNC`^6-e_VPT5 zJa^e=a|5nFCwHG@zv4`IFL+lRubHoUJg;JcPwmEUiR$PcGOAB;?hH}pGGJ5Z%=*bf zeA>Z6Dt$kh9jBSkO^a(V$!@3otzWC>K|%u&jkDhstJaQ*vI+jg-Q{>{8sJ90E*qn9 zJxCQvs56@*LW!s=PeL4MX}T;h<3zu)#`F z5hK#xv0M#$@h!N;7gvqLYEIvd26^I8e_K4^ev%7=sz{#=X5UWaN@IW`G%eNFVR-w~ zWoCzeYd_Ebw(l9$=9&o^raA(e zyrxcoOYXswLz*%{_wF{L^s@8Eqv0HVaKs^D=fQ&P z{ebL_yXjt(`9^c;@7g0DL!><2>PRhN3b!J7hTiF|KUYdV-B{QDyXdf;k`b6e7BRFT z7^P+Wl@}in-|PjGi>68HGh&N1ZxLy5SOlv2AO_RQyUTKr(_705zvKvJrl-;pU#ko=1x%i#k7GG? z+90($VbfSeT=RF`y))oY%9Fl4qi=0g`u0BqDxP{(o<_&SCcn&VzrUXkev8wY;qsN2 z#89FayB)Sp%4Bh&O*jp<5mPsfTvKiO_}T626Si@!yziKSywrr3-02v!Ro6Vf6}G3i z9XX`;QsO~846R?7K$@?x9sUS|a|9u;izAGf7C-4ro6aV_$EWBYdD8nzHmnLN8IAGy z3%I7JWZ-s_lu#1Ia{-&p$>`CoMkPKQ^B9Z|Qzo=QiyYDv)cAsaG;@e`%?HF3%YX{U zn;h}dLNE4b&Q^j+F*ob5NP2pD)MWy^&$dE`&_%}N##Fv;pZyFW+tmrsx0*NcZ-nD& zVc_UfF+xUY@P+oQ{(DpP2-OI6^C86^-U!185>AHPrv%t0$NPU?yA$X99j%Ca5;Fj7 zTd28Ee=w=6s!%Gg#mjAfPwIt6_otxkOiz=}mY|$#obNpKtK~aM*pCmoh-RY|zWcaI zqVl9sBWvg={SQA_@+epnNayo$y4b6(Y7gk`Jy6p zSy=fr2RoEcSJ&>27#dlw3!@whuH2CrCqzvp_i?0>%A{_V}}(VDhrlz{PQyZ_KA-qZ^LduI_Q0ikNYlK%HsgEG9q=H;qolNTEs9xE_v|P4VVuV^0@wf+DIVZ zd}{9Lmqf;_teh59z0O-wLo&T6yXqL<- zS|#RDs!%YDsnn#U@jU@%MAY==i}0M3h^plrx9j$>g$p+he*4Q|OFh-{$XTs`~K6vv6j`Yl`ceC4t6w^igtyU68_BeVUHg9`h%E{oEv2~Sb zZIIweLfjEp=B@@y(x|%kH0E=@-LB0oE3a&0AUqS~Hg4ZWM-fM6zdz5Ns-=9u)3K*N zIXQ8fQ)Ch=mf>R%GMY-qnN449Pfj^YhnKSX zdEUWKkB(zms&K1^*8LE;`D_z?X00qeAl|_v((ZNVXU!)aHcg6&SBlzl_ij^>iU_af z&!Q_0SXdd%(Wl2WA3$w?Ywb#wu)sdM`L*o&FGL|q>YobQ#hx$Ackwt~AhEYmM>t!l zV^gBx$v?ZZ!Ok4(4bn+u8{Otyy!enY#9btO^;X~e*#G!dM04O!+n3(uj}{^wE8z!l z{-$d}Av1$MA__(VFc7GeXK&-0E;G{is4%6q5Tm)+v$iH1lQ9yAAW-TzkN1P@IpEc1Atc!9?ZVp zGt7VU%LXr??T)*qv%zNlB@++IA@O+$8S%lQ%4k1V^<)(g3^re{X}s^?WpvbCAiLe1 zLEt@vmJvL!MS*+JnU2Zu)X+t^+T`No16()y%%4!1kNn$wiW}Hn$TJi7Dcw`ROOTWL z-%EX(EEMYtZ$&Yh_A7epr7Ea&$y|6AINZ5qyQ7V@g`8xMzhaac)x|U&w>E9Hj6D!r z&`ATWny_yy97{ap&Tv(@salJRBlq#~p=DySG&le0_6#rmx&7K!x?_1i^zN|kY)pw% zce5_QQRW&{O+lbJ_^Gqt)kf$_$XlBDro}`iDij^)IG5lQVm{eZ66gJXp@r7vGOw=kKs<_?cWY`@UxAS6ekAW>dqK3m zSl51=8fJdKy!#&a1;}!5z;}1=PC~!-j-LNm%%>dC1K&v|;mJFBXHWWe(k#EA41t5; zCuAE@qwRc;Q^;_a(Q;^JZ&McIE4adm)EJ^9aye^;{d(!GcGB;ycres3I9Q0iSq zUTb{&)^C1@d&E0f<^^>L&Gum&*v1H{teF}7s6B?H@LgB;g-Yhl4%dPW*c6lc8SP8S zt`&M=LXZlvzuck@PX@r$t6~sR$?sgC?bhM`znz_(?#%m4?7yr8BU~M>s904YcRbdP zF>(CmQKJl;-fW6X5f$j#nSO$HuV>-9&7bzJV>7P{<&)rHq{K9^p#)^~sa{7337CMT zPX(%l%S1<)3x_kOGzeq_ek(JotFoVe4mjXuI`0fuJ*`swH2CL)uWOCh&147A3td7* zCrh-!BRWPt6KrK}#C!>YJ?uN}M8`L3*aPM^<*FaB*zve4_5Bk!r0qVKt$9ih%V%nw z!VF|)X2zb-|HkxR)ExSHzqS1DK)Ino?R05z&J9YK;*)}wkH z*-H(dx!n%0`)eyN2P{9p|L*eDQS6Ah=^vqs6p}>nhUWHcgDaQ(c$Kwft`xW5qjyIzJXWQqKc<1tO4d9b6zEs&mBUXJ z+T0|K)iHHiFXFJap<0js&^NfFp^f9lg(s7{HCr=C^_$=o;6@kMG26?Pa1utsP`jgr zhPHRUPQ$PpUBumH*(0nzxDnd*MIA|{`NgN*-h^iAW}ieAE$fWx*L(^tK2!0&^MujW zOpNcjH)AtD@$jJq_7!C^Qj__<|Avo@Xf0=L)UI@wNF$(21R>Srd^_|c>m4(-#>r=PW5 zw7HM0T2K9-#-V2v9kS1PvR^p%mo)o^2D*F7(rUpCPaiw^jC~p^Z^105lPqo=6p35D zwbZk@d6=lapWPr-P;>u+{*)c|L|zA`-!P{pkRe<9NaEV$B!j6YWJDsEME(i9FYF|9 zrqhTQy}mW{#t?13@a`{))feyb=87GLLu#_g$`QPJ{%i9)4pH#-c@Br$2%Q_t>j8e@ zu!&RV1w_!qt<`R_aC!56pJpMl^-jba`Olo(t!?PH-6X%CmheG0FGy<-`7tNG;@8`OjaDbn)Rav6 z(vJ@B*j0#1uu)piP|%oXJ2-BpHvEYS{CjDIy{BgKHl%b{mxLc2?|s|5S+w@J@l0V1XuS2@2QN!(rda-l ztLAUUTm6&UWQlb0AWrYDlE&ogS5buA9Qu9W*QnzC?7hpGbH+fPmH}PX^g*7@8EeO) zA}BD2H@mQ-?tdoWmFVd0tib{->fKo~DbZ9-L`8Dj$WNvA(Dzi(vQx+W+nIw)nqSQ` zCu?dZL?+Dx$;+*>WPpNB!_XydfE32fK(@W05Dvp)lxWkvcO&whPy9>}4eT^W{N9!z zcrq%fLSlb>oDexYCS-gQp5Lu~Z}%=L`H~BQhyrU${IW@VEA%Zmnn7&jTKq?vzBfDh z>a>(YAh+8UZ%xZULT2gRSu9@1uKr+hd6R^b7Qf+wew%=})t_-iq=QHaGB2*b5X7^$ zY@gj?HXu0s8PFxy#XuTBC?{*WDBy_00iM;M%`mC?7^x#+_2;#pNog9`;-;h&T09Td zH6sH9+Rb8W2s;%Jm$7~w_JjJtiz05cUNICHYuFh#Uf3&9>>-umcSS_r_3!X6r~0qa z1vb!E)wt!T2u7g#G)Q6dr)u1Ho+Z3wj!R*|CkWv7rb9yYm@RE;@hd$2% znV@5UN~8f%U1(d}2?qfVCe){SAb9Ki2gm0TpPCwB!(71V;RB;0)%PzTH-q5k$~q5* zO+E-Q)+GJXDN~|?6E5j(QzjcDUN=C!k*nKEA$c zg_8-6JiJgVyU&RThBgC#f8t~2A4-Or&Auri-`Ib?coZ3^%-Y97t0eG+)%{5J7!N{)vw&!0nw|}m);&Onf}0du7(tWoE_~XiEEXrr2er%C0;4lC%|59GCq=& zKelQ4sr5=Tl1uYl(o|o`dOklq3nRPJu~ltGjSIs=fAkl~L;!KrMBIuLYH4W!sSh$o zo?e5Q=+}nwHBu8J$ZH9^2)!w8cq0)A z>k8LpG3g^8wJLlhZ2B@qAWt*pUwX3>ccscqYZ>_#MYtZzzMjc)SpI=0>-1Rns6D~& zv)`kD>kJ8E)SYXFNFC9#q~B?|$x?63Ip|o*;zfPd`P9mU^#3qiFoY+u_{N$$PW8_V z!9|HR*R6_1SS%yfC6%hh4c5TAT!S4+q&a4<7k{dz(4Z#ypj9OG=|(kOPY+iGnew`` zxwBADyO8Nlq7(kDpm2qa2`HPr9cUbl`x#IteJW(wJ zGG6i7b4?lJL)`BxKF-@vYK}lvxGW zi6;OWn}EPlAB2AezeYZp%p&I}XP0_QOic3a8_rsl{5!)G3Lh=0=yA<3Yu5gHGRly} z6+U_V;Gl1mAqpb`YU~sT^Kj-TEaB}Trb5p&lX#EWq+}gv45GRm#qo#_n9dLXW247e z3UB%iSaAByDGY|*LEMlVDsqT!BgF_nb~*-ni3ln12W@TbU7YV#4Q>|h6-|MO`(2r% zdRc6lTG}_Id#8?}*JUaGy4nSAeqJ52@naJ;(g;IWKW*`S7^*i_{E<*f&hb$D4H>St z={LMA)b6Ni!5d2A;8L4-QPw_luJy3~h0rMRR$p>1H-1)r>|Ou69nImi-^g@Ec-)?5 z;!AS|1kcr)+B2e{z(p($LDqy^az<@g)K4pu*9S47hic#l78aXbV8rH3u>1aWrN^P+ zZy;1&w|e?C(CL+!t^taV3cbRDgI&mb^w=&9C?W`1hP-A|39YC8Mf795ZM!IM{=t&wTKPs@t*a)1^@R zu$Ti$S4lII_G#9OsK7Of7YC)&MI^B1e9gb?+PAgoLX0=Wr> z2GtGI9&=hEdSlqx#>LmW+nei1;Tr7%{Vd`c{etw7&Oh1OnE`AoMZsnEvX9OKvyUkF zg^bL5c@^m;Aw=>eR>d#@)(H=+God+zr%C8`dNo)qRWpe{_OlD7({C)-PJ4>oC6Z!t zaR&K!vU=su_dZ0!$4_Z4LG2qYB~8fv6-UbGo?{w`&KhIy(6*7(&1KK0UEsf@ISW7P zF<_@}f{PE;9N@*rL~BOj`X<}?E@t0&7Az2N?+JCZf75(A)xCl5>Lf0!+z{E+xthM= zftn8V!!u7|;c(1XvCCX=O57wl=s4I6VcJUtF_Xx0>$afK@II}n|v%X_+l_*|^tw2xOvGA2X zrF_IEQhJ}#b54_G*~{$woN%_vLPN=9(?q)e9}E-{GQgrAcV6<|_TCn)u<|leoQo0f zA2I*+bkPY(rH}KtP2@29YEf*ccIJ{L{~m6OpSHXMVl(Ah<^L>8#b)}L2vhiV3q}YX zJlL{_AKP#5Z?_vI19GPI`B0(UqLNB9Hl-dCeXf1!34RL6n}}M7)o;+(cA={y6TI$& zHk5K|w@5x~z5WDkCO7aP{d>UZ%(LFK5w9_T%G&kEvp_VVw*77jo-`aab}O?|Ony({ z)Gds~9bv{}Gig($6p)O9nKKE`u|pnezI9pl?^I^3xhL-NJwAU>hoz{|I1` zclI{z=+a1eWeVu{Z^NY;WNr0cWE6 zD`q$m!Yc#Fh9gz6^~yiI-n*2!T5ur5xn83I5M_DJ&GGH@gOtp8U-+||?QoyDdYcFa zI19IC8x4978a4uxME!eqj&<~I#869lR%UV0_cFd3JG*gr@YO0Bb;VJ)47sd9FnpBL z9@=zyYm!wrm^Pi@$KUjovDpKOk#w1Dsx4Ypk9S_y$p!n$^9a9G2w&p)^Ox)tsi&va zPeN=u9%`#z9xV^>ikC3>!(tPA`|UKla!% zKh#5lZzrC`Jd)^Ij~y)Nc1$~&Rl+e@tV`Fw%*FLSIX*ReZAFJ$`ClnyAzuB@tqOKfIX3gTK0--yUV!NTlkdedY4QX>GYtw`wo@>SU5sy4${vFY`GD_AolJ z$>+L924~5nHklu?=YDhtUSxmaN}VNr^OHS!@Z@e8{`!kt_NZp0T$TI2-o&ok)NVMC zGqiZcd%8aweY}sqyoiE5@*X#Nyrmg>Ufjul+ys~V#Q&Dj@lAA5e#0yi!xuQ_uXn`< zm7{oa*D6|{1WUsP`DxD2Kc`QW5N0q7{QP)O`FhJyRS-QVXS%xdRzk-s(|$g!4g3`y zLEZLHFOB5;Scn;cqRHG*qM>v?yoFpzzUagvv$tw zhWdLUHou);>(@If zICeATWj>_z+-SMums`ZG?#q6ysBwiP71q+5I_zw?R>dVOt?l>=`d48L)=H8QcG3&i zHMC1wgzn1T4Z+C$BGHg=ZiyX<_Ite|q}&}{sS(Y#9I995^Ahnf6n%WH?TAWp9m20$ zICbXT4;6we*MSoM<8#c|S zuNoX2n(V=6Yjrt!dBNE!)pJw+oN&Xccp0v9k!Z9MGlep%GX!;(Fb6+4VwIs08h!t!31!iSf8k zy)la$g>y)D9hCEIiy1#rj8y1DtIUC6uvfx449p_;3KO3VbqvvWnNVAFbNhLH68_?B zZM1XQ-;zH{+o%oNS{U4Z)10&B&|qV`<5Th9-#H<`;U(_eC6R2=4p8m>ZI0~QKc9X+TL1o*T2LCv!^Xyz?<#?xAxE@W z`0R&(!(-y>2^wnW32Cp3#F_L?K#6Qh46Bws6K;t6yoEZp;$1a>-^{tBubMA?zu0Vg_4lGB)c8A6bGs|GFcm)cwtfcdz!mv z(R(KYMvl^^tf`t|)KF3FNL#J?+|!xYs9qN&j%mD@=IP6jW^z-s9W3GDkNmY*@$%eV zx5mdX7yhgbfd(a;eBWQpj6kh0%gRLTT^Vl3ucI=Bp5t=t+O-+vDuU+2q!!qFlS+PU zW@a>w`imT<=3~!1CYTE>YvTe!aIsVLyQu+voO{>ANuI!CY#^!%l}*DB6G>RO^#cKQhXO@~n~=O(=iy`<{B z4#ekdBP=1VAIVHMg}vjO#^>jart#^=S3^CwM>09=xD%~IuSKDErwl-H`ZQCV`@ci8 z0-pRAxkzy*(J^KChZj1G@GVD2i1VC9vRZG_^;oWwC~2|sCapYb@ix0;I8%y-yY7j{ zJe%+MD$bNwW{~X`Z9r3LMrj!j1TPIPbJI;{mGO9fj(Le6CS~enprrF_eFl!IV7qN?IMrO zS_@{_u~Dj`0pwe6#YKxdRXOM90f{+oepF|ZM7sPFfr9hx6a{V}4WFs&bP2#->TmZ- z^83tpGQ?uf<>`rcZW6jLO>PTXQhQ2ZEdz7MQt6#|r1Muu9AEyH2II3nOCf2*#={S8 zh!^>0jWNfcX3C9u_e?|@Xn(SJZEou4egxaUL_2*OR}3^4Qj3I#$=#lu2$blP)n@HH@ngE0yHkcmO!LTRo9zAN`?lFQ#Kg0vt@r0eh;Ya6 zbrdG<*zI!>NjVY>;}jxReD7>+Z~@T!?o@k@jGY^LYIDCDRrEYxkQjPy=yWEQF!O*a z!=Y&9k2RwvaDxEUMa>?1Z9_&0*DqSr?cSBgu@VKY7R7@w&$zNjm?8AoyRk<&#a_D3 zk~-}M4|v2yZO=iN2rkc?&M2?kg?~46A5#I>of>n4swsHH7j3%wpjuTy>z@tbdtVU#M!802^4K<>S-bI5cAjO|Ca&DUs`+o?5a$b+1dB6 zToqv>5-%zLg{VOO$;#Z|A7bD1Cc~6>wfj6UtrxqWw8H1Y7J}+zPC`M@c(OXSex|2B zEB7ay#z@W~653+-sb+M<>EfQIBzTc|F4s6ooq}xWJ z*Gfxtj2z433axp0rE6jj%YNjgQ77sckkCJ8b%?DLK&~>^dz5aF!d;K)#@L}=cxO^l z{a9z7M;n=I19D<;@KTQZ^(wLAU=p9vKX{&>`Y_JWVj{to(E(K@7yvw9M!ewa5Ok>D z+!tjxqO3JW3B7ic9G0+~KCz;aZOg2qs=tk-1veZqrpPo6F)spAqMup~ucmIcmVjK| z$^#_3;e0{^Yx}<()U9a4@tXRhB=nm916s&cN_(Sc6#rj3SwMU_=0y zq+cx!^{FX+Un!~sIGu&J6~S9T=>>~QTVX-+9U|H1-&i!9#InANYX!HRSip@z-Ux93 z?*ZR_>@@^!*ek2(WGL7XU^(#7+ma8M$pg-Mh@kZAeZ0iKRp9k&JbT<~&j8dHhoVL+ z$X02m1T(3riZ)#f$Ngw~tK_6-udW{2%}^}=jy8|pEjP{8b<-?-fn)msWh27eQ@KZa z9QJl~*=N5@sGP;C#QA1?9N&t~Flg&MkAru_u;|YZThXjMB@U=^t(Z{~vccvi#2&-tb|BHqcj4 zr?t?-bg$VCkF<|zgGD;#BVzs)G=7QT5n|O7MW!uqN@+y5N69rL6R_7J z$8}Ge613S`4I91+xU*kJ9&V7tUDm_-y&L90N0(mi||MbF& zbp9!Xa|8%M`JMPo*4#?RF)k10){UZQw8BSsZ^WaQ0gu%@@-{h-iWG8a=dyD#)3BZ8 zi``Z`WAgMEXg0`umiofP_uf4pbufJT1=dYhkhD8;*nG?cB2v_l$skGMH&C1wP>+U_ zGn#ngg@^4NA7=|@>2*V!jwGGY_gBe{sw!sd;cK)3>QIkf+SiG4Eoayh9tJ8>#a_+klDpekL4lR01$ynM`#W6?YubG5oPq2`gNNk< z*{$>)V{f7+Q}N&K-@mLGa?`5V{^*uwxx1jSQxvY>^U2~&F6QM>rc`p%QKQC^*Lt+d z<`i>^8=gmAD(awYMSFR2@~sa}t_7!-7|nMvTDW1eQ^Dl!gjGVn`R>9$^ev+&@cent zdaPXe-tC+~0WY3OodY9~&^@qFNm60*R{nfefm!yN@4`t-jC47cn&0{I{9Mz<4N~K^ z8FJdgEtDGOcD+iaaudJuZw4d4Od=x*vV4yurd<5Y)G@7p%lSUNo^0Z44F2VA~qW9GuA4a3;lPdS$)#?0zcOC(7LO zh5oN@dy?We8p7_6h$fvGQl+N}fnJMuucANWKyTIUoTv8N=!3;ZdBl!hlejjXx5^^Q5zxfo>2dty@voiXq?2=V z{e6A-Gap=sUrW&B?3K6iAm?;%C-qyGi;{fA?VN9>)3;8o&`WbF)j?)Ey-&B#qF5h^;S2L0R~Qo zro-n3{m?6<)W)1aVCdQUg zEdVSA8VPOF5^!_#}3=Rr*cBwWb?h!DV`>Z5OM8L<15!YEhJSO)Xez5k1cbc zp%-YfNLvcIutjv-XgRa}`PbxC{%PdhN0=o2=3<3u=hsTnAX}t@shgX~*jZ?xp)nM1 zpcfR7^glyEJyx+6yo~}&vLl@L2=?nwI*9B%TJ`}co;{su!K${Z_Bi}I(eNKs5q%mK zS&YQ^(bOab3>9g(4$^hRcn3I>AVTQv%i5tXZ{VC$`&pd0J64^01cFC76yU-V}uzhjCSsP;M-Kx1;x zwujSu@2{5mjr?Wh7wbSgW9q1LQ)_3}k*MC?!$XViFI2)VqCfJft!iEIesvN#rZ}A~ z`yQVMn?ex4Y`z#bd4xLe735e@$P4FoWVa5H-^6P~IL=ew7B?DZoPBxd9wWM>{&}`S zK^%Ft422U%p{FK;@E|Hw~h zdvS+0DI__Y`LHYY-}iPA(k4J0VJ4?e0CoElE{5&Z`uuuWOr7=C({}F##B&$YT3$1nc(r?|kofXArFh+JCdb|i2H*oO z0ruf_J|HZ;O%g>7J}t5Evj*GayK$k1g$yxLRSDStlF6A$Yq_*a^ZxkwxV>@0JSxD} z?8(B2AbW${i<# zFdVAZow5<{5sB^Z^k6n4P2W|w#xgB7&B96GU4^@ef9{2(m+sm+%xf#v>Yd#fkYk1X z&cOefn`^4X1$q$uJWLBjPj6402@(|MP*b1?&N~cX4(#q~}*K>d8d739;K(Gf6w^2hn3bprg`Bb$!s3VcPKV?=S~W zM^V`+3m75KT6x_)I%=O!7#IaQ@H2`Ee)yep=C`W4^r7PljaK0mjrT}~(POt%g_X8VJ^f?f2NNy7rmI+TAdaPMghR^oDa z6GkyNsb{*5J#~}+T?^~E5on5T)c)1s^rR+)s@Y*=K)IB@Y(=*oxTxsPFHf~#zm~#? z{WH4C@-HU&iG?=d>_G}R2z^Lhx1nBrmE<0)PHj zJI@XO57n0Khhc#22d8$NVh(F-?%<>UwT}OPZjkjncFx}{HKjbN9CnNv#r4T~GdpW; zbx?6>D$kAKV{#koqL2wD`D$2)gRFggZf=m z@9B?PtYn`GwJ_=JiSlDHbUoTHroc){rkFYs_=UD)Z