From 60b6ec494cfb58c242a76e73a37f8ca0617cace3 Mon Sep 17 00:00:00 2001 From: Boblet Date: Tue, 20 Sep 2022 17:00:05 +0200 Subject: [PATCH] crucible GUI work, material IDs --- .../com/hbm/inventory/gui/GUICrucible.java | 15 +++ .../java/com/hbm/inventory/material/Mats.java | 90 +++++++++++------- .../hbm/inventory/material/NTMMaterial.java | 6 +- .../machine/TileEntityCrucible.java | 32 +++++++ .../textures/gui/processing/gui_crucible.png | Bin 9311 -> 11227 bytes .../gui/processing/gui_crystallizer_alt.png | Bin 0 -> 2912 bytes 6 files changed, 109 insertions(+), 34 deletions(-) create mode 100644 src/main/resources/assets/hbm/textures/gui/processing/gui_crystallizer_alt.png diff --git a/src/main/java/com/hbm/inventory/gui/GUICrucible.java b/src/main/java/com/hbm/inventory/gui/GUICrucible.java index 61345bd6c..a41d3c199 100644 --- a/src/main/java/com/hbm/inventory/gui/GUICrucible.java +++ b/src/main/java/com/hbm/inventory/gui/GUICrucible.java @@ -1,8 +1,11 @@ package com.hbm.inventory.gui; +import java.util.List; + import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerCrucible; +import com.hbm.inventory.material.Mats.MaterialStack; import com.hbm.lib.RefStrings; import com.hbm.tileentity.machine.TileEntityCrucible; @@ -42,5 +45,17 @@ public class GUICrucible extends GuiInfoContainer { GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); Minecraft.getMinecraft().getTextureManager().bindTexture(texture); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + int pGauge = crucible.progress * 33 / crucible.processTime; + if(pGauge > 0) drawTexturedModalRect(guiLeft + 126, guiTop + 82, 176, 0, pGauge, 5); + int hGauge = crucible.heat * 33 / crucible.maxHeat; + if(hGauge > 0) drawTexturedModalRect(guiLeft + 126, guiTop + 91, 176, 5, hGauge, 5); + + if(!crucible.recipeStack.isEmpty()) drawStack(crucible.recipeStack, 62, 97); + if(!crucible.wasteStack.isEmpty()) drawStack(crucible.wasteStack, 17, 97); + } + + protected void drawStack(List stack, int x, int y) { + } } diff --git a/src/main/java/com/hbm/inventory/material/Mats.java b/src/main/java/com/hbm/inventory/material/Mats.java index bda8a5b9a..5c812dbed 100644 --- a/src/main/java/com/hbm/inventory/material/Mats.java +++ b/src/main/java/com/hbm/inventory/material/Mats.java @@ -23,53 +23,77 @@ import net.minecraft.item.ItemStack; * @author hbm */ public class Mats { - + public static HashMap prefixByName = new HashMap(); + public static HashMap matById = new HashMap(); public static HashMap matByName = new HashMap(); + //public static HashMap matRemap = new HashMap(); public static HashMap> materialEntries = new HashMap(); public static HashMap> materialOreEntries = new HashMap(); - //Vanilla - public static final NTMMaterial MAT_STONE = makeSmeltable(df("Stone"), 0); - public static final NTMMaterial MAT_COAL = make(COAL).smeltable(SmeltingBehavior.ADDITIVE); - public static final NTMMaterial MAT_IRON = makeSmeltable(IRON, 0).omitAutoGen(); - public static final NTMMaterial MAT_GOLD = makeSmeltable(GOLD, 0).omitAutoGen(); - public static final NTMMaterial MAT_REDSTONE = makeSmeltable(REDSTONE, 0).omitAutoGen(); + /* + * ItemStacks are saved with their metadata being truncated to a short, so the max meta is 32767 + * Format for elements: Atomic number *100, plus the last two digits of the mass number. Mass number is 0 for generic/undefined/mixed materials. + * Vanilla numbers are in vanilla space (0-29), basic alloys use alloy space (30-99) + */ + + /* Vanilla Space, up to 30 materials, */ + public static final int _VS = 0; + /* Alloy Space, up to 70 materials. Use >20_000 as an extension.*/ + public static final int _AS = 30; + + //Vanilla and vanilla-like + public static final NTMMaterial MAT_STONE = makeSmeltable(_VS + 00, df("Stone"), 0); + public static final NTMMaterial MAT_COAL = makeAdditive( 1400, COAL, 0); + public static final NTMMaterial MAT_LIGNITE = makeAdditive( 1401, LIGNITE, 0); + public static final NTMMaterial MAT_COALCOKE = makeAdditive( 1410, COALCOKE, 0); + public static final NTMMaterial MAT_PETCOKE = makeAdditive( 1411, PETCOKE, 0); + public static final NTMMaterial MAT_LIGCOKE = makeAdditive( 1412, LIGCOKE, 0); + public static final NTMMaterial MAT_GRAPHITE = makeAdditive( 1420, GRAPHITE, 0); + public static final NTMMaterial MAT_IRON = makeSmeltable(2600, IRON, 0).omitAutoGen(); + public static final NTMMaterial MAT_GOLD = makeSmeltable(7900, GOLD, 0).omitAutoGen(); + public static final NTMMaterial MAT_REDSTONE = makeSmeltable(_VS + 01, REDSTONE, 0).omitAutoGen(); //Radioactive - public static final NTMMaterial MAT_URANIUM = makeSmeltable(U, 0).setShapes(NUGGET, BILLET, INGOT, DUST, BLOCK); - public static final NTMMaterial MAT_THORIUM = makeSmeltable(TH232, 0).setShapes(NUGGET, BILLET, INGOT, DUST, BLOCK); - public static final NTMMaterial MAT_PLUTONIUM = makeSmeltable(PU, 0).setShapes(NUGGET, BILLET, INGOT, DUST, BLOCK); - public static final NTMMaterial MAT_RADIUM = makeSmeltable(RA226, 0).setShapes(NUGGET, BILLET, INGOT, DUST, BLOCK); + public static final NTMMaterial MAT_URANIUM = makeSmeltable(9200, U, 0).setShapes(NUGGET, BILLET, INGOT, DUST, BLOCK); + public static final NTMMaterial MAT_THORIUM = makeSmeltable(9232, TH232, 0).setShapes(NUGGET, BILLET, INGOT, DUST, BLOCK); + public static final NTMMaterial MAT_PLUTONIUM = makeSmeltable(9400, PU, 0).setShapes(NUGGET, BILLET, INGOT, DUST, BLOCK); + public static final NTMMaterial MAT_RADIUM = makeSmeltable(8826, RA226, 0).setShapes(NUGGET, BILLET, INGOT, DUST, BLOCK); //Base metals - public static final NTMMaterial MAT_TITANIUM = makeSmeltable(TI, 0).setShapes(INGOT, DUST, PLATE, BLOCK); - public static final NTMMaterial MAT_COPPER = makeSmeltable(CU, 0).setShapes(WIRE, INGOT, DUST, PLATE, BLOCK); - public static final NTMMaterial MAT_TUNGSTEN = makeSmeltable(W, 0).setShapes(WIRE, INGOT, DUST, BLOCK); - public static final NTMMaterial MAT_ALUMINIUM = makeSmeltable(AL, 0).setShapes(WIRE, INGOT, DUST, PLATE, BLOCK); - public static final NTMMaterial MAT_LEAD = makeSmeltable(PB, 0).setShapes(NUGGET, INGOT, DUST, PLATE, BLOCK); - public static final NTMMaterial MAT_BISMUTH = makeSmeltable(df("Bismuth"), 0).setShapes(NUGGET, BILLET, INGOT, DUST, BLOCK); - public static final NTMMaterial MAT_ARSENIC = makeSmeltable(AS, 0).setShapes(NUGGET, INGOT); - public static final NTMMaterial MAT_TANTALIUM = makeSmeltable(TA, 0).setShapes(NUGGET, INGOT, DUST, BLOCK); - public static final NTMMaterial MAT_NIOBIUM = makeSmeltable(NB, 0).setShapes(NUGGET, DUSTTINY, INGOT, DUST, BLOCK); - public static final NTMMaterial MAT_BERYLLIUM = makeSmeltable(BE, 0).setShapes(NUGGET, INGOT, DUST, BLOCK); - public static final NTMMaterial MAT_COBALT = makeSmeltable(CO, 0).setShapes(NUGGET, DUSTTINY, BILLET, INGOT, DUST, BLOCK); - public static final NTMMaterial MAT_BORON = makeSmeltable(B, 0).setShapes(DUSTTINY, INGOT, DUST, BLOCK); + public static final NTMMaterial MAT_TITANIUM = makeSmeltable(2200, TI, 0).setShapes(INGOT, DUST, PLATE, BLOCK); + public static final NTMMaterial MAT_COPPER = makeSmeltable(2900, CU, 0).setShapes(WIRE, INGOT, DUST, PLATE, BLOCK); + public static final NTMMaterial MAT_TUNGSTEN = makeSmeltable(7400, W, 0).setShapes(WIRE, INGOT, DUST, BLOCK); + public static final NTMMaterial MAT_ALUMINIUM = makeSmeltable(1300, AL, 0).setShapes(WIRE, INGOT, DUST, PLATE, BLOCK); + public static final NTMMaterial MAT_LEAD = makeSmeltable(8200, PB, 0).setShapes(NUGGET, INGOT, DUST, PLATE, BLOCK); + public static final NTMMaterial MAT_BISMUTH = makeSmeltable(8300, df("Bismuth"), 0).setShapes(NUGGET, BILLET, INGOT, DUST, BLOCK); + public static final NTMMaterial MAT_ARSENIC = makeSmeltable(3300, AS, 0).setShapes(NUGGET, INGOT); + public static final NTMMaterial MAT_TANTALIUM = makeSmeltable(7300, TA, 0).setShapes(NUGGET, INGOT, DUST, BLOCK); + public static final NTMMaterial MAT_NIOBIUM = makeSmeltable(4100, NB, 0).setShapes(NUGGET, DUSTTINY, INGOT, DUST, BLOCK); + public static final NTMMaterial MAT_BERYLLIUM = makeSmeltable(400, BE, 0).setShapes(NUGGET, INGOT, DUST, BLOCK); + public static final NTMMaterial MAT_COBALT = makeSmeltable(2700, CO, 0).setShapes(NUGGET, DUSTTINY, BILLET, INGOT, DUST, BLOCK); + public static final NTMMaterial MAT_BORON = makeSmeltable(500, B, 0).setShapes(DUSTTINY, INGOT, DUST, BLOCK); //Alloys - public static final NTMMaterial MAT_STEEL = makeSmeltable(STEEL, 0).setShapes(DUSTTINY, INGOT, DUST, PLATE, BLOCK); - public static final NTMMaterial MAT_MINGRADE = makeSmeltable(MINGRADE, 0).setShapes(WIRE, INGOT, DUST, BLOCK); - public static final NTMMaterial MAT_ALLOY = makeSmeltable(ALLOY, 0).setShapes(WIRE, INGOT, DUST, PLATE, BLOCK); - public static final NTMMaterial MAT_TCALLOY = makeSmeltable(TCALLOY, 0).setShapes(INGOT, DUST); - public static final NTMMaterial MAT_DURA = makeSmeltable(DURA, 0).setShapes(INGOT, DUST, BLOCK); - public static final NTMMaterial MAT_MAGTUNG = makeSmeltable(MAGTUNG, 0).setShapes(INGOT, DUST, BLOCK); + public static final NTMMaterial MAT_STEEL = makeSmeltable(_AS + 0, STEEL, 0).setShapes(DUSTTINY, INGOT, DUST, PLATE, BLOCK); + public static final NTMMaterial MAT_MINGRADE = makeSmeltable(_AS + 1, MINGRADE, 0).setShapes(WIRE, INGOT, DUST, BLOCK); + public static final NTMMaterial MAT_ALLOY = makeSmeltable(_AS + 2, ALLOY, 0).setShapes(WIRE, INGOT, DUST, PLATE, BLOCK); + public static final NTMMaterial MAT_DURA = makeSmeltable(_AS + 3, DURA, 0).setShapes(INGOT, DUST, BLOCK); + public static final NTMMaterial MAT_SATURN = makeSmeltable(_AS + 4, BIGMT, 0).setShapes(INGOT, DUST, BLOCK); + public static final NTMMaterial MAT_STAR = makeSmeltable(_AS + 5, STAR, 0).setShapes(INGOT, DUST, BLOCK); + public static final NTMMaterial MAT_TCALLOY = makeSmeltable(_AS + 6, TCALLOY, 0).setShapes(INGOT, DUST); + public static final NTMMaterial MAT_MAGTUNG = makeSmeltable(_AS + 7, MAGTUNG, 0).setShapes(INGOT, DUST, BLOCK); - public static NTMMaterial make(DictFrame dict) { - return new NTMMaterial(dict); + public static NTMMaterial make(int id, DictFrame dict) { + return new NTMMaterial(id, dict); } - public static NTMMaterial makeSmeltable(DictFrame dict, int color) { - return new NTMMaterial(dict).smeltable(SmeltingBehavior.SMELTABLE).setMoltenColor(color); + public static NTMMaterial makeSmeltable(int id, DictFrame dict, int color) { + return new NTMMaterial(id, dict).smeltable(SmeltingBehavior.SMELTABLE).setMoltenColor(color); + } + + public static NTMMaterial makeAdditive(int id, DictFrame dict, int color) { + return new NTMMaterial(id, dict).smeltable(SmeltingBehavior.ADDITIVE).setMoltenColor(color); } public static DictFrame df(String string) { diff --git a/src/main/java/com/hbm/inventory/material/NTMMaterial.java b/src/main/java/com/hbm/inventory/material/NTMMaterial.java index 7a7c5d2c1..68bb321cf 100644 --- a/src/main/java/com/hbm/inventory/material/NTMMaterial.java +++ b/src/main/java/com/hbm/inventory/material/NTMMaterial.java @@ -9,19 +9,23 @@ import com.hbm.inventory.OreDictManager.DictFrame; */ public class NTMMaterial { + public final int id; public String[] names; public MaterialShapes[] shapes = new MaterialShapes[0]; public boolean omitItemGen = false; public SmeltingBehavior smeltable = SmeltingBehavior.NOT_SMELTABLE; public int moltenColor = 0xFF4A00; - public NTMMaterial(DictFrame dict) { + public NTMMaterial(int id, DictFrame dict) { this.names = dict.mats; + this.id = id; for(String name : dict.mats) { Mats.matByName.put(name, this); } + + Mats.matById.put(id, this); } /** Shapes for autogen */ diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java index fab95b937..fd5ce804d 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java @@ -22,6 +22,7 @@ import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; @@ -62,8 +63,39 @@ public class TileEntityCrucible extends TileEntityMachineBase implements IGUIPro if(!trySmelt()) { this.progress = 0; } + + NBTTagCompound data = new NBTTagCompound(); + int[] rec = new int[recipeStack.size() * 2]; + int[] was = new int[wasteStack.size() * 2]; + for(int i = 0; i < recipeStack.size(); i++) { MaterialStack sta = recipeStack.get(i); rec[i * 2] = sta.material.id; rec[i * 2 + 1] = sta.amount; } + for(int i = 0; i < wasteStack.size(); i++) { MaterialStack sta = wasteStack.get(i); was[i * 2] = sta.material.id; was[i * 2 + 1] = sta.amount; } + data.setIntArray("rec", rec); + data.setIntArray("was", was); + data.setInteger("progress", progress); + data.setInteger("heat", heat); + this.networkPack(data, 25); } } + + @Override + public void networkUnpack(NBTTagCompound nbt) { + + this.recipeStack.clear(); + this.wasteStack.clear(); + + int[] rec = nbt.getIntArray("rec"); + for(int i = 0; i < rec.length / 2; i++) { + recipeStack.add(new MaterialStack(Mats.matById.get(rec[i * 2]), rec[i * 2 + 1])); + } + + int[] was = nbt.getIntArray("was"); + for(int i = 0; i < was.length / 2; i++) { + recipeStack.add(new MaterialStack(Mats.matById.get(was[i * 2]), was[i * 2 + 1])); + } + + this.progress = nbt.getInteger("progress"); + this.heat = nbt.getInteger("heat"); + } protected void tryPullHeat() { TileEntity con = worldObj.getTileEntity(xCoord, yCoord - 1, zCoord); diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_crucible.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_crucible.png index ce81e589dbbbc559938b3856d8752a1bb9c737aa..93ede32354bbc7a5ddabad00bfab28d1065ef555 100644 GIT binary patch literal 11227 zcmc(Fc{tQ<`}c?<6mF7G<1V4>+1Ejqk}b)So$ULbbwntNB71`fN!GG2LuB8|mc|xi zDa&9m#+aG+8u#-&@ALkSvcGenfcB&*K%H;^K+f&=e(X7=xLpy=cI=~AZKph zQa6M^sK8q)2;C|0V&VJV5xmg&sogfB1Ak$351&FHJdoS!sz#6AY#>6PTTF(}!Ej1J zmk7(rcMQXxT^8=Ga=^2gGIdvdl&rb~ z4#Uu!1GpSN$Nij!m1#fa0&x!4wiSjidCt*__-y2h?*U@|t3)@BIuaZ;cVP`W*#yIp z;dzTQWzSo?Yp>sg`&R}!#mKe!jYCN(@V5Bs1GG-grvwMih^J5uoyN1O+^_1~(=H>J zUQA7YlzNt`wrE`OO5#lK9a18`g49I*$Wh749IG|Aj2+7jBbH9Pe?Fc6)VKfUq$GXq z?O91krGGR}JjB%Vv%r!&Bwi0^jY@7tW3tFixrYKhsmruowH1)rQrga}+g76oSST{< z$m-gNz9Uy0xw|;GQ<*X-4%OVjQ3@;?&&P~)t!~Ly<@dw zzHGgdHQ#td^DEj0b+JvYrhV2hM=+Ih$uYYmEb;xsiJ7+-o>-KOCCdbqZHVXiK}P)J zN}4-TwO`z1)hI8YxGIWAEt_z9WT{qez~&QR3h{5RFCoT9ER zCt_u~Zx@z?u6M-M6Uj0%icaMx&m%lc5Je2km!oH=`L3(GH09n=B3JE2~9cg?EQ>XrYDOn&4?_ z+O-N@hI2a5C zw^9K=eBTHyhe%IiCj1yL?!pxp>Zo!vuAQjN=->V(&M-RCYsR-I7niD8F0oH-Rr)9_ ztQvc|vd(CJZ2Y8hfQ|3WVsiS?#tz2h1NXIz8?;+g;v?LU$oRhv!M$_Rb6hv*pp4N%G+%1Yxc9gHo^5KWeX#iU*j~7{A-;*if^mH+!s!CjE^qq0( zH+N~dkX?a$_wIFSvryj)#qnh_oEPz4=seACr7|Ntx5kb0d_^nkx6C-Kgqv0oomcUL z_3&*t8UP`V$7L9s$GFhOiZw;aKwHr zFaPdZBfv&)RC?cH@~ar5cHv)N?OyTFJzeCmoNNfj@<~WYtcEyUQuH8=mE4m}yvf}? zFgQqMAd+5UT&jpir$E@~W6*L52??+J9n#X%w-uR2B_(=c*Z~RZ00^q}#KA$%U*!(I z4S^T=RQ7YqxM)f@mi`jWVKOGIag~kpsTAZ{G(Tn%m80O1KC~s6?P`Z#&l7U56U!4jPeZx=7TS(GK)z`os4ualTC~+a*@o| zU0zuMmN{tEXVb_;!}dz_uLi^~W`H@ev$H!(XMZd!^I7aV6UB3@{03u3o7i*of!Q*x zEx`|BO*~^)SnvBwk$Lp@q5{q*TbN0s*~L;O(oNxW7}IObcXo_3FPqU`*~mwJC(pcq zTG!W?A%_7t--jvdGt&TwfH_%++$$aT=8h}SN?IT&=d6gsU|=E~v9A>C9+V|(w3-ST zUQbQNKc3yn3)=HW_poqx|LS_drG8hv=7B>L;%+6q|Z zxckw|4hi}?DMAJyZp{h8oM=*8is{^zwH>QfKGPEFE;)OoZkbBF%e2+ z(}`#vME2LzNP!{V#$Ea%#u&vjKl1h_fPQsz^S}!(83FbLinzR)4lnuGau*usqmdiV2UK^tSp{$O z!yl3vwV)w%kqmcA)wKg)PV#6X=mtLnZEd}>#FPTNAvLt3ulNLdUqJ4xjk_5c7Pja9 zX9sperem1BuVf9Q$RC zfa2$dv@Hj)JYC02*P6b80mfL{hiN#)Br(PdTwDc4*MG^LUGmLb>`nrZO)!iHXqgSe z>H=a2u-sptie3rsJ*Ub3&uTvlmrrIL*!B#Du-+Wy=$`^~S`f;gvLYpRVbq>`H19WU zecEk7y53B_rL?$e?z8oLZo*74m+9<jjk-Rti>baz*Ov=zFN!)?yo=o3Al9~FC4Hya!B)KCmc(^=J3Q>*{cj7{oA7WD4f z15$fGjs2)`F6Clb&^25sfES62W5_F&?oKT5V!qC;`ChTy%qGsl_~*a zb#2wniJ2(8W6$dn?~T@rR^_)jG%{k_!vxXJ--dX}+e%m2CkL7~wa7UhTL$ez%}2I7 z<@VURv%1tlv-;%ZGC%(T-TS0&$9S~vivoMk4~H=Ed+%%l|D+TV^#|C@{QXM8AT8$J zfUA3HW_EUNl&@7+SF06#%lqamrmU>T5o?+jv({*I{hY<5?&eJchQeA(>rS1CkN;?vRBrTb}uHDDcHhkpmadYX^k?o^f$cOy8W4NLk= zw135kPfq?R`2#08#)ugs2nW}G!jQ&uV{p$M4rG2+r|asGYdEAi`FUXH>zj@}g>@}ac|`b1Q90%oz61TD zmADleFCsOJswPFSePjG$v}B@`B#?M-60YdPs?O4=`C*^yX9%<{C;tvdI_(Y>;O)}! z{BO>@_VeL{eOoi*8$}q)9Gqvt{nGpXmMefTg@lD2l5?}O@33Q3oGe?**Vqy?jE#*m za&jEq-Ji=QrZmxl6HfC+b4FHHpCr<S;7DlAI~v7>BPf~lNib*~!yNb3`V*IcM(US*!ndMr{uBgddHJS7EEKrFBLhy1HI(2%5`oPs*q3uTD<6S{eqE@tS>SRl&~{8p8F|-?Cd$ zm$4)7LD|m1V$x!xh*!&=aS>ki)&}*#njc?xHx^L^6`P}%n-4r|?(05lU3R19*S4G% z2ug%*@;hZo5_wXNy7$={g0BWm5?8PG&-a*$V0YqrVKsG~vuE~DA4o8HH(vWq+kUuR zkwi&Ay>syg^04mGwJCXiK8BK?WGtcU^kT1(awK41?(TLUZhy<-8BYlqEC~Qc&i4s5 z?O6i>Hi7j1&nOQ`-2$r$RvIec!vcjjdei$IJg4hbxw}6<5N7PSHG!e#mi3OTM|Ev) z`&>_@kG1v2F6#m!Pce%yFeE@YBUEZO3fxBMuNdK!14o%mJpv{IDkKTQm3;Kc-FXF1 zhAsmp}}uo1h6>+p=D%$Rf6EtMt^`=bQg>5JV=)+DtWs`#|0+m z$wW53?4zx88qPuU{+?m*szcGJs<3Gc3=d04OUHVk0G;k{pt=Fz0qYu(QskrO2E&i|*=n=M@$vgRc*R1) zYZuZ(bGmnTCGWC{OG#uy=6^h``B)u0WPoR zsv+8!d@zBMaLC-K|JidF`KGz0hG}^MCH*b6v=&1Y9>RyzN86_$9R8i5=ZKGSy^@(-KN_(+`$!%Dps%BL ze>Bv#Gpy#-ha>Er)OQ;$e~<6&jT~~Wa7^kh=IGa~!X7Q2M!s8}6!ZWgeT>1lsz%8|~In0t)63`Wv)oZ7)uD7$> zy02?%KDFfa=tEO^4j6%BQd-`RJ*y*Ais`0IBVPGDwq*U0 z_K|qq#1@ko`K0yL?%SiJlW;$R$%z>0Hnq09EKz9RhKDfn&W>;On;(+8L%A@d3k=St zv9^z`C@XUSQOuZfWV$foioKl0s7=jA6?YreWT&+M(fhi*ui6ti$T>#YjJlC;&RTzK zpuQvx=K6B}kpM)r22`zpM1pUMn*((0rK3WK3+h^s@t;GN}ra9c?X(hmT56dyBwop0zcU?730pdEHZAw@rjwYTQANw zHaDj*wS7O+S7y8nVrcTz(O-kw8|BK8V#boqJooXXgVK%Vh2`YeYx6NIOPXLZ6%|sC zRu=XE?*cQeyFww6Qx|cM^#-v%8$P0pX`J-bHDaqjP)_GsF#v^>g@2rSjnUd>g~ zA(EK%Fv>#$G5nxIELpS)(uiABAj1?T+6hZit^1*HNux__zz4it-w5`fi`eg;yLf%B zl>966_9cZ%(NrcIqbEFOn=9v`kp~dzaq?C3l|@<{9};Pg58q8Er-~{LV~*N`4i4Ih zHndYPSsh-oDVZcaj%)#4K>&nLs4p}IzYZ2$6D)Pqpv_D+ub=QN zP;+?0>JK2Dw3SuF=tBrNr#hymxq$*wUw%g<{Ys*};_#LD{D)LY9zpUGAV%>yI@ng{ zO}=jx1_8glE~*^quN;Xwt)w%G{u0Bm+L#lTZjBr%nDONQv}T5;m=a8Hn)+X3AAe%} zK@vJ%4hytR>4&}urN#4jX7&H>5y0VLO|CWN5i_(6a*Pjfm?coAzCeAD7Y-5QRAZ(r z+(s)La8T7UzN8O1<;*IW+DKa3B!Uw~^oOJCe};{`xJM<~F%*&@`LBQ;H$lbgclu^6 zyxnB_`SX7O*y$rgnalbcraT|_#EP(Acr;Flb-3ZfFzY?UPL#mxXDE3(YdAtnd}7A- zVEt7%WxtpZnC*dIEl0~0M>`{UD|~{d$UnO-<2il2Re?jaTYXDh&HK>S6#u`9$_rj! z9`mPnbn>|Qk*%?a<*QHiw6yw_x$vXWINWw$>dA=RP_o1OFfTjI*28B&gRCGCV4M_8 z^-kT^os^i|e3nIt z5&pYh?yqk0wm!b0;rH8}PZ#ce&2E$BR0#bctxLhYc=e6bNg$ju!V5~Wy~G4&XeD*6Ld zyrsWDj;zYetigiCVxPZwVT+Om(hfiy<&bQeDH?aZTDtjt8NL+_efkdqINlM>j?an9 zl)eB8+V-7(Q5^W`0c5j1!uR+YaJ^&r7yy5Ghy4%60HBn%D4)<}b+dm_{G*e0OO-%5 zb$pSBklL2BdCulQx~}_0%`?Sx_T^flf?rW@)(Y#_?MC8i;#;S*xm9WiN00*Ch*d5d z?@A40oWw(_g+QP@yFPOTSp$tIJ;a4UT>9p~Ug;1C;SiUfxiL%-X$I90{@pKMPTXbt z=2|mxS_ueg;*3`^eTFZ?x8_w7p|Bw|nm1k4dKm;a`pXPM2!-w@Ol$V~3M_D)gO=&i zyKz^LRTk^#0-a0XcxmAqlttevGiIf%g95eWGJYH;PMB;jp|LX)0CD+4?$mh|Rl*<2 z8tVbhfv@1Kp*UB=KhE{T2o8I$T4Jn#5vCMyKPY!R~-OC zHkU~&3AqF`l7qhUIne8H=jx2taPQ`}bog(-n=Ab}ZTGa%hD?!n&eH)uBKG!AY2lyZwe5iMzPa2m?S0fQNK}@BF4-t$>r)m_DNP;m8%*Jqjq^ zeRDp>7;voBarojInP&-nvD@{v1r-PcSJSjqI;D`ml4g5nSVMI5^_{Yi*5MFTc+I#B za-XZS$`1e2fwRm!*O|QLHM_hu@Nnmo{nR7XkuvXQ5)VB$>ImIN_+WoCj+=W|EJ4R8ob?2~A-swI`3@;i^^0SZ+s>RA0_+o>~z%-GY2TUrYkU~uq z4&NJdr}71I7@Y+@24ACLaQlR#nTzmM5c3^KmlP4a|B`}dKNr*<(8&g$B>uJTrF-xA;2xN>CGZiXH% zm~QvpBxK}dTH;89?7nOJi*w~iq)9J+EI70%j=Q~}alGM9;SlJQg6^5<#jE_iaaH-N z85bQgTnt|X9BW}-_wd$7>z|I+zi33@;wnbBsPkp{jBPH+SN$1E5_o}Jk4T@>^w+(j zvKW{4N*Y&|4?z^g&w}QCc0cZl)BGnWUaSMoO7(C?r>p83(jZY`&)!_X@YW<{BeD)#F?Kvfh zkf4M^T##7DaxQ$|r5pjf(~q&hF#RVc0RlITYTMU@^FZAI1bH3qjdFMvg=tfc@&Fyy;USvuh?6ZDr5hZD-|-NePa_4#^6*x8E|7=$a$hRFjl&RR z6Fb(|-K&R`J(T;2N5_m(bm+81ZEE#NE1#GILPc4bA-8k?ierwyr(K|awEZHembk18 z-x=Y9wxw!&@cy)R3AV5-iQ0U(b4;x0-jw6ULwLxMfVSg!E-YA}w@xzQibjIq5+|%t zHdm2E#G2qq_)^7y9aF=Iaja$$aY>WwratDF&?X4@ue4(7B-MQ?0bR`U+v>MRm^Xhu zG7>tghKjpO5+;*#^(~tx@GZ7iF>|dYw@LdeusF3}@@IvI7i9sqF-oLIxRs%Zh(-cF zZkRT!Ydlb={r*2u)Nie0A`6UYQjUZoq>|+#J2Vt}$&-^q+c;QY@~skdC*~UgKlarv z4F8PvBCWMZw@I#IV#9uf6D(rA^1Jg)>k*cL8*vFqj3BY$EQaFnH>?adwQW{V0JJSI0CD;2#%8JIZeKH;}lI`Wqw5UaE%OA*9XVWeMm(D}4Z-6X^Iyk#wfMHk2fthdfd z4dxp&H4%Q-l_Sp!vOhp9?ye{-9u1-A_!E^rw`+O3IhbBGXg1kshD*T~wg!0Rcxdax z$%*FDA;h+!Q#^imN*N>3>E6R}saON+5;!DyGTDFx= z+zXxF#6f`06bAC)bhk+$MGQy@1gy>dbR;Gfxl{6|qGBw_!If&|Z`%-`Rgd3pz0Y?h zXw7ufC~o7;m>J?gsgu?__W;r?X4m?2bsB}~zo7qh9|B>BrQ8MRF6wBH(rB2Ptv<^7 zvwp_Zqec#CWc${T>)F1j5!V~@2f7>7tAbwr`h86ZQ?r~S1)t`!#9RmdN)P_|2dKGS z;!Y4C*RXS05gGN{A!rZQGOmFeUfJ?%qRI-0`(8pVqf1Q5NCcCOJ+VVp&yv)I!&ue9 zujh7%N!P)dp(-$Q1c+D6s!8gDhmRD(!$3&RuN+Ay9Dr}ZRZNn&<4-d*yJnv@x-l`# zx|rwvOdylfu|`8rqPOOzg>Hw&cG>F<>n(~*utHtW#nnAy27@bfqg*5G6sF2zPnk{X zADEHvQmz=l}9v$@bjmIam#%K51`v#W7q+=_X@l+UXo zSW$j+OLW9=DL|61hyj?n68~@&>NWSffh#wC|6L<$dvh0?M;?v`!AquE&Pq;jJWpbe zx%8b^Lvda1o)cM}uEdDlH!hX=LdtR}E9-WdvCsuAmXz|8+Y~3amJNKFOCIAt&XWVf zAxZ0*^9i}((#IKTqQ~|cl*|lM+Pn9`11kEwk+6MJJFz3oSxn;h7RfanyXKTBB#_;` zqTNf#mCl`@<#~6dhH3uy6+#AbD{!aT!TrQ1Y&T#9@u@l}*}qT|oyL*tZ@Nl){P`%- zaZa!5b8sc*5A~zNRc;K@&r=KJu9%+_mf;X&*p67SRj6>v4q*;CNZ76uL6Y}SQ%5$( z{?_u&fV|^|y#3tncVA(E70!HdVm4y`#Q0`8Z{h0ZC*wReadC~w)Z>z1>x1H@U=+!U z;-{Ms(ors18q$vmNJH!^H%M=;Y?l4rtQwC91Gh8+@#&2TS){G;Pdpdf5>sYrD{W!8 zjr~tJOm})Sx~?y`vG%D42Q?n@#Gmnd$A`Iy!<9!)E@vihq{uXsm@D3J#BP4)EPSJ@ zKqp3Mg|^1_zKZH?5-eR8Tr%@G1l2!FEEzlSRh6tPp?ap0>vkwaT7>Z@WN++Q0ph-u z|9-SWZOkO1=l2X^vzWY1TDb+PJ#CST zdMV|%SVtl*dxgh(5!>&ym9Zkbt&dPc_uD9qMycq&P!GP4nm9uxZABG^ty8{97JDnh zT@QVAR)u-zB>$GHtkT>jF;)YM929n&Oyx+ad_5E|R_S1v~KtlPb#W`1J%{C_rHPJFOc0Vl4NFg*Gd zbN*m62r1b8YLPMgO>u67{GQK~vW7L>iRP^@3?=jjT{5lhK}dq7Tq3vA>SB+`IO1mP z{~mj1+$Ktl=gyrweF2t|y7mzfmr%8LwSjDOoW3nCE_V7bsx-~;CE72@@}>8SgSr?y z-mWU+XDlz6ALFg28LJ?}30En1RMCv5y%~FvOaAN2>HRDkEa06B=UxcHLL}Wxnc*QF z4;}SF@FneQuMLkQS?4SuV}q**K$OTGw$I{g#oViy{1$)!cQ+oC89U;IUIN>k>Z}%W zN9jduB6?a<8Vm&TUgytvf_7CN*`QlRnYA#^OOFqq~8^(Hb)1qomcf1sc?^(g> z=;{5{Ee?v2U?>a$)VV0q$7OJ-fH(If#pKMLKF`b7dW(ZTP3hX#3)$@6zffe z{?cFpC4@}$CzWNee=4A=<~bFd69l+E`hCGSoGA03D7f@7uw%w! z0s%YF!df%s&X>LpD$AfQ!JYst(_o>eT-71QOLt;6c;zDJi&N!mj>*F(8cr}jq57>m zzvnqKRjbS0{lxZZ`Pu-uKM`wtBNmigb#!&FvPPIKeNri>Od|xh#?Q}xIttPu<}Ar+ znx+8?fQBXW1my;cMA<};uHri}GuYwFxhH*3{u_HLI-|Vtm%(M5@-;h@bfMwt4zZB{ zCH(9C@LYlT_r|5bmah$gc^%V+-w6kWY{i_nn&+B3(EOu@mi2u@`^-WF#G;^l62$`+ zY%!@Z82~PO0NeCpLe_|9I&Mir98!l*oH1w#_{#N_!Hy<*@%a}YY0k&3#0@X%t%U?p zwH2=e>Lo|J8rW(dP0fXt8(&O){_;{?Y~nQz|5+S+9C#oFe*zMOE>!31l@Hc@Hy zGG6JPLUdn{x?%t-v_9MmvUzF5Q_($9uEK% zL~_KocXq1#8gj-yE^^5z>iz!xFI8q>AAsLAd0P&?+|`zTyb#zY3f`Ymu7wPu4VB{a z19E%7x1onvyrL?zLB%A%L~jd`(r}GpcXhhUz>`^`D6aj42lzV6-%okgeUBfr{m;jC z|7jhyrE)w_PdR84Rhdb9o9?nEkK9lX)M@Pf`+gl+;y9 z$Idq0q}0?@UC=;?sQFgQs|!{d#@@r52Nq4IO5r0lW1(Gb|6=WNF3Z{ zW6`*Kc~^{)dcIukr7hOXTkFb8p68cwKk58I%}q)|B85&V?-MK!=Th#%nYhUNiO`~} z+;V|zS9Ob0jK5cB$wzha|1kZs>R(aQ+w>|Q+kD^Ll^xO)+-fP}N3Vv{RQ9Nz9aGg>0$$&3nKnVhu)l&WoX#X|b zI_KX#@26~+WSg+E1zpj+G%SLZ-g7<`Wo@87c)!6yge7EmC^u)sey%nA*@%5`@P$#y zDi4K*RHrOHGj!5Lg|xZxgQk>I=j*Qw;^{(K9{AxcJLa?-TO>!<$Eyc(TG- XdpU%(Q53kX3%RYKr(UjR6ZO9UrOz0f literal 9311 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

Ov z)s1k{lP6}z`u}b2B)wGJmoYctW#B(?gieJE%`|Ju7moD%_T)DT#n2tc(4 zATPs#mEga+MRUmNS9Tx!hhq1wWILjGsR8nz86~!;ove?#X5C1Sg^|~j9KjDsjP5q| z=={$s{Y}I~%b{EEQHou<3t}j9>FiEfihRa|ECxF`wYcL@g9&Wrc8f8Znd(rr0=nnt@ literal 0 HcmV?d00001