From d5844eddb4855d7354e39b351e3bc1233a67e536 Mon Sep 17 00:00:00 2001 From: mxyx0412 Date: Tue, 11 Feb 2025 19:38:16 +0800 Subject: [PATCH] Update v1.1.2.5 Fix --- CHANGELOG.md | 18 +- README.md | 19 +- README_EN.md | 15 +- Strings.xlsx | Bin 87183 -> 88032 bytes TheOtherRoles/Buttons/Buttons.cs | 163 ++++++++++++++++-- TheOtherRoles/Buttons/CustomButton.cs | 8 +- TheOtherRoles/CustomCosmetics/CustomColors.cs | 3 +- .../CustomCosmetics/CustomHats/HatsLoader.cs | 4 +- TheOtherRoles/Helper/Helpers.cs | 47 ++--- TheOtherRoles/Objects/Trap.cs | 2 +- TheOtherRoles/Options/CustomOptionHolder.cs | 103 ++++++----- TheOtherRoles/Patches/ExileControllerPatch.cs | 7 +- TheOtherRoles/Patches/IntroPatch.cs | 1 - TheOtherRoles/Patches/MeetingHudPatch.cs | 4 +- TheOtherRoles/Patches/PlayerControlPatch.cs | 93 +++++++++- TheOtherRoles/Patches/PlayerPhysicsPatch.cs | 2 - TheOtherRoles/Patches/RoleAssignmentPatch.cs | 6 +- TheOtherRoles/Patches/UpdatePatch.cs | 6 +- TheOtherRoles/RPC.cs | 22 ++- TheOtherRoles/Resources/Revive.png | Bin 0 -> 23078 bytes TheOtherRoles/Resources/stringData.json | 53 +++++- TheOtherRoles/Roles/Crewmate/Jumper.cs | 2 +- TheOtherRoles/Roles/Crewmate/Medic.cs | 4 +- TheOtherRoles/Roles/Crewmate/Redemptor.cs | 85 +++++++++ TheOtherRoles/Roles/Ghost/Specter.cs | 40 +++-- TheOtherRoles/Roles/Impostor/Mimic.cs | 9 +- TheOtherRoles/Roles/Modifier/Invert.cs | 15 -- TheOtherRoles/Roles/Modifier/Shifter.cs | 5 + TheOtherRoles/Roles/Neutral/Amnisiac.cs | 4 + TheOtherRoles/Roles/RoleHelpers.cs | 14 +- TheOtherRoles/Roles/RoleInfo.cs | 14 +- TheOtherRoles/TheOtherRoles.csproj | 2 +- 32 files changed, 556 insertions(+), 214 deletions(-) create mode 100644 TheOtherRoles/Resources/Revive.png create mode 100644 TheOtherRoles/Roles/Crewmate/Redemptor.cs delete mode 100644 TheOtherRoles/Roles/Modifier/Invert.cs diff --git a/CHANGELOG.md b/CHANGELOG.md index 5bd6659c..b40548c4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,13 +1,7 @@ -v1.1.2.2更新日志 +v1.1.2.5更新日志 -* 新增驱逐显示,可自定义驱逐玩家时显示的信息 -* 优化游戏选项中常规选项的页面排版显示 -* 律师的目标如果掉线则律师会变成起诉人 - -问题修复: - -* 炸弹狂、纵火狂技能无法寻到目标 -* 怨灵会被分配到豺狼阵营 -* 非红狼阵营的职业无法使用键盘进入通风口 -* 污点证人在部分情况下无法得分 -* 鹈鹕被击杀时会卡在原地 \ No newline at end of file +* 新增船员职业:牧师 +* 删除附加能力:酒鬼 +* 在下载帽子时,如果配置文件下载失败则自动加载本地配置 +* 修复有玩家复活时会重置其他玩家技能冷却的问题 +* 修复了一些已知问题 \ No newline at end of file diff --git a/README.md b/README.md index 300b27a0..868d3d3f 100644 --- a/README.md +++ b/README.md @@ -468,21 +468,20 @@ | 送葬者 | 巴甫洛夫 | 侦探 | 溅血者 | | 逃逸者 | 巴甫洛夫的狗 | 老兵 | 通讯兵 | | 术士 | 隐身人 | 时间之主 | 破平者 | -| 骗术师 | 纵火犯 | 换票师 | 闪电侠 | +| 骗术师 | 纵火狂 | 换票师 | 闪电侠 | | 赏金猎人 | 月下狼人 | 黑客 | 多线程 | -| 恐怖分子 | 身份窃贼 | 灵媒 | 巨人 | +| 恐怖分子 | 鹈鹕 | 灵媒 | 巨人 | | 勒索者 | 天启 | 传送师 | 小孩 | | 女巫 | 末日预言家 | 追踪者 | Vip | | 忍者 | 魅魔 | 告密者 | 不屈者 | | 悠悠球 | 打工仔 | 卧底 | 反骨 | -| 邪恶的设陷师 | | 保安 | 管道工程师 | -| 肢解者 | | 通灵师 | 酒鬼 | -| 赌徒 | | 设陷师 | 胆小鬼 | -| 掷弹兵 | | 预言家 | 窥视者 | -| | | 情报师 | 雷达 | -| | | 大神官 | 执钮人 | -| | | | 变色龙 | -| | | | 交换师 | +| 邪恶的设陷师 | 身份窃贼 | 保安 | 管道工程师 | +| 肢解者 | | 通灵师 | 胆小鬼 | +| 赌徒 | | 设陷师 | 窥视者 | +| 掷弹兵 | | 预言家 | 雷达 | +| 狼之主 | | 情报师 | 执钮人 | +| | | 大神官 | 变色龙 | +| | | 牧师 | 交换师 | ## 错误报告 diff --git a/README_EN.md b/README_EN.md index 734f1405..b45f8b41 100644 --- a/README_EN.md +++ b/README_EN.md @@ -159,18 +159,17 @@ Even more roles are coming soon. | Warlock | Swooper | Time Master | Tiebreaker | | Trickster | Arsonist | Swapper | Flash | | Bounty Hunter | Werewolf | Hacker | Multitasker | -| Terrorist | Thief | Seer | Giant | +| Terrorist | Pelican | Seer | Giant | | Blackmailer | Juggernaut | Jumper | Mini | | Witch | Doomsayer | Tracker | Vip | | Ninja | Akujo | Snitch | Indomitable | | Yo-Yo | PartTimer | Spy | Slueth | -| Evil Trapper | | SecurityGuard | Cursed | -| Butcher [Beta] | | Medium | Invert | -| Gambler | | Trapper | Blind | -| Grenadier | | Prophet | Watcher | -| | | Info Sleuth | Radar | -| | | | Button Barry | -| | | | Chameleon | +| Evil Trapper | Thief | SecurityGuard | Cursed | +| Butcher [Beta] | | Medium | Blind | +| Gambler | | Trapper | Watcher | +| Grenadier | | Prophet | Radar | +| WolfLord | | Info Sleuth | Button Barry | +| | | Redemptor | Chameleon | | | | | Shifter | ## Credits & Resources diff --git a/Strings.xlsx b/Strings.xlsx index a8197b87e818b8594f3ee46ee91db0e6e6afb3bf..1f082d608b49e1e9c0a8a645f9069bb198073fb4 100644 GIT binary patch delta 75074 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 nnCYv6NzPz>R*ZTLJT6|SCQ*_aSu18 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

