From 86039d4611767577c5b0c6d66cd076930c356162 Mon Sep 17 00:00:00 2001 From: Sollace Date: Wed, 28 Dec 2022 19:54:44 +0100 Subject: [PATCH] Wings of icarus, bat pony, and pegasus wings now render on the pony model --- .../unicopia/client/minelittlepony/Main.java | 21 ++-- .../client/minelittlepony/MineLPDelegate.java | 5 + .../client/minelittlepony/WingsGear.java | 91 ++++++++++++++++++ .../unicopia/entity/player/Pony.java | 2 +- .../textures/models/wings/bat_pony.png | Bin 0 -> 7546 bytes .../models/wings/icarus_corrupted_pony.png | Bin 0 -> 7299 bytes .../textures/models/wings/icarus_pony.png | Bin 0 -> 6846 bytes .../textures/models/wings/pegasus_pony.png | Bin 0 -> 7780 bytes 8 files changed, 112 insertions(+), 7 deletions(-) create mode 100644 src/main/java/com/minelittlepony/unicopia/client/minelittlepony/WingsGear.java create mode 100644 src/main/resources/assets/unicopia/textures/models/wings/bat_pony.png create mode 100644 src/main/resources/assets/unicopia/textures/models/wings/icarus_corrupted_pony.png create mode 100644 src/main/resources/assets/unicopia/textures/models/wings/icarus_pony.png create mode 100644 src/main/resources/assets/unicopia/textures/models/wings/pegasus_pony.png diff --git a/src/main/java/com/minelittlepony/unicopia/client/minelittlepony/Main.java b/src/main/java/com/minelittlepony/unicopia/client/minelittlepony/Main.java index 2ca146f2..8c4c32be 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/minelittlepony/Main.java +++ b/src/main/java/com/minelittlepony/unicopia/client/minelittlepony/Main.java @@ -2,11 +2,10 @@ package com.minelittlepony.unicopia.client.minelittlepony; import java.util.Optional; -import com.minelittlepony.api.model.IModel; -import com.minelittlepony.api.model.ModelAttributes; +import com.minelittlepony.api.model.*; import com.minelittlepony.api.model.fabric.PonyModelPrepareCallback; import com.minelittlepony.api.model.gear.IGear; -import com.minelittlepony.client.MineLittlePony; +import com.minelittlepony.api.pony.IPony; import com.minelittlepony.client.render.LevitatingItemRenderer; import com.minelittlepony.unicopia.*; import com.minelittlepony.unicopia.client.render.PlayerPoser.Animation; @@ -33,7 +32,8 @@ public class Main extends MineLPDelegate implements ClientModInitializer { PonyModelPrepareCallback.EVENT.register(this::onPonyModelPrepared); IGear.register(() -> new BangleGear(TrinketsDelegate.MAINHAND)); IGear.register(() -> new BangleGear(TrinketsDelegate.OFFHAND)); - IGear.register(() -> new HeldEntityGear()); + IGear.register(HeldEntityGear::new); + IGear.register(WingsGear::new); IGear.register(AmuletGear::new); IGear.register(GlassesGear::new); } @@ -48,7 +48,7 @@ public class Main extends MineLPDelegate implements ClientModInitializer { Pony pony = Pony.of((PlayerEntity)entity); if (pony.getMotion().isFlying()) { - model.getAttributes().wingAngle = MathHelper.clamp(pony.getMotion().getWingAngle() / 3 - (float)Math.PI * 0.7F, -3, 0); + model.getAttributes().wingAngle = MathHelper.clamp(pony.getMotion().getWingAngle() / 3F - (float)Math.PI * 0.4F, -2, 0); Vec3d motion = entity.getVelocity(); double zMotion = Math.sqrt(motion.x * motion.x + motion.z * motion.z); @@ -71,7 +71,16 @@ public class Main extends MineLPDelegate implements ClientModInitializer { @Override public Race getPlayerPonyRace(PlayerEntity player) { - switch (MineLittlePony.getInstance().getManager().getPony(player).race()) { + return toUnicopiaRace(IPony.getManager().getPony(player).race()); + } + + @Override + public Race getRace(Entity entity) { + return IPony.getManager().getPony(entity).map(IPony::race).map(Main::toUnicopiaRace).orElse(Race.HUMAN); + } + + private static Race toUnicopiaRace(com.minelittlepony.api.pony.meta.Race race) { + switch (race) { case ALICORN: return Race.ALICORN; case CHANGELING: diff --git a/src/main/java/com/minelittlepony/unicopia/client/minelittlepony/MineLPDelegate.java b/src/main/java/com/minelittlepony/unicopia/client/minelittlepony/MineLPDelegate.java index e8ab9245..3acacde8 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/minelittlepony/MineLPDelegate.java +++ b/src/main/java/com/minelittlepony/unicopia/client/minelittlepony/MineLPDelegate.java @@ -7,6 +7,7 @@ import com.minelittlepony.unicopia.Race; import net.minecraft.client.MinecraftClient; import net.minecraft.client.render.VertexConsumer; import net.minecraft.client.render.VertexConsumerProvider; +import net.minecraft.entity.Entity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.util.Identifier; @@ -28,6 +29,10 @@ public class MineLPDelegate { return Race.HUMAN; } + public Race getRace(Entity entity) { + return Race.HUMAN; + } + public Optional getItemBuffer(VertexConsumerProvider vertexConsumers, Identifier texture) { return Optional.empty(); } diff --git a/src/main/java/com/minelittlepony/unicopia/client/minelittlepony/WingsGear.java b/src/main/java/com/minelittlepony/unicopia/client/minelittlepony/WingsGear.java new file mode 100644 index 00000000..1b574ae8 --- /dev/null +++ b/src/main/java/com/minelittlepony/unicopia/client/minelittlepony/WingsGear.java @@ -0,0 +1,91 @@ +package com.minelittlepony.unicopia.client.minelittlepony; + +import java.util.UUID; + +import com.minelittlepony.api.model.*; +import com.minelittlepony.api.model.gear.IGear; +import com.minelittlepony.api.pony.*; +import com.minelittlepony.client.model.ClientPonyModel; +import com.minelittlepony.client.model.ModelType; +import com.minelittlepony.client.model.entity.race.PegasusModel; +import com.minelittlepony.unicopia.Race; +import com.minelittlepony.unicopia.Unicopia; +import com.minelittlepony.unicopia.entity.*; +import com.minelittlepony.unicopia.entity.player.Pony; + +import net.minecraft.client.model.ModelPart; +import net.minecraft.client.render.VertexConsumer; +import net.minecraft.client.util.math.MatrixStack; +import net.minecraft.entity.Entity; +import net.minecraft.entity.LivingEntity; +import net.minecraft.util.Identifier; + +class WingsGear implements IGear { + private static final Identifier ICARUS_WINGS = Unicopia.id("textures/models/wings/icarus_pony.png"); + private static final Identifier ICARUS_WINGS_CORRUPTED = Unicopia.id("textures/models/wings/icarus_corrupted_pony.png"); + private static final Identifier PEGASUS_WINGS = Unicopia.id("textures/models/wings/pegasus_pony.png"); + private static final Identifier BAT_WINGS = Unicopia.id("textures/models/wings/bat_pony.png"); + + private final Model model = ModelType.PEGASUS.steveKey().createModel(Model::new); + + @Override + public boolean canRender(IModel model, Entity entity) { + return entity instanceof LivingEntity l + && !MineLPDelegate.getInstance().getRace(entity).canFly() + && (AmuletSelectors.PEGASUS_AMULET.test(l) || Equine.of(entity).filter(this::canRender).isPresent()); + } + + protected boolean canRender(Equine equine) { + if (equine instanceof Pony pony) { + return pony.getObservedSpecies().canInteractWithClouds(); + } + return equine.getSpecies().canFly(); + } + + @Override + public BodyPart getGearLocation() { + return BodyPart.BODY; + } + + @Override + public Identifier getTexture(T entity, Context context) { + Living living = Living.living(entity); + if (living == null) { + return DefaultPonySkinHelper.STEVE; + } + + if (AmuletSelectors.PEGASUS_AMULET.test(living.asEntity())) { + return entity.world.getDimension().ultrawarm() ? ICARUS_WINGS_CORRUPTED : ICARUS_WINGS; + } + + Race race = living instanceof Pony pony ? pony.getObservedSpecies() : living.getSpecies(); + if (race.canInteractWithClouds()) { + return PEGASUS_WINGS; + } + + return BAT_WINGS; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + @Override + public void pose(IModel model, Entity entity, boolean rainboom, UUID interpolatorId, float move, float swing, float bodySwing, float ticks) { + ((ClientPonyModel)model).copyAttributes(this.model); + this.model.getWings().setRotationAndAngles(rainboom, interpolatorId, move, swing, bodySwing, ticks); + } + + @Override + public void render(MatrixStack stack, VertexConsumer consumer, int light, int overlay, float red, float green, float blue, float alpha, UUID interpolatorId) { + model.getWings().renderPart(stack, consumer, light, overlay, red, green, blue, alpha, interpolatorId); + } + + static class Model extends PegasusModel { + public Model(ModelPart tree) { + super(tree, false); + } + + @Override + public boolean canFly() { + return true; + } + } +} diff --git a/src/main/java/com/minelittlepony/unicopia/entity/player/Pony.java b/src/main/java/com/minelittlepony/unicopia/entity/player/Pony.java index 1800cd12..aae889cf 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/player/Pony.java +++ b/src/main/java/com/minelittlepony/unicopia/entity/player/Pony.java @@ -310,7 +310,7 @@ public class Pony extends Living implements Copyable, Update } } } - + magicExhaustion = ManaConsumptionUtil.burnFood(entity, magicExhaustion); powers.tick(); diff --git a/src/main/resources/assets/unicopia/textures/models/wings/bat_pony.png b/src/main/resources/assets/unicopia/textures/models/wings/bat_pony.png new file mode 100644 index 0000000000000000000000000000000000000000..e92910a8fde564f25fbfe2dfc44a2bf3107c02e7 GIT binary patch literal 7546 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 QQ2+n{07*qoM6N<$f}UA{DF6Tf literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/unicopia/textures/models/wings/icarus_corrupted_pony.png b/src/main/resources/assets/unicopia/textures/models/wings/icarus_corrupted_pony.png new file mode 100644 index 0000000000000000000000000000000000000000..41750275e9efbcd940f9bae80f704ff76922b480 GIT binary patch literal 7299 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/unicopia/textures/models/wings/pegasus_pony.png b/src/main/resources/assets/unicopia/textures/models/wings/pegasus_pony.png new file mode 100644 index 0000000000000000000000000000000000000000..d7e12e6b657dbba8db61358388b305b5270f89c9 GIT binary patch literal 7780 zcmV-q9-HBbP) zaB^>EX>4U6ba`-PAZ2)IW&i+q+O3*dmK!^gME|jhUP537mV@z}-a#+FuK{ExQ_`z? zH7F%984P0Z!Q9LdX8qs)Zu39ETbPp}NK|<@x@zUa$3ewtf%%v#)FR z>n>}4eDMCw^7E(bj#tmCzZbve^BTy1d?9_k+CN>l@t5oVYZ~`sMddw^ zQ@;Q0Jr?df-j9_@E*d2<}?xiRt@?w9j?4SYgq-)^OGp}X#T=&`4sd+D{eLHLX?;z%QpGU{k%y6I<_ai*DPnRT{h7ooJmiYu+W z%BrhvLT&pUcHC*_U3T5=%WKE0=7-OI_uN1Bntgc<-2ds{pL4A-v7IPbDy3w za@~K!b4ITFgXezt+aJ6(h3`Xo_yBB5LmBn)q~CUH+mXxids**ye=;8GeT}?R*j!n$ z?^^rLX>KkhZ+qUcEmEYgj}|dw&M5$4__rqC?T&Sooih{9mGh`8<{H`9T4QA`FSOFb zoT2Xyu#LIr#CYA?Jz~{8Ypxl4ZD}!e%G>9id+#~6V8d2?I4ijs3@3n`xO;GH6Evh8lGSB+<3g-)J;CD7MEp~8td1K<* zapq#o*~>_Nj@@Q9Iev^gdM>^BS$Fchuk#Gr-6Uf|v?}k8@QmlpV@oAw(wud9Yr<-- zcMMckYHj607_8*Zx@1QNN_>#R+E2ub^5IVFtSrip`E8>)*YeY~)qQBhH*T&iuaqkJ zS;5a0c9tvSCc368{qaQ+#r_HPRv4-KZHP32D3)gsXLy(3B77UaM?ar76oQOv@n}2l z=#^xfitTl+IeH9kn2#HK@FOnbpJ256+Gmojg)pq^*>Tl)9P(6bF}cC|K8YXv;>_we zdn$%Ym}##};FE;JQQ8z=7ClL;IHv1?C6VrZ$U+&9jB=xhd|5_eG;(N*P&&yz>SJ5X zeiUp+!sV)LqV8wKw!&%VS1gebIG%LJOQy!N*s_>^6Z}08xV`V<6OJWTiGtPR3VBH zFLOl!tZisF|0-Y8fm80S)37vy5)`O|}=9QBH0$)?f0})_0!9)pNw4 z)F~TJ#)eHs5=W|UePSUn$O}UiwGPwF@7tOj3(_Zfgd5H(Us=e7;gTVC0UrXC&?f-_ z5wezK$_>NBb}}A5+^Hjr8aJ)}leJH5Gug_d30w1DIc*bAdUDzYjj5d8QBVdd@i*E^ zg8T7c`JyzYw#Qc*6WJi{&12FipFHN}Q5tKdrF-g+5W%y{g9zM+-9}R_ru2}QO6g$k z3KjR=U+YBWv<;~Yd{|d{<{a*~6vXFHj-eF^oSSj^M5xTyVGcyKe6O^?k1IUyS~AE+ z)l}l=N#NFK*as+o4<>|ce{-<%F_gU{E$ov7UtqQa1CqO#mr2x9Ln(+0Am~|1s2bK) zB=^P0K;ZU+T`|ulu%q4>VJ_fTPpBU}#TLZ(RQ?|4S0obiTkT{y3WV1Aki+CZW@a@B zi^JFs$P;ciG7ecGRwzLg-vgJnu+ZA|r4Z%U;~Fk25~=@94qj#kzaG{?EZ$93Sj(*S zf<#aOzGy^_vUuR6!%}?W4Rh&}Y-?B*HnM@4hkvRk!eOGs_LK$_T4gikA!7|}LMjY4 z(1165aB}5I6#AG)G~9h=zvT~Ry4!PLXWz>2RG6|qkZ6Um5L3IZS4*&}O=lmbvMaKu zDn4U5gbN}j?NqMfW@@(w?M zJ%XL^3xBB?iAOM4m7@-CC2R`p4FuMw2LFLwX&ss=lMpEnm5&k{@fEe>lreok6+2Lu zecJ&A4AnZ@iV@CXfDB(_5;y7fVPwqFFNQM zp%F)_-vmE{jhaWW4HKa^zyyMwe6CZ4mk{$BQ6+CF|1s)@G@Ui^zrp^obt=k(GVq-| zv%)!?EQ@0TISe-_d6WaH=`5j>E~04g{ji9DW@2g)nmB?|xlxI^+|NiPsvp0}ta_a?hO~I*DWOp$0#sC@ z?NqkeVj5faRn4x7uQU?0@_|g*lbPwt2=L%=N*L>j0z_FGP_jTF@7o+j2J_w6Sm85N zM;76>h1=<{C(sovU=Ap3Jlhhh*zg4)t{<53Z0%?RBLCtJkc(DqK|~NGkwOf>bCMCo3q6!Oj8`e8ZIZKCi)vlM9~TVQK(#} zSgz7ig;7yuh@=*8;cVez`^0OoP}ME;>i+!T>pCiu!sD?2-u_ujOC1+<9wNLeD9KL) z%a=$YD2Rc4Wr{!qxCeOlxfkGip-wwcwdTdod{~k)z>3ulXfB1y5;j)eXHf`qY@QF7 zCzKk9gXc$Vwh0BBP+!_j!@0xLr?G$WL4JILs9K>f^e)E>c%apxYF!8(a3>rEpV@7$ z0t%LRlIk2iDQwAivLBlc#T(dz1KA-UKpa%%0>M5H5A|8!>gMoJP!IkZn-AsQ+eBmT zy%Or_rp8+qulXqX0n|rD2(E{M#0{z#keQ^4kySCkXA~AZ(n7D0U?=y#Lq?&ih#_9S zL&^O703F;MoL6yMa;9di`VKA8Wno2$7jT>C;@9}*%HXe%yd!nurU3ozEazh}e;vN& zxA?WJC_;)9N<*v&p&r8y<#Hr8DIPnQ1}Id?C2d$?wUReZ>T$c#$M^ydGD=_oRd;pS zFELN~*{82CUd@A=PKb()^eJET1H&DA1ipI)uU zCCGJeQ4sk|%2I*0dZ*M%Z*Zg64+A6W_9nDiVU%Vrz?*a)h`Lt#S{v?7@A$Ls+%B`l7dtrWK1_?rp5@TKSv?x z5X-6Qc4aQA@D#;d6o^~K@fwWnRYh>9gr4BQY&9TTwFN)bG}O}3Z3TS3`H|f7PL6-{ zYX0=W27}J8yE;JaK|2ba>@Lu>k2g=TDoa)3(XfQ~^^k2~zw#bFnX3?)C~?bXJ*L6b zHA&})@F|}$b%as1fn2NVjZCtg0vX|moqIcFAT&T}ZZME91$=zg7>lUzglM(6mTOh& z2~P}$HZTebI7Qp5Y3K8pSGi>|do?551bKoRm{$VeQ1sK#^vF)j_EF8fP2(b_ty%{{)-wQDt5-Ps$JsiMefpGY>a!N69$#CdflnFNt#twUFsobwnN$ z-KvFksl_60d^?y6;TyAgP&+6cq$rFixQw(&%=V*+K*V~;SH(K9)-n?dF3bC{8k$5) zw8gZn?!&yDo$=)6zFHF2L*@qv)<~+^P(el6cv})wA;|sNRugO)iM(yO#T`#l>!e~P zTvKgJxRY9ztCu3WMyhyw=j3e$ap3(yeW+-*a~bx5{w1;$j@I{=0)}(P*e-q0WZmDl z=Z$@wYj@1x-HdEaT^bt`yNw@jV!;|P3>e3hjB#q*t$bT&M9<-BFntetQGTKkEMyzu z8zY^*Cjodnj4IYpbOfskwLNW5q*BXHZMx*)5~MS=RJz6+#HI#E9sy?!>`|F=51&rW z4#TW3dWq-hugOgq50vW7kcYQo`C+(QBbS^8|BY%q!=#5@u}ZP$bA^!I7&%+oAK0u z9O^5~n`2@*+#r>teMDlocm#0)mkp^vrR=p|jR7v4-V+KUyo%$i6*$2l!o(c`mQ{!z^Nu=W|?(nmy*P?JhVa*aluftgLG z2MhT@2IkY-r;tNN@zr7e50zI3(!vs`q$KM-;OM9CD=bluBU0hw5l|F85}bqty(sf` zf=_0yCSIu^aH9SR!Os{uLC^bE_+pk0pTaBa2wR49QgLcpU_^Ct_-oW49LN9?z&cmh zFMJokRRBf%02eyCsFKX7? zlnFkL&y97R)G1U8M0KjkMTwWnh9}#5AT;icI-w})n5)07?kg1nMXIAUO3jiMp$>uv zB*A)tl>w~^sw|&7F{_f8J5MJgpF3~Ue4RmEECf6T?E4h@M{pY@Pt55Qo<1RvAWnDs zgzq-x&&DFy`O%B)KYEeo&tLhMdXd^oGGADE(gLXb0ibXE+=?L(4%|>PX$pz`006;OhkqR%mtQG8(~ocs*i0eWsni(|H{Mg{-x#Vz%2xs9gVXM*&NH9^xJ9;4n5c3kok?6H5OkX zpYfyOw|UMWRZ%FU+uk$39@(15a!X|#g7oR7O4>j-5vHvRWQC!VqTY|9J&^!0sZ}!i z#cG*!;KFE6sYi8xn>{-HCSmnUkkmpp*JzO+i6V|Y;Mu9atA=o8`~V#0zzKGwR31CS zFXiSIBI*$7W?t3eJR5M2iOS>i>%8vqdaB`&ca?Lg)UMvxZ@CZ=$G;?l1EoQyiWU@3 zJSb|6^v4ZqefSEBl6N*yjdEF#K~fRB5O34za6hLZ5nrehQ%5=iDJ329eep5KKRf1I zQ_Z?|dq6Mw6#Dh>@$W}7(Ax@kinLjQa}2 z6Q%X5q@D2$W<>kFTMk`h{qLx%-(Jl>xdFw~DM81`>Lji!R4JA*K}MQT5XYx(bgGaa zVgMx0KKvoByhNcc@a`&u)tWS zb{D>TuM-s<1cSN#VJ;edj_FjnrVgIt*}`}_0ytM;mQ&;Ixre`+P#U)nF7y$yYCC*r z1PbKCbU55XB&>X=qxeqBoD_yt`=qCBpnKmn4Md6}m)se}8%qi>wyloiN|O3bs^RB= z#05Yl%Mw>xwc(B5I+gRUMnfCs_lWrSUd`_j@$UtM`8^^C2rR9K)%vYmHbc++A6)+F zaihcYc}mQ2*vnmGsVVyWeLqrZ$M3_u?-mZ6r%!))ovnWQ{kpxGj6{_>)6*eAha!+% z>TT5G!JDPFc)f4eyBhQw8jf|RiE4|!I7|~Y768m|$HH)bjPU5`)cBJ7CD-)sF?_t5 zUoZS?uW^wnk2=-n94DpMQK{_1zXs!R;o3+KZCvl^kaE;=&t^eX;LeAn#}t-x-l*aE zj~)9*zuMMs`(6x2@nM9-A-7#3Aq9=h0bWIp2po zxPRty2FP&5p*CysVvQCt8q;^jq%3idWR$B?W|Y5m^87S-J{|qM-;mMjuaXD;pe^*S}IO$$aS!^J1tmw(rIgZ?_9$BdyDekp0sxqxn;t@r5xR>H9_o5B7oK zaJ6WW$P&W)A->;i`7yV#^`G^%^sD(#0z1#>ZxenrLp8GLr+vQ6r8jPbZ+m}>gS#xdqslC#>geSAFZ18KQ_3L#s3=yH@8~>>WN_8Q<$^wtK9PU#e0POV2M@b@tnT| zAn`v97={Xfcb}fsp0BgPx3m%T``^`2Zt0`@SsBy3b!i9c)EMb`&R?1%_@0o zKJ+c}w)H=0>=aNci_M9JzaH0nZ?nJpx$o|=|CXoztPLQ0)s66E_kIxSuV2ldKd^uS zp%?qN4#`(!9Q_B1NGlIy)mumy1X&6})`r~>&N?xBi=6t4s=6E1BiVe*{ghqiSKamN z*J2WadL1=<#g882`1MYc8X8hcY3gyQcF)$gJmQ0t+i7N|v&JK2?Y@RS3M~09rK#98 zU$I>6LqeUW6w%4=V2Z89Kg#n~{cEXL!J9uz_3{^A)>+N5&&O#}I`^92ZaxRcY9eyO zQrGa^=s0YXu$Uio;_GSDll?!ES%>}R{{e2M{BD$A?lb@Z2BAqrK~#9!?OR(+6jvDj z_9Bbzv=}ce3h26~#dSjBrI?^igVn^e(a=zMFsV(}*alM{G&Hn6;6r_|Au;yB29hRj zQ=1rzr6o2#)j*o6Eu>0AR|F$s*cG{GT(igw7Pk-EGn_elW_D(G5MlWeGjsmAaQ@qO z{{PHs`?CEJKHt0u1U;>O(74*|h8{|NL%P@7M;)qhU-vKoAQ&9NvFdg3*L32}a326* zb*>j)aV^|=dGPssxcJl0Xufa}>EKM$e%^tU2PiKo002}}yw82O zx%o%K6OrX{xLgYp>1ezZtggqSrbPA*j!a0T`ptt9tawHr;JZ?7ZSq@-PUQ(c$0(1lrk2jvJN8{Og zB_gIJ0?JDY@NfVs<=Hea6Ags?cpRWdh%^b-9&SpR1cSjLa|TG4?TwJ1meO=I&?HEV zkP41fuhYG5dwjnGd-fd$0GvI2GT{cjYss!_U8Ci%=9OS3VPgv)0Pxpz!Yi&tU+^Zb zT)U1f8#kbId)ZWRbg2!c+sokd`2YZ?PcekTi}!5jIH@Ko$z=)Dp`MDzp2S@*|Mx+ASYKy>SbMR`JyM`Tnj{Lp4UnD_aeY<^u~PAgK)4vsq%pn>s8(-#SE+b>Rhkx$}ywMARY42 zkx>ZCmI45xBcpixU@LduplDlw+kZD4|4Wq;2aasgozUi`lZN*fq;Uyr9*4Q}Be?r( ze4dg6F;$g037e@1FoO%{yHsOImJ?P0x;NnU31<6>Y3BfT$A~3FBCl)gf+)HbPi{W3 z9{!q6Gmz4Td5(aAcEWgge81XgCh+e6KLAEiFFAl(Tn=Rw|0q zo+smJ;Q%(A=?%=d5vI=BqRGsbmXTE|G8~0nZ~#vdBf@eH;F00tWmyR_I`@<9*;$sJ z3>T2G-Kq#MvV_t1T3ODf!Ube(w=x2ZRCnawRMvCLT42GU7{bzKNG}qmqXae{`cs~# z$9BO1XERR**y8%H)MHubz|17&(QINuIG zk3W*?w|lFe*MrT9oM)l;Gdi|c|65M{KLIoc=s_Bn@X?3g&!@l(p8|U5{pVhSjQ+l_ zn;OyR+$6!Hbu9qmUxw*_b20*WAm9FZzYCai2Dp27j3XV(91i%jVr5#Z$PefKoL>dz q4KQzjc>~NG2^#$k@rzRXv-l5Zo=cNX5i;BW0000