XZ+!FXwya`sS^dVu$ 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 F{{deBu9N@( delta 74007 zcmZttWk8f)&_50fO2g6ux=0Bu-Hjk1-61WoQqtXVNiGf2(%r2R64Kou-QC?G&%*b2 z-}nE;^Xlx*nfc6|iR+v**X~j|Qe+`g1v(0lg|I%>`uy3mT(oD;u%A79=4#2}Vq;4$ZhBvdC8SAhH1VG2{PRk@=ihNFqb>cYy;Y_lB6Gu)n{NzZ6re|w?5O)6FmZn zBvCc{T+P_WrP|A(OW}Hghgqq89Cb~}s1jd@{-MgBUP(Cenx=eY^a!suws-Qgp+DvP zv-W6O-Nu9r;@nK0Po|=y#)u||L4MA7-T?DmFp_+66I%6PnT#7moLPMbJ!3#-o8vav z7|(vqcfJmrS*%LFXQ4J?S%hKRTZQ5B>$>+>+}(r`RHfpz5R}2&w@D7er2#07go;zD z;-5b7B-?QQ{U*aI^QDXiSA%h96(rXYPs-H&nSxuC?zm3#>-3hY}ixxlKIYXqvHv#XUO=g>7!SImLG<^iiM z@Re=!TvP;u@Q|uB^L8q*BF$=k^i!i4WBJku?A2oFz2VlsoWe`*FMdw)9xIl~fUT(F z$ia8hZ&QfIGZB6x9`BsAS!d%th6GjEPuK1Ayf}dkcgfN@_);tF)4Yxg` zm`Y8_$hJ2%Zjg?MfAftFSwb`?RFr=1DXX76SgTHm7R>w}Hczi%i%x6$pg@%+FNim3 zDe6$I8jjEZ5nEC_U$T=D7Y}`Z88N6s>20hdbv|&VVr2h^*1TyM&ay4; zwbb+;s`T~DwcKNQS*g_w9lYOwvv#|>py9W&S4*v(mWSOP%sr#U;>}LfM|2+|Hspw6 zqG+&x*|aFLMN;N1rn**K-jnGcG~p=nIM42U$NJKpxoUyH(2yYIV(ji1{P8apYPWnD z^1H1}0$YRb?z%Tx`__FG&+&-4x3xRJtjz?jqFCjN-5s~1Iks+1R@RIKL5mgDr!9U6 z4iwO52yXYP4ZfR4zWv*_Qlvd4uwT&R%AxP!3Ecd7LAK;T1tmg9Q6xf-_%lCf!xG#0 zy`N~PCAYP0_M32nt~YNo)@ zr}*sI{y)SRC>9xDVKYlk5co%N26*pTZev##q9dPL^fBqD_539tO-lJP3)lHDGgeBd zUcXxAhqzypi`gLWw3#RS9rg{U_nj6EU9GyrM{ZGjFsE>haCko3s^qA{0}*soaH0aY z>?^I>1;6z65zyVMP|?Bw&8F(NN=Pde*BZ`WJF0JW*-2U(KXdrAecnKz3Ed3&QhYgQVN50c5UR91M#ZwlNTkVaPaO_WVW>HJ1HZEMhs2>u7hXSRsRs4J$rb7Zx;^_DPFT>>-_d><(xau=R$w?@oql*wfFs4*PZhe zEnK4Q!jI*M@8J5rhsnISI}G(qy@Aji#Ub}C4G?2wV)XB9SNQ&V=+FH<8F0JGB7EQV z=l;*)eb>-pZ_VQU%^`3%slTcZ=uFuBxy@hn{>Lo`{1{sFzRZ8PJFfw56M(Bz;fK{O zAl~NB-C2Gl?qMVa!p%kf)uR3?@Nm+%o4@$5o{;YSkdJZf5(Ig-a)`@z7WCj7R4I7} zXnc@+xAKSL^8xO|*PvX`fo}=N+PyWT@;|3d zy`ZGIxX|s0q-YE=ObaC(E#l3~-64-68_V?w70|Hz`)231E9x#Yf%ESI;do;gU?zRK zoIzeW9yjSAKg2d&op9H~q9)9gaQBx_#`Ef=(qGu&ZgGfhdu+4D9s1iQU7xp=fDF=?=}=AvU+N2s4kPCZ)z#4tn1q=6EI_!?^x| zW8zXz*@4XHD!1It0y5QHo#!Eyz)ZT~do9-=MttcTdweWfX0Ps8oAsux=OZWYCNIYq zg{v3bdS-YuQMy}&2HeaVji`-*?wz=O!Dga3aU#||9qot(q=YMI(ijyf0T&ufn_vG( z+_;eAt6B5Q8@kMh(@SA)rvVxZZGRuERDr9cs?EebP@ts&QIQLZ7&mJKfQQWOc(4@O z8!a~X;&xQk-rLk7?FTq_!P2GRDyyn?nrvcEbWu#)$;Npg(ot!g61+d`R>49qD>yaR z|HB<5Or6hDzmi;9HM+3eWwfnmk&1GgRkh~IF7Kw#8r9at*%lm@NyB9-fPEou+{0#^ z6iwxYy++K=G)-q4JM|h9c;eq{u4>jwbYqq>i}-o~;c=PRYSmMD^z*yeO%L(a?2OoECrRdgD!i z`N#Q=QQ=o_fF1A{!%T|y4)T7hBgV%ICCuz`PQme@{B+MEH~mC)dERFnVMj`14%p{H zUBk2XZJ}~+`6~~uahx)L=MNr47zEZ$e?2F<4J7-nNp1)$_7aSXb?U?a7yb8L)D)j$ zAQfMi(PD$CqJ1Vm^$BGw>u0p@m^}6oJp%I-V2x89)r`&`Xa;YL@(`SkAlN!~Sw>3|&*qC|v+Zv&r0`AK&F z@zLz(N~U~r<@Q-!rQVjkFfX~oue*G;OusGqONQ~@ zU#$s;4;9FpCbx`zt zNY*$JtW(E2KZj3*_hT7lkWG5PbK@Ryqn0%_sTHF?kchWyjbRZC^VBb}UVXP&&Qn6Uz33ka<4i#A^Q|6FppnYh5l1%FsP*G=S} zNNGa?3=;PYNhEYj83S$Li5FS5ksOCH_D&|v>Vtw7H`_K*TMax(v!-iw6BS1Gbb^2s zCAGOC#z2?H0Q^vXq=JtP?At?Xh!@tuW5sprtLp(~f9DLmSFS&+o{k+cVBExEZP2zf z-?eK7-E9RvXdcBPPHthwuy`@c?UEZhhj1KyzKU>=JKQ1{8e+X>6=xmT|4@^v`BX7A zUe^*n(38LfX!~~?u7+MdfTr;KAwDq;*(ixbE=cH7qwB`)FpkQ$c$saG?V4T4CY=sK zyP|?)#26h~k)Vk(x#_*m+vO<;YItq9ug|vfiF*pq3(W~$%XnUEg8!suZnbf)!7+nG zItyWc=;%E{{Q6YVdybwnlpW_90pcRlQ01s2&EjSBLAD+t8D}kkAlB<8QgCXo`IWDO zoY2`Cqpx4~cs|#}4WT0HDue0oH(=_1D96N!gWNxBw@=v_4Q0wodXo^ThQ9;6*(rvj zt7{DpJV+v<+*FaMe$$vRcy1?|_+@5TvJ$+-G~pN|-%Ko_llz9}o^CqMiPAz!w%ysk8ymJNy)m>GUoLvdtf)}i7zd6WF5J*Y2 zhjS)$Z&I&{P@}3myd)Xor>5TkD$)3m@h^&(D6VvPhe)~By$9@ zq;HV^{|Gs^g{K%+g4~5 z+*@G1s~W?vXh2k&`ihH=P>DH@0eWdF)sxmdx>=cyzfYB9UM!;+^)|{ zPv*@l!|Qj#ey2_v`)lCfYql*n&clSRP_B!`Ray7%4!^0SPl)0z=PxDE@|E-gABy}& z>#Yz0It`z2RYwT~pXe-qLrD3i&|ZPx)L>}?IAWEr04O;Qh}A*2sEQuVu|o}Gd8s35 zO&LJfr0+%&kp=Q~iB5e6&8?Gbng@K;dAZR&TT0Jg z{?YA^xH5e-@iuj5-dEc(j2v2x5$V~KS8opED+HYF`jp(QZ!{K}koh}_bc5BV-JHG< z-=BLz3{;?|`!p}k5#L6ODqoxUXODx9-v$YDbLuYkrLjo%cD%E}CzENzz4ok=i?4kH z(7hD9&x)&Y$HYR}n;}qAYZ@;=&yhcrB_#rfxI@8C8D@3_mL}gz3i%Mv2iqwM6GF8X z{^;^DC=q}OAu^?Pw6b^G?TrQNjnx$!Dg-5Un15fWj@3IUpc6fB9CL2_JD*tzkAk7w6*ORMwu?*%w4fle48Q3xi^qr7XlF#8W+XaiG zCVLUv^Q&hTfb*6izbNc@_XEDo_`uqfD=0Fn#sk|as)<@H$&ja_ln7Fg=wz$_DX_B# z#rQcwNP`^#4NZ>y(X`JH9dG1-^f0YFX>Jc}>$p!RdoStgof)IVLO^ z)Dm@Hr##1_nq5Wq&-l#VY#ocP%Eke+(tumuT4d1g8q;cmGE8OEVag}3Ttfwk(1c=Szqw{%2-h- zeo6+1E+hn2%f+YE4q6c}7hxxAv??WPh${C=@;6-C<1W^V6P?OH&=tH1a-Fk5l}$L+ zw_ojSLwu9>|M>0@A;ARnQQ5qkN9SG;ngj;4A7^lIj?d+kIdD>(T`9ddu;as2XG46Q zG-@cVPwNv}v4#QxeAH3t)6h4W?IPq~zE_#-;UKrXMhNL63=y@GR+HEuNdaHyTQE~h zU=vr<7P!{ol;*a^hVt?qz0^9W zUfzqYxL@!6!;8u+*`$soNk2GbD^T8yeRuycIm=L~3tRaFpj!5yTZ-|hCp8`S-SaOU ztzu;U!glxv%4E?x+|-?=B*1AH_K~w5V^=CE!1~S%;rFXet|+% z)aXiOPNT<(fQDr2TYSJ))TMQj933++^`$U$(nav`}p%Tk7o@uj}VpC*^ClPJf}*tgP;TPtRX5yT(rvnwyQ5pCflkfmPaK^ zNmi_AG=(5?m2;GBb5g%)2ri`zJFlCoQjLq^+5%YoTi@Iw@p`Lj##AQeZJg$mfBAC0 zjc{ZraH$j~*_8RP%4+)+oF|ykCd=ZlAk<$c)~3^Ju)aDPi|@F#-GW!!k0z8Tro`f} zAw&rzM^_F__Cv!04PBXujol;LR9O6Vg+2>`vNOs_UhYJ5NZ=Rml=fv7p=>^zYy$g* z^mIu15OZd?uFct7hoTO6wyVd6g*AOP3P)F+>;{=N;*?znp?wJZ*0fPlkcjzqp>exs zHw6o_3U&x0wj8ibRw7=dvpa+kNzzg!;tT;WHrm_HJ8B{gD(gBvIY(@I+QqwVG@qz( z$u9@$;-&i_&VuAatXft!Qe;?<9*VKksoA&8UUWuQ zX1O^f5Gb+{)VpI+#w8Z;`x+FCZozGtT22h6gctI7fcYXOmsq_yvuuhrEGFjPFfh84 zQDWt8VG|gVkQ@m=mHy;x`+?=}CA6`ip2-YVDVrw8W|q@V5-}!I_$N?b`UXr7#}R({ zikUwa*F%rJ$)l}aA<)1z)#rGMVmUP1euo}j#4#NKDb4O&FiBWzq9Z5%{~dolBAn-JvmIb7DP1z{DHf8pRAKqD#>7c zCnbv1@9z;AqnK61^I4*bMcU;Is>bsMGcQmg@yi*KFe8h<@re7dWJA{7N)Jx`BZRr< z-?3QHp?i{u)9G*6uA{WtkWuLSX6EVYQt%+4EB@q>tjH^Jl?r4xCn#(6Ch*B!FYmN3SYR}TWi=U-+BLH`O*h2tsHw|tbXg- znhO^eg733^5SeRsm>n6W?U6D5nb{iT$XG4@#2Bk!*; zwRrn*(7ZP}!F6@>=&#&tI0-X1=#!sVO}St6YoDSo;J7h##J|Sn4!Oz;p zs`U1+O@PZ!;tzj0n7?sxYvtd2Pb{}#`)>GHpv0xvroje<#H2K6|Q4)toD`2t@i0(F@}^YJn^-%8&n+=kDgPME7q-e z_rHiXiE_h7ku3ZaCgx9u+Tqm-!4S`k`}VUkZw`Pap(#YI=ap^BB`q5T3pXZGj-Q~- zlzbfNF*S$^=v7H}gXIa~B=PIu9QT^}+SBO9>*A1_ip{kBK*B9Ar;$2*oyb^6{_5=& z6@5YwK`BJ+v#YkKaysi92_?h40GPS!AhEH3k3l^U`I~YJ%U=3Bk7P?;P*3!wF6g_^ zP6>cxMG+>iY%7xk`PIa4bmN1wL>soCOpt;{CzFbY#qQP5^)ZA2J&4cbJ#!>0v6Sl` zKJs%q8B%`I>f85I2ajLSt4RoQ6@o$2?+OgQAQNNeKy2p-avNHDxPToqG!ZY~H<{1H z)_rr>q=SdP1fAYw^s34@A=UCzxJw_ES))$q4s$CHcf+(@;}hXer$+DXX`wX=iR_pYbehe zyC9}taESfQXqUM4oFY=O`NJk8h)PL|KEeQJ5GF^FCykLbFlp-gv8!CM<7m08PiQ}DUG6tQl)3U5s-uzExbq^ zAluI~zYQsQq`-@gO{?hQYDozg-OX5#9eAWIg?T8Ct|A}Sr2o0U*-uFSchWc4PB+%z z^m*kGcmKFR8%gpRM3z*&Qwd(Mv1dNR-KGWa{Ut=;RgF~ z1&vFe;RaL4y1epxqni&-Ges&3eqto$eqVy-Gs7gExPH=;U)T}2YSYWQX~WcoaI~+( zD#b$(6=jus$N0xj3y>rin2geu;T(a{8rupC7Z7fgna*=}YhiMOFV$*EzlH7it0aH% z<+08I5C>vjR*>qCNs4C4WBwFu;>KLaRG(5Te}cf?rAXCcc2TMwoe1hKN1z5Bdc-wB zZnXsH+Kb%toP;Wj0Eq*B5Si#+ZjxLUO3@^)&Vo$6QjX={cwIUZxolG0X400KhwU#f zM8y!6WsonfY@WYoS>L)VaVW6Y>fn%x>`b+et6`i*d#}L zT+vpE)dJiC%J1RG`gib)WSW5aD?V(+c#9=?MQ<yZJT`$>{|bc-G2wmf3AwWq$5fL_uoy1cUy+ zyAFQEakNNnhq0@$+B_1~gd9AxW~!R{WCvcrEClhqj}X7fg!oFW(-wKu0Q4#(#y{U2 z@W9PQah=h$_HjYl0t3x zUseSj!YeSTyA^5d0u!8%UjLT4hv_DuFW= zZ~Yt=!D>@f+w4gm^)XxE=Rxsr|NX2FV5eVNA^KY71kR0Th2aQ{4vs3V`L}Km?d>G~ ztfLc+)+<*|GkwcckdTM#Apd?9qUoR|u=|NHiWF;bzaDgRJqzyv+wEMy4*uK_tsEI; z&#-)#wq1cj3iK3=3x)c#+hR)nqT>(~PVxVi(#ZqsyW)C+(`1JiOV9s`9x9mv+1hMP z*5q>b1dL~D@!DI88#`mkf}$>;GSuA1XQ_u?V7wFK8foE-OU1Af4f*snh+BnV?<1Ye z{zt4G%YH8L_*aTaJFAM~f{2{KrCBle?*aP=74No;!Oph6*QT&pemv{l=)w(~2;YyX zy(*VJw7<@d^C?NF)@b~P)rnBw0}%wd2Rf;sAu5achWC|B$U62ZCs!YwWPj|~u<@@= z^F!qAw)p#$ZIR!uP3M}S&6aC{+??O~Pg2*!csUUC>(a{(=)wdA@LG2f`?({0yFuT$ zcmyiXtkZA(5-rlZ2x?tiw8bUQzc@O)k6nfEDywLjXG5b*SC@tF5ri7P0V+ax5<7?= z_#%A0Fk+}{f!t z+TqLvpAfMBh$5*3h9Ex&u1XVGe*rFArBs z(M9odoN(3S1sqNJJGyG#hOMq-tL&%DP6qg~yy85oHMWqiG%Fh*C;pBZb@E;*let!k zUhaERn>{HS2iH!7NoT;O!`TY*k zG7Cp719Vz3^Z+`{>LD-<)*vL7d!aF|C%gLl?Z6d5ZCO`D&2 z5<&I&6^w%)FU?ewW-k{aXW~HYIefS}fMRuH)R^IPKwB~&7}#ol&QXxl5NSOHrTK-iq%2S*U@$?&*mq`Lt1)DKHKr*U`HZ*jYqLHvDnmOIG z9D9P!Qm2OHy^SJESLP9Ues>MNq@{b0FVTwBADy}RgPc?~J+kNJ2YbvYbWwb+Hyy}e zBFqQ@r6E=9BspV=3iLFu_v=%z12t$E&h84cZfkzFj)Z5gec+kvbmY0duXNE`R`^r&#<7s9t+TJ%%r;6Nu-s zFrqyCz3%PGjM8hNd_=Kj`ZlHBIR5d;;GdnJ9MYp*YxXJ-5H!$rKA!IPnElj2S+9Er z+;WP3>o7uKmesZT@JGUs8Rvw-|L@{QM|T>}I<@$uI^^r~TSt&grT^8Cz?!T4Cs1Dv zu4vLp6sXae@@%F`R4}ZCHElq-H=nQ6Cp(zN-C&8)mSE4nfDv~v4a{vz8f$7i2wpDm zjFeCg`GHff)-@{C&w~lxVCLI2GH+7`xTGS>-0$0&|0*ZcQWV(3ul(S~FKvzM zX{*^*w)f{(+hr>1Vh!Uonm^56nRHxdICFVt7e%AJ82%9lLEdNTm^S({zolKExiBay zvTtSRleC2wFynX~Ll+pEl1YD3$)j3vKRp5XEFcn{RAI`U3e`GQwy$H{}`Magemmy8TX+9j)k( zaBPHn1VpM$J95|#q;+{Q4>xxhVxXxi1F*m*Iy!Jl!-6l-3^V?9h#`Lj?v9#sY02ymE%(;4Yy>=o0MLaF1-B7 zoe!>g4CCz^kXm8GDmD4NEn6#MCTLXI``)swv9sAFu$*z>eN~%8DypC3Jb9ykmO*eP zP*%MG%#{u$M}6QW8oV;%(DZ&uR#Cxk|=2G+}nFl!qo>iMyp0 zMNF@8(v|w1gv3X@gSU~;kn1HR&UB6L#xiXsB%PzpzS5F`R7XT%seEh;>xgmDFEG{7 zdRNrY3P!LOYyrER*XBm?t@JHWKJhw@fW1yk9@+&2kFUvfYCeUI3#A_uR0%GBXXvZ zy%YVCRki>|-)e_s2oO}=`#U*qemXx&0b84r#{K~j09_CM=V1vn6(i}Pn4=qP^PIB0 zwgR!e!OHZRp>B8PSkq4BuF;bcpj`XUx;=E47HIO_9Y^D8A~NMuJ!Ee`y@#1SS6yTM zHR-_bslWr^30LF0WHU+?jJ~nKzeLj+lnP^M$#N~iIb4gP-X#yZX!A*_AcqCHghIZK zHFMBV0@DH_@&?El@=Kp1q-WK5d=uR}BLbADTncJ+#q*t*C=agLQ;r#FNjmMdT^0OI z>%=a#0z)n_GLh-!_@rTBe7N!J5o10XqMvHdGAcS(FD#PAS{#p>p;P(Iv$z*-uM26lu>jSh0p$*p4yBcMcc;Wl}R1UvHN>v0tLqlPd@QNN4VZM0pQN@(gBg9ACe~k~>mL_~eWJyY9`4^EUu)iAc zoif=B1&mb8xJ~q%E@^l#3a&4QNq5qoph-6j*Lp|K+gZxX3C9TyRA@uPB*s%Kw+@*? zfuHrszTiB34!@rZ+e}WG&OH1pa^2_WM-eW}1Az`1)1j;aN_Q*c2$N0tMcI~C)Ht}mecJ3j{6XrLeA@Y$#sGP7 zA}9P4twxB-LUSf~&|kKe>*wAs$nO_j0DYxy{O=)$FTotkudSorbSNP)n}85hVKmuD zW_SKF6KMbz^2#OrlEWm0v;yH}k4DbaQEjUbCgXe2^_`WdM%R%Q6QSI;I_3RKmgtP6 zTJ7>uF`E=LD!aaGRk&lrk>hePTPS!2{Ud8dsNi>)R0Md_3K>*mM`PKJ^{U5?Ace4y zalJRSGmFCv`S&9WqK1MooyNftjcKdX+=&I^)@E$^RvOHELE~>U|U=U09Q= zjnJVXX|Jd53YnwaUxGXmjW{7{E?|(2y-7n4VNxO6)C8wfJvaM@sl1)?0fp63{({SJ zE=9*QexZ&RfeN3m*Kz(^Jxak&#Fum(PS^^JIZfOqkKNcq&;a*4?v zpgCBzYs0id)Xfs)7qfyE7nnifTAGzLB&`wtQJaH6c8Mfj_)pP(Hkd)Pz+ z7^(haE8@JqdGSHTd(+m#IkrSuWm~3BCHVrbQZ|LH??370GyBHnlq+;{A-{B-r1Cf@ z0uP9Xav*>%F59yzo<_IPdM?+SN9u4{P`0i32bUi_zbfGUgy?O#piErszHmKaOIT4E z0d-qBsLzq6f0)#-g8(Vn!Z$=xh;Jx+Nc7Arw42lUv!BxT{;%M# z5$Y}IW%tWS%Xa%~%NPiLnz9#fGZW`!~rPMEp$odY1M8c^?y$taar$BBQS z1UM-ylf-i_(UP5Yb=cUn)o-3wYBU=%H3@&dP4dOge2+44>3;_AuT8S4;je8s*0tpW zsc6d1L&l--DBSYHt=z?A-)CE7)C#)dQ=9y5uX)@Q(CoY=-{-$C4_!Jd#hjRub5E5J zi`O-XXt@A4hG?l*qaJ2J3u1^$3nENJ5a0YLt$e@jOHZdT>{)9LF(5N9$IrO> z{mA!n&Y$Tgb!@d~8m1MAjGMOKXYij4h}Dm_XJvlThvqVvy0m-}`vdJYO5y&(dIL!A zf0*ovn>i@<;w!Fdg(W51keKIw=-YeiOBk7~eq;4(4xG&C<>g1|9$m`~q2 z>$(Fe_lcZqClb1U6Nx2^8HfW@|8>%IE!kvH!^Luv_A9DR+a|nOW99QpPyZ01(w<$ppK@#N(tAN$DL(U)+fLl3S49`p&qECe6_EdYPC`yuUyS z|HzB^N)t74hKaXi=Q~@bex20^%@?Q4*S`f#UIYYVwXGZ#?Pds4+XD~2HDA|t=n?Qe z0z0-jbWnU+uLYS5uCqeg#+|NKl!|vVN?7M$7@E$fh%_&II?N;=S*8d6Bh1}>{+WHR z_y3{XZLCDK>}FsGoQ}BLbuT$7d3$duLkzBMnG9AO8+kpC_)!T4&CU_yhb9qeKvSWB z7+SgC`{g}eBu27I62=wMRy$@8Ljwpgz%I@Rlt(wG>|&yu^m|A@Ww6FcNu8Ma3<*P0Hg&xWyynN3p6C zy37IuG!+TvjKl$d(lw|H{oX@4(Nt=&cN$@>FD_IBzjc@;Jo>PrfMer!1|XYq%KHBBBWl&KsS{dYuJzEU`FXAe!^gm_DK~DDU++Dl(oonC=p|UK?uD zn}@bY#)#e-G`EFsnzC+90E19^S28QKRP0Xkx(%k!kbZ+vwr19s ztW(nVW;^JeORYd8C`k@_BnC#-;Q*=XaQIn~(PXxAkE{=WhwkAZdIc2i?cKA-vBZj* zecLIz7zHg0xl>h%^Uyk@5zl?MGus*LUz#HuX_v=I%PLMfZqXbAW{Dh$imI0VS_r{$ zc{dnLAeJUjZ<1wCas#}@^kTy7GMApF1FPvYP^*be-H(A6q^e;H67YtmI_uY6 zxI_9QD4LgWS)GtJan^_?qArp6%n*@pahT=jzw=>Uf6-yInu25zre^lMLe3FK@JnS* zpdtFyC0lXP#3BXw>hoeYyoJ%RY#+ge>n@Q9o#_~T#|yvy{#uw?CKji!Nwze~DOhxk zj~LHvgN>m2nij_N2Pe=YSRm`)Uw9wvjx{0gu0kwPAGPNlLEv*in9phsYe$+6c+itH z7Ho=e1NMUoAxajC&r=Mr_;0^%XxJCSxKvgjapvb+vLH_JzgN28DlgJlCgKoJ zcFna)pQbHo%C4{)EN#qcuS7q}Y)0DG_hwOnN>hf;%l7Y8fYU78-)ym-?p?w-c^(BA z0)n9Duuj+0f#o0AuDn(WM6E&CUdv}K(48}A#XJzXZc^XIzEd$m)JYymFE#y!SMC}G z_N58O{tCw_>OKDGIurT>>X;+{D@ju=CrTI1g^|Ws%LNHdDLO{l+xAP-(IoeZdm|Uu zg%O(Au-4XTrEC}qr$1zcoGjO}~Y`4>m>5?*|<{kS=*X4wagm7Fvk ze(U?%w%HgfQ5OGs9s4t0xzY(xp(ivo4#VVFiP+@WHgRU~Rl|v4UER_WPbzaShDD?< zYbdNmed{+(P7le35!-x=2nIcn4&ud3;fM90?ap;eom{R&{n^d<_md4# z?5zpuLC$j;vVN@;G!g-CM18ih-w3L=G}(mqf+a;&xbx4#G)bVM35Y*;=mpYmhf5vI zcKi<=<@BVw)>K#-LfXjB+M)DkMoKl2>v=kDNlUiHM6IxhP1v3d$d3vIR;XGq_Q4JK zCLc=#d(cH$|31Yz)X>1O8v*_vz4Bt!HkqhZGJ*wRvK)+jjEWxP;|W`6sHpBjdVUQ? zu8{}l%@xAMDZCSc zp*yjAoSJ%4yK6zlE$^`Xuw2`QpgU4V6)CHJJq%x9{tc|o$6w8m!N`*m;JmVMFy2Y4 zRQK~d5?f+jQHMnPU1T&qp+xOA4H?`B&uT?HNu)E67=(}?;Pi?nsPzvSz}bbPxaBlF zU5PKWxUIF+Z#2)MyO8L(I0yS==BoJ2V8|k}Q?bBe^)JPr36UcMH@;=oFJVjupZT<~ zPIloZcLq%9SBUZZ`py3L<;acPa9t1Tusdy(meWn0F9>~o!C!;djkvnYkMHQ`J)8;( zop1yJAxBhAAxGQ9-fK;O)ZCmjmM|~{8=(&dLcoVb{LRRF<1`Fwb%XulA0OdIO%qOs zLM#UcEJXRLT0!zH!QKH}1=+{=_5n`X809&pwreL}sqqr`w(4KS4!f2OeSPh%;RpG_ z9nW~^KRtJHtbkwD{9>)qevJ&G+;*n(4oR z;=f74r(yKJ;bPL`5hD5U;eFcANN$UV-4mmke=~Xe!cnyQ+44=m)2!%!v#@_Yf@Wk^ zA-B)nMulcD&)}AM{iIvLUX#B4a_jW&QNpU={0ZpcdiMl4h&4VUvvNOqV&7YSV&86i zVt+09$iCWN+NfatNZ`dcOYeiPEN@Y07;euj>GqQ<`n@Mv-Kp}v`Z0|bp&7NmPblAW zo={Y!pS)t?F7#yW`IA?YE3ThRNC!@yFn+H-VOX~Rr$0zP!NnBE*X!rB?-NGM^^-p~ zW}fVqul~;;7?)2NANQXi%4VJ*)T;hdu7|xwcRMwsR?gB_oIPcAIYDFhE-HV|(Ben! zn{L&M%3r0R#}TOf)uZ_zt1djWv0j!|^kdK6dWEXF6X44;CeukaKYO266qsHrTy|7vO`Eb>VnjpRxGl=?}YMo#e2Z3CvRPs**2o?u=tJt=m)_YtgH zs9`&Sdp`6O?ydk=xUWy^u$wiDj7E3I9R_}>Tc+Zr$x{!*ePr_kbxTszA9_<>Hege2U)xMyR zeQl-QP#>{!qjh07Nzi%-y@sy?yZ6W5YFW1*+?1$wmnYPbLuf~RO??IyAXxtBdv^}V z5I@kp!u}uB?T-r$m%5jp@I@I}#XmXl&W-7|wm5a^NlWtHqn6J@_3$wAhxA$SmwH_{ z{8~JhI=P)Kg5KTvYb!aS8n+J873SbJaMTB!#%Mm zj%M(fSoh3KUr!!6F<$(~2@h>#a&zR6#dTydZscP`>QA!-`+#os2B4l$xIBC7vSMYk zJ}muE{jTBBdH=-hJ6ssN_27{xxsNjn{U7=T#r4XQ06bb=bK%l03nf?A%&VLKfxr{? z^!{KOZOEcy$c03Bk*Ud*v?G18Dl*1+a2<}>Iph+`@`%a!KmnKOAS%zU1-vKz$-pNb zl_}ppqSa#@{68yh8U6?4{Kww^NBXu_XSC(U^tj`HlsqOx`XRe_lg{xef5@)se!0<| zXU)pyVKYvb@yyOgKKBUkUwx9z8zYnzU?R-31_J>FdJ(!~S;&j^lztpU9$q z_rxEP{=fY5kDqmgckdo;e{|ZT54x|et&cn4aZD!^UZmFlKc)X?%rxx({Ce@f>wc1T z<0J)a@4o%N`KJcE7=lKme@>XV6AD~~Ih(VyR!G5`$zZ~Yx5>lV?v6z$NQlU$yFt1`x}>C(Zlt?G`mT-d`~B`Y=R4<~Kkh%9J;xkl z%rTzvjJX!D!u;Upk>v-?qn2jVGr{|{{UOt@7tveb4+J3^Z-1$0wpd~58DCWXKn+;t z9<9GT4%Vum)~1}G8aMUo@wyq}TDkH3h!)k=>HxHa{HLf=wmWechG?b2n?9Z zhja1li&vUde;yTP9~F9*A7!4xG&@b^%Vg3Gti=~SLuVZ zzR2>DQZUTf;TeHYy2Q4{Z@pdFSZ-WhAEoS?r0EV%(6IaZ04l0pf`FwMgh$Cyxy0)k zgfHxB!1wlok=%sEW5vqE#O3$q&N+n%Pe4`6DxErEdF>#*a-VjvIxL1fPUFq7S z?#!HPd6(b6&K<}m%)zJzVC8)~?@M!L<=;Ugqk{~q69I&-t|`XIY!qZ5FHs-Pwl6Xk z0skxW%T++w|N7{3?(*U4a3%j)ppc_r?1^A>B#EaQ*9 zm@N;*({5ZI2^$`Yj1NcM7++?Gq~VUcF;r%Udg-aa)$gs3Q7F?JsDN5eU(8Nip0)C4 zpKn)A9r~0+6F**I_MSs7Y z9vBUR^B_DhB9eGOgc5d6mgbjuNjR@U)YN}r%zp!&74E9^OB@!WK_XiiakQn#uf_@! zmA-sMIv2XVC;o19><+yb(xb-AZ$a_MioY6foAhwKF#h`$Ow|0}dHYxY8bOm76omg9@ra1lU$_=tVL!VGT~8N(1TtmCgNg-; zHZ;>VG~-4ODkyB`fAmoXThRWR9*Sul=tGf)nlcBh|1AO362ktL3HZ;Dm3VQEO?8FTm|{2U%R2_8v^U3k)<@`?_gZmd6I%nYXQk*BXWeLz-xu zd52t)3J)@&$fddm(})i_`q3J;2Xe1L1o^IshX|GsUJH``_8BBvlK|;)_P?LRlX?wW z&pCmgAal}E?A&4I_yRx-_<82`VCw!2V+Pjt-!Q7-r@=5l$T5xnetm=-BB)J`1?^hy z*8%&aA|SQwLLd&>)Y$*GiW2`S9(X}huTOeS5%3z!ZwS)}8k?*7rg;ikyE}B_DI6a9 zca{G{d>u6mYYS1`V4wn!8So75 zFiOeYkHzc3%>2ul>WzOLO=!DR!ZZAHO#K(pIrK*q{|B3ILqNs5|95)9QKHb+cnOAT^V$GfO%HVo7=qUUga44AVH#HN zZ*vf}_h2sn%Yv8gFbV%ur~zWEM-0)|!-M$fQ9z>g&;hsG->XW8OMv(3!LO#NHt>;p z|2!bcHhM&{iw*s|A?*oSd<{v3)yxMg9AwU1K~W=nT$SH_Zdb3mn^qOo9VwCN?``Rq zSa;b__EqWoLMo3dJc?UVrk?$HT^{0kc4P%iemEFppI%~{Xf>+SPLLs@6%?$nVi-)r zoH7E|axz2Z>thYS+(=x_ljt;K&F9ajV3Hggv6go@TCci3W3q6A-S{H0Wj63Ug!&}$ zMQW4Nu;#gj#!TZdk3{&1q19P|1G#d@J2{5FP*+uxH*DQcsu5Id$WbdDW#H(F{8ghy z?cS*36=!54p#G5_v$1gK9`Tci9pZU>3>1XZ3mYxeS82L z^La^8siyu{)%s1FRr!ySqy=?+wL487IP`%ptR<}wE|xu8uXZIpg`Puh1n0U%8&L=~qr5mjdo|rL2 zN*c<)Q{=7sS?*AT2IwWoRci!#QFK0CUCTViUGbRyU^U75T(+Z@ zgQ=Q4#;@Rt<1R_~l;}`4;mYvC6Y18Fv_dpbG0A#a)Lubm{*Dly&fnyk6bb1LfMoJ0 zh3E~sBjzp@A%d}Bs-W<;^B2?-$29!0XxcLkUO<>k1!%M+-iiol;j5Ni_{^NgeI6kl ziA$ONjy8I=7qvLNMFD)YoNnKqARZ!|iToEQX7{7_H#px^Cz-SzEOi!ttL9I5Fr;KE z!yHI*ah+Y6BRh?IBonbjb{xGSg(7Q@C)nZvc zAa(Qil4gJ5AyEVG;EHpPFeVErhD+kbVcdy`yc@(EYW8Th+{2*Xve~OVu$W(Fuxr5l zJ%4OU?2)Q_c|0AFW3zCKu6G7`7)Q%!+I+6i!FU%DT_K${Ci}!c!I{=(9OxIzF4?X{=u=`cpi4t5*EC`gSRZ(?gjmV0q4CM&wa}4g=1{iUlh-86kgrI{a5#- zCNDV8abtfl?8!m?C=&qF7qv=MX_azc<%jUO7qXVEK=1r(inY;M?Dw8_!tCqMXD^!J zJVwZ)n+4kdUtez*;K3E}xY=H9(A!x z+3`sIXNtua6m_9ZbD^~F^u%Z!@6QB)>#MRxLI2h!K_LO$CF|_cFrH)-uH!VicM87c zVP$mwqY_17^~rr)$2oLz3b(mot#tmA-O9La(PY62cX5lm)=T=T!6a`XEz-l;^!H6DV{X8Kdv_V=}Jkp#6Yr<-B;eT}a^J=cTq zbi9iA=|gZ#3MZZ%d(2MRQVXpFEh=9mUeG`WL(Maw)~8xekCD0nDouN(ijr*cPT63t zK#tQeV++6u3NtT}Mm0WFv3xPhG^QO(DIgypiVU%vLD>E%$XAvgV#SB%b-`Q^ zZ|Q7Z!N_aoDmj>Y(?eP_A5zn3^t**l`&noXm!MAm0P99(9A_@lx@Nov{4CQ8x&}}n z=}i7GilFx9Yc1(+YcY-W{ig>9XQdYqnr70~m)5^y*-yl2ac*Mb2x&=q&-gwBeP=Y; z1489^!E2!75RltSO8jx+pXYgt%ZlaEyoQ(wRlhZlRpq@~e^^!8`PBL(&VNrnp0AD^ zBcP<@r%2^$ER}l}PI6j5$JAsFdvu&e)fPIhnf!_}jdW?a&*fdLvPEp%JFmxC|%CCn1__L3ZAwEnkL>xU%a=x+p2M^{JiJ95- z%=9wC>Ua^$`N}vu-fx_opCY~A83klq2KZ%PyK>_oe%fl6Qd~h;jb-n6{%gj|2&fD> z5ll`S`nvk_Dso^a=2tEEx|*SLXuj0O5_iFuP17fFB%Ir>r5%>}SJ>5jB6~J;Kv+kb zM)E-6{Icb`jdsF()>jo9YZ-=p>Kx~s4vN}y%m{zJEZ;^i)&t0eh zJ@_Y|Z&7!fH)2>}pvdMDlN!GeTq*O7k<=6=$%KXGdTesiRsJUFm!urVAaGLzhcXg_o1$obY`iju9hnK`X_T=xyCGZwnNY>#_|b z8-4v&&^Tf&i@vvqeYAmCFk0g{Kv;k3QeC{C*`O&ZfevrwYk zNPM*|^l?YY?=Iw2u4jxZ4RMn(Hdh*qOInL{QVADdqmkN2!bFk-%({L(3oVEvls9?h z^%Bd4G44}SQBPJj=%c+~{HtwC{BPy4PIb<#M71KqZz`lrOzhS?%0C!2N^sl?Esd`~ zx_D-*bMJ{b6&7|EE-16YJw4>b6K@R{m!y@-3w)>e^jQP~hLH2gwd(nnoIk?7sxYjyQ^Z>v)ROtJgx;01Sl1{4-)gR80#{b-Vd2 z96(zc{8NSLmr+Fm*1_y~_}|AHcD-t520YX^RZxq}VMltli(k5|uz~qK%WO2^hp3`?qK%^{_V(bnRiR%TIMrW=))c2VuaMX5a^HJXs z+o$w0*HC0FiXY-;sp-CXQ6t}9=OK^3w#I>B#A$t4>rGi|A`}n~1bhv8qL&XBDTUFh zNs#L%&lv}+hDh?~2NK?kryHM(FrtelkmT`gmtT<>aemt@pFpxAyMw8n12?e5cFXbQPgle5W3PU`|3@b$I*Fr}CvCKq^ffm#e5)o8PIXpQ9$$wk(>*^X=tK4^rNd~B&xg@WHR>X0 z3bcrfk_9i~;wKh7K&?0()I82OJaQRH3!QKV2OZR}s&CSE3tf z$cJMY7yR;3n8Fsy!T(_P2D@+Qp`F)Wb9_pfG<0%t*9_CAqtPb9{`-t zM~tV&>N}*c;e{O1?+a5dA+zOL;e624EwGGpS1G+|aF2YV$!=bET5I*-*NX%({ZfP{ z!Aox>?C*Cw8*$T881zCdd5~Y6H&UhDn#skW{MFgroHM6nAb0MtEUis^7W}WR`-8it z9>pR8eGYRt%5i@2JoX`haLyM=lmLG$M)ArUsyIrd`y#hok{+1@{xBxF-<~*6I&H>r zHg4$%Vyaf% zRHLK$(o^2D;;ke7(VIKAgS#G?AT`=r7I~Dl!UB!L-Y>vAU3-F~ zk8&Zhojiife4Rf7D`c^%*Huq3MqZuKACx_nu%$R=P~2Z#yN)<`#utiTSB;9t%y9-g zl3_t8>49dENs+pLCQGg*T$bxwNkML$N{Ef|Rol_i-bkZkj)AS}suT6Jy=VZgWA{CA ztC`a1OL1naNW8kh>gK?=A7a`7?R_LO{NTFG?_wh)_0jRy>}2AHhKf}~q7LI|LPITo z^5!U&nEJFux#PT|CzR4tIK+P)T_9ae8Ll6^THVE=i|M8kdZCH_Du)DP)(`D19TPJl ze0t!ryG?LT|6-5+ppqksuN~&(QpNm>9FlqJ+2NxJw~%SK@7rFR_`l3&fVeAsY{HH} zO7~1zUfE&OSb-63=0Et@>N8N0)yL2PBU|L4t%7HvYPwe@W@Ql0Z5i-Jbvs^(F}vQt zX&0ovz~DIr^mm3kRL#4Y`Rq&SFj_&DQ zoZ;S9R<5k~M)5J6%Vh;FDMc5j|8&nNm*!+M*Rx!-*2%U_4byZ`c?eiE`yG$9nRvwL zyZtnB&=rs^C`h?^fTi|mz5CCv_PMEZQ412-l7JZ}MLVhCECDBxm3)AsAZ06MxYT=O zlmYaW%gWbJduwgtVj4Wf#@xL!+}+B{4&>}9421;*072mD?Bw8LKLsdX6l$_BD<^;O zznWUT1`N4Z&nI>ZET;CiBQ|Ot9PnGNH;=c6GFZv)|M;nKPI=Uq*YzgsU!8~T7N09o zObPpWczkQ|^6>CE-3k89Ty9zNyYX#}=5g&?SIy&3Z_hN3OW)!Zd#>OIYxr*B=V{{nMRIJ+DJ(QLFm48%Z?*FJI{~J8Sjyyh zBdk$VCmr~PCHk4Fih(=M!H>b zgs3PyE9D9>AEYE|u8?EzDSES^y@^!5>u~>LV8_4s`+TzSmVJW8w*@neiX}Vrcb|Fb zeWSjumX?pPzG5=f#^3WI37!F{hr^=rz*fOR#;2PvE-|OXep_#Zu}$SyvME8uiZG4f+g^=l3>jrLLQ!BJw7opC4U;lP^pHBCu%$>MkMS)~@1 z9@Yy*D7i1_6E+J`PnrigYLKFB8R>^yG_BIBnfgv&f_CkEQ?|x&8+^st)nhE;ua$bw zQ^$a`C^+#qIbN8R$v+Xi7R`us;I|Tak~edAe9Rbn!%qYTM==R?h!Zv?bPh>P5S!*7 z9erv%aF#_h!4!C@P~os$g zrMYmwfwVn*3 zNmOMvQL>q((){i`dY<*fXTI;@=9Zv^Q@P74yh9PU-kwUh5a2>PWD@3EovVGw?@vW8 zis+vXJa1UUL4qFGd&wetDWdP^{Np7qD;I8)ka@?rkE5nt+kRW006y){H==>cAR-+o z1bTH_=(KSZE>ZYDMq?h6*+r+t=cNykx@@6^=9^|y-6;mfF0i;jHfNB=B97)%4uCfJ zyaifKE(p6I)?)L_I-(HNRFjg-pqJ3dUh38a(Sc5WMvb8lanxX6x_g`--l)hT4zp{n z{WY++18*B^ONUr{ytF-i6wSF2`4YP9F*;+o5i;|pkwBy496=ULqmCPSrd)eR$mR;> zfaEyrrUB4^tMj`~-5E6zR-==B^a(!Dm4Q0v+|Ule>=vA|5oL0Wstl?%d$gFzwm}06 z!tOd%Z(QBO=BlqGT;FC!d0_R>3uXrD4ZM@7-&G~s`6jVrbJjgox|z#lqO6S`k|q5; zwV`0Y;f>!=Z<#JCO_~z_R%mbW(|uhq)qbFt01jC#i8U2IZ?9GdfXZnus|(-2K9$Z0 z+S1sKlCePryqn*eKn;3p=>-Fm_!_Qu>0MiJo}VCUXOI2OELhAYAudpmeNmP&bi(vz z_KVExrrJ}8%wS~@*?KIk9meu^y%C7adM`-kO<4%lK0ilBQ$#sPX+foTaTjFOOogd* z;=@l)Yk}= zq(|AkZo)^=n7!f6Vj6fRt}#nJEJ!xz@9q`FwC|UyjIX}>xJG)`eyhiUpMtKT$*HeK zBRdFHlrwj(;Bqq(wo;eu$WyJnVQqZAkr?+2H_O*eWeS>B9vsD-y7n(0^!flujb}94 z!4HjMeL@%*hpfM6np}U+H0Pq`D6vBhna|0vFOM0A`@^e?>U7-l0d&o}NsGB!i4aH8uNlXRX>;`rjV1dAl|ypRav zmu62rM!V^%o`%OaUJy0E@(q#ZF}@#w;LTeW+YnIk9dH?j3P)J5uhRc?yX67jc)@+d z;tMxY2<(}~{2U95OEc~w==@Hfxb#xZRzl;aVgCxTQN}eL5ly4R%d#a`_HqRCX=zFH zaaupfGm2ANvDF>{^-&&JT_1M3R>}mO^1D!J*I3FN6V$$Ymr$#o-}&9!2ZG}V42;yD8rv3U^jv{&JSj2rzU$~5~(+<=Y_NqM?%!_;Pg}R2P?|sgkZNr;J z7o-w;(nd-V?1@6Z-XD!>U1zn>V&4`qz(t!jwmMJW;)nch;*aI`u|Dxe`!4}6zI0|7 zvFO#I-PP3((~Y@uoWSn;Q7JL3kVF`hFK@&COfi`Z=DR>X<-CQlXX|O%6WpZN#q+h~I{?h7Zw?xxfac1od~7p4z#Ke%JS_;EOB# z|J<(JHBkV64&Ms<-_f;P?fhyJ25xsDcjtrZOTOoK7B{;W8^wqBr`xAk54Q`wz-^1Z z*XjL&2iDbH*2DFuCkmJSW%p-7`*Rlu``~|+TJ8=QujBA0innwbXUnq<-;6oo-${k- zIOE@GhX2$!d(AlTcI+^(P)`zw&OT?l&cRzK%NCaXa{4DDug~k2Rdr3kACLowhH;i2 zjRK0KGnA^S7lD`+m#z7^Q=l4^d&x1l+9t6)WiN+Wu%PU>Hf)tj1 ztU5Ok9WpX{`yCRzo=p4-g!=1Yy6fHX=kzgAHGdJG^MVey7A+(S@LDu$2E_{`mlT@F z?R$G37&Urr;2pWnEm1;9PgRR!tSK?4Xfkxpb*{?t^*sIA@u}%4LT#!KWsCF#g==?e z;S3!5KCC2=ct){LWEv~oz#th(^C<`q((KeEEv!1YtGC9>Gf(hPQr!g;o%{a?Ltp*j_sZ?`M4Jj@qAnZvpSj4EOaK@KxJJRCjtGF z%U}7Q#_o(Wp_G&4w!1GZDIedNXL0a!C9WWSnJ+_D6PmNeH=X-O74`(G+Skt`6S(i) zK(&;F&*bt7igrpkpdt+MMAcZd9|dM99cRyv)LRSK^T7HPO(Q*mvG%J?S(`@urbd*e zes^)4?a0z=8xJ%$O~rsK(8tQxTb?gaFVGbAw2OwDJ9iWpVto?lwngd4{TMdtX^u6X zXHG#-`;7WBI%Cr%XFgO}u?(twv?s(0Jc-j_CrsA(n37KhrA6cj-)LzPSrq9r41 z{6->GBaNK)EXKVrB^t^-OcKr@zG|VYU#wj|v|CLDGiJa+;~4V^#nbA++kCoI zNQ}6cDgKrUEaB0faizGzdrW5S1k44@z+X^&5EY?S!~+_{QEj1&$74``W-$6|8q{}l zus-#Z1}7WDmuq%AVlz-yF^hf3W%93*UY zG2WKf#~UcxI`Z%FJO#>-d2X6%)Gzi%xhei~6<)gV2cCL5JP6)pzQAw5X^KhM;3t!} zyG&rHT;PPq*872UvY+k2Zpvt`Ak*C`c%j^m@CUgHhO#R@4-)^%G)qH0g$j}UIpSmw z)Z%(by@xUe>uJB+lUnV(c8sZMD(9cs@vVN(8%FwV*$wWAU(m5eBdakxIsg>UYk5-S z%*!b_jCClp0UyzdjpEvvb-Rzg$Xp`md6Fz~4qZFFxb`VANnPvZqB}BZrridPZla4J zZZQO*y;o|*iD1i8 zLE)vU=9k8F2pAw}HVZ(*YgF}1d(|o_;gB~`HNJ&w1t^rVjW0Wjmgja2?&YtQi|(f3 znD!fB~$r-#3;>&7SbjPzTtkwXcamK(n#k(7}LEO zIMxE*WWa8V)qsQz&MM}eX;fg7k2yM3_0${EXO*0?aBSqGO(Xq3R+#oMi(I;Y(F6|U z2Am{u#c?v9hY|Br8%y>fn<7$tB%Kh*SO*ucdp6=1C8!zqOm9xe-vfEL|^W6-k&vbClGKz=35N`<<8} z$GYLU{O;F}w0|8IKZ4VV=V~NgAGi)Td`8`EGlVkHU-J@M%GP&A&%} zm)%Hgm>99q$m&OO2EUAs6jy3u3XMoo^L3=tR8`{lvvL*I4-F|a(Zo%R!Yc3_awZt* zDqMPiGMD*_W&_%}kj0$UZ&taC(L@o80m(}J!?|W#aKu(j4dzcQEo0D!6&2*VEOWag z&t9fu)>=R~1_--XXkbSYy9B8?=&Mt3a0Sq~8M}Yee3)UWg#E?g%)7!X`-S_BZF>!R z>DZ4??UpCMNh*9)YZMgxla>4TrV2xF;~;pBKy@w~-WbPD;nPG2f{O{y{wA%clpSv+ zpDYX**qJJxhgy%q*9vMeuBREl(B{`BI4HA5vOYd{jfcH&sw={%Qc(!cc8G_$pnZ|U zj-U__zfjdU%ENC!V^JK}ebgE0-Q3-+s7U_xV|n zO=u>Ie?%9UzcrEFo^1EU862SI|LVPV#2o3MSPB--ieL+617*z$+!3S6)b=&t9d;xO zH&{7EA_ZM6P%fEQ@J;MzG9(-xZq_azpGm&{EA*SNG&F`j{H|B6^#nE?-d2%gyrlRo zaHAl0v~`S0e0m{d7ywCSj=dasQ%}XOTdQTJN;wLOD$R4; zhTPBLgu}@zelEU9g{0|7o#lRdxs~6Y|6oQ*-PCpS(BxCz#s9$tfR(4$E|BMBgpc_1 zPGNvDy(BKvLT#52KIZcG5fPZ$fKePfF3LEX?+X+OvOdZ_7kDoTj6=kZWQwUEbj@mK zYS&yYd?nb0y@x}Gfx#auCsRhbN#&vQk)ci!;KO95K6BnYgc3(h9&KU8al*4CBcjCa zR^WJiqK6Bt;?FP#h@L%UaQVuaOMm)UQQYMm(!>Z8=uG{-a~H!xjX|4CanNy+p$~Dz zq_P(1P~>NF13MLLYowUeLnTpt+94lu zEJ(^s-Lwe5>2&3|BA~=3h#0IhCZ##%WJB`VUImJ@Q1Z?Lkmsu0I77pTv7GoT)d(j{ zHbiIb9OOmRqhu}(8R`2E6ne|_o+3!N0z_DoD(^>d;!D7MxJgSzM|hb#EuO5!#eRDK z)u#ndX-7VlHu|lXoH>^stpf3^1zezaAkeac&c;Y0dR>f$f-n$%qz&gqYt~@M3k9^Z z`YH{J52Zh+SL=0RSOacY#xx)d=fQ`0Cyg=95nhuof7-^KvLBFHVAk|dR!Hr z5~CWWGFg0XS{E$B04hS&0{#@dwo-HllSw|r!#mI=aNh%EQsPWghjIk!qqw#P;|s;2Zy+M+? zG!RckLDvUkeJWI!K&^$VzsP@taWKPR#pK#s=Zg>; z;fV?w#*R&Y7Rf9@$-o;WWxPr1!m`T!ib63rxI*?)X(Ma3nS*TT7n(0Tca1zSLMM4F zR`-f#J{DZf0HbgP0nSYFPi_F2tTydSS}0IKXkr4427TO4qtz+`jMxl_*bGYjd!BEe zx`$!S=RP{te`-*km|hCs;ez4(n2##2y!^n9$dO*@QxwytqPq5FJiulrjB8zyh$pkD2qB$5vYG$Zr#`)i2j24aR9gO;ce z%)`os(oUUBqudhAbmy0ulyBdEwu?Z)d@BnfQ-tEt|B7b=x+x~Zb0p`|WA~X0#&wB* zSFYk$k1y_e0xf^#9p>VSj+7u97^9enZCkK|Dv)nVe@jgJ>@jLvWHHA;tzYt z5d0OB*VsW^PuJWif6wpcd8%$j*}VYQn;8Y$Of`fnH75VLuWCC@RlG{ZN5#v2R0NJ` zVP3sYoL0LY(3bckH0Id7R;|kbMs5}~>h_bP2nw#7|L2bTMMODGt8za&YyfN>g7>&p zU{a+!wIR4DvH0IieBgXBGGfw>Y&e@lL990K_Sn<$P)vQ`GA-skDY(isr0<~;R`u=N zXegN+T^N0g&}vym{V8+4&;^QUr`=Zjkp58AB|t{lcZDgjlMi-tb^9}NFmnIOX2%kT z-4YV8-5h2FZtZy{L#b$hh9` zJdDsof?P5@tE=56*i$>H8Lntn^8HL?IaU<%S;S@Enqgn>JWwQi_bDNDTidiy-bQ9% zB~%e#7hO-GAaGp7+RFuq)TQ;%4&6WaKl1?E`&i5CN5e!~+M6f?L{v4mQ{H?K$uz(& zxyrgr-9sQk-$#S)6!WnZ;Q{C&&;OYtC+w>T5f{J@Jcz9*y(=?)X40C2)P^KmjSc2i z_Oc@71osJL&eR)vIDFARiM24Dwu* zvPOzhSp_6Wx>HLm-^>$^#1|}J|HB;yi5SRglYOh1%9RCU0TxnltKfu=|?hZ~HpJ18n;A#-NNjRnV>YlgV*a3{k}oZ4G&o?46s~HxJ-T z(6kt$RWN$X?HR#d3qc_GxIGh|0q{^`7cz9xW2AVbGwKWmq`&yH|Kh{J^b_k=*`$~m z>EUr1NSztp?R`94;GXiAWyi{Vs}#1gHH{7>N9e*Hk`?*+7RL~01UP)Rkk4S3V?Huh z9qc%!9SO=g{T2O8GtMIrI0o##=zSxF%ELcSd~ku`Vjk!j7?=RT3|k-APEsv+pzOJC zwAg(W*r!a$hud~3AK)@&A4v!d<{C=vuPuph;(2Ntw%ofQct@96#oOOf?1i&@X zFR(D*+9Y#Q7(i>k{EY(X2066Y6SZKYz1$chlxrwkgfjRp7!40a0uB3-fO^>1E8zqj zauiIsfg+Mmh4>s9DbWN??ra{@4nJbQU3{%KSQzpvOawf-@KI8NydL!U(7HTrrb94;_21q(Al7T1t901c|1I{e%$PDuXkBNIsv8e^f=rd3E)c`Q|L zgV&)WV^@~ox}Adn~-q)~@3M5P_rDC*rR!tTG)O=GL%(AFM7GALhi=AeHS zTKr|BV&0#O6x0C=wAWY;Zo$QokHsOx0LV)iz2h@JO>#~U3Gw;%7RW=-Dy)7I^rM1p z-#!)85LKp#P;|D^{*p1192??Zpk1^)*O99V>NP(P(aca zQoxsY?P~n0Hnjuw3H}h1M;#_Y+n=}<2gJBj;fnaBSsZZ%$Ry}C6$#7HN5~A_qqI&F zyHmk4`53yi=WS5cTZIp1`q3R#2XcRR5e#Ia$n3Y!4TsmpN9$KAB&iFKoZhb)X!z^c z3tMJz%XIi3#|Gi?m0Z)EwM?!SmzyZ_o2CV^WUhNtP+vzcQ7F8>R0YRRYl5daq7~1` zUS?lflyv+UDjGgwFI%J?f>P!a=aYEtCkQ*>DZY4dkr0OF_OFV+fkqtDKLCdAZhyaq1KBlE6nt&7q2FbGB%1v$yRrQyEM4b z6A^A_ZRk%qe(FJWIuKi@Sk2;E2b!Rn1aS$2=UHR3b4p9V?VqbTtPJ7i2MUP8ms+&( z(q}Ss;DsjULVqtrmyW>$PGE8aP{7Ofbn;|((+x>B#aQ-us}%wjZVq1eKFNDms+_Y- zda-bLZ;?STnkgW9>YgK-%7*^K_$r5cpA_-M5|5;Dhu>;T9X~cNm3YdYfw_144R5c{m}1%k|47K=C)@ zr}&7vV1Jb98QhdVA$nFV$7mjj3{p~E)|8>;805^{JhX~D6j`o3l(abIWempiVaN^A zZK-87E;?SJb(>_0aZ(Q<-xN@BMhVtEx70Rao{TH0u}t1ua{)di=Tg!g1@5f(buCnv zA$ZDFrLH_W_jn(Qm5)pl^KfTbeaD)xC@1mbV^+ApaJo&VJuEG~I2x zX+)D(*xr^<&W4)&GoDJy!-n?>&M#} zVpI0*7rD_tIM8~s8db8)#D~zd*V*s3?(E})XKP)W?2ei)?2qIpX$#Nh!{O0e^PsNK)eLZfjRt_%6B3jucBk)={ zBsIcYxg-_BTdO4oDJ7RuvS}pC6~-7Og%h(`B!!c+pGyiSWy^;9b4x}a8_GX5z5T=( z6j=`Bqj208(-uV^FJY?S=c$fFF4^N>0oqYg+QY%RA%^?cH*X%QdsB_Mro_jmb{cA4 zwRDPL5>KE16d^~_`gV?ej>J9I=-Mgr1e7tsD}UIf3PMjcqe7P#g>Nz-3P3f)dP>Oq zMv*Wv7|FebBjAnW$M=Dgsn6#f3#b36K0N@uttcm+T2_)jPYT?@ThSb$0?o`|Mk~ml zvpJSQw1O1yIVyJJVB3eiK|=w4$;3KA3TF}6fuNw-dlR!c;?u2h=!c;<*r7Z>=acC@B9L%E=ZZKjY!@sfFfl7(Cf$H>ttvtVt*d+ez8D# zKE>^5N0jn}80#4|8V3habV)FLKMjM|CuB5;w;^F_$$|{kCT&MQvp^&=?0UC4_C!gL zwvvPI?SYzM?t!$iG`mC=jm$S@Rv4S8|o)x@&RK?PQf>Cac z*WjB5L5&CqBsudFY!#*=_-IV}^5aatMn8EbtncXB$mQe+P(eZ85d1~N7$LQd^YsRy z86ILgWh0FSd?i90rkf*sFGcslRZ|>mvt~Ze(%= zxfUXMYI%@tR&*TJjGSDV2befK&KlN-V{tzoSf{suxnUhp&VO3T=m+ zafh)=f&_T)o=X!+!ZKk^H-WIF`hUr(CPiexvUbp^)^om=jB<{Fi$z|efqH4{Q&Cif z@lLGt0IKD@3Da7%vr}`y>fO*4w+H`Xm5YVoWeQNzYtstUY>bPCJzBaUnUlg_^m3ly zy&UL&H{|@vIYy)6nPM9Q=qg|U9vm%q7`s7rb3+9ptzVq6B!nK=$d^gRLVEb0b`OTd zX+$Fz7{)TtGm4ZVRwaY#uZf}n=PJUbX1nh69;QZ~YBemiSQWg?lYqM*Q28)`f1t2G zdEI=Epac#JGbbMe4dyf;K@Cc&o+jp`Y!E0gXv9ZgQvYj|i|mk}_IE_o!=!~);Gy&g zVP=^^$>Gp}{~LpO2_i1-O=q+VG(fXMhj&T)pJgN8;d_DwujwClxnXX-V-)cc(X2)l z;7y(XEG|yY01g$az@ebce}M_YRlNbG1S7Z{cQU|qw0su9Hz11&gXJbFRf#I#>5;6W zI6T>?H}zx-|2uTP!W(Kku2U$WwdovD4?Kg;v%LK>Q4-^|W#6)P=Nt>E?&%LNF$Y6w zee^9-`r+Gp-7r#^ zKQ@sBU!&GiGX{7oGL##Y5`40-iJ=F^KyQbvW*~B?3RIa=Fqi*pZ3XZ4&;@h|sU@P&T@p)Ye7`kZN05O-ak%yfSnr6`TchHh)Ve7y(vx#q<-X z9gDoDT@vKC@&k)&fB{vRyuzYV&U?#VR8nCQ%75?a#YMnap{nSzB2Ajlw-8#Sfne_p zvjsy}o=OfZ6)BC~`)uPSQ~Z(-r=@S9Z4rmOmjZHOvGwDy^F;DG@gt447q~#k0|a6Z z&L=t;z-$hCjA9|@l$oB$sz?H8(3=~5EV5ul_2Sf6F?7GNHd=_Vn-JnZU&^19dlIfdLc%X$$>FGZJ zYB79x)s-Qb#q~>-PslOJpEBX@a53K*d6rE+Xh!)C^Gj$aF^J8GXbBBck{rA_WO(_@ zsCj`|w#CYfX!?lU2TSE0UAXd$@`#Q$5_j|EqBvf1*z;J7^Qt(rpHd#Mh_z4G&52nY z=}6f!%#6Bx_5~!yK!0ZN7C$VArXAZE<3f%iEW%+(YPT_Lj;kBFvtbm1-QY`F{nO2! zla%^+dX9hJztVmG01Lgmzq%&X9UavM4XFQ`2m|wN8p8RN8i?9@SP3y~CQ@>BHL3SW zGM*Krs`RMFh}rjKy?#TbFKbq`V{HvPPDVxrE5SB8#fiqj%WQK3(fS$9iz$$T*F<=~3lo@Vy@^XuDpc9$`I0yqoD< z-lXswYr08z0It8hWwJoMOVU$55`M7kX7xLx0B)~F?vR`%fYMpIz!;3|FCZT)l8?ffuS;EtnkBD z^~n8x_2*_esvARmAoOY*vh;ADBYd9~d$&q40L*Iugg?yQhy&A__p20jV@fBd_wsxY zrTc09AGcg7gXXCHAzh-CdPF6EXoY7^HenX3mp`k^(IO5F%QcSd^xG?w4nGT`*;tVL zk&oEY+dHmxb`keVr~V<9Xc#Y6@p9S1OwrpN-HhwVp!e`595u#SdGC18%r;2XS)xU} z)uT`VSR-hm79D2wBI}$WfAL|EXO^n?MO$&JzM>cz%5{r)m)YLv&vO6sVpE&5Ed#eZ zc|X@8|HEEWU7;-=ii>OdLGH!p-+xQYlb~a6+>*t;V`Q+-@GuEs!+?wKCL1nSXBCWT z{jjPwwh%_sT_(0+Iege*f4IcOwtN})hWKgV37G#YN2{705C4xZmFTFvLxOOdur4iy zeFhF!I&&=DxRO)RMxvyr7BvW_IwwLWPNS&y&OU1*T_Oi-(FvQOpl`qqQ;XQ(v$hm1 z2@JB0O(3s)pP+%^mH9fJ!uRbp19`iX0{27SG8r98d42I5TKMA1kIX}|lC{t8KD385 z3jnPh8^=QTbM(N{MZMC)Ju7OEr8_FZPC|UnYpf!)S7Sp2E5ARDe`ca>D<~&ib2bdD zU5{Z9zRzCsp|!tM#12RxJ3{rR_?E;NbvtN?3RHTw_pW#pWPkYTXwrPKFsPTkH`(zj=Um`6Pa*n4&++whgH0z5Lu5 z^`G+bl&*N%aEf zpPh87;I-#RWy8;REjqWGYJWL&ZKw3td6M=oVO_^LvzzRXHw4QbCAyz@=y~uVKfyt* zO9*-8hy85p$92!@y)=M+DEOqex86rqqAAM4R_uY*Lj=s^4tsf^*xpc7X)O^y7wp{5sK(#7x>7KE5AlCR}ITz9Z76 zVY`=dW2hg}s{)+Pbw$-)&PJn;(=NHJxgmd8rgouG4^eW+1>x}Nh^%vw#L{Q(!BjMm zu9=Cr`rCRz>34e`4?;XL_{o>-0t7W?Rd{Q7rJ?MwH8sO<;ZEbE&{`&s()%T|#zdyD9{`Behr>%ED{r(v& zgih%b{b$emU69zn^KDvx03`uzxQ%OFor z3#`R4Ki8j}B>~{ahYt}{1K}U_sc(Npe;`}Tq+=%tZ|{F5f#~P<=nn_EiX}sC?Y#=Z zKek8Tl`YaKO&@>*$o$-%$nFXhK^B+aItU#`er->or*bs!7YF@z>+Aw+e6N$r;4B}9 z$i;j$IalVbPwEcQt#m&^vz#~Q+_`dzE8L9Wa2$5++w#_((m&)=y|P0D|dNphLO z$l+XO#4qm16ne_Ra8Eg7KOwscBc4Ec0P_frMNt)abA5gD?d9tE@5AL+b-YXFRyNlk z)UT~aOZSaF0i5pPOtK?BYeIG%_X}lBH4v*nhW);5CZ}o-WCp5JKSs;ba?K`bY`M_* zzB!P!cq)F%<}3NFQlE8ZqJ@9a@Y!7JTTtdVy8NsIs+p74@y(pBKHfK2fPSRpVFI=t$egs4Bhl0-v=Txbx(R6VqL~Nu3rq7r5M8}ndw5o6W*hx$ z@gb(8J~3yZYL!pgtwXE8?^uTF%+toR+qn!jO?wrj(;cDPBCNF=L;8Q)UuFzyw))dI z^89xWLZRy3OYNyHKJ18UEaR2hjnk>7kRcjbkoSvnP!eR^14|{d_^=Hb?D4YST`8A? z!j2%w^#>;`9VHtXA?bgA?l%MQb4F}Sa=i?6&w--xT9atXyBc>4-oa7kZ#~I z!W~e1{X=cTQX&_EFN3nbuLMbVfc{G2IT(2Kv$u~lmAL`_k0gH##vV;yu0D8FU%ysc zUc}$EiO1pV=Set7C=lUxLsTjMS>cO4-0bboz_!KvfFV5%wEo?daB_5W<5o1in5054 zW4SXAVl!Eb&QD@X$;8}qfRb8?M_^XI}POBqfS4pqvB270oCLuEoz&e*0JCUod% zsa&k|mHqzs9#?;962>oa0e9gBJXGiz%HVA1JtruSz%ukK@z4zq`}fN%SrC&mAtS-f zP@gy-E?%iF-=mlH^rPyfb$e-o6LKlc^BYEiwp ztQcNm-dGZe#`jsE5s3>Ufub#2^m={UvdE`~_QkG(B_4mu3E@qHR&U>ccQ`mf)*(Ek zY3p|7vbL5pe6t4Ktr6K49)$~Q*vQrOZ=zdwgvTT&sUKEUbic&ZdNM}?EW34Jq$@iC z+Emo-E(Uqee1Icwou60*9WAYIuH6gg&l5K}{kD4dMR;q@5*%~6-~<@)9@2Uw8@s5{ z<0j%^Jpq5%sgr4k<72hu)#~g*^m3+t`cXJ}wv~Y=Q4bD5i{3Nr+rs%CYVp)2x>%P^ zRUfX`NAHBA=M*az6ygOatYN7w_hw4RY>OxT=ykzX*xQ7(W^jEyoW57RJX^nYzdkw_ zT{~~BUA9C9zXN{%(agwKncT4?z)k@GL+$U*j5L3bnAIVO*`OuI2rldbIF3T%L_4=gml`&dGKZQ&{cwo%)TraBez0ce*|? zTU~#6W3e56a+r@9QQD!B=f{D}urUQEv7sfl5+|F&g=gW-ce-v1dj*;U;s`8F91coZ zO^;(9udwEyD8M?}$6VFsqjS;1S~#&*y>zE~$})2&Nc9H9qpg+RO2X^Ky$Y~2Qm_Np zM{m@>Js-|}ySX|IIX_%qgU}%gD@&>%7R`T@4;3(Hnkkr>IA0*~bdR?1(NJ?D_s$mK;BxaxyQgK;s|VYt@t+Ik^q(015S)+V*X$Ut5+eYL(Y5ng}P zzMDpY)DADeAmR;s(Z$=*%2@67N_B0cJ#tYUb+Tpx>3!G~8}@?*&Ug|~mvx1+dmVRcsaz4S+%Tigo4WH0kD;xe?#db;|* zuHb@J+oDT9hI7}9Xt;Vhd_HPjW&Qnb)H1B-$}_*o4nh#R<`!^vmi^6h{6<5_ei zIi}Ky%<#d?@vmS&u~-C}yd(b6ARsxr-`g=Hk5M=xS+XA9p3r@LwQu*n&DHba%A4Bc zW4ZQ(r){n+M(6HpYqbNf-(Ej&u}K~-H9`W;L)8~}5G2b(P(VVCu=ZxO`hB?e9XMcZ z`jpU>k=G`EsE?nkUV4d_WwCpY6;MAM}@aTU38oudd&r9@W3S6W)J4^~=VF{3R~c z@Xh7uoAXx3zRDJT65DVCvJ4|~QF7n}#nK&o2uRX#2oezK$IoqUEQgEdXokUXZ=5lb z*}^kLmWhc&HKNmP#U+SH2V(19joNreCLdG=a^w!SBgp5i!%He5Ok;Vce>@A%tmG(; zm}V$rhN1Tmr&jHydwqXCoP4#paW5KMfjk&4PKdCY#Frpv+s)ar5}-d&l4CrNno zb~taD^%6)eBi3OcB|%id33jVLHDjDz{gBd~v%;;|1$fw4>n}6H-fQ5^)%mkH1adA( zG`hUuni{N_U(C2y!qHxDrFZi}bpByF8TB%1EVq7#w$cbUP7{BFyZKHh(=V?%bhdPa zd^{~XC-hooB%Y|57%Vv{;y@(J4kdf^!)4i5RUTmyx)0P2l1fNd$53ayo)cL(FcW8I zNTazSjm3WYQeL`>mAiWOOm%DpgB8;91_&1yNbk??dunHbmhS8ufbK%?Swmkf&0cJf z*wRJnev(N4NFjfd&-N(-KWW(LanWV?6P;iOkK$Jx^lg}3H~t}eiz z#48M#F$~*pcs>_+$I`p5NwfmE%qVtIO1&Cdc|DInKUL{2!!VzhHDm2NS?+_q0Bp@r$C%_-#~BXSZODsW%RC##?Ih>{f|~f z7djALm=0IY!WlUE@eVwog1o}RG+hTXlq80R!ybQ4g3Go=ZBD~ib@n`bZ^f|d#7?f* z@F}1uo+M1u+$BKvOKM_0x-}Y}eI1^Aq3cf?gAfe*Z6a+Bn}iHPY!c~%=ug2;uWZfY z0sl$ZZm@oB2#_oq6jXh)G>PIg*}>@gGBk2V?6nzj(=DIE0aWZ9D4-)ppg?=f`-8%u zikN>Ibi8DZWR2jd`umkF#nR6nekc13^pT~k zBE>e=Qy8&~qjvsv?ev0k^AO&{2xhYb*0$)x1%yV|vR0 zrj*JVoAhFhb+YSQ=(&K*_?TXrCVQw!FO>_+=yZ@)S};1&17`G#(Cc7& z30L~`GPMqNwITT-)7vkycIy0s4U2z!j0>v4kmdMn{x}1%yzNXI(y3G3Ank%uNw=MJ zL;8q+B3tOEJ3!@^aK>c-PlJ%5LOm0$k!nQIYBAF?l=N3|e96h|>M*TSs>|QQCQMS5 zqvFOd3Z-(T@0e=^O|$z5eZLXjzn-?F2|}**iU~Q-4iidSz?hI<)NdAQ*IR!$7RddP zQ_LZZ^sOqWFjBQ8?x=`gX5h(*1~Qi>br_K1Jn&p6-B(h6-K{NtT|qjO6XN}uw&-Aa>6y)G#A zJ8!1fx2oT*i_yE2=_g#SiKRB@3fEc)wVV5HzYo4~CG#*D@(a6@puHJ?xc{Vah-z=2 z!Xyfvq|B^~dF(43&z6J}S>52a>``PnDUWy#nC2zSu>s`!x%NbyGE+&qR&5JS7m!ft zWKkKNYgM<&YW2|4@WayYw= zAPl@U^=OP_cXp6}4Xb1cg63yjtK`5=4ii4v!sW_K_5ki?aP0H;Vn&P;Fb>q0P+8p+o#?#k$$QoEo|lT(fclt8H)|L?jksExuL9Aba< z)N1(VN4@uge5VgPeR6&YD;&?17C{(oj7Bfkbv2!!RiD9sj8<(CwAIP8_#+MN-k^LK zK^Nsf3sglT>P?}W=P|DZx*hS`ikvPdyPkTiSNsg+SP zW%xA^r;WXn5SEmLhA)kA9D^}aKfO)gGWQ7}q4Cn&>h!Bm47y;})o{=;%unUQbwBD0J z1<6N?9O2^fr-6~z)dcTtxy92`s`;h9%rFE8#K)6I_Mq)6iWUjv*PDsoyt!K+9g~1v zYvm38UG#5X)5;yl6pwLA9074}gS!*8Z7OYqpObHV2Hur(Jx~K`g~^E4hfv0 zD0~zSva#+?m(`8W&-{4_ik1LO__ryJzGf0}V34o0KOHT3=pIApc9Hwg9h`I>klq;3 z1CV=yE>W7%==5|r|4sGgMSY4IG{r3vajxx&8V^c}iFHau>_*usN!NwY9A^tj=Nnsp zJU3I`*nK(Vzjd>n9nzc<5I;`ty(+6d0e*;JbJuiyCCzTs3oG!-OhtVJ&q?jL#HguV zHQpHArBI0Vz{qVuYO9pVI!dlhBciwK=D%GNAOCJPH>49d-pVHw)lpD*NbTiZed2NhSWxkYOyj`;nRKHsT-{fwu+MM9*wOX-KjcX=MnxfT8UgDc_mbC(F; zoC?to=P8O-F{O3&_jC9o61X_}!%2m$d$V<%6zA7PR?uXpIjoRdAb)2i!n8NQ&Lb}l z#M0?Ql@P#ab|Rd=5S@C8nU`VHEwj87E?WKvt$kr?UkvxdA$TA8yB$Y-OtM>l(jx(a zEyV#Pv}mobJk!^j9k!hZh`qU?{UX0TBrc$(b-~tF#>0yacE?1TtCUVoSjKADJUCVw@c^A-iBNNjB}|Ixm?=upShmcg3##_w1$czeOp}0_ zEG4h#fuApu7gJsXTZ{~N&1j#0%5WJN2?KJxcO739vW2fRu0=XXjqrDexZnaoUIfSp z`l)8ze=Z;agb;T{B?}n_Y(y?oE(k|@22La`$1U7AM}D3wKh~b#a~?PD214%pRAGo4 z+^P*BFn>O}dm)^ARlRz-w((;cQ*RPO@Eh`dD=bXB#K=EZXfq%}+DqPl?o7X}Ix}Mg z4`t%D#mBX&f28de?t(Ey_e(;d}8tPcoNzhE{>9g7b*F3ZXtk;zy#t} zRn1(izHq3j!2F5Z5l}RIw_UjsznCu}J4MKyQ10%sJ!qbvHpcRj%`VMU|mnegp%Nd%*q8WC%n!zD62>=$8`qrZ|L*)LFVg2r480#Tr+u!;&^+1bgSoBdQA_hja*LQlD%fpa0#q)7c#qDkTk_Agay3g>SkHzM(a% zzWJUUomFo5HD$)5OrV;6{ZHJ;>9RPd7(x~_Fl5EtT!pxms#X_5;1Y4jr|ybpND?1W6clQ3UIt}pFmR_*DtdJ)`iH~v z7JuuyyT0a_%d{{tiOSp-2U3du+xhI|_{?p{+f7C_;6@cUMIK7JC;~H2Ut8k_U__I&TtbO`kCwA4CDGf#of|r9fd7 zMta=t{KyrHX1>E~BI!Gyri zfr6%gO~kFExAejnK!j_%V4Ksk{vevU8P4319hJmsNN=I*+M4mQFmQviTY(~x#!Ou2 zqs`=kFoJj`Bo{1WC8(rK$tzcir0I5zuaVwgTtLFP3)S<_>eudsb2CVgLm|a{fRe*4 znW@DbsyQu9Gj9eBz#PkX2k2(079y@4-rxm)w3zNaE=(Z(j%c7_9}Kua=AlDDMw%c# z^a$%WE63SsEZvhV)6zN^Yh!rP^%=N+>6;}cL1_|W;vMc?xGu&0lO&6+^WAn&OQ%fe z6Zbj}_;&B_<8WZ96j3KnfBAeV&F+`c{O$1iQ+@Xu)Z!`D8z?c8O((J)a6TzvS5vTm zoGeba@9n}yw=OvemlV}U$kcTUSR2k~I@j4fuj+wKmy>%SmpOqf=(-%@i1L+;rfND# z!NyuKO)S{Y#5~cOiKdLRy<5r~i2m=cR`Gt}B&K=__Xek^y?ou8Z&x3oP{Y3N_C>r( zf|Wpn*o!HT%waPs>k zCisi_CxYC-5x7tw(~#?Enr63caOPBWVKQuUxrra8917R*?97S9=C=Zaau}wwXeYWbs>CP zUX!usChJWwVR#uzE?y0|I`$HOsdzC|q^p(DQd-vAmIsa@-`;ODPYKd7Kol7yD+?>+ zt=FGqQRiuZG{&jKbwEk7QhodYG01vVJ*LOW59HG84N@s1kppt2u;ju?aGN(JK1=I~ zJX%_NVlGd~Wg90@)AH!kj2PXZ?iY0+fa(etb)53uO^zTdQ5l(yxtNo+0L`s0aL$bJHbFWTsC}tEfSGul>>#}dq()na(}-SurDtYC z>_*A&t5CvMXa)`y_Mr@Nv4|vlknij;weO+an-{linwyEouxBNw$1lJO(f5nex!qZ- z@`v$JGt;5~&{^SCK+-#Zcv$GKvnCn%@&HMDPaXh$pd*jacQ`JYVaA-0u_x!Eh5wlc zDYBlS7p^(mi(F(m%14ImON}>G61e%;;sZrVkG;l+ibamgYzY4eUq7JD4Pk{-3fG@p zLzUi6Izta@d3z+G&5MM}D>fc59req4ia#9dsC&ajt|bKfAM|s7*+KXnqXM09!DQcJ z_Gd)9xS|i4I<=Gka7-eNY7f7|GZZEXm}-&46IE29606@|fF(2e8H#%svjfhHzek$g ziu$RCPCp-m8sVY?#(&jj^3uk7D66sd@>zB42}WVE+q2o((f?K=R?0rAKau>-RcL}| zqZON#>QOh7>op61lqvWu*^};|Y*iW$=Vq1UtMOXJF0Nb?R&!a6cvV`9;<%PwS3dOn z!9T#gA?*^Y8CQ})aGbJ4lW;l`6BkkDyFKjR4YRR#vE5ebDB zS!}Nh5{~-yZ|2jkA0ZhdaLK!Id&<6NLaI7+D+!lG-yq?C0+6w!iTpx{-%@5tTq{NS zh|Me#INtm4Xk*VU>s%~-hinMjWW9_ezIL&CbG3SJ86{fu6(oI6tWHTn7_yd1$kAh% z;z1uL9?F$QCv+W<48N7ObylHp`gmVHkDw%MEYBNG4Rn)HT#3b9qy%h%0TQgaY=6@tPDLMGr21BXl8 zO-c!ZaCQS{xOV17c+RSo)(?|d%_9Txhmn(h%_w-EIKZc28h!1cCg|&|4e5vxR9h zC=*a@?=#8~-G<$mE!B>3cfu6)dTuQQ{{Pu7KhLVq*TdUZrPY4aTq;q?*Fy#Pt|7@k zJd&*kU;~I|ojE5M(>0-tT50=IlE~_m=UbNf%x4 z+jWN=K@^TA9d7^frBklqFViSf9TRx5LB9ZXPOOcyJ#YkyZP0*=E795NA9^T=s*9^f z>I$!aCQWSPksjdIV@Ie3ePgNwiPZO0$_oYMi^^m7G12CFDVyt8lw03WB^(ahRh%x1 z$v9#J!^vByfDBTI>_NRsU88159r61(l2A0x6$-RZZs(?2P3o)}6*H7(5EuDtB@Q|q zAE!cz?EL3U%$qq@`8uF8r&g${FOAoiE{PXA207F~+`K-Y>>Q)u?CF1|H;3Ac0jP~M zL*iz!I8i%InL+goC`_YaY_;{Y($8yfqx?<`f@$VdMz%MTV9*y@xKo{cPM#Z+KZX~s zksgf;9!do}-INHIk)oDd01^^1q#*gfB^RB!gOTY81!82jCX1?RN@btjxeUtm{Q{L5 zD|R_4(U{e*J_cL;g|XbQ6(`w?n35t2Z>5vb&@_JppD_2uxtCj=cV>P40;MrlHBf?B z5KuY_QwcA*PKJW3Stz8Yvt6cB!QqTi94aq#6OV49AqRPWyG>cbp8QSf;hIz*2%M<$DA1Y7vzU1q^%*X zE<(>#y>S-73f2|NHB0vU1CxQ$Aq9QE`Sv=Kr_wzFO23ol(lZ%{q54gdCW4)dM<10C|6F&e_Fb-B@eiucj3lc;c3 zu;0oQZ~ADIiXW=}F$MvZF{Z@DiaP|}yXy~d2xT|uN6}!3`_LPcpVK7+4UgcH$J10p z!%Yyk4(;|CRQZms-Kk%FqzeW(qP$3OB%(Izf9$yR`_4cCwj%j!s}( zm-+>p=+8?A4aCdBYebS&p_H$NguR*652^Vucec&Rt)^RJT78f)X95x-0tlb8)zoockR&Jq+gnWmQ zYRa1TBn{4M3*h8bNexY5l$}weh_TK|>fxDV^-E(PLK7W#t4X#jqw}H3b1KecscPgc zTPK4$cdjIB<_S)Za)*l5giec+)2@-0T*nSx;9EZF@F9-5b8B=KP?KNPI3|MO33_GR z49W4bHxcW?=+0zS51tkA0AVdYq(o*%R2cbjtR#C3lfBg-e~zF~M$)>Hhq~JMUrREi zlmgMP995Stg|p+~{F89}71&&{KZiZNet zInv}xo31oG(v%XZk`tievZg?Y6eu2Rl0d{kh7P@|e}?8%9p;p)=6Kx?YfljLZ=+oD zdR*X@GqtIeZSw3+_DFLG(>)GaR?BIprUh~`dmfxgmdMU#7Mn$eg@G(gtzAVQStI)G zxKN79zd9!-CRtieaB>FuFC6hV1|^bofG;9XZv027H_#*=)L>^g+E=PXgw#=&zlDS= zK>#{Ge~a_ScjvG!Bd#h9(&{YY5Uq_PZE|`M2SJgt8rTu8*7ga`8foy69*^98IoF6q4t2HS zR8}v&+=7a_q&_f8i}X z%*Dwab&Hs~JcptMs8e5%Q`6+UQY17!Bzv;3=l9?>U}?j{*N-r99WI$f{&p4{+u%UB zRCXXggH2k*G+kDWzy2~i?Ajb(?mO(<6lhD|4!}#dooeM{5nl2fX>p7qSF+F5BP!C( zuLg-p&?6Y*u~5)OvFzOIX0N!#f1>e=xW>|lB_v$iyQxHsL#jCtq^S6W*UwJX$1h5C z5z()O6L)KGmmTrirti47@{sO=f@_cs0QYg8yM`dp`n&7tcTEG)UL>n=inf%}_6x|I zIm)CQgJF`jtQ?C5)eRKpq|6cZ6e@nWP$fEXBBKNMftKf1Hg*AG@$okxa_RZ+9*T&@lkr$LQHE@%Kp{={P&;yZ(1Ew zsHERJI^wmg?(W^)zyG(-2q1rQs_cFW@JE*$?~) zQPcJT5DqHx_ijrcFP?K7v*FS0Xi9Jw>`gVAr=E0@OVZpwZ zNumGvqNta)dw4(5mBY@omOvVZ+{Iy83enw^`@268f<^nLT_hgIV40+&aa5aLq{n!* zr)DQ%uOj2N-^aBI5y%8HCd>hTBV$Qkm$$^D9w{BfkrBQPe{gANlNd{~k+$uU$wvC2 zJ(2`jAJ84ie$}=+CQsJ~cZYLfeL!~xU_q|HT7&uwjf~TJRvB71c+n6vDUJZ{eQ@v2 z-3`wzeAx0CACa~bM%MuRa6Y(C;$jmn8{gQDwv>O8vdF+7*TIzSYQlc_d@Y^{CokZx z`G5s&=D6u(f67ccoDc3992>)xJK-{NR-R+Gf({O1qq;!P(9n>^75@+J-mW9Nyzc#7 zJN|s2Yv2A|J1v#OwQE1U83WPU@@j46MQ!C4{xb>mw@?1=4Wb}WU#5cWGG4ZTiw8+M zl@#0rDaolf*N|SH@;}!nW)+ksUzN#)MZT0tqH&rme`?$A0kPF}c9Gm#g7=03*NDnN z&LG^>N^lQ{$u(M4VkWSLNs7|*r#Bk0opH1vs}lRwe2}$`YZ478eW$T`6bY!N$?JjR zRVF8j$(~BK4`QXZ)Pw_jFDRgV55$3zKq?DaeRz>Fe5%QpSkmo*n^Iuqqtt)p54r<{ zAZIGJe@@r&JAZU2hZ+aT?x{aAcyFcnUzH$ho4=h6{287J*1pnyW8nQr4?x94lf82N z&L15NDo7%f{6zmX`u1{d(TezDG>3g81xaF2e~j*(uC7^?vl+=(nNsFxHiS3RL^}2HvTi^VTAFG$v zYu{J}qh*bdHO<RUo+k3v5z=F;}ZAF4I)X1p`faxoFDyzWcGswa@Ln9Tby=PLJ!2piHb-^us=cO7`wZHI;C~(iDGCf4N76 ze~h6GYKLl5wjPj7MZ$l$GwX6yDscQj7Ddt zKYR^}--|tngbo*#$rKkKRU0lhh&b-SUBtaAHX=%-LNk3=P=172N8De_H59JXvAou+Qv`m!B3yfS{3b6TmD7ZXP~*Pwxbd7Q(H3nUC5TIUc9b0;{L5Q5>`j>Z$A(JTrIqGww{G7g+#U; z=9ZqVyL!F6Va&Z<{;B3m4Ha?aeBHJ3r|k@}r&i3{^L1CsKU3S3!CUb*f4a2^ecSJD z)}JqX+WNk=Z-ruyDj3O;=m z^{k=i?yJ{t-ndjT5JzX!VTI$a$(b>Gu#i-lKNWJ2Z~w9)Sgz%8)k2t@8;Af@n3pp5 zU-oe!NBLWjEfk4`TK?ww8+Dg&mOsx3B$ZNdDcuyN(9QF=FJG&Se@4tdv$N$Lc)A`4 z@hzc~p}y|wjVqPyO3&EK6+rqFA`aK&R>-o!6@?WGjE3e44M1PIeEv#Bdl>#JL<&kr z!=l)iE?=k^)QqoEA;YE22o-br-1%=WpRJgB9K$G=M8OXZScl1KxP0||eR$h+1|#DJ zRmkLG^-zH~5sNB+f1Znzt4Q%Gzr!N%VPohMwd6hpIAu15X?N@VwTccXuHzuFMV#lA zXNfZ*tCpI`AaAj}G3VEic4}&x8P5I0) z0B9@5)+X_8R+vZ^hk5y$q0$bPi(M6t!?{F9bJ){`wOMDZV&%e(6w2Adp0^(^*-MWr z`aaS`v`3+4OwX&Mieg#4>{I%9=ua}ea8fu5TmB~0V^GFMsA{`UoQD+$I1PFg_BbPD zRoIs(9Eh$ofAkI7n_%kI@*mzrk_GNxtNm1I^4jtrol8WT!A{p1`m&K3d!*vvb`G~2 zRezz0Bg@}W!W9keA7{JQURo{xQ5_*dF*;J1ZpE%46iPGXQRq+40D__;v~&5VN+Ug0 zOk0g48#*NVe^7%J(1-Q%e+wIYJ|;l{d_3Du%9qa z&8-;fF+*3CsUrYWf1qwx~FMr|dazl^_I_$@q!55`Bp~GeKIZnmlg*QA_s<)>}6KYpou}Att+ymsZ zq~dL7B8f!k%Ij5{gm#E7BPs6?-#_DhEo6z{f5NVc-<4afB9W!St`)!^xDo>`db#A^ zyNuUiZ6M-kpEkPuho36azKpZ&7Q>cs#`C5}}hso4m zlnbMz=J5(h@%G65miT>2Qi3CLE__*m*Vfh;0~%^`h0HfwYILUj(^9@{>`p3(;?jN> ze^>sgSmTX^bq5(zmz%!%;;S#L6!6Ku`Jye(J_?aCe{t&cZ%!p+r+-8LpE`X)Ufq=| z21NQmmH<#eX$@nS&|Q4yl^W~{B=Xj%a!LNv73MDCv|4`A=br_^QuzL#+2Q!~hYSyG z(;8pyu16Q+sS~bZjndq0lK5k*qh_3Vf2dmGsJ}IyDA%r0EnnE*VEn34d>}=|1^!0? z9VZo)4|jJ8;f5lb0Qm!R+|(s+Bgf}ckA8|gE-2EUn$?QjLmv*o4?gi+RdU?Qr$UK% zgO9m{dY@{n`^ewhX7_PjfE-rWT}4U8U#hXklRUydrK0;twT^JVt~UJt)Iqhre{GSD zs$fT@Cjj=-(HLza2b3!QD>jC$G%`qBia~%lg0g&j5;@+D71s((>l|L)UKr`Y>g}h8 zgd^1Y4}FTzQ0?v7A70tJ^J?X-%OEr{UKn|T9DDwKc>{ROV?U59OUs|gXGa;44UdNZ zIvn|!B^UL^M1^vp;7a^;xK%h5e;D{qxp5%P z@-(9+XbvgBMD?6vi&qTy8a30fRwgz)mphHyFt+Ue>DH(jPie`Tx63wUE5 z11U93FiOI2*{m=1DKMIljD~8WPtcUsW}#}Lc_9B3O7j9PnjAcGE+<{n`Ybs93UEoY)FZM5ayXcMHfrrnD>0{(w`l^Zcbm;0c0f6YGL2kQ!=OT!4OB))l0i z#-}l%APGB(=~JU}TF?n+e@)&>6XHs>jq=G=k|mu8S{EaB_oq=sePE6D_wTc?l$_+k ztx=$_p)r92W4M%ZK}1V1@+Mpgpm>1OmKb_ax`gWk$=VdGwIF!0vk}m!m1vNI#oqE` z_4PJ}u*M;ePc5~Ibh&lUe~VM=3%C?H_+YPjq2*fPV4;l#9UoRC72KBYEkl*!n=3BE@hL-F|+>hOlCuj>|uTe5=g3{z3N>EzWxK2R- zYQY^(4sY3kRt8Q^C!hISZ(~V;76v4#{S0vQ5FZIT&qmzS(&oI-1xSzzc8(fHXQ;v_ z^H8LlKVzDjQn=((=FajlXl>_)nB4tWBBf|VyC^474n*+EA%{By{w|5GgPq>oN z`k6#3?G1stX~B_BqJ@zql;g8MPg?p$NaW|~NG~Kc#hXPgZCz_y4CPOa7l5&0YDAil z1w2Cl{i@Age}+R)&z}Xd#A+M^LE;VuD5adM>11%p-V6C1q_P;dHeT;Oe=HKemUJWPP@@z8Jy{%H<51&U zZ=9695c~zCzk9)XftFRG%q=L5*VW_ZMKk}9RQPF+=+W}Pf@?Hvq^YSc25#tBd+GAI z=JPl3Zje&~_#Bh6u0Tb%c3iI5`4*%NgDb(UCazJS8|#bT(WifqN1%!`gvPb>n43rQ zcRcA|e=$`PsxKxj_ll|tK$U-MMWik*4? z-3qW&+>N_1S3;4RChKk-z#1A15;ZOsxfQOe?wH4cTs>Q~$O?33~UC>B*|^^o9?V194py#Q+7PLDKXaPdrrP^w1cUn#kgEo8_T7iq3QQ zqAg8VVt1nT9qpPGqD0SJqlz~H*Fh|WUhqfHTZxJq!;93k?B$F~kE!gGTJGnB7E`w( zrFVR7UH`tb86o0xQJ(leMMJ*EMZ`~Ff29kA`W&@>0_kutl5j8}x{gX?XwwAAGx!@( zDs0X`S7V9DrT>kW{A69=zrncuZ^Tx4#}>)V1 zTB;FA8hn|+Cta+?8rM^%N{oMf+bff6f0{lc` zX*1TOcP3PI(f!Uu+kkLXLGD;%_pmgNf7O_-;XR7Z`uC0)P)Uh_0 zeo>-vs2CfC+@gBXOP3^p;5Dbpe~R{Q@mGZn(Bf>oI)QGSq9Bdj>0GsofjV|ECr3)TKYv`xsa`jP- zrlgSC(7wGn?0SEUfxiPnA8^6H-dJ1@Tck7YnVaIRe*~csP4G#l z{CwlW(^x(}O^wz8c#*w$R9JeCxS?e5pG`!PogLu_bbC91pYjlMYSdFhu<=WzO?HtC zTbhvA=OM$@sMXaNP8f1A_TF<3b*@H58Z<~%0Mx8DIpJ|pqKp_?v)@lM$cstQF2k`7 zi0DLa4A4v|7=}bP&I=B;*%GWuU>*ySPPqDI!2Z(-QVhe4d2ju4&T#+_n(Uln86=CGI+m&VH za@y&60Spk27@*eObh}?|XYz-SQPc@(bVaQzk8xwo7mdu@Y`}gdf381KF^xPvItED{ zvXUgx;Z}EnL;_00X?&K{F_DjUQfRb^fIJYVaj|}D94W4fICqdZiu=gq*)!Yf#WMVPsr9oq4%?^k&V!0P@8BmKz&~)?%#f@CF zEw7lPf_>3mr!O4>f7HsB^w?=yR(%W3v0TSm<6w&s*@#$*-P=cmma+nSHx^-J3)LJd zx>-iVxvCl2kxQzX$v#_n&74~V+@)(m?cwRd>T73w4>h4`Yu}#P$K+zV7Lj}Ey$DYNzh9-X(skF3OTp#tvRH4K$Enb7X{%6R6K<)xAlo1;dwSF#bFED6Vt>HO;sWjoG zg7xe>u+@kTdZnybgBlqWWn}Gj4Q1vu^kLM)|EqBjoX5p!EGgP@uS8N2(NI2Ij?GX?ahz3PHLDPm+zR*whq2aHspEwC4lnLz!&OsHpMnXgMGL1`Wn&3`2ze5y@G8n3b2JS~h^ z+!@LOKN*!FsGSjm7c|5sYexy_3t4Ap9S3-!jv5=@N64!+c&Q=dg%MC+ z6Eo8%Jqymr{Nb|B$st60;*LWoWEc@v1{19HZi>+K$zn#jm4GZ|E-DwE0IfGpsaBMl75Gt$f( zanN7MnyC6#?ajy1xEbqV#74X(fzTH#x;;3V&yCv)>nh!o&y1sbD1X?G4*}?o$GB7x zi+$lWgId?PV!2i{G$jERDH(DMny2;{g1pu>7@ljwNPlnGi_h_gl|pO}WNgJZ?(ojvh_BWoXX3vW(b=8^>3tlK%f4F}kKA_hb_l`-U_5 zPH5_qDt|^sV@aG5gP%_}M%rUCY`kJuZ?P*QUC&%a%&cgxFe4_q4c4@{3{Z;>!Y`S* zpvGOtRlCUdKG z!6x!tksrMJUhT>D3{t_&jzN-)m|YXViOh05CLEbs1tVtBl8l&z_+}(l`F;F<{9cx| z(SNgS_beACdSzO4#*G-3%wfj8EhQXC8s_09i3aYn-k!HpE-3 zgqf%i%Q9l^0H08;SB6I;!s8R`V8k>m%FO!xJ>eUpFhV#@S01XtNojGs#MM<6! zTe*VK_bCr;V^+%%A(9H_={cGWPec* zLNFOwQP!ye;JedYSs^jAr-hNRtTLNw_zm|xIUh$Z)~N{v&CGq~f)XQ*205Ta3rRp9 zQ@*NNJygAE*gl`_w`aE0(Vlv|s$v1`EftnapN6gz@>%DG3XCs|L#Alfed+X6J zTiZE5T&9^6{WaLR$m4-}2D+G(GJn#;`TZGagg*oT`gk3Okl-iI@l)wO!re>y8tGk^ zMM<;-Fx8+D^SSC6X>h%m{MVWe@MFe9zI9YvW;yycE4n!GRw=LP_{!oAYd z#fX)Vv}Vuk=J!XS8s)xZ1`0!O)WAq_{-dO=o{mP0uh9o2+Gqhr%%vq6X@3+~vAKZx zgEK*jLoR1C5UTJ=Lq)!)FU3s2!53#H)}!f5&z{5B1#Y$K8#3aKo{Ps@lZ3)4F`O^N zh~0c?W>)Ka9e)zVev2D@#f>RZe3Vo$v(l3!BW5u{eIzeo^t3Q@3^`fEz}kt57(Dfi zSo~J3Io1-v9k*mC<&TzyReub=8fM~rUZaed=xU@hE?S6Grl&Z4EHSWF!H8+JBr_+a zsn?t`U@!Kn;d%GCEv_Ff@uP`+y_a2TYe{X2N|{Tlm^u!l00Sqb{QfvB=WOlLfo@?* zbq~<)IXJ1(>vr#Z=ao);-pGj#dOpjXnO)wm%GXy5$j8oS)~OAfD}N{&C#J<2qA=$> zdFh!CC8Lp+R%srfJ-bwV^15&^g#=<@5SfZtU5$(kgn&FFy@P6DWLyiYyj>Ya8t5rx zW}V6Hg3qz|@)@>H(ZL;66tO#^6Qr~8O1O}_pmb)U2izbdMh3cgN2*h_;*L$LW6@0? z>tM!N*Ud3>PTZvAxPOCn=VhNXy$WDe7ds*e5n53Gc(FJ=Bk3u^%+hKYF|{wvh_!#) z(F!J5kuQ3%j1+L;#VV^|=)6rWGBinDd|Zirg1E<`)3pcIYiPo{O*0d)0?hN(h%`?` z^Prd!!&1xy41tT&{g}MP!8!PnfNlfbrTwJOc}`$C_)pdK)PGs)Muji3f^h4S-yi%} zQS8pQrID_2FgN=?h|WTUjx5@#kSaPV@~*Fv3TC1M8?T^?Jw1t&0Xj>qtfM!D@oBA{ zk@i%Hybd$y$Y?6_zCWqCQG>MqiFf-NLj8z8IyF7NaWUJ zsq5)%9u=SNi7QmK3v6nWqc$0_kBb#7nJL8=4^b~C+#c=08D|qL&>F;Lan=6ed0}Cs z*p;S}Cx0VP9gE77fCLVc3Bfyh}+4H+h<_(!U?hd^w}l=NkfTlvFLo`d?5m%h{2#Gu zX5wk6!jGjQNudj)R^|%XV<9f=)siko%pQn0KPIuVR?N&I5^ED_g3VcNypgm8D914~YX$@vu?cch(OEd$tD!Lj zVi^?xE@1v(MQy%^k0NRAtysJ0=YN-P2;XkR)|5B3`BG)zjjZRhBkG~3ECV(%(s7rG zb_`o0sJbLZqUwU3LE)i3po+Nd{(`9ECtNaYM2_6HYO~No;op2 z8eG+i88P+Q4qUv5l9g3@thoMKGNxGvBX(v{#!leS0q@PAD|Qy@xO zO-Z`KXlUOfAsjpFU}z1X=9sa3FG#}E!lr4;UNipD$_zYnVyVo`z)L5%lk}F|HT{>a zSNJ0t0$N8SCc7OG^UfF6SDiI!3X`jcsWlV#%=iPZCZBs}ca0;@nJH3rb$@WW6 z7Oc0KxMpS?819(ld2LZS){dN~p)fiwTy$6mBmK&vjF?)B5}o3l><`Y9v@ou~YM3)l zlM&-k8l_}Gpx+y56MqRZ@1#U!1;~1Mv=6Z^iNHX3Ya>it#2#vL8iN)|X zL{*n-Il5eX@eC(_QDl=bsjah-HtToEsC6samJ(gJH%8hZM=Yk5Y8){lAJnB%(bo1< zLtNJtN}7rk1yrvi*PrQSu&Gm_s*a$j?L}v6S{5=%rf~7n(tr7n)~#4FCJd$O+TYs% zScqD|f@$lfPE$)-w_`0W)}_e(sC72p5>HqSo$Wl;P97gQ=B17ywW=n?%rHisjK8eXC-n^!%BaV8rodvt7$vO0HH=}6DR zq<>G1?Urj+Cht>^y1H5IiTHPs?_z%5Zs5h=QrCJ-wBl`6lG`I0oE0)Jfbd5Mt>4@M zBS#Y#agb<@H$`vwP^p)bbuAAfoym**fN;jzBlBv6x__w>i5BCU&XJicI>7E)7ww~3 z`=2K*f_k+sCoOJ*WuOgSGJ8WbA}Zp!8gGi-iA57qIoF~csYIkjD#k;BlgeR$Z1rdq z{cC@CW$(_bmA62mqL}tTwlKcUU{8|HRR>*aVvEz!)Wo=7rr;dUQ_LLU+}tFQ0S|w) zySo3{C4XY^cJtLoXK>3S4{7kqtyX5-wOsR05%v7Un1^)*x?-ZB;wRx31i7e$Z7FE- z463Gn`k3i8^M_-F!%d=o>6&wn2h_wf^%Ms^6!Fa2)7wSD;>=)gfsuoV=R!5S33Q>O zrR7{SDZ*Z;OD2&|7;7^j>#D~>Z$cQ8(3_CtQh!YwX(7?Bn-CNrB{!oNxIIh=VnSpS zl3c=HBgSIBUlXEA#IHuI3%S zNORhm5JVhqCgd=ym63VP$72(snBvIDL@coYnGol)703X68A;R+?#` z3+-rR9rMu$jm#&CaT^&A3@T?t6oA-F$bVtLF(Wo-oG&Ad)6i2!B(-;%v33Ah$<&bQ zXftJzAx>9l8PN+>O(x`^#>Rx0KpBdWQGcbY zEKEq^ssuAlq%3WJBBlDf7!d!iYo3+QevKXwY7GXTN@4$UXFFWWJVMIsQqX8%YTcKS#Fk$L}$Kf_n9Vem#FVxbAb5Zgc*r&@Amp; zyaoLi{oV*qsGlYw(aZ~(S?A&%$bUN5k%$m^yeM(4XCL4fqHLmOoK&JxJK5=t!b+AB zbi2Xq>0Z%_8aBFMe;DD+8C>!b#&K?~klSGPN{M7jKhwz;5+R(7glW-mH-BpBk!D@L zV_k1+0X>m*qlE|^Ikhd2ZsY%kp2vW~^-pzER!Tgpi4VxT|>5^)euLXmuMjB6s=oWGDYbVnm!IF`nckk$f4B5Cux;_Qk=~d zUX1w*EhRIoi6q~PcAkO95PxfH{$(PXOvMw?bJ05yIHsaR#*$P~tEV=RH32vtdy1iE z0%OnaexX*zin&?vn3WH@K$}{lsmR%QTPhK6DSyfyUsHo0i&LAQ_<6LgiITKLjd=PH zX{Ma!FNbw<3x3|c%V$STNt4UbIdWgtH8sU(`H!^xLbRy_a{FooCx5R;NTChId!1ID zT-b>j(il(BT#>D`t`K3BslD-%sM`;xF^YwvZt~2xOicZ6qn(z!qKK9d&+9SKg;%i( zV1Ftt12vATz)%Qgpw=kud|Q)6tBdtzP(RV!@z=DkEik$v$-R&pq%y1wV4g*YW}KL7 zeaVi#NJmOc#~`^GZGXkSBdh5mQ5Fq26T;X?fB~>)kKp=YW1!6^JyGlz(Y&14jG`&w z;t}j%q-L&-oKoEj=wZ%blq^g2sYoJqipJ#Cs8-Y9ungFM&UF$s1EP}X{p;0v+>qe(H8C;FQC3346ucXemd_?z2+e! zQI83^`E*XX(tnKGN!inr60x^qiD(0G4K183MI-UaGNJ{X4xi7A*h7!i-fBKKRd}-p zUadkdjnr={$e4eoCI*FvLSHy%xEG#p;w;1;s;zxz=eZxfkhG{B+X9tTCC)_wg4@uM zsHiUTpSYYndpFv6uYuN=6fIZ!y@5m94Nummzo^ll@_(h9sp|A}HB#E?_myaH@o36s zH9ZlHtl~yb>EFGF0HUJ0?94F!_A15$=Jz{_Ara)N7#UY5O44fVdUw?85;Fu}i%+=F ztVU@MD7hD@(ap`##F=>NuBV}BG5ju0AuH2T3q2Wiu%FM2yOnc&JNfKeRVuZs(E`p^ zALs^*i+^PsAYOSfc0bw>=fVxiAmZlp`j1 z^`NIPi~k(;esW3+qW`im%Rm3@^UwI~Vvi1JB7dm4&p$hru>Qcm<`Cf@@#GvwVx6s3 z{)UhxawCP@7#?q>@BI@HN13p)xW5=!S9?2Z?+3tAR{Zqy&(y1);zE~KAp22m_Oc?* z7T}K_qf88?aoL+f3EYrd zp~uyR{)np(rin`VN&#F}?&w`vQ{#O>@u_y}5ByMIDyZ##M~`Z(8pJsc%H^$9eu}1r zuGN#4GgfHQ+-m&+0TgwR&gWhhmb>+&RDXj5I8M0}SbqsK1s;NFnp?l*GF|@s7k};Q zzT5UCKu?H4KtDFs~>65AIv(A0475`$sl69&)+uPFym^ zh;2OiwRFaiYd}|8{ynl-qO-SHc$MQIfO9+xKZ zKc>=?g((CdXVvHop2_FN3V#m?Ne^Us+($u!a5o9P6@Mn0NIIh+e>CBuW$3uIP7VP= zjbw6HlN$M6BK2zI`&es7D^K_YvPU$;2dBV@x;0-M|lLPo@;uJ{E39%xLDP3X6fr%67Uz6CQ0%6)U z(6i@b^z!m|-@Y4bynkx}NeZA$R%g5e|7=THskn8Y)Q_e9wL;lf-K1LXsk7bv;{jjB z1>OzQqRzP07+ zWP7AB`pp;ZNL7p`?nl2k?d^j6A~$hWG76l*eKk2Nr-8TqcYK>y#CXBOw9pmwrM4 zMr=i^ul1P;*9*uTAKJG!hkYzgvc#(%``H47;yE?=6on|{X}sAfb^+9|B+C=QPveM} z**J0B)Dh$#4+ir`BajG?Q;M^0IoW6;nw@q~|1=IKy%ol7=2eL=Fd}a+gVeRq1*$$}mGSO4`E3 zg}0-T_IO*8yoh?F4U2tWfB+&Fz7vtHudOc;IXd+pzxq#J{sP_}=M;VF30BV1kwHl# z-DD$8RwWk3m)3kCV!#osk9-$TNnyBge=_yj&41AvUJ`OTYdo}TaS)0FFPXxVatwYN~N<5gk>dX^tY@%FKScH&|^n7k|nZz)L6S<0kX(phCgBSO_e# z75V|a5$v2$qkaAv!WPy8g6aM)YSGO!G=Gb=(exB0bATHr5l_UDDZ1#q6pbWqM%rWq z3MVA$U9$t>qIjEFuttxNC*WPUQdfUTbXIz@4nlV%k4c1F#1bEA03NLbm|)ks{~t4mK>AZ@Uc(Wn){vecNucy13=%hnh^;mmXQ)Nu3!IMS&7RDb&5 z>K`j4mTmU>jUdQ@uMumEpvXWp1$~ivfCKU&)=^O~tiQ58^&NLoSt)tI4`2!2Q`OiE zir(0^N4rsCEzbz`1ZMNnwUL2QlJ`~l-1gsjqTWByN&W+$ z?jO`vq0UO8Z7{7%E{(GuIqZ)c=6}Nc4{Gu?`Uf+vxcH2xq&&L_{a<*d8MJbg=vi1e zu=whr)>K_&n2xXV4V9W$lL_)Cj5R z>bMs)pA-&S0Q~*FJ^L8$IqRO0r$b7sQOH;fFER= zrBRy1-~e?Rc-W6X*t%nH42e|L!V4&6M*;|X1`I=o%WMh`!W$`Hp>WL9p^yO0(X^mM zR=c>$X_v*Gm-#Hs38XiJ0)NAvdxFp+WsYKWPl#&JT&M>`RheXOe*}^xc6PRVk(*63 zO!M%-6h;h-&a!96>Ceb2V!Av$Ao-X0KZ&~b@V*+)+0&y$E8@Ygh}y3^PfcV<#q>)Z zMn{#zG5#$Qi_p&WQ#;dFcuGNRXp1-l+O8&^h??K?8p-s|t8UCaHGg@S ZiMDDGOw0K@GkrLph)wnBM_Vvr{)Sh`)VHmNR(JD5$Nv6 z3tPxcb5nt7u^19kJz~15l?9YasYg3BV-MC5){!^d?j2SWj|=mUsO^WxyeJf(j^#5V z2k#7_>U3Iij!fr6x_>w@DQC*05*1{%<(|6q-P7Ahp8twASY3C80rl0-Q0F7^X;8$2 zTNvIDc_k2uQ?s*w>6*fyLKcbkZ=8)+YEr~9POJYuUC1GiKcCy9vb$WD{zO#9jBG`2 zEh__Q zArT?OUy%`d*6r?(wB-Rf0FFh*#A>Xa_MlTGz4Ki?bdD!zpR*J$)H8!clq8dD_*m^cbN!jD=zqWuTdK_$_8nmxwq>7K2(fySq2-+DKt=4-k|HT_DW zWFh+j(3ir}Ws>l48{rk_1Nw514(r47U>6jw`-OqtLhl+@FswY7)o}kvGN>8{Ckox$ zh2D3fi7~f}Fa!K%$^+ZTxuqD0jp>>Y(ZtTa&41?(3+uhk?tw_dkz*YF(R}p2XsxBJ ztu5JVeS{zvPFD8LVqs&*o}P3*=rR)hpDH_r;F{glWj|c9kGn)oUU+LiSuFy`=rw|L zA4NKE_tWOJlf#;#W*)-JA!CjrQLi7lU$oUPyu(%uH`;zU=PbXVJ-_!oPJN=TU+V#? zP=Bzjhc-><8c>g<>-pwTaq%e~JdlPs@eUma_kV>0oHPO#d$DpN(uoMNM01S!KiIQNf26b6 zV^JWlurcXNdh%Li&An9sGf7VvKRibV*jrOD9OaV^^eEg^uJ^)}65XnJ1o_M=iqTJc z1i-s;9!{d75N;v5k^hL+ysf7MY;Ix_6uUOS{Qi#g66olaJubSM$mhnLhjVId8}kYQaw?b{-~NARZu=zx zo;V+o7)-%V{AY0;>Dk2KEE<41hNhd86ZIKx()jE=yi%Aya)-j#zfkT zWMptUU)ds(KU_c{n%KA(L`OweQGYY&UF0g{5I3}Yr}fc$49P9hDWIn(AB05vOJ)U{ z*w1MBQ|U4M?Hs<7>Xuz`As%J0<>U)3ts(@8sxmkO&el$GRg@8=9nV%hFp z!y>OM6-N2Oo9pUDPQfOwb|)CP#Kl+Cr*M%>M8h&;2vV?H^?#}R(&nhHbKUP$@gKT4 zby7~<*g%NO8IE0LGdRw%6IXDYx;K>%4QfCKp{6w0a88|63((jS5&{{7#2|sd44MF= z38DXzsHac&FWl#OpS4%7ZhuKm%B#7Rkah!x&9&|P|+NqaCeltz5}sdC3h3QhyiPJW2)E{XSYo(&;xJ&Se#d} zK~lxqthGk<5bq02vkX2r|K|CL&xL~qz4?lY12~qD4OCtNOJPr>h=2MNh2Bz)C=O$B z?D3t#ieIc~7N!u?d29v@!sdDpb}qJX`61k+5E*Nf0J(o&x(ua%OU>Y#gknu|!;o%y2SaNr;6yxw`kfiK0IV5M>|5{AqR1}dQ&aU%<92p9nHdI(QU-QbBC6yf6*Y)}v=L z=TbjPpE>)h6vA@l{&`wHGeFI+CRY)zoL??ZKYu9n-Ex;;a_!$=>$a}pr;Zuh`qvN} zhPY|a-5T%iNALaOfH7u2ds4VRT)Y5g6XVzpxUn17FOW|kKiv+$=cmmlPj$3Ma$dfj zqH3@(T*^O%86xZ26QINlpBjcL+~|h&+NpFKsIKDpKH+Xl0V|(^#7V)U8i(pkf>;iK zzJI;}ivmuJ%Du~S3K2?&$lkyNjgS>4-@Ae&%Q+Tz+L!}juyQcO&S;P`<%>%U5ru;2)^T#`DjHeLC`h6eaRQ^>ouej1+VbW>2mr7e~&;jT7TCO z*aopEW1nknRxW}yr$;uBX_mCx8M_?@6oP074tTOyM9f~jZhIzi?+xV=yIG&WVS^2{1=cBM z9|i31nvU8RoS#vfKsTy(Pr=xW^nXyHiYa9P%s`r1!e$Gd8mcgd5^NOeht0Ge54)Zq z+A5nZ93}29Ga%Is3@ZIqW8>`n9NF&V-(HKURa2}LUq@s2uIeMDG!^cw!b87f;f;SH#eW85U#~A0 zC*hF|b)tRyj@W;u6~R$(>-s;-`)^O($KIt|noqXAzvnoJVlr)elKLjc_zUSJjMOFd zhxXLlsl%u(n`tV)m?{mts{YnN(1E(R)M3jfvVx+G6yYu17W zc1sI3oc!*gOh;u6WB)CFuYcSCwamBN-dCo|BbRF1*;p&jU#aQF;ooAuHdk&H?!PEc z^zPpEe}2u9D?#6C8u+-m=9WkBUDl|+!bvm;tL+}qt(EsUFM+bP( z_wGFjx}DBr@1VHN-lp`iboOWa_9mPuW*#A_^}|1Jy+Y@zRje>~A%Cq0dnApJ@-yv^sg#>`&@1qz)e5dhO%SQlET?%h|6%ymA85{*%&YeHE?`Qje%H{X#PH=6! z{p(KHp#1Yx8oh4ay~}2U7mnbAfA35;|L^qwhxz#Do{kTsJt1@7r7J<78orCL3RmsL zN2PV}tS=RYqLTBVLshzmWWsTCC$KIKK0ad-dam24wf$ECn}2dFkLDW{y16l>W@`HZ z;{*G?TDV1l5r%&5)8P+|7I7c^`PbYe6xqM#ZpEB!g{yt|`3tgOkw5@*36@fvS-0bu z0{4mJ52{@D6c{87kU;yKn?qDt8mE$QswIP}x~j4X)rM@0f)z_+n8*SaqP*TluXWXU zNF8bP{H8W;zJEp@&NM5eS+8P7u+rOGyt`CYWD_T)u*>kqL~48h>-(mZYp)_{Tnbh` zPPC$h-n*rTqv!^J}ZGL^u*{lHQjP*s%9hLNvWd`_@(Wf2YXX+-> zt;Q1*+wMc!jFM4`4=#Yi*({9JegBF{La$)1Ya1jCtXBY;flw%qPHI-5KcUPQOqkVG zXZ0C3gMYt;54YRP##{prftyWsk&ia3NbIQSMxifP&M{Sxei-W>xK^DjyASC2Xpe}k z377Awo`UP+0-$+=Nyx+k($a=3A>B=w<$k(s)(a~(f|cCGN^aQ;Y&D=;$j66ML&>jp zdz5c`a=viy32{afb7)h^zA6TSjbX1Oe-4dOyMM*s3nRMxdWGs3Cdix@&QW4^vCW0g zn#VKT%gShm30zme#A?3CzoFfyjwNlmfa?@a5}3%VvOfK0jXE`n88wv%|uDvdEU)6@CID5a){Twig zq<=Q=5ONY>@40Z=8qg3^)NWM=2V5lP9@N4}dgVNTfEje%lxt6e9lOVa%zRC}V>^Ji ze(t7Q0jm81Ry7pZdwsEVhh!tV?cgDdN7C)m+O5L$MK0n2hK(99Nr|t_tt<0TX+69-SLZd0(m`5H zV(GfoMd;P-yg&PDc0+RNX|31+D4&sfhapE93!QY7#CQ%4r6hPJ8JPS9LT-ct6A4TC zL-(+qVU_Vqh%{^C7V|v@A|BK)Y}4ZX(;YxIBWB6p{q`8?NJ&pl)GLa7P$=gung#g@jx>z;v?c zJA5G!y(R}y^?)?(S9`<1wBA)x&VO8%+A%IOp4*+t5>6$@j12>QGF+H_6t#hjgTZMR z0dazsi+Imh@?LQ1z!6UY2gW3S@p=~ozLN)b#oobrhRv(#4{BeW3PT|lYCXvk#w5K7 zj!KAtc#2q^OFAOW#fX#0^0oR(Ya5&(%=Yk0$X1;z;o(7Bil6x19xrIZQ-56j;=-|$ z+bdb@rtvsneEeywEjy5-XMVCjWc;Im3J3sIB81}&8vULj*V4poR|3?WuHGCocZx+n zFfTZEA@Av_xAQ7i-a{F>e@7=Ciu~dT6D*kBwPR4afG$cmXW$k`K|-=ptE5XnXzil7 zgZtin0NAK{u-JWO9#-_TEC}&hyAg3P~sUrnWVzG!zM(*HxS_R*FEnAXy+%cs=S)WjnO} z!5pm#8Qt3VmZ@B7xRzh$0E*wBxLv|F5E6aesNZ;k&(PF>x z45w0g>K-IT>Cq}q4Ez~{Q!4&*oUO1HM&@;wo+AMy53~0Q%gbsqa)zO%6gGMYm(e2u zLlk^BP36*_BK<9Kt#Gl3bpsVH2F8~tBmp&l)YXP8*hSk8)KS9Tea{}UFF6$*CpsQ! zIolkfYI_VCQ+Ap1qfv;NM&Gq?CVfJ<A48_L&5_^Vs|@Ofr@Z{ zBo?)+HR?;TaaBVR=zggwq##FK0aT~( zXc0-L!BR3++vdoxu&TPN&17BYD-GO*HKn!_$29zHHT6_&9sbba)ON-K$HO#W4izzu zlnOXAknGPH)rz_X3R%f6U~eWU$YJk)nb>su#2hPXhT08s?)x6a%7djBrE5=$FD452 zpSZbyG!LqhaLv%25!}YX%wM;KQU~6@^=UGQBr39h$Hj?F#0fU!T<@GDWHH{l-QfDjC!WWQOE6;=U$$a$!8skEB>lb_f00JGc%Q9dVa(+Q&nXRpDu8)NW zr}hZx&q8pOovGGSNk8aP+<-vj8462!3N#8sR{01NclwqGJMfi9>>nl++ z5>W72bmNi76lz$HHz}X-U5u;*oOySY1e4riUL$1nUBRKSFG>RniikV^ih&;M*nVVf zC>rD4EZEcKE>@%~-W^7|H!xa)J<^!EJqbZj%X{RUa=?7p6TG}(l{y#&y{jQ|jC^rZ zb6y~YY(wOzFt#Dhto;gq3#9x4>2elToPPz*`7j`cVPxtYARS4Sc;~Y+1A0qiOcEI2 z8luCoZwVm_zsZxRLTT+Gsv!_SI{DOxseH$_J8rfN2M=lCOB06+%I%dN4kbRjzRJzl z$S8CL^pLuBZ4t&NN;i2#?e1M~gS$g86$Pp_Ud2V=(q?5(>&pLs3WISB98D~sb@LOj z3E*p4T5#zZD+(sZz~65rp$&kyVawZTP&JYVFzkFNHl+gt_sezUY64zff({TVM0_Nb z=XelFm2!m4QgAym#B9V*lp_{3<$_L5R=z}Kw!1QW&ADvscm(jL*p)XLLojLFEzhm0 zEmY1*+Ul3rk5ylPp+MTrjE_7Ap%m4{+@P+}onrM3;mhInoxmim>LWT~K;fPn+@>>} z4>Kg8@@%d_LAb2%2<<2VAzG_sc+o85gz{oszC)IW8{ff=B;G;$274deo(#`w2xC

Ry1yMfJ*vP$St8vXCCz*D7n8`C`{i@0skTs84#G10#jOOgNQ5Ub%Czd zKm>;;3}vBzDV4(G(=@}98Y3?>B(A*f*8RfZ1`NEU^mo-!R(d=Gz`Rq`>yY*Inp)LT zN6fbB(ApG97RC{ZkyQttK)dNjK*$eWy@0@XG=&uX$@tQqcMhJ}U#9$J=f$&%r<6F> z2i+)lBOQ5bLrnQzcCW-o*PT)}2(`m&=LNznfHFsaZYi*-5qJ6O8dBqYxL&coFqn*k z3CtjJ?t|go@;NXu;e~=xp2*$q%WsekE(pSh_bYOzD_URy5`A;!M&Z_oIw$kEuA|$k zBgJc=7FtNYHB;D-8M=c(vhAxYaD;yu?6iQ1SI%^Q(BbNK0DZ96gr<6&CS)TE+DCMw zvHBU8QYrxxfA#+6s+37Wh3p&TG)J_-#!Q8j;>-Sk0)nw!&=UovzYEuly3p|%kSYO= zFp^j%iiS-;;vYO9mu5&>1?orhPzjx8TK}^WV8G@M0ad5ADrgJK6M22xXf^bBfn}%< zEPPw+CZVT}T9kgqns$yc>mPeCe~Zc?@I31qb>ccof5{&j12+T*!bXGw0zTYD(6N(0 zUIYmA@7SkEa(BjJKX?sCf)D{{@6e1B-&K&yKrv4iAaueLCJ*D6dL=9+s#2IirzD2x5W$*T9BbKl(tdF5M`5sZc% z_zH6<6c ze>rLOQ@GPno^s-Ladlohy)t@7!)zRh?h|TRhAzB61YahNLF^eYLPmpTL5Pm(m5Cx? zv4a4M;NqAd1ne7?(@C!f2$ZGIA^5{wqTq9<5r`FI`Lgwq=bMGgoknM)@i$OAn-Pa! z${Xt-qQftRnd=xr{34EU{6bVyeu>A5e;tzvB8xF}fpnq8SQ%t+0y2a3||U zgKKUxtc|;vm-UNM3}?6f&SeKy*xFcd?e<_fpTV_oMK^RyFqZOgVY@x`4{ix<>EhC2 z@w@KGK?8wY;qj;wmY433$i`$kdPlE?%~TjrDJ%{bR>mZ@l`xFsFcB-;o&n(#Ms1`=1!s>>@g-Ihb#q>LFp`ai-B?9V`YHF% zLom{7RAIcZI6TU5pUH{BIC61mdTJ5DHwM89INn;H>a!6m8*~X<7Tyxbmv~`G0-B$C#N~b)yw(0P_V1}$ntmY|s6D=xpeE5D)$QjSD_a4z-ujG-c zs)l#1%{0dC4;#3daN+3yu z{chZ3rHN(uP({C}^`p9o@a!rXBZ;k6rjZ2-6M&?mu@WgM7Ukcw9tu-$fWJgNF-dUW zmt8Lb9)C!^mC~}^t4+LDr*G=Vsbm+6#7<8s++QJR)UX2%`?uUjgT7W+QZg++qGfIO zM~+Zc0}rA`p)BAbX})HP;x)SJ;BP>_D=Ik2$;RueDBo1Qu3Zd=G#wJa5(p<__IX{* zKeJc*egY7XkiM`+xpV0qOK-N|Hq|YV;{qt?Pe?DSc$q76u<=w8I}tF9|FU~WK8rG+ieo}p$8f^L8}&%A;JPE7^v12Ff};Ig4MeEzlV7fJQW}|dk4k?{6}F$ zO02sOGn+Wl<3carpB3wuuTxRH?MU>blL=lOapPM+zoK*P798Q&nDoaKXy$-4G zmRDwYlN+dnNs=?z;jLLElkk;qXMuY%`T}BeBZB1UI*&@OZQlD`cag^wK(k`k15Jc{ z=pZX0m6}6wwB}Ivz~{uqc5uE8lgGkXnWEanH)>7$5_{E&U5Y$2|H*Z(RG>M`)qTry z($nYn?7oJL4I}YBYmhZGrnpLF#l_U8vvlZ^sQBwuK4V@XgDzXqYw46bp9_KyOa zh_t+UuaUve*8VSC{E2PM>m8f9QVR!uf^)1Leb}#;q>)W&UG)iy_J&`NxDO;5--`3| zF6V(a4ZN~{1YRBM^xaiDl?M*iUh>i%&h{hhw(k2Vzc;nH-B{NC;5(mvlj{QWqNRm% zu19*w9WrbZfioz_cUSk%IFGKb!lVtdU~{k{L^z>KF%pLzUs%v5;_-GPZRd?GIUz!S zAQMc{LRXPx=q(U*5Z^UIV~8c+ZhBvPm9w6S7g+`mT=%J3Fzg`gNjr z_MXraWM&&}FqixFd~d#zYnsBEY<){#Hjbr-ar^n?vYO1eh7fM+#i> z!wM^8CSrBcqjHWOws5(6HO+N~sFyv|u%rsST7;s`7kj@QWILk9rxHhFQ^QYdoK@ zAa-hZT`YKTr}cN1N|d~i1_SkQIl-$w;;H+Lu7B@08eX+MqGAhb*9JLew^9+|WG<^?60Ft8p1qSvq)4&#Pp>@IXOB@!(OVG z?Z>`&Jbx%cvg#Lc*!A_hFsD>$CO|8|6#wgxAz$P6zU)D>5<~&QP5x2=<~U^Eth#u1 z8mETS?cDCBt&l}4OMqDbZ1+m60hZ>2Drd!VC@PbcUWUDUK0svVCrcN0+jd#|#pbJO zXcrm#T&~C=QjwP7o91F>4@q3|T2G{rcGUtmoSa*6z{H1N%e2h9gmztLUTQAcR%P!u z;S+-O7SL+}a%RG)_Z0m!OQaykCTT$qh<~+v2fsejXJt=3L>d89moMP1R~!Ykm8m2z z6@7WnO-lqycG%PCQW5M=zkd2yqnZQ7AI+7S4X$pKNON^JSECRZbzM&PE9a~eH?^Y5 z`gTH!jWk32E@Q?c1Zn2*sE2*jL;Sh3)>}UQwDrfn#iqKcLTS)DmfSZfXHnkDc#^Tf zM~*r)_Q~n{#E3YG5p^}m zmw)sf`ubMCba}+cUKrJc;`nj;LCRA@;l!a)RjtH)Deu zKRtaNn&}~j(kTF=?9SfcF5X%)OY>S9u(>7DVm$`7e-Q}02$yA0bxX~XI?6$sUX*z) zE?|_c1U%dzg4JNm8^3C042ftot%a~2pbHORXL2&@uFI!iZYc+JgW+G zo`7hMbHy0D+#{wmV-Q(1r(LV|n8mt&#wY9KkPogoW_Oy2l3rXKx>FMxz8#vIm}p!` ztaLDCkvJG5vic=O4wYtKAmZ|T0hTdu48LyFefM%B+fBg`d-Oi8bez>Ho2M-KWZPO! zyz20L$?u@U4{zA*jxTK6X|4ACo|`obksI*6nDL{C#;<6h!ziLn5l`(xPrR;tqjEZ8 zW(0<@TN2$7b5!ajCCsei7l;@p)6o?XT3ze9_b_iqI3ba%4^qbj=UI9E7vdOJWU+kk z(sIL#v8x;N-jCo3={Oxc0E>~^Cp%`2YZOr7rqAwIPS%OHd zOurNzXQ9ONR%Ycl_TnCx@w8nosMoqvh1G5WzMu2YIDBx2>Nce zWWMvvGQp2-={KJQe}%~Zy>v+t8r1pE(x~Jx!vOgb;NzD#A;&lKXcv`&`#PI%u#Wzy+RvT z^-0QSqFokYg872HVtBm{^hdR9n52{O54R~}q%J^g^u?yuZ8{~!tS+=4wTGb4K`)%NC3dw^qotc@|!Uh+GT-ISR~(5#^DBBrF6tfUAn%mK6Rf8`ePn z=lZTFj`k{KS;H=nLCNToka)&>w(ujt_wazI0FKYIEI}MH-CK1bU9l8B?NB|uitT6V zDBJ<@92G?f%Pr|~BXvr)xw_$T6m)en7E*72ZR+#)qqXl7uTkjvu`_5Kq+GxqSs{#Tt2gYZG<8ta5moV8@Wa$PS`?Q8Ka5={n} zrQ8rOcIB;eWZne3f5y@r&s=Gc;>8r)6tEKqcmfv z;40pyNg!^fH zvc6V+%i_G^778<{L5WSO(s8t0;Rh&f1gX?kLvH)&%l^o+%?8xo5=VPb zQ20UqusIA67MOT(+f}}RN+r|l)+4PReVC7`**3)$-wr8#zpelfP8#V{+A;Go`C-ro z19*A&*`N&>XH`4Z*PWCth{M>?bM;_q3jS4A(~{Ckdk=Y9$Cd!8Gx96yd)=rMBzY|6 z)!iBt^r!EkzmeA=u}AFRZd$h%hEHqpci%0YPf?!RD+9D>q15hI#2~ys(d` znubyUDdTSMIgQVrloX!^vZ%B^(V^>$n(}l#-rGUw<@O-t=8#N{)=a>ri^F?ZVZ?Iv z!NJDrCP%!|#-uv=cO~J`v{^FA)%73K>z;DM6G{(-*Q%@PAB-m?^tXd4i=NtQj2@5> zsS$`t4P`RX>^3@Ag7w55RT{U&9dpy*FkK~}YYA*R9+~Y0LIx8zK$LtqdYaDW$i#U{ zJo~?CAz~CT*>MSw2C~7R(i*s4l6Sg3tWOCW_31#;_Edd3CnMuaU!S=uGn>Y)b&!8? z^$BU&Yop2UxR5Hid=oO%OQ3|xDS4W_!=#R8su!vq_c&X$-YMHUxn;k3C^795(SxT{y0UB zA=dE-IFhB{(XaKbfVc`CXuD zhkfVw%*SSJZGun6X~ne2TV7TpOkR2XPX#)}*kJl72-e>kq}iHx7v8(E1%2G%}F}i-_@S9zL%Bf;BsaeJR-*og|>@4 zloW#IXEZ>=+*W*w14wvI?~@=q$mPaKxf$cpbQQ)1S5$|?Ki)whE)q#%?5_rGjtPh} z?>U6p4&m%HQNOwPe}*_t0GSL^R^O6%U{kR9hkEQ^I54cP<$V$jm0OKyS6)J^q6(2y zk$aafaZ4vZ@lm!bTr@%-HEJ_jo2mMJUk8aW26N|D`ol;WYdgSyL6JKmy84qDr+s0k|*)i&&mlMqk;O z63B?hDVFsP!~HrnBcU=K7~es-NT-F|bTu3&#U-6G`>8TB3I?r51 zX~c{!`+RCNQ;|#>%U8}@Z5GJ&5fw+mzg&DWfnYP#9mB(Ca@4A0CZpYWP%*u0%F*x4O@yip?;>O&GwSqOb* z0lbx7o^F3D`sq`8+ev~nIu<&|P7^6vpw#U^`g(DUj=1p^b8+X|P>E%>f7ZJQYREmc$>v73n3Q=t<<}{s?0Nba1Z+E6K@)D3Jc*brS zo;LW*5)zE-@x{<-IcDW1oxO=)D|V4+?KUusNtlTgIEUf-w!Jq{jw|D*L*}lQ;mKYssQ?(vd!c%~p>Gn%?9szSs+q z#D~z1buydtW;uPvJJZlnXMMW>uMQk>rJ#nWkuvkUi%{@ijarOgPJIiuxA+mRW|951 zRn7ejEw1&O#VO^LLj46>6OuVVoG0%Z`YF=py_*@tkd}D<<^Y)C8Q>gR2T#+Zs@xz74^_?He|H6p59S2>6PTYhD9YZoxN3pCH{z)^^5*Y z$Wym`38aPM*Xw~d2yYdEe~*8~2Z4&we~rQV;6G>;6EGa&5E-4gWpE?9zQO}Bf&Txf zP@qRlz_-!)H-l+pi<@}GMAQF5V0;Fs% ze<1~dqV)dlIF0%T^ZqZkJz)C5`X;|;;lHt=z<;oY|6&v64BEUm(VP|kjoGFAgIyxQ zckx=Y(ZZ%+CA`K$w5KVU9pX*~G?Zn5KutgJK=l9rMi8PD{oWL;j8CZoMnBg8v!IC| zfW`5sRnZC$zy|nqYG8D@CYT@H@Bn-VpG@O_H*Pes8Tj`9iW$ve24=t`(?Uy|ffexT Y?x6$B!18#dy68GHFpP-O0DP0{KjiKqApigX diff --git a/TheOtherRoles/Buttons/Buttons.cs b/TheOtherRoles/Buttons/Buttons.cs index 9e1ecdd5..de63bf6c 100644 --- a/TheOtherRoles/Buttons/Buttons.cs +++ b/TheOtherRoles/Buttons/Buttons.cs @@ -98,6 +98,9 @@ internal static class HudManagerStartPatch public static CustomButton defuseButton; public static CustomButton zoomOutButton; public static CustomButton roleSummaryButton; + public static CustomButton redemptorReviveButton; + public static CustomButton redemptorRevelationButton; + public static CustomButton redemptorPrayerButton; public static Dictionary> deputyHandcuffedButtons; public static PoolablePlayer targetDisplay; @@ -201,7 +204,9 @@ public static void setCustomButtonCooldowns() juggernautKillButton.MaxTimer = Juggernaut.cooldown; swooperKillButton.MaxTimer = Swooper.cooldown; evilTrapperSetTrapButton.MaxTimer = EvilTrapper.cooldown; - + redemptorReviveButton.MaxTimer = 10f; + redemptorRevelationButton.MaxTimer = Redemptor.revelationCooldown; + redemptorPrayerButton.MaxTimer = Redemptor.prayerCooldown; doomsayerButton.MaxTimer = Doomsayer.cooldown; akujoHonmeiButton.MaxTimer = 0f; akujoBackupButton.MaxTimer = 0f; @@ -236,6 +241,9 @@ public static void setCustomButtonCooldowns() securityGuardCamButton.EffectDuration = SecurityGuard.duration; defuseButton.EffectDuration = Terrorist.defuseDuration; terroristButton.EffectDuration = Terrorist.destructionTime + Terrorist.bombActiveAfter; + redemptorRevelationButton.EffectDuration = Redemptor.revelationDuration; + //redemptorPrayerButton.EffectDuration = Redemptor.prayerDuration; + zoomOutButton.MaxTimer = zoomOutButton.Timer = 0f; } @@ -244,11 +252,6 @@ public static void showTargetNameOnButton(PlayerControl target, CustomButton but Helpers.showTargetNameOnButton(target, button, defaultText); } - public static void showTargetNameOnButtonExplicit(PlayerControl target, CustomButton button, string defaultText) - { - Helpers.showTargetNameOnButtonExplicit(target, button, defaultText); - } - public static void resetTimeMasterButton() { timeMasterShieldButton.Timer = timeMasterShieldButton.MaxTimer; @@ -3454,7 +3457,7 @@ public static void createButtonsPostfix(HudManager __instance) } } }, - buttonText: GetString("SpecterButton") + buttonText: GetString("ReviveButton") ); // Medium button @@ -4085,12 +4088,12 @@ public static void createButtonsPostfix(HudManager __instance) { // Could Use Blackmailer.currentTarget = SetTarget(); - SetPlayerOutline(Medic.currentTarget, Blackmailer.blackmailedColor); + SetPlayerOutline(Blackmailer.currentTarget, Blackmailer.blackmailedColor); - var text = GetString("BlackmailerText"); - if (Blackmailer.blackmailed != null) text = Blackmailer.blackmailed.Data.PlayerName; - //Show target name under button if setting is true - showTargetNameOnButtonExplicit(Blackmailer.currentTarget, blackmailerButton, GetString("BlackmailerText")); + if (Blackmailer.blackmailed == null) + { + showTargetNameOnButton(Blackmailer.currentTarget, blackmailerButton, GetString("BlackmailerText")); + } return Blackmailer.currentTarget != null && PlayerControl.LocalPlayer.CanMove; }, () => { blackmailerButton.Timer = blackmailerButton.MaxTimer; }, @@ -4318,8 +4321,6 @@ public static void createButtonsPostfix(HudManager __instance) trapperChargesText.transform.localScale = Vector3.one * 0.5f; trapperChargesText.transform.localPosition += new Vector3(-0.05f, 0.7f, 0); - - // Yoyo button yoyoButton = new CustomButton( () => @@ -4459,6 +4460,140 @@ public static void createButtonsPostfix(HudManager __instance) "AdminMapText".Translate() ); + redemptorRevelationButton = new CustomButton( + () => + { + Redemptor.Revelating = true; + }, + () => + { + return Redemptor.revelation && Redemptor.Player.IsAlive() && Redemptor.Player == PlayerControl.LocalPlayer; + }, + () => + { + redemptorRevelationButton.PositionOffset = Redemptor.prayer ? ButtonPositions.upperRowLeft : ButtonPositions.upperRowCenter; + return PlayerControl.LocalPlayer.CanMove; + }, + () => + { + Redemptor.Revelating = false; + redemptorRevelationButton.Timer = redemptorRevelationButton.MaxTimer; + redemptorRevelationButton.isEffectActive = false; + redemptorRevelationButton.actionButton.cooldownTimerText.color = Palette.EnabledColor; + }, + Tracker.trackCorpsesButtonSprite, + ButtonPositions.upperRowCenter, + __instance, + secondaryAbilityInput.keyCode, + true, + Redemptor.revelationDuration, + () => + { + Redemptor.Revelating = false; + redemptorRevelationButton.Timer = redemptorRevelationButton.MaxTimer; + }, + buttonText: GetString("RedemptorRevelation") + ); + + redemptorPrayerButton = new CustomButton( + () => + { + var writer = StartRPC(PlayerControl.LocalPlayer, CustomRPC.RedemptorPrayer); + writer.Write(byte.MaxValue); + writer.EndRPC(); + Redemptor.RedemptorPrayer(byte.MaxValue); + }, + () => + { + return Redemptor.prayer && Redemptor.Player.IsAlive() && + Redemptor.Player == PlayerControl.LocalPlayer && Redemptor.RevivedPlayer == null; + }, + () => + { + return Redemptor.target && PlayerControl.LocalPlayer.CanMove; + }, + () => + { + redemptorPrayerButton.Timer = redemptorPrayerButton.MaxTimer; + redemptorPrayerButton.isEffectActive = false; + redemptorPrayerButton.actionButton.cooldownTimerText.color = Palette.EnabledColor; + }, + Redemptor.reviveButton, + ButtonPositions.upperRowCenter, + __instance, + modKillInput.keyCode, + true, + Redemptor.prayerDuration, + () => + { + var writer = StartRPC(PlayerControl.LocalPlayer, CustomRPC.RedemptorPrayer); + writer.Write((byte)0); + writer.EndRPC(); + Redemptor.RedemptorPrayer(0); + + if (Redemptor.target != null) + { + var writer2 = StartRPC(PlayerControl.LocalPlayer, CustomRPC.RedemptorRevive); + writer2.Write(Redemptor.target.PlayerId); + writer2.EndRPC(); + Redemptor.RevivePlayer(Redemptor.target.PlayerId); + + redemptorPrayerButton.Timer = redemptorPrayerButton.MaxTimer; + } + }, + buttonText: GetString("RedemptorPrayer") + ); + + redemptorReviveButton = new CustomButton( + () => + { + if (Redemptor.target == null) return; + + var writer = StartRPC(PlayerControl.LocalPlayer, CustomRPC.UncheckedMurderPlayer); + writer.Write(PlayerControl.LocalPlayer.PlayerId); + writer.Write(PlayerControl.LocalPlayer.PlayerId); + writer.Write(byte.MaxValue); + writer.EndRPC(); + RPCProcedure.uncheckedMurderPlayer(PlayerControl.LocalPlayer.PlayerId, PlayerControl.LocalPlayer.PlayerId, byte.MaxValue); + + _ = new LateTask(() => + { + if (InMeeting) { Message("复活失败", "ReviveTask"); return; } + var writer = StartRPC(PlayerControl.LocalPlayer, CustomRPC.RedemptorRevive); + writer.Write(Redemptor.target.PlayerId); + writer.EndRPC(); + Redemptor.RevivePlayer(Redemptor.target.PlayerId); + }, Redemptor.reviveDuration, "RedemptorRevive"); + }, + () => + { + return Redemptor.Player.IsAlive() && Redemptor.Player == PlayerControl.LocalPlayer; + }, + () => + { + var pos = PlayerControl.LocalPlayer.GetTruePosition(); + var maxDistance = PlayerControl.LocalPlayer.MaxReportDistance * 0.24f; + + var deadBody = Physics2D.OverlapCircleAll(pos, maxDistance, Constants.PlayersOnlyMask) + .Where(collider => collider.CompareTag("DeadBody")) + .Select(collider => collider.GetComponent()) + .FirstOrDefault(db => db != null && playerById(db.ParentId)?.Data?.IsDead == true && + !(playerById(db.ParentId)?.Data?.Disconnected == true)); + + Redemptor.target = playerById(deadBody?.ParentId); + return Redemptor.target && PlayerControl.LocalPlayer.CanMove; + }, + () => + { + redemptorReviveButton.Timer = 10f; + }, + Redemptor.reviveButton, + ButtonPositions.upperRowRight, + __instance, + abilityInput.keyCode, + buttonText: GetString("ReviveButton") + ); + // Set the default (or settings from the previous game) timers / durations when spawning the buttons initialized = true; setCustomButtonCooldowns(); diff --git a/TheOtherRoles/Buttons/CustomButton.cs b/TheOtherRoles/Buttons/CustomButton.cs index 7d6f9d2f..ae72e6b0 100644 --- a/TheOtherRoles/Buttons/CustomButton.cs +++ b/TheOtherRoles/Buttons/CustomButton.cs @@ -131,9 +131,8 @@ public static void MeetingEndedUpdate() } } - public static void ResetAllCooldowns(float Time = -1, PlayerControl target = null) + public static void ResetAllCooldowns(float Time = -1) { - var player = target ?? PlayerControl.LocalPlayer; var time = Time == -1 ? ModOption.KillCooddown : Time; foreach (var t in buttons) { @@ -146,10 +145,10 @@ public static void ResetAllCooldowns(float Time = -1, PlayerControl target = nul } catch (Exception e) { - Error($"NullReferenceException from MeetingEndedUpdate().HasButton(), if theres only one warning its fine\n{e}", "CustomButton"); + Error($"NullReferenceException from ResetAllCooldowns(), if theres only one warning its fine\n{e}", "CustomButton"); } } - player.killTimer = time; + PlayerControl.LocalPlayer.killTimer = time; } public static void resetKillButton(PlayerControl p, float time = -1) @@ -173,7 +172,6 @@ public static void resetKillButton(PlayerControl p, float time = -1) thiefKillButton.Timer = time == -1 ? thiefKillButton.MaxTimer : time; pavlovsdogsKillButton.Timer = time == -1 ? pavlovsdogsKillButton.MaxTimer : time; } - public void setActive(bool isActive) { if (isActive) diff --git a/TheOtherRoles/CustomCosmetics/CustomColors.cs b/TheOtherRoles/CustomCosmetics/CustomColors.cs index a2049075..90e86978 100644 --- a/TheOtherRoles/CustomCosmetics/CustomColors.cs +++ b/TheOtherRoles/CustomCosmetics/CustomColors.cs @@ -126,8 +126,7 @@ public static void Load() [HarmonyPatch] public static class CustomColorPatches { - [HarmonyPatch(typeof(TranslationController), nameof(TranslationController.GetString), typeof(StringNames), - typeof(Il2CppReferenceArray))] + [HarmonyPatch(typeof(TranslationController), nameof(TranslationController.GetString), typeof(StringNames), typeof(Il2CppReferenceArray))] private class ColorStringPatch { [HarmonyPriority(Priority.Last)] diff --git a/TheOtherRoles/CustomCosmetics/CustomHats/HatsLoader.cs b/TheOtherRoles/CustomCosmetics/CustomHats/HatsLoader.cs index 154d1892..b1f7fe43 100644 --- a/TheOtherRoles/CustomCosmetics/CustomHats/HatsLoader.cs +++ b/TheOtherRoles/CustomCosmetics/CustomHats/HatsLoader.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections; using System.IO; using System.Text.Json; @@ -76,6 +76,7 @@ private IEnumerator DownloadHatsConfig(string path) { Error($"下载帽子配置文件时出错: {www.error}"); isSuccessful = false; + LoadLocalHats(); yield break; } @@ -101,6 +102,7 @@ private IEnumerator DownloadHatsConfig(string path) { isSuccessful = false; Error($"未能保存或加载帽子配置文件: {ex.Message}"); + LoadLocalHats(); } finally { diff --git a/TheOtherRoles/Helper/Helpers.cs b/TheOtherRoles/Helper/Helpers.cs index 7ad029ff..9821d16a 100644 --- a/TheOtherRoles/Helper/Helpers.cs +++ b/TheOtherRoles/Helper/Helpers.cs @@ -450,40 +450,27 @@ public static void turnToImpostor(PlayerControl player) if (player2.Data.Role.IsImpostor && PlayerControl.LocalPlayer.Data.Role.IsImpostor) player.cosmetics.nameText.color = Palette.ImpostorRed; } - - public static void showTargetNameOnButton(PlayerControl target, CustomButton button, string defaultText) +#nullable enable + public static void showTargetNameOnButton(PlayerControl? target, CustomButton button, string defaultText) { if (CustomOptionHolder.showButtonTarget.GetBool()) { - // Should the button show the target name option string text; - // set text to default if camo is on if (Camouflager.camouflageTimer >= 0.1f || isCamoComms) text = defaultText; - // set to default if lights are out else if (isLightsActive) text = defaultText; - // set to default if trickster ability is active else if (Trickster.trickster != null && Trickster.lightsOutTimer > 0f) text = defaultText; - // set to morphed player else if (Morphling.morphling != null && Morphling.morphTarget != null && target == Morphling.morphling && Morphling.morphTimer > 0) text = Morphling.morphTarget.Data.PlayerName; else if (target == Ninja.ninja && Ninja.isInvisable) text = defaultText; else if (target == Swooper.swooper && Swooper.isInvisable) text = defaultText; else if (Jackal.jackal.Any(p => p == target) && Jackal.isInvisable) text = defaultText; - //else if (target == PhantomRole.phantomRole) text = defaultText; - else if (target == null) text = defaultText; // Set text to defaultText if no target - else text = target.Data.PlayerName; // Set text to playername - showTargetNameOnButtonExplicit(null, button, text); - } - } + else text = target == null ? defaultText : target.Data.PlayerName; - public static void showTargetNameOnButtonExplicit(PlayerControl target, CustomButton button, string defaultText) - { - var text = defaultText; - if (target == null) text = defaultText; // Set text to defaultText if no target - else text = target.Data.PlayerName; // Set text to playername - button.actionButton.OverrideText(text); - button.showButtonText = true; + button.actionButton.OverrideText(text); + button.showButtonText = true; + } } +#nullable disable public static void AddUnique(this Il2CppSystem.Collections.Generic.List self, T item) where T : IDisconnectHandler { @@ -742,11 +729,13 @@ public static void refreshRoleDescription(PlayerControl player) } } - internal static string getRoleString(RoleInfo roleInfo) + public static void ModRevive(this PlayerControl target) { - if (roleInfo.roleId == RoleId.Invert) - return cs(roleInfo.color, $"{roleInfo.Name}: {roleInfo.ShortDescription} \n(还有 {Invert.meetings} 次会议醒酒)"); + target?.Revive(); + } + internal static string getRoleString(RoleInfo roleInfo) + { return cs(roleInfo.color, $"{roleInfo.Name}: {roleInfo.ShortDescription}"); } @@ -824,15 +813,9 @@ public static GameObject[] GetChildren(this GameObject ParentObject) return ChildObject; } - public static bool shouldShowGhostInfo() - { - return (PlayerControl.LocalPlayer.Data.IsDead && CanSeeRoleInfo) || - AmongUsClient.Instance.GameState == InnerNetClient.GameStates.Ended; - } - public static bool ZoomButtonActive() { - if (!shouldShowGhostInfo() || InMeeting) return false; + if (!ShowGhostInfo || InMeeting) return false; var (playerCompleted, playerTotal) = TasksHandler.taskInfo(PlayerControl.LocalPlayer.Data); var numberOfLeftTasks = playerTotal - playerCompleted; return numberOfLeftTasks <= 0 || !CustomOptionHolder.finishTasksBeforeHauntingOrZoomingOut.GetBool(); @@ -885,7 +868,7 @@ public static bool IsCN() public static string GithubUrl(this string url) { - return IsCN() && !url.Contains("ghp.ci") ? "https://ghp.ci/" + url : url; + return IsCN() && !url.Contains("ghfast.top") ? "https://ghfast.top/" + url : url; } public static void setSemiTransparent(this PoolablePlayer player, bool value, float alpha = 0.25f) @@ -1220,7 +1203,7 @@ public static MurderAttemptResult checkMuderAttempt(PlayerControl killer, Player if (Survivor.Player != null && Survivor.Player.Contains(target) && Survivor.vestActive) { - CustomButton.ResetAllCooldowns(Survivor.vestResetCooldown, killer); + CustomButton.resetKillButton(killer, Survivor.vestResetCooldown); SoundEffectsManager.play("fail"); return MurderAttemptResult.SuppressKill; } diff --git a/TheOtherRoles/Objects/Trap.cs b/TheOtherRoles/Objects/Trap.cs index 49af5758..150b68ad 100644 --- a/TheOtherRoles/Objects/Trap.cs +++ b/TheOtherRoles/Objects/Trap.cs @@ -114,7 +114,7 @@ public static void triggerTrap(byte playerId, byte trapId) t.triggerable = true; // Add trapped Info into Trapper chat - if (Trapper.trapper.IsAlive() && (PlayerControl.LocalPlayer == Trapper.trapper || shouldShowGhostInfo())) + if (Trapper.trapper.IsAlive() && (PlayerControl.LocalPlayer == Trapper.trapper || ShowGhostInfo)) { foreach (var trap in traps) { diff --git a/TheOtherRoles/Options/CustomOptionHolder.cs b/TheOtherRoles/Options/CustomOptionHolder.cs index a540f58f..18dfd975 100644 --- a/TheOtherRoles/Options/CustomOptionHolder.cs +++ b/TheOtherRoles/Options/CustomOptionHolder.cs @@ -279,6 +279,16 @@ public class CustomOptionHolder //public static CustomOption detectiveReportRoleDuration; //public static CustomOption detectiveReportInfoDuration; + public static CustomOption redemptorSpawnRate; + public static CustomOption redemptorRevelation; + public static CustomOption redemptorRevelationCooldown; + public static CustomOption redemptorRevelationDuration; + public static CustomOption redemptorPrayer; + public static CustomOption redemptorPrayerCooldown; + public static CustomOption redemptorPrayerDuration; + public static CustomOption redemptorReviveDuration; + + public static CustomOption timeMasterSpawnRate; public static CustomOption timeMasterCooldown; public static CustomOption timeMasterRewindTime; @@ -573,10 +583,6 @@ public class CustomOptionHolder public static CustomOption modifierVipQuantity; public static CustomOption modifierVipShowColor; - public static CustomOption modifierInvert; - public static CustomOption modifierInvertQuantity; - public static CustomOption modifierInvertDuration; - public static CustomOption modifierChameleon; public static CustomOption modifierChameleonQuantity; public static CustomOption modifierChameleonHoldDuration; @@ -769,8 +775,8 @@ public static void Load() SaboOptions = Create(300, Types.General, cs(Palette.ImpostorRed, "SaboOptions"), false, null, true); disableSabotage = Create(301, Types.General, cs(Palette.ImpostorRed, "disableSabotage"), false, SaboOptions); deadImpsBlockSabotage = Create(302, Types.General, cs(Palette.ImpostorRed, "deadImpsBlockSabotage"), false, SaboOptions); - enableCamoComms = Create(303, Types.General, cs(Palette.ImpostorRed, "enableCamoComms"), false, SaboOptions, true); - IsReactorDurationSetting = Create(310, Types.General, "IsReactorDurationSetting", false, SaboOptions, true); + enableCamoComms = Create(303, Types.General, cs(Palette.ImpostorRed, "enableCamoComms"), false, SaboOptions); + IsReactorDurationSetting = Create(310, Types.General, "IsReactorDurationSetting", false, SaboOptions); SkeldReactorTimeLimit = Create(311, Types.General, "SkeldReactorTimeLimit", 30f, 0f, 30f, 2.5f, IsReactorDurationSetting); SkeldLifeSuppTimeLimit = Create(312, Types.General, "SkeldLifeSuppTimeLimit", 30f, 0f, 30f, 2.5f, IsReactorDurationSetting); MiraLifeSuppTimeLimit = Create(313, Types.General, "MiraLifeSuppTimeLimit", 30f, 0f, 45f, 2.5f, IsReactorDurationSetting); @@ -1143,6 +1149,10 @@ public static void Load() prosecutorDiesOnIncorrectPros = Create(30371, Types.Crewmate, "prosecutorDiesOnIncorrectPros", true, prosecutorSpawnRate); prosecutorCanCallEmergency = Create(30372, Types.Crewmate, "canCallEmergency", true, prosecutorSpawnRate); + veteranSpawnRate = Create(30220, Types.Crewmate, cs(Veteran.color, "Veteran"), rates, null, true); + veteranCooldown = Create(30221, Types.Crewmate, "veteranCooldown", 25f, 5f, 60f, 2.5f, veteranSpawnRate); + veteranAlertDuration = Create(30222, Types.Crewmate, "veteranAlertDuration", 12.5f, 2.5f, 20f, 0.5f, veteranSpawnRate); + engineerSpawnRate = Create(30120, Types.Crewmate, cs(Engineer.color, "Engineer"), rates, null, true); engineerRemoteFix = Create(30121, Types.Crewmate, "engineerRemoteFix", true, engineerSpawnRate); engineerResetFixAfterMeeting = Create(30122, Types.Crewmate, "engineerResetFixAfterMeeting", true, engineerRemoteFix); @@ -1151,13 +1161,16 @@ public static void Load() engineerHighlightForImpostors = Create(30125, Types.Crewmate, "engineerHighlightForImpostors", true, engineerSpawnRate); engineerHighlightForTeamJackal = Create(30126, Types.Crewmate, "engineerHighlightForTeamJackal", true, engineerSpawnRate); - detectiveSpawnRate = Create(30190, Types.Crewmate, cs(Detective.color, "Detective"), rates, null, true); - detectiveAnonymousFootprints = Create(30191, Types.Crewmate, "detectiveAnonymousFootprints", - ["optionOff", "detectiveAnonymousFootprints1", "optionOn"], detectiveSpawnRate); - detectiveFootprintIntervall = Create(30192, Types.Crewmate, "detectiveFootprintIntervall", 0.25f, 0.25f, 10f, 0.25f, detectiveSpawnRate); - detectiveFootprintDuration = Create(30193, Types.Crewmate, "detectiveFootprintDuration", 12.5f, 0.5f, 30f, 0.5f, detectiveSpawnRate); - detectiveReportNameDuration = Create(30194, Types.Crewmate, "detectiveReportNameDuration", 10f, 0f, 60f, 2.5f, detectiveSpawnRate); - detectiveReportColorDuration = Create(30195, Types.Crewmate, "detectiveReportColorDuration", 30f, 0f, 120f, 2.5f, detectiveSpawnRate); + swapperSpawnRate = Create(30230, Types.Crewmate, cs(Swapper.color, "Swapper"), rates, null, true); + swapperCanCallEmergency = Create(30231, Types.Crewmate, "canCallEmergency", true, swapperSpawnRate); + swapperCanFixSabotages = Create(30232, Types.Crewmate, "swapperCanFixSabotages", true, swapperSpawnRate); + swapperCanOnlySwapOthers = Create(30233, Types.Crewmate, "swapperCanOnlySwapOthers", false, swapperSpawnRate); + swapperSwapsNumber = Create(30234, Types.Crewmate, "swapperSwapsNumber", 1f, 0f, 5f, 1f, swapperSpawnRate); + swapperRechargeTasksNumber = Create(30235, Types.Crewmate, "swapperRechargeTasksNumber", 2f, 1f, 10f, 1f, swapperSpawnRate); + + balancerSpawnRate = Create(30330, Types.Crewmate, cs(Balancer.color, "Balancer"), rates, null, true); + balancerCount = Create(30331, Types.Crewmate, "balancerCount", 1, 1, 3, 1, balancerSpawnRate); + balancerVoteTime = Create(30332, Types.Crewmate, "balancerVoteTime", 60, 15, 150, 5, balancerSpawnRate); medicSpawnRate = Create(30200, Types.Crewmate, cs(Medic.color, "Medic"), rates, null, true); medicShowShielded = Create(30201, Types.Crewmate, "medicShowShielded", @@ -1171,6 +1184,23 @@ public static void Load() medicReportNameDuration = Create(30207, Types.Crewmate, "medicReportNameDuration", 5f, 0f, 60f, 2.5f, medicBreakShield); medicReportColorDuration = Create(30208, Types.Crewmate, "medicReportColorDuration", 30f, 0f, 120f, 2.5f, medicBreakShield); + detectiveSpawnRate = Create(30190, Types.Crewmate, cs(Detective.color, "Detective"), rates, null, true); + detectiveAnonymousFootprints = Create(30191, Types.Crewmate, "detectiveAnonymousFootprints", + ["optionOff", "detectiveAnonymousFootprints1", "optionOn"], detectiveSpawnRate); + detectiveFootprintIntervall = Create(30192, Types.Crewmate, "detectiveFootprintIntervall", 0.25f, 0.25f, 10f, 0.25f, detectiveSpawnRate); + detectiveFootprintDuration = Create(30193, Types.Crewmate, "detectiveFootprintDuration", 12.5f, 0.5f, 30f, 0.5f, detectiveSpawnRate); + detectiveReportNameDuration = Create(30194, Types.Crewmate, "detectiveReportNameDuration", 10f, 0f, 60f, 2.5f, detectiveSpawnRate); + detectiveReportColorDuration = Create(30195, Types.Crewmate, "detectiveReportColorDuration", 30f, 0f, 120f, 2.5f, detectiveSpawnRate); + + redemptorSpawnRate = Create(30390, Types.Crewmate, cs(Redemptor.color, "Redemptor"), rates, null, true); + redemptorRevelation = Create(30391, Types.Crewmate, "redemptorRevelation", false, redemptorSpawnRate); + redemptorRevelationCooldown = Create(30392, Types.Crewmate, "redemptorRevelationCooldown", 25f, 10f, 60f, 2.5f, redemptorRevelation); + redemptorRevelationDuration = Create(30393, Types.Crewmate, "redemptorRevelationDuration", 5f, 1f, 15f, 0.5f, redemptorRevelation); + redemptorPrayer = Create(30394, Types.Crewmate, "redemptorPrayer", false, redemptorSpawnRate); + redemptorPrayerCooldown = Create(30395, Types.Crewmate, "redemptorPrayerCooldown", 25f, 10f, 60f, 2.5f, redemptorPrayer); + redemptorPrayerDuration = Create(30396, Types.Crewmate, "redemptorPrayerDuration", 5f, 2f, 15f, 0.5f, redemptorPrayer); + redemptorReviveDuration = Create(30397, Types.Crewmate, "redemptorReviveDuration", 1.5f, 0f, 15f, 0.5f, redemptorSpawnRate); + bodyGuardSpawnRate = Create(30340, Types.Crewmate, cs(BodyGuard.color, "BodyGuard"), rates, null, true); bodyGuardResetTargetAfterMeeting = Create(30341, Types.Crewmate, "bodyGuardResetTargetAfterMeeting", true, bodyGuardSpawnRate); bodyGuardShowShielded = Create(30343, Types.Crewmate, "bodyGuardShowShielded", true, bodyGuardSpawnRate); @@ -1181,17 +1211,6 @@ public static void Load() timeMasterShieldDuration = Create(30213, Types.Crewmate, "timeMasterShieldDuration", 15f, 2.5f, 20f, 0.5f, timeMasterSpawnRate); timeMasterRewindTime = Create(30212, Types.Crewmate, "timeMasterRewindTime", 9f, 1f, 10f, 1f, timeMasterSpawnRate); - veteranSpawnRate = Create(30220, Types.Crewmate, cs(Veteran.color, "Veteran"), rates, null, true); - veteranCooldown = Create(30221, Types.Crewmate, "veteranCooldown", 25f, 5f, 60f, 2.5f, veteranSpawnRate); - veteranAlertDuration = Create(30222, Types.Crewmate, "veteranAlertDuration", 12.5f, 2.5f, 20f, 0.5f, veteranSpawnRate); - - swapperSpawnRate = Create(30230, Types.Crewmate, cs(Swapper.color, "Swapper"), rates, null, true); - swapperCanCallEmergency = Create(30231, Types.Crewmate, "canCallEmergency", true, swapperSpawnRate); - swapperCanFixSabotages = Create(30232, Types.Crewmate, "swapperCanFixSabotages", true, swapperSpawnRate); - swapperCanOnlySwapOthers = Create(30233, Types.Crewmate, "swapperCanOnlySwapOthers", false, swapperSpawnRate); - swapperSwapsNumber = Create(30234, Types.Crewmate, "swapperSwapsNumber", 1f, 0f, 5f, 1f, swapperSpawnRate); - swapperRechargeTasksNumber = Create(30235, Types.Crewmate, "swapperRechargeTasksNumber", 2f, 1f, 10f, 1f, swapperSpawnRate); - seerSpawnRate = Create(30240, Types.Crewmate, cs(Seer.color, "Seer"), rates, null, true); seerMode = Create(30241, Types.Crewmate, "seerMode", ["seerMode1", "seerMode2", "seerMode3"], seerSpawnRate); seerLimitSoulDuration = Create(30242, Types.Crewmate, "seerLimitSoulDuration", false, seerSpawnRate); @@ -1236,6 +1255,20 @@ public static void Load() infoSleuthInfoType = Create(30381, Types.Crewmate, "infoSleuthInfoType", ["infoSleuthInfoType1", "infoSleuthInfoType2", "infoSleuthInfoType3"], infoSleuthSpawnRate); + mediumSpawnRate = Create(30310, Types.Crewmate, cs(Medium.color, "Medium"), rates, null, true); + mediumCooldown = Create(30311, Types.Crewmate, "mediumCooldown", 7.5f, 2.5f, 120f, 2.5f, mediumSpawnRate); + mediumDuration = Create(30312, Types.Crewmate, "mediumDuration", 0.5f, 0f, 15f, 0.5f, mediumSpawnRate); + mediumOneTimeUse = Create(30313, Types.Crewmate, "mediumOneTimeUse", false, mediumSpawnRate); + mediumChanceAdditionalInfo = Create(30314, Types.Crewmate, "mediumChanceAdditionalInfo", rates, mediumSpawnRate); + + trapperSpawnRate = Create(30350, Types.Crewmate, cs(Trapper.color, "Trapper"), rates, null, true); + trapperCooldown = Create(30351, Types.Crewmate, "trapperCooldown", 20f, 5f, 120f, 2.5f, trapperSpawnRate); + trapperMaxCharges = Create(30352, Types.Crewmate, "trapperMaxCharges", 5f, 1f, 15f, 1f, trapperSpawnRate); + trapperRechargeTasksNumber = Create(30353, Types.Crewmate, "trapperRechargeTasksNumber", 2f, 1f, 15f, 1f, trapperSpawnRate); + trapperTrapNeededTriggerToReveal = Create(30354, Types.Crewmate, "trapperTrapNeededTriggerToReveal", 2f, 1f, 10f, 1f, trapperSpawnRate); + trapperInfoType = Create(30356, Types.Crewmate, "trapperInfoType", ["Role", "trapperInfoType2", "Name"], trapperSpawnRate); + trapperTrapDuration = Create(30357, Types.Crewmate, "trapperTrapDuration", 5f, 1f, 15f, 0.5f, trapperSpawnRate); + spySpawnRate = Create(30280, Types.Crewmate, cs(Spy.color, "Spy"), rates, null, true); spyCanDieToSheriff = Create(30281, Types.Crewmate, "spyCanDieToSheriff", false, spySpawnRate); spyImpostorsCanKillAnyone = Create(30282, Types.Crewmate, "spyImpostorsCanKillAnyone", true, spySpawnRate); @@ -1259,30 +1292,12 @@ public static void Load() securityGuardCamRechargeTasksNumber = Create(30307, Types.Crewmate, "securityGuardCamRechargeTasksNumber", 3f, 1f, 10f, 1f, securityGuardSpawnRate); securityGuardNoMove = Create(30308, Types.Crewmate, "securityGuardNoMove", true, securityGuardSpawnRate); - mediumSpawnRate = Create(30310, Types.Crewmate, cs(Medium.color, "Medium"), rates, null, true); - mediumCooldown = Create(30311, Types.Crewmate, "mediumCooldown", 7.5f, 2.5f, 120f, 2.5f, mediumSpawnRate); - mediumDuration = Create(30312, Types.Crewmate, "mediumDuration", 0.5f, 0f, 15f, 0.5f, mediumSpawnRate); - mediumOneTimeUse = Create(30313, Types.Crewmate, "mediumOneTimeUse", false, mediumSpawnRate); - mediumChanceAdditionalInfo = Create(30314, Types.Crewmate, "mediumChanceAdditionalInfo", rates, mediumSpawnRate); - jumperSpawnRate = Create(30320, Types.Crewmate, cs(Jumper.color, "Jumper"), rates, null, true); jumperJumpTime = Create(30321, Types.Crewmate, "jumperJumpTime", 10f, 0f, 60f, 2.5f, jumperSpawnRate); jumperMaxCharges = Create(30325, Types.Crewmate, "jumperMaxCharges", 3, 0, 10, 1, jumperSpawnRate); jumperResetPlaceAfterMeeting = Create(30323, Types.Crewmate, "jumperResetPlaceAfterMeeting", false, jumperSpawnRate); jumperChargesGainOnMeeting = Create(30324, Types.Crewmate, "jumperChargesGainOnMeeting", 2, 0, 10, 1, jumperSpawnRate); - balancerSpawnRate = Create(30330, Types.Crewmate, cs(Balancer.color, "Balancer"), rates, null, true); - balancerCount = Create(30331, Types.Crewmate, "balancerCount", 1, 1, 3, 1, balancerSpawnRate); - balancerVoteTime = Create(30332, Types.Crewmate, "balancerVoteTime", 60, 15, 150, 5, balancerSpawnRate); - - trapperSpawnRate = Create(30350, Types.Crewmate, cs(Trapper.color, "Trapper"), rates, null, true); - trapperCooldown = Create(30351, Types.Crewmate, "trapperCooldown", 20f, 5f, 120f, 2.5f, trapperSpawnRate); - trapperMaxCharges = Create(30352, Types.Crewmate, "trapperMaxCharges", 5f, 1f, 15f, 1f, trapperSpawnRate); - trapperRechargeTasksNumber = Create(30353, Types.Crewmate, "trapperRechargeTasksNumber", 2f, 1f, 15f, 1f, trapperSpawnRate); - trapperTrapNeededTriggerToReveal = Create(30354, Types.Crewmate, "trapperTrapNeededTriggerToReveal", 2f, 1f, 10f, 1f, trapperSpawnRate); - trapperInfoType = Create(30356, Types.Crewmate, "trapperInfoType", ["Role", "trapperInfoType2", "Name"], trapperSpawnRate); - trapperTrapDuration = Create(30357, Types.Crewmate, "trapperTrapDuration", 5f, 1f, 15f, 0.5f, trapperSpawnRate); - //-------------------------- Modifier (40000 - 49999) -------------------------- // modifiersAreHidden = Create(40000, Types.Modifier, cs(Color.yellow, "modifiersAreHidden"), false, null, true); @@ -1380,10 +1395,6 @@ public static void Load() modifierVipQuantity = Create(40311, Types.Modifier, cs(Color.yellow, "modifierVipQuantity"), ratesCount, modifierVip); modifierVipShowColor = Create(40312, Types.Modifier, "modifierVipShowColor", true, modifierVip); - modifierInvert = Create(40320, Types.Modifier, cs(Color.yellow, "Invert"), rates, null, true); - modifierInvertQuantity = Create(40321, Types.Modifier, cs(Color.yellow, "modifierInvertQuantity"), ratesCount, modifierInvert); - modifierInvertDuration = Create(40322, Types.Modifier, "modifierInvertDuration", 2f, 1f, 15f, 1f, modifierInvert); - modifierChameleon = Create(40330, Types.Modifier, cs(Color.yellow, "Chameleon"), rates, null, true); modifierChameleonQuantity = Create(40331, Types.Modifier, cs(Color.yellow, "modifierChameleonQuantity"), ratesCount, modifierChameleon); modifierChameleonHoldDuration = Create(40332, Types.Modifier, "modifierChameleonHoldDuration", 3f, 1f, 10f, 0.5f, modifierChameleon); diff --git a/TheOtherRoles/Patches/ExileControllerPatch.cs b/TheOtherRoles/Patches/ExileControllerPatch.cs index 614564d8..41098d69 100644 --- a/TheOtherRoles/Patches/ExileControllerPatch.cs +++ b/TheOtherRoles/Patches/ExileControllerPatch.cs @@ -535,9 +535,6 @@ static string getTeam(PlayerControl player) } } - // Invert add meeting - if (Invert.meetings > 0) Invert.meetings--; - Chameleon.lastMoved.Clear(); foreach (var trap in Trap.traps) trap.triggerable = false; @@ -594,8 +591,8 @@ public static bool Prefix(AirshipExileController __instance) } } -[HarmonyPatch(typeof(SpawnInMinigame), - nameof(SpawnInMinigame.Close))] // Set position of AntiTp players AFTER they have selected a spawn. +// Set position of AntiTp players AFTER they have selected a spawn. +[HarmonyPatch(typeof(SpawnInMinigame), nameof(SpawnInMinigame.Close))] internal class AirshipSpawnInPatch { private static void Postfix() diff --git a/TheOtherRoles/Patches/IntroPatch.cs b/TheOtherRoles/Patches/IntroPatch.cs index 58593b58..fdef1d9f 100644 --- a/TheOtherRoles/Patches/IntroPatch.cs +++ b/TheOtherRoles/Patches/IntroPatch.cs @@ -123,7 +123,6 @@ public static void Prefix(IntroCutscene __instance) } ModOption.firstKillName = ""; - } public static void Postfix(IntroCutscene __instance) diff --git a/TheOtherRoles/Patches/MeetingHudPatch.cs b/TheOtherRoles/Patches/MeetingHudPatch.cs index c4149053..92f23c4d 100644 --- a/TheOtherRoles/Patches/MeetingHudPatch.cs +++ b/TheOtherRoles/Patches/MeetingHudPatch.cs @@ -521,7 +521,7 @@ private class MeetingHudBloopAVoteIconPatch public static bool Prefix(MeetingHud __instance, GameData.PlayerInfo voterPlayer, int index, Transform parent) { var spriteRenderer = Object.Instantiate(__instance.PlayerVotePrefab); - var showVoteColors = !GameManager.Instance.LogicOptions.GetAnonymousVotes() || shouldShowGhostInfo() || + var showVoteColors = !GameManager.Instance.LogicOptions.GetAnonymousVotes() || ShowGhostInfo || (Prosecutor.prosecutor != null && Prosecutor.prosecutor == PlayerControl.LocalPlayer && Prosecutor.canSeeVoteColors && TasksHandler.taskInfo(PlayerControl.LocalPlayer.Data).Item1 >= Prosecutor.tasksNeededToSeeVoteColors) || @@ -793,7 +793,7 @@ public static void Prefix(PlayerControl __instance, [HarmonyArgument(0)] GameDat // Add Portal info into Portalmaker Chat: if (Portalmaker.portalmaker != null && - (PlayerControl.LocalPlayer == Portalmaker.portalmaker || shouldShowGhostInfo()) && + (PlayerControl.LocalPlayer == Portalmaker.portalmaker || ShowGhostInfo) && !Portalmaker.portalmaker.Data.IsDead) if (Portal.teleportedPlayers.Count > 0) { diff --git a/TheOtherRoles/Patches/PlayerControlPatch.cs b/TheOtherRoles/Patches/PlayerControlPatch.cs index 145698ef..7ac86854 100644 --- a/TheOtherRoles/Patches/PlayerControlPatch.cs +++ b/TheOtherRoles/Patches/PlayerControlPatch.cs @@ -84,17 +84,17 @@ private static void setBasePlayerOutlines() Medic.shielded != null && ((target == Medic.shielded && !isMorphedMorphling) || (isMorphedMorphling && Morphling.morphTarget == Medic.shielded))) { - hasVisibleShield = Medic.showShielded == 0 || shouldShowGhostInfo() // Everyone or Ghost info + hasVisibleShield = Medic.showShielded == 0 || ShowGhostInfo // Everyone or Ghost info || (Medic.showShielded == 1 && (local == Medic.shielded || local == Medic.medic)) // Shielded + Medic || (Medic.showShielded == 2 && local == Medic.medic); // Medic only // Make shield invisible till after the next meeting if the option is set (the medic can already see the shield) hasVisibleShield = hasVisibleShield && (Medic.meetingAfterShielding || !Medic.showShieldAfterMeeting || - local == Medic.medic || shouldShowGhostInfo()); + local == Medic.medic || ShowGhostInfo); } if (BodyGuard.guarded.IsAlive() && target == BodyGuard.guarded && - (shouldShowGhostInfo() || local == BodyGuard.bodyguard || (local == BodyGuard.guarded && BodyGuard.showShielded))) + (ShowGhostInfo || local == BodyGuard.bodyguard || (local == BodyGuard.guarded && BodyGuard.showShielded))) { hasVisibleShield = true; color = new Color32(205, 150, 100, byte.MaxValue); @@ -500,7 +500,7 @@ private static void trackerUpdate() return; } - if (Tracker.tracked != null && !Tracker.tracker.Data.IsDead) + if (Tracker.tracked != null && Tracker.tracker.IsAlive()) { Tracker.timeUntilUpdate -= Time.fixedDeltaTime; @@ -570,6 +570,77 @@ private static void trackerUpdate() } } + private static void redemptorUpdate() + { + if ((Redemptor.Player == null && Redemptor.RevivedPlayer == null) || Redemptor.arrow == null) return; + + Redemptor.arrow.arrow?.SetActive(false); + var local = PlayerControl.LocalPlayer; + if (Redemptor.Player.IsAlive() && Redemptor.Reviving && local.IsAlive() && local.isKiller()) + { + Redemptor.arrow ??= new Arrow(Redemptor.color); + if (Redemptor.arrow != null) + { + Redemptor.arrow.arrow.SetActive(true); + Redemptor.arrow.Update(Redemptor.Player.transform.position); + } + } + else if (Redemptor.RevivedPlayer.IsAlive() && local.IsAlive() && local.isKiller()) + { + Redemptor.arrow ??= new Arrow(Redemptor.color); + if (Redemptor.arrow != null) + { + Redemptor.arrow.arrow.SetActive(true); + Redemptor.arrow.Update(Redemptor.RevivedPlayer.transform.position); + } + } + else if (local == Redemptor.Player && Redemptor.Revelating) + { + var array = Object.FindObjectsOfType()?.FirstOrDefault(x => !(playerById(x.ParentId)?.Data?.Disconnected == true)); + if (array != null) + { + Redemptor.arrow ??= new Arrow(Redemptor.color); + Redemptor.arrow.arrow.SetActive(true); + Redemptor.arrow.Update(array.transform.position); + } + } + else + { + Redemptor.arrow.arrow?.Destroy(); + } + } + + private static void redemptorTextUpdate() + { + if (Redemptor.Player == null && Redemptor.RevivedPlayer == null) return; + var local = PlayerControl.LocalPlayer; + var enable = (Redemptor.RevivedPlayer.IsAlive() || Redemptor.Reviving) && ((local.IsAlive() && local.isKiller()) || ShowGhostInfo); + if (enable) + { + if (Redemptor.text == null) + { + Redemptor.text = Object.Instantiate(FastDestroyableSingleton.Instance.KillButton.cooldownTimerText, FastDestroyableSingleton.Instance.transform); + Redemptor.text.enableWordWrapping = false; + Redemptor.text.transform.localScale = Vector3.one * 0.75f; + Redemptor.text.transform.localPosition += new Vector3(0f, 1.8f, -69f); + Redemptor.text.gameObject.SetActive(true); + } + else if (Redemptor.Reviving && Redemptor.Player.IsAlive()) + { + Redemptor.text.text = $"牧师正在祈祷!"; + } + else if (Redemptor.RevivedPlayer.IsAlive()) + { + Redemptor.text.text = $"有玩家已被复活!"; + } + else + { + Redemptor.text?.Destroy(); + } + } + else if (Redemptor.text != null) Redemptor.text.Destroy(); + } + private static void MiniSizeUpdate(PlayerControl p) { if (Mini.mini == null) return; @@ -1412,6 +1483,9 @@ public static void Postfix(PlayerControl __instance) engineerUpdate(); // Tracker trackerUpdate(); + // Redemptor + redemptorUpdate(); + redemptorTextUpdate(); // Pavlovsdogs pavlovsownerUpdate(); // Check for deputy promotion on Sheriff disconnect @@ -1551,7 +1625,11 @@ internal class PlayerControlRevivePatch { public static void Postfix(PlayerControl __instance) { - if (PlayerControl.LocalPlayer == __instance) CanSeeRoleInfo = false; + if (PlayerControl.LocalPlayer == __instance) + { + CustomButton.ResetAllCooldowns(-1); + CanSeeRoleInfo = false; + } if (__instance == Specter.Player) Specter.Player.clearAllTasks(); @@ -1568,13 +1646,12 @@ public static void Postfix(PlayerControl __instance) Akujo.otherLover(__instance)?.Revive(); } - CustomButton.ResetAllCooldowns(-1, __instance); - DeadBody[] array = Object.FindObjectsOfType(); for (var i = 0; i < array.Length; i++) { if (GameData.Instance.GetPlayerById(array[i].ParentId).PlayerId == __instance.PlayerId) { + __instance.NetTransform.RpcSnapTo(array[i].transform.position); Object.Destroy(array[i].gameObject); break; } @@ -1832,7 +1909,7 @@ public static void HandleMurderPostfix(PlayerControl __instance, PlayerControl t // Seer show flash and add dead player position if (Seer.seer != null && - (PlayerControl.LocalPlayer == Seer.seer || shouldShowGhostInfo()) && + (PlayerControl.LocalPlayer == Seer.seer || ShowGhostInfo) && !Seer.seer.Data.IsDead && Seer.seer != target && Seer.mode <= 1) showFlash(new Color(42f / 255f, 187f / 255f, 245f / 255f), message: GetString("seerShowInfoText")); Seer.deadBodyPositions?.Add(target.transform.position); diff --git a/TheOtherRoles/Patches/PlayerPhysicsPatch.cs b/TheOtherRoles/Patches/PlayerPhysicsPatch.cs index 7eef03d2..869b93b9 100644 --- a/TheOtherRoles/Patches/PlayerPhysicsPatch.cs +++ b/TheOtherRoles/Patches/PlayerPhysicsPatch.cs @@ -9,8 +9,6 @@ public static void Postfix(PlayerPhysics __instance) { if (InGame && __instance && __instance.AmOwner && PlayerControl.LocalPlayer.IsAlive() && __instance.myPlayer.CanMove) { - if (Invert.invert.Any(x => x.PlayerId == PlayerControl.LocalPlayer.PlayerId) && Invert.meetings > 0) - __instance.body.velocity *= -1; if (Flash.flash != null && Flash.flash.Any(x => x.PlayerId == PlayerControl.LocalPlayer.PlayerId)) __instance.body.velocity *= Flash.speed; if (Giant.giant != null && Giant.giant == PlayerControl.LocalPlayer && !MushroomSabotageActive && !isCamoComms && Camouflager.camouflageTimer <= 0f) diff --git a/TheOtherRoles/Patches/RoleAssignmentPatch.cs b/TheOtherRoles/Patches/RoleAssignmentPatch.cs index dea178c5..01ee79d6 100644 --- a/TheOtherRoles/Patches/RoleAssignmentPatch.cs +++ b/TheOtherRoles/Patches/RoleAssignmentPatch.cs @@ -191,6 +191,7 @@ public static RoleAssignmentData getRoleAssignmentData() crewSettings.Add((byte)RoleId.Snitch, CustomOptionHolder.snitchSpawnRate.GetSelection()); crewSettings.Add((byte)RoleId.Medium, CustomOptionHolder.mediumSpawnRate.GetSelection()); crewSettings.Add((byte)RoleId.Prophet, CustomOptionHolder.prophetSpawnRate.GetSelection()); + crewSettings.Add((byte)RoleId.Redemptor, CustomOptionHolder.redemptorSpawnRate.GetSelection()); if (!isGuesserGamemode) crewSettings.Add((byte)RoleId.Vigilante, CustomOptionHolder.guesserSpawnRate.GetSelection()); crewSettings.Add((byte)RoleId.Trapper, CustomOptionHolder.trapperSpawnRate.GetSelection()); @@ -536,7 +537,6 @@ private static void assignModifiers() RoleId.Multitasker, RoleId.ButtonBarry, RoleId.Vip, - RoleId.Invert, RoleId.Indomitable, RoleId.Tunneler, RoleId.Slueth, @@ -1043,10 +1043,6 @@ private static int getSelectionForRoleId(RoleId roleId, bool multiplyQuantity = selection = CustomOptionHolder.modifierVip.GetSelection(); if (multiplyQuantity) selection *= CustomOptionHolder.modifierVipQuantity.GetQuantity(); break; - case RoleId.Invert: - selection = CustomOptionHolder.modifierInvert.GetSelection(); - if (multiplyQuantity) selection *= CustomOptionHolder.modifierInvertQuantity.GetQuantity(); - break; case RoleId.Chameleon: selection = CustomOptionHolder.modifierChameleon.GetSelection(); if (multiplyQuantity) selection *= CustomOptionHolder.modifierChameleonQuantity.GetQuantity(); diff --git a/TheOtherRoles/Patches/UpdatePatch.cs b/TheOtherRoles/Patches/UpdatePatch.cs index c92a93ca..20c7b55b 100644 --- a/TheOtherRoles/Patches/UpdatePatch.cs +++ b/TheOtherRoles/Patches/UpdatePatch.cs @@ -132,7 +132,7 @@ private static void setNameColors() } if (Grenadier.Player != null && ((localPlayer.isImpostor() && Grenadier.indicatorsMode) - || localPlayer == Grenadier.Player || shouldShowGhostInfo())) + || localPlayer == Grenadier.Player || ShowGhostInfo)) { foreach (var p in Grenadier.controls) { @@ -273,7 +273,7 @@ private static void setNameTags() } // Parttimer - if (PartTimer.partTimer != null && PartTimer.target != null && (local == PartTimer.partTimer || local == PartTimer.target || shouldShowGhostInfo())) + if (PartTimer.partTimer != null && PartTimer.target != null && (local == PartTimer.partTimer || local == PartTimer.target || ShowGhostInfo)) { var suffix = cs(PartTimer.color, " ★"); PartTimer.partTimer.cosmetics.nameText.text += suffix; @@ -286,7 +286,7 @@ private static void setNameTags() } var localIsArsonist = Arsonist.arsonist != null && Arsonist.dousedPlayers != null && Arsonist.arsonist == local; - var localIsDead = Arsonist.arsonist != null && Arsonist.dousedPlayers != null && shouldShowGhostInfo(); + var localIsDead = Arsonist.arsonist != null && Arsonist.dousedPlayers != null && ShowGhostInfo; if (localIsArsonist || localIsDead) { var suffix = cs(Arsonist.color, " ♨"); diff --git a/TheOtherRoles/RPC.cs b/TheOtherRoles/RPC.cs index 18178eae..1b7c8c02 100644 --- a/TheOtherRoles/RPC.cs +++ b/TheOtherRoles/RPC.cs @@ -127,6 +127,8 @@ public enum CustomRPC WitnessSetTarget, WolfLordkilled, PelicanKill, + RedemptorRevive, + RedemptorPrayer, TrapperKill, PlaceTrap, @@ -466,6 +468,9 @@ public static void setRole(byte roleId, byte playerId) case RoleId.Gambler: Gambler.gambler = player; break; + case RoleId.Redemptor: + Redemptor.Player = player; + break; } } if (AmongUsClient.Instance.AmHost && Helpers.roleCanUseVents(player) && !player.Data.Role.IsImpostor) @@ -557,9 +562,6 @@ public static void setModifier(byte modifierId, byte playerId, byte flag) case RoleId.Vip: Vip.vip.Add(player); break; - case RoleId.Invert: - Invert.invert.Add(player); - break; case RoleId.Indomitable: Indomitable.indomitable = player; break; @@ -838,7 +840,7 @@ public static void shieldedMurderAttempt(byte blank) !Medic.showShieldAfterMeeting); // Dont show attempt, if shield is not shown yet var isMedicAndShow = Medic.medic == PlayerControl.LocalPlayer && Medic.showAttemptToMedic; - if (isShieldedAndShow || isMedicAndShow || shouldShowGhostInfo()) + if (isShieldedAndShow || isMedicAndShow || ShowGhostInfo) showFlash(Palette.ImpostorRed, 1.5f, GetString("medicShowAttemptText")); } @@ -1125,6 +1127,7 @@ public static void erasePlayerRoles(byte playerId, bool ignoreModifier = true) if (player == Hacker.hacker) Hacker.clearAndReload(); if (player == BodyGuard.bodyguard) BodyGuard.clearAndReload(); if (player == Balancer.balancer) Balancer.clearAndReload(); + if (player == Redemptor.Player) Redemptor.ClearAndReload(); if (player == Tracker.tracker) Tracker.clearAndReload(); if (player == Snitch.snitch) Snitch.clearAndReload(); if (player == Swapper.swapper) Swapper.clearAndReload(); @@ -1213,7 +1216,6 @@ public static void erasePlayerRoles(byte playerId, bool ignoreModifier = true) Flash.flash.RemoveAll(x => x.PlayerId == player.PlayerId); Multitasker.multitasker.RemoveAll(x => x.PlayerId == player.PlayerId); Vip.vip.RemoveAll(x => x.PlayerId == player.PlayerId); - Invert.invert.RemoveAll(x => x.PlayerId == player.PlayerId); Chameleon.chameleon.RemoveAll(x => x.PlayerId == player.PlayerId); if (player == Lovers.lover1 || player == Lovers.lover2) Lovers.clearAndReload(); // The whole Lover couple is being erased if (player == Specoality.specoality) Specoality.clearAndReload(); @@ -1931,7 +1933,7 @@ public static void receiveGhostInfo(byte senderId, MessageReader reader) break; case GhostInfoTypes.GhostChat: string chat = reader.ReadString(); - if (shouldShowGhostInfo()) FastDestroyableSingleton.Instance.Chat.AddChat(sender, chat); + if (ShowGhostInfo) FastDestroyableSingleton.Instance.Chat.AddChat(sender, chat); break; case GhostInfoTypes.BlankUsed: Pursuer.blankedList.Remove(sender); @@ -2474,6 +2476,14 @@ private static bool Prefix([HarmonyArgument(0)] byte callId, [HarmonyArgument(1) RPCProcedure.balancerBalance(reader.ReadByte(), reader.ReadByte(), reader.ReadByte()); break; + case CustomRPC.RedemptorRevive: + Redemptor.RevivePlayer(reader.ReadByte()); + break; + + case CustomRPC.RedemptorPrayer: + Redemptor.RedemptorPrayer(reader.ReadByte()); + break; + case CustomRPC.RevivePlayer: RPCProcedure.RevivePlayer(reader.ReadByte()); break; diff --git a/TheOtherRoles/Resources/Revive.png b/TheOtherRoles/Resources/Revive.png new file mode 100644 index 0000000000000000000000000000000000000000..9f6dede4790d0a97d4a319cafacaa8983a3571cb GIT binary patch literal 23078 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 FV1nYLgP#BZ literal 0 HcmV?d00001 diff --git a/TheOtherRoles/Resources/stringData.json b/TheOtherRoles/Resources/stringData.json index 0a7edb2f..0e053bd8 100644 --- a/TheOtherRoles/Resources/stringData.json +++ b/TheOtherRoles/Resources/stringData.json @@ -2217,6 +2217,27 @@ "0": "Trap Duration", "13": "陷阱定身时间" }, + "redemptorRevelation": { + "13": "启示" + }, + "redemptorRevelationCooldown": { + "13": "启示冷却" + }, + "redemptorRevelationDuration": { + "13": "箭头持续时间" + }, + "redemptorPrayer": { + "13": "祈祷" + }, + "redemptorPrayerCooldown": { + "13": "祈祷冷却" + }, + "redemptorPrayerDuration": { + "13": "祈祷持续时间" + }, + "redemptorReviveDuration": { + "13": "普通复活持续时间" + }, "modifiersAreHidden": { "0": "Hide After Death Modifiers", "13": "隐藏死亡触发的附加能力" @@ -3132,10 +3153,18 @@ "0": "FLASH", "13": "闪光弹" }, - "SpecterButton": { + "ReviveButton": { "0": "Revive", "13": "复活" }, + "RedemptorRevelation": { + "0": "Revelation", + "13": " 启示" + }, + "RedemptorPrayer": { + "0": "Prayer", + "13": "祈祷" + }, "GuessserGMInfo": { "0": " (Guesser)", "13": " (赌怪)" @@ -3168,6 +3197,12 @@ "0": "WolfLord", "13": "狼之主" }, + "WolfLordIntroDesc": { + "13": "恶者亦可称王" + }, + "WolfLordShortDesc": { + "13": "在会议中强制击杀一人" + }, "Morphling": { "0": "Morphling", "13": "化形者" @@ -3868,6 +3903,16 @@ "BalancerShortDesc": { "13": "审判他人罪孽的轻重" }, + "Redemptor": { + "0": "Redemptor", + "13": "牧师" + }, + "RedemptorIntroDesc": { + "13": "为亡灵祈祷吧" + }, + "RedemptorShortDesc": { + "13": "给予重生的机会" + }, "Disperser": { "0": "Disperser", "13": "分散者" @@ -4270,6 +4315,9 @@ "GamblerFullDesc": { "13": "每次击杀,下一次击杀冷却会随机变化。\n注:赌徒无法获得绝境者" }, + "GrenadierFullDesc": { + "13": "可以使用技能闪瞎附近的非红狼玩家,被闪到的玩家名称会变黑。\n队友按照房间设置也可以得知哪些玩家被影响。" + }, "SurvivorFullDesc": { "13": "存活到游戏结束即可跟随其它阵营胜利\n以房间设置为准,幸存者可能拥有防弹衣和空包弹技能。\n防弹衣在开启期间,无法被击杀,杀手击杀时会进入较短的冷却。\n空包弹可以让目标下一次无法正常击杀。" }, @@ -4414,6 +4462,9 @@ "BalancerFullDesc": { "13": "可以在会议中选择两位玩家挂上天平,所有玩家只能在这两位玩家中投票。\n\n在特殊会议中,如果平票则同时驱逐两位玩家。\n\n如果其中一位玩家死亡(例如被赌死),则直接跳过投票环节直接驱逐另一位被挂上天平的玩家。可以在会议中选择两位玩家挂上天平,所有玩家只能在这两位玩家中投票。\n\n在特殊会议中,如果平票则同时驱逐两位玩家。\n\n如果其中一位玩家死亡(例如被赌死),则直接跳过投票环节直接驱逐另一位被挂上天平的玩家。" }, + "RedemptorFullDesc": { + "13": "牧师可以寻找尸体并复活该玩家,且复活时会向所有坏人通知复活位置。\n该玩家复活后,所有坏人会有箭头指向该玩家。\n\n牧师拥有三个技能(房主可以禁用前两个技能):\n启示:使用后会随机指向场上的一个尸体,没有尸体则没有箭头。\n\n祈祷:需要在尸体旁使用,祈祷需要持续一定的时间,且会向所有坏人\n通知牧师的位置,祈祷完成后会将该尸体所属的玩家复活。\n如果祈祷被打断则复活失败!每回合只能使用一次。\n\n殉道:需要在尸体旁使用:使用技能后会自杀,技能持续时间(一般很短)\n结束后完成后会将该尸体所属的玩家复活。\n复活过程中如果进入会议则复活失败!\n" + }, "LoverFullDesc": { "13": "执子之手,与子共生。\n恋人如果有任何一方被击杀,另一方也会一起死亡。\n当恋人中有一方并非船员时并且恋人存活,\n则不会计算该玩家的任务进度。\n\n剩余3名玩家时并且两名玩家为恋人时,\n恋人将直接独自获胜。" }, diff --git a/TheOtherRoles/Roles/Crewmate/Jumper.cs b/TheOtherRoles/Roles/Crewmate/Jumper.cs index dc0b58c4..50736220 100644 --- a/TheOtherRoles/Roles/Crewmate/Jumper.cs +++ b/TheOtherRoles/Roles/Crewmate/Jumper.cs @@ -1,4 +1,4 @@ -using UnityEngine; +using UnityEngine; namespace TheOtherRoles.Roles.Crewmate; diff --git a/TheOtherRoles/Roles/Crewmate/Medic.cs b/TheOtherRoles/Roles/Crewmate/Medic.cs index 31f6a85c..39828320 100644 --- a/TheOtherRoles/Roles/Crewmate/Medic.cs +++ b/TheOtherRoles/Roles/Crewmate/Medic.cs @@ -41,7 +41,7 @@ public static bool shieldVisible(PlayerControl target) if (shielded != null && ((target == shielded && !isMorphedMorphling) || (isMorphedMorphling && Morphling.morphTarget == shielded))) { // Everyone or Ghost info - hasVisibleShield = showShielded == 0 || shouldShowGhostInfo() + hasVisibleShield = showShielded == 0 || ShowGhostInfo || (showShielded == 1 && (PlayerControl.LocalPlayer == shielded || PlayerControl.LocalPlayer == medic)) // Shielded + Medic || (showShielded == 2 && PlayerControl.LocalPlayer == medic); @@ -50,7 +50,7 @@ public static bool shieldVisible(PlayerControl target) hasVisibleShield = hasVisibleShield && (meetingAfterShielding || !showShieldAfterMeeting || PlayerControl.LocalPlayer == medic - || shouldShowGhostInfo()); + || ShowGhostInfo); } return hasVisibleShield; } diff --git a/TheOtherRoles/Roles/Crewmate/Redemptor.cs b/TheOtherRoles/Roles/Crewmate/Redemptor.cs new file mode 100644 index 00000000..3fcf70ef --- /dev/null +++ b/TheOtherRoles/Roles/Crewmate/Redemptor.cs @@ -0,0 +1,85 @@ +using Reactor.Utilities.Extensions; +using TheOtherRoles.Objects; +using TMPro; +using UnityEngine; + +namespace TheOtherRoles.Roles.Crewmate; +public class Redemptor +{ + public static PlayerControl Player; + public static Color color = new Color32(255, 216, 70, byte.MaxValue); + public static PlayerControl target; + public static Arrow arrow; + public static bool Revelating; + public static bool Reviving; + public static PlayerControl RevivedPlayer; + + public static bool revelation; + public static float revelationCooldown; + public static float revelationDuration; + public static bool prayer; + public static float prayerCooldown; + public static float prayerDuration; + public static float reviveDuration; + + public static Sprite reviveButton = new ResourceSprite("Revive.png"); + public static TextMeshPro text; + + public static void RevivePlayer(byte targetId) + { + var player = playerById(targetId); + player?.Revive(); + RevivedPlayer = player; + target = null; + } + + /// + /// off = 0, on > 0 + /// + public static void RedemptorPrayer(byte status) + { + Reviving = status != 0; + Message($"{Reviving}"); + } + + public static void ClearAndReload() + { + Player = null; + target = null; + RevivedPlayer = null; + arrow?.arrow?.Destroy(); + Reviving = false; + Revelating = false; + if (text != null) Object.Destroy(text); + text = null; + revelation = CustomOptionHolder.redemptorRevelation.GetBool(); + revelationCooldown = CustomOptionHolder.redemptorRevelationCooldown.GetFloat(); + revelationDuration = CustomOptionHolder.redemptorRevelationDuration.GetFloat(); + prayer = CustomOptionHolder.redemptorPrayer.GetBool(); + prayerCooldown = CustomOptionHolder.redemptorPrayerCooldown.GetFloat(); + prayerDuration = CustomOptionHolder.redemptorPrayerDuration.GetFloat(); + reviveDuration = CustomOptionHolder.redemptorReviveDuration.GetFloat(); + } + + [HarmonyPatch] + public static class Redemptor_Patch + { + [HarmonyPatch(typeof(MeetingHud), nameof(MeetingHud.Start)), HarmonyPostfix] + public static void MeetingStartPatch() + { + if (Player == null) return; + if (Reviving) + { + Reviving = false; + target = null; + RevivedPlayer = null; + } + if (Revelating) + { + target = null; + Revelating = false; + } + RevivedPlayer = null; + } + } +} diff --git a/TheOtherRoles/Roles/Ghost/Specter.cs b/TheOtherRoles/Roles/Ghost/Specter.cs index 4366cc21..07c190d8 100644 --- a/TheOtherRoles/Roles/Ghost/Specter.cs +++ b/TheOtherRoles/Roles/Ghost/Specter.cs @@ -255,55 +255,55 @@ public static void TakeRole(byte targetId) if (Sheriff.formerDeputy == target) Sheriff.formerDeputy = local; break; case RoleId.Deputy: - if (Amnisiac.resetRole) Sheriff.Reload(); + if (resetRole) Sheriff.Reload(); Sheriff.Deputy = local; break; case RoleId.BodyGuard: - if (Amnisiac.resetRole) BodyGuard.clearAndReload(); + if (resetRole) BodyGuard.clearAndReload(); BodyGuard.bodyguard = local; break; case RoleId.Jumper: - if (Amnisiac.resetRole) Jumper.clearAndReload(); + if (resetRole) Jumper.clearAndReload(); Jumper.jumper = local; break; case RoleId.Detective: - if (Amnisiac.resetRole) Detective.clearAndReload(); + if (resetRole) Detective.clearAndReload(); Detective.detective = local; break; case RoleId.TimeMaster: - if (Amnisiac.resetRole) TimeMaster.clearAndReload(); + if (resetRole) TimeMaster.clearAndReload(); TimeMaster.timeMaster = local; break; case RoleId.Veteran: - if (Amnisiac.resetRole) Veteran.clearAndReload(); + if (resetRole) Veteran.clearAndReload(); Veteran.veteran = local; break; case RoleId.Medic: - if (Amnisiac.resetRole) Medic.clearAndReload(); + if (resetRole) Medic.clearAndReload(); Medic.medic = local; break; case RoleId.Swapper: - if (Amnisiac.resetRole) Swapper.clearAndReload(); + if (resetRole) Swapper.clearAndReload(); Swapper.swapper = local; break; case RoleId.Seer: - if (Amnisiac.resetRole) Seer.clearAndReload(); + if (resetRole) Seer.clearAndReload(); Seer.seer = local; break; case RoleId.Hacker: - if (Amnisiac.resetRole) Hacker.clearAndReload(); + if (resetRole) Hacker.clearAndReload(); Hacker.hacker = local; break; case RoleId.Tracker: - if (Amnisiac.resetRole) Tracker.clearAndReload(); + if (resetRole) Tracker.clearAndReload(); Tracker.tracker = local; break; case RoleId.Snitch: - if (Amnisiac.resetRole) Snitch.clearAndReload(); + if (resetRole) Snitch.clearAndReload(); Snitch.snitch = local; break; case RoleId.Prophet: - if (Amnisiac.resetRole) Prophet.clearAndReload(); + if (resetRole) Prophet.clearAndReload(); Prophet.prophet = local; break; case RoleId.InfoSleuth: @@ -311,25 +311,29 @@ public static void TakeRole(byte targetId) InfoSleuth.infoSleuth = local; break; case RoleId.Spy: - if (Amnisiac.resetRole) Spy.clearAndReload(); + if (resetRole) Spy.clearAndReload(); Spy.spy = local; break; case RoleId.SecurityGuard: - if (Amnisiac.resetRole) SecurityGuard.clearAndReload(); + if (resetRole) SecurityGuard.clearAndReload(); SecurityGuard.securityGuard = local; break; case RoleId.Medium: - if (Amnisiac.resetRole) Medium.clearAndReload(); + if (resetRole) Medium.clearAndReload(); Medium.medium = local; break; case RoleId.Trapper: - if (Amnisiac.resetRole) Trapper.clearAndReload(); + if (resetRole) Trapper.clearAndReload(); Trapper.trapper = local; break; case RoleId.Balancer: - if (Amnisiac.resetRole) Balancer.clearAndReload(); + if (resetRole) Balancer.clearAndReload(); Balancer.balancer = local; break; + case RoleId.Redemptor: + if (resetRole) Redemptor.ClearAndReload(); + Redemptor.Player = local; + break; } } diff --git a/TheOtherRoles/Roles/Impostor/Mimic.cs b/TheOtherRoles/Roles/Impostor/Mimic.cs index 4b8c3581..81fb6903 100644 --- a/TheOtherRoles/Roles/Impostor/Mimic.cs +++ b/TheOtherRoles/Roles/Impostor/Mimic.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; using TheOtherRoles.Buttons; using UnityEngine; @@ -173,6 +173,13 @@ public static void MimicRole(byte targetId) prophetButton.PositionOffset = CustomButton.ButtonPositions.upperRowLeft; hasMimic = true; break; + case RoleId.Redemptor: + if (Amnisiac.resetRole) Redemptor.ClearAndReload(); + Redemptor.Player = mimic; + redemptorReviveButton.PositionOffset = CustomButton.ButtonPositions.lowerRowFarLeft; + redemptorPrayerButton.PositionOffset = CustomButton.ButtonPositions.upperRowFarLeft; + hasMimic = true; + break; } } diff --git a/TheOtherRoles/Roles/Modifier/Invert.cs b/TheOtherRoles/Roles/Modifier/Invert.cs deleted file mode 100644 index 41a8477f..00000000 --- a/TheOtherRoles/Roles/Modifier/Invert.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System.Collections.Generic; - -namespace TheOtherRoles.Roles.Modifier; - -public static class Invert -{ - public static List invert = new(); - public static int meetings = 3; - - public static void clearAndReload() - { - invert.Clear(); - meetings = (int)CustomOptionHolder.modifierInvertDuration.GetFloat(); - } -} diff --git a/TheOtherRoles/Roles/Modifier/Shifter.cs b/TheOtherRoles/Roles/Modifier/Shifter.cs index b2f9316b..acbf7127 100644 --- a/TheOtherRoles/Roles/Modifier/Shifter.cs +++ b/TheOtherRoles/Roles/Modifier/Shifter.cs @@ -169,6 +169,11 @@ public static void shiftRole(PlayerControl player1, PlayerControl player2, bool if (repeat) shiftRole(player2, player1, false); Prosecutor.prosecutor = player1; } + else if (Redemptor.Player != null && Redemptor.Player == player2) + { + if (repeat) shiftRole(player2, player1, false); + Redemptor.Player = player1; + } else if (Amnisiac.Player != null && Amnisiac.Player.Any(x => x.PlayerId == player2.PlayerId)) { if (repeat) shiftRole(player2, player1, false); diff --git a/TheOtherRoles/Roles/Neutral/Amnisiac.cs b/TheOtherRoles/Roles/Neutral/Amnisiac.cs index 07b95af6..3fa83973 100644 --- a/TheOtherRoles/Roles/Neutral/Amnisiac.cs +++ b/TheOtherRoles/Roles/Neutral/Amnisiac.cs @@ -378,6 +378,10 @@ public static void TakeRole(byte targetId, byte playerId) if (resetRole) Balancer.clearAndReload(); Balancer.balancer = local; break; + case RoleId.Redemptor: + if (resetRole) Redemptor.ClearAndReload(); + Redemptor.Player = local; + break; } Player.RemoveAll(x => x.PlayerId == local.PlayerId); foreach (var arrow in localArrows) diff --git a/TheOtherRoles/Roles/RoleHelpers.cs b/TheOtherRoles/Roles/RoleHelpers.cs index c7ea0ccb..6df5b40c 100644 --- a/TheOtherRoles/Roles/RoleHelpers.cs +++ b/TheOtherRoles/Roles/RoleHelpers.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using InnerNet; using MonoMod.Utils; using TheOtherRoles.Utilities; @@ -84,6 +85,7 @@ public enum RoleId Medium, Trapper, Balancer, + Redemptor, // Modifier --- Lover, @@ -108,7 +110,6 @@ public enum RoleId Indomitable, Slueth, Cursed, - Invert, Blind, Watcher, Radar, @@ -136,6 +137,9 @@ public static bool CanSeeRoleInfo } } + public static bool ShowGhostInfo => + (PlayerControl.LocalPlayer.Data.IsDead && CanSeeRoleInfo) || AmongUsClient.Instance.GameState == InnerNetClient.GameStates.Ended; + public static Dictionary blockedRolePairings = new(); public static Dictionary> GhostRoles = new(); public static List GhostPlayer = new(); @@ -198,6 +202,7 @@ public static void ResetRoleSelection() { RoleId.Trapper, CustomOptionHolder.trapperSpawnRate.GetSelection() }, { RoleId.Veteran, CustomOptionHolder.veteranSpawnRate.GetSelection() }, { RoleId.Vigilante, CustomOptionHolder.guesserSpawnRate.GetSelection() }, + { RoleId.Redemptor, CustomOptionHolder.redemptorSpawnRate.GetSelection() }, { RoleId.WolfLord, CustomOptionHolder.wolfLordSpawnRate.GetSelection() }, { RoleId.Blackmailer, CustomOptionHolder.blackmailerSpawnRate.GetSelection() }, @@ -260,7 +265,6 @@ public static void ResetRoleSelection() { RoleId.Flash, CustomOptionHolder.modifierFlash.GetSelection() }, { RoleId.Giant, CustomOptionHolder.modifierGiant.GetSelection() }, { RoleId.Indomitable, CustomOptionHolder.modifierIndomitable.GetSelection() }, - { RoleId.Invert, CustomOptionHolder.modifierInvert.GetSelection() }, { RoleId.LastImpostor, CustomOptionHolder.modifierLastImpostor.GetSelection() }, { RoleId.Mini, CustomOptionHolder.modifierMini.GetSelection() }, { RoleId.Multitasker, CustomOptionHolder.modifierMultitasker.GetSelection() }, @@ -360,6 +364,7 @@ public static void clearAndReloadRoles() Witness.ClearAndReload(); WolfLord.ClearAndReload(); Pelican.clearAndReload(); + Redemptor.ClearAndReload(); // Modifier Assassin.clearAndReload(); @@ -383,7 +388,6 @@ public static void clearAndReloadRoles() Slueth.clearAndReload(); Cursed.clearAndReload(); Vip.clearAndReload(); - Invert.clearAndReload(); Chameleon.clearAndReload(); ButtonBarry.clearAndReload(); LastImpostor.clearAndReload(); @@ -404,9 +408,9 @@ public static void clearAndReloadRoles() [HarmonyPatch(typeof(RoleManager), nameof(RoleManager.AssignRoleOnDeath))] public static class AssignRoleOnDeathPatch { - public static bool Prefix([HarmonyArgument(0)] PlayerControl player) + public static bool Prefix([HarmonyArgument(0)] PlayerControl player, [HarmonyArgument(1)] bool specialRolesAllowed) { - if (player.IsAlive() || player == null) return false; + if (player.IsAlive() || player == null || !specialRolesAllowed) return false; return true; } diff --git a/TheOtherRoles/Roles/RoleInfo.cs b/TheOtherRoles/Roles/RoleInfo.cs index 0485225b..45073d94 100644 --- a/TheOtherRoles/Roles/RoleInfo.cs +++ b/TheOtherRoles/Roles/RoleInfo.cs @@ -94,6 +94,7 @@ public class RoleInfo(string name, Color color, RoleId roleId, RoleType roleType public static RoleInfo medium = new("Medium", Medium.color, RoleId.Medium, RoleType.Crewmate); public static RoleInfo trapper = new("Trapper", Trapper.color, RoleId.Trapper, RoleType.Crewmate); public static RoleInfo balancer = new("Balancer", Balancer.color, RoleId.Balancer, RoleType.Crewmate); + public static RoleInfo redemptor = new("Redemptor", Redemptor.color, RoleId.Redemptor, RoleType.Crewmate); // Modifier public static RoleInfo assassin = new("Assassin", Assassin.color, RoleId.Assassin, RoleType.Modifier); @@ -118,7 +119,6 @@ public class RoleInfo(string name, Color color, RoleId roleId, RoleType roleType public static RoleInfo indomitable = new("Indomitable", Color.yellow, RoleId.Indomitable, RoleType.Modifier); public static RoleInfo slueth = new("Slueth", Color.yellow, RoleId.Slueth, RoleType.Modifier, true); public static RoleInfo cursed = new("Cursed", Color.yellow, RoleId.Cursed, RoleType.Modifier, true); - public static RoleInfo invert = new("Invert", Color.yellow, RoleId.Invert, RoleType.Modifier); public static RoleInfo blind = new("Blind", Color.yellow, RoleId.Blind, RoleType.Modifier); public static RoleInfo watcher = new("Watcher", Color.yellow, RoleId.Watcher, RoleType.Modifier, true); public static RoleInfo radar = new("Radar", Color.yellow, RoleId.Radar, RoleType.Modifier, true); @@ -206,6 +206,7 @@ public class RoleInfo(string name, Color color, RoleId roleId, RoleType roleType medium, trapper, balancer, + redemptor, lover, assassin, @@ -229,7 +230,6 @@ public class RoleInfo(string name, Color color, RoleId roleId, RoleType roleType indomitable, slueth, cursed, - invert, blind, watcher, radar, @@ -281,7 +281,6 @@ public static List getRoleInfoForPlayer(PlayerControl p, bool showModi if (p == Poucher.poucher && Poucher.spawnModifier) infos.Add(poucherModifier); if (p == Giant.giant) infos.Add(giant); if (p == Vortox.Player) infos.Add(vortox); - if (Invert.invert.Any(x => x.PlayerId == p.PlayerId)) infos.Add(invert); if (Chameleon.chameleon.Any(x => x.PlayerId == p.PlayerId)) infos.Add(chameleon); if (p == Shifter.shifter) infos.Add(shifter); if (p == LastImpostor.lastImpostor) infos.Add(lastImpostor); @@ -355,6 +354,7 @@ public static List getRoleInfoForPlayer(PlayerControl p, bool showModi if (p == Akujo.akujo) infos.Add(akujo); if (p == Jackal.Sidekick) infos.Add(sidekick); if (p == Pavlovsdogs.pavlovsowner) infos.Add(pavlovsowner); + if (p == Redemptor.Player) infos.Add(redemptor); if (Jackal.jackal.Any(x => x != null && x.PlayerId == p.PlayerId)) infos.Add(jackal); if (Amnisiac.Player.Any(x => x.PlayerId == p.PlayerId)) infos.Add(amnisiac); if (Pavlovsdogs.pavlovsdogs.Any(x => x.PlayerId == p.PlayerId)) infos.Add(pavlovsdogs); @@ -406,14 +406,14 @@ public static string GetRolesString(PlayerControl p, bool useColors, bool showMo if (showGhostInfo && p != null) { - if (p == Shifter.shifter && (PlayerControl.LocalPlayer == Shifter.shifter || shouldShowGhostInfo()) && Shifter.futureShift != null) + if (p == Shifter.shifter && (PlayerControl.LocalPlayer == Shifter.shifter || ShowGhostInfo) && Shifter.futureShift != null) roleName += cs(Color.yellow, " ← " + Shifter.futureShift.Data.PlayerName); - if (p == Vulture.vulture && (PlayerControl.LocalPlayer == Vulture.vulture || shouldShowGhostInfo())) + if (p == Vulture.vulture && (PlayerControl.LocalPlayer == Vulture.vulture || ShowGhostInfo)) roleName += cs(Vulture.color, string.Format("roleInfoRemaining".Translate(), Vulture.vultureNumberToWin - Vulture.eatenBodies)); - if (p == Witness.Player && (PlayerControl.LocalPlayer == Witness.Player || shouldShowGhostInfo())) + if (p == Witness.Player && (PlayerControl.LocalPlayer == Witness.Player || ShowGhostInfo)) roleName += cs(Witness.color, string.Format("roleInfoRemaining".Translate(), Witness.exileToWin - Witness.exiledCount)); - if (shouldShowGhostInfo()) + if (ShowGhostInfo) { if (Eraser.futureErased.Contains(p)) roleName = cs(Color.gray, "(被抹除) ") + roleName; diff --git a/TheOtherRoles/TheOtherRoles.csproj b/TheOtherRoles/TheOtherRoles.csproj index bbcdd760..50f48d1a 100644 --- a/TheOtherRoles/TheOtherRoles.csproj +++ b/TheOtherRoles/TheOtherRoles.csproj @@ -1,7 +1,7 @@  net6.0 - 1.1.2.3 + 1.1.2.5 TheOtherUs mxyx-club latest