From a3398eb41676cd2f1d521d683ad8c28461c29b95 Mon Sep 17 00:00:00 2001 From: Boblet Date: Mon, 4 Apr 2022 15:58:06 +0200 Subject: [PATCH] "show all recipes" button for universal NEI handlers --- src/main/java/com/hbm/blocks/ModBlocks.java | 30 +++++++++--------- .../java/com/hbm/blocks/generic/BlockOre.java | 9 +++++- .../hbm/handler/nei/BreederRecipeHandler.java | 1 - .../nei/CrystallizerRecipeHandler.java | 4 +-- .../hbm/handler/nei/NEIUniversalHandler.java | 21 +++++++++++- .../handler/nei/RadiolysisRecipeHandler.java | 3 -- .../hbm/handler/nei/SILEXRecipeHandler.java | 3 -- .../com/hbm/items/tool/ItemPowerNetTool.java | 2 +- .../java/com/hbm/items/tool/ItemRBMKTool.java | 1 - .../assets/hbm/textures/gui/nei/gui_nei.png | Bin 1102 -> 1635 bytes 10 files changed, 46 insertions(+), 28 deletions(-) diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 50315005c..7df98a123 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -1500,14 +1500,14 @@ public class ModBlocks { block_cap_sunset = new BlockCap(Material.iron, RefStrings.MODID + ":block_cap_sunset_top").setStepSound(Block.soundTypeMetal).setBlockName("block_cap_sunset").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":block_cap_sunset"); block_cap_star = new BlockCap(Material.iron, RefStrings.MODID + ":block_cap_star_top").setStepSound(Block.soundTypeMetal).setBlockName("block_cap_star").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":block_cap_star"); - deco_titanium = new BlockOre(Material.iron).setBlockName("deco_titanium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_titanium"); - deco_red_copper = new BlockDecoCT(Material.iron).setBlockName("deco_red_copper").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_red_copper"); - deco_tungsten = new BlockDecoCT(Material.iron).setBlockName("deco_tungsten").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_tungsten"); - deco_aluminium = new BlockDecoCT(Material.iron).setBlockName("deco_aluminium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_aluminium"); - deco_steel = new BlockDecoCT(Material.iron).setBlockName("deco_steel").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_steel"); - deco_lead = new BlockDecoCT(Material.iron).setBlockName("deco_lead").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_lead"); - deco_beryllium = new BlockDecoCT(Material.iron).setBlockName("deco_beryllium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_beryllium"); - deco_asbestos = new BlockOutgas(Material.cloth, true, 5, true).setBlockName("deco_asbestos").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_asbestos"); + deco_titanium = new BlockOre(Material.iron).noFortune().setBlockName("deco_titanium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_titanium"); + deco_red_copper = new BlockDecoCT(Material.iron).noFortune().setBlockName("deco_red_copper").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_red_copper"); + deco_tungsten = new BlockDecoCT(Material.iron).noFortune().setBlockName("deco_tungsten").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_tungsten"); + deco_aluminium = new BlockDecoCT(Material.iron).noFortune().setBlockName("deco_aluminium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_aluminium"); + deco_steel = new BlockDecoCT(Material.iron).noFortune().setBlockName("deco_steel").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_steel"); + deco_lead = new BlockDecoCT(Material.iron).noFortune().setBlockName("deco_lead").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_lead"); + deco_beryllium = new BlockDecoCT(Material.iron).noFortune().setBlockName("deco_beryllium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_beryllium"); + deco_asbestos = new BlockOutgas(Material.cloth, true, 5, true).noFortune().setBlockName("deco_asbestos").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_asbestos"); deco_rbmk = new BlockGeneric(Material.iron).setBlockName("deco_rbmk").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_side"); deco_rbmk_smooth = new BlockGeneric(Material.iron).setBlockName("deco_rbmk_smooth").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_top"); @@ -1571,11 +1571,11 @@ public class ModBlocks { siege_emergency = new BlockBase(Material.iron).setBlockName("siege_emergency").setCreativeTab(MainRegistry.blockTab).setBlockUnbreakable().setResistance(20000.0F).setBlockTextureName(RefStrings.MODID + ":siege_emergency"); siege_hole = new SiegeHole(Material.iron).setBlockName("siege_hole").setCreativeTab(MainRegistry.blockTab).setBlockUnbreakable().setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":siege_hole"); - block_meteor = new BlockOre(Material.rock).setBlockName("block_meteor").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":meteor"); - block_meteor_cobble = new BlockOre(Material.rock).setBlockName("block_meteor_cobble").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":meteor_cobble"); - block_meteor_broken = new BlockOre(Material.rock).setBlockName("block_meteor_broken").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":meteor_crushed"); - block_meteor_molten = new BlockOre(Material.rock, true).setBlockName("block_meteor_molten").setLightLevel(0.75F).setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":meteor_cobble_molten"); - block_meteor_treasure = new BlockOre(Material.rock).setBlockName("block_meteor_treasure").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":meteor_treasure"); + block_meteor = new BlockOre(Material.rock).noFortune().setBlockName("block_meteor").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":meteor"); + block_meteor_cobble = new BlockOre(Material.rock).noFortune().setBlockName("block_meteor_cobble").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":meteor_cobble"); + block_meteor_broken = new BlockOre(Material.rock).noFortune().setBlockName("block_meteor_broken").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":meteor_crushed"); + block_meteor_molten = new BlockOre(Material.rock, true).noFortune().setBlockName("block_meteor_molten").setLightLevel(0.75F).setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":meteor_cobble_molten"); + block_meteor_treasure = new BlockOre(Material.rock).noFortune().setBlockName("block_meteor_treasure").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":meteor_treasure"); meteor_polished = new BlockGeneric(Material.rock).setBlockName("meteor_polished").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":meteor_polished"); meteor_brick = new BlockGeneric(Material.rock).setBlockName("meteor_brick").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":meteor_brick"); meteor_brick_mossy = new BlockGeneric(Material.rock).setBlockName("meteor_brick_mossy").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":meteor_brick_mossy"); @@ -1667,8 +1667,8 @@ public class ModBlocks { waste_earth = new WasteEarth(Material.ground, true).setBlockName("waste_earth").setStepSound(Block.soundTypeGrass).setCreativeTab(MainRegistry.blockTab).setHardness(0.6F).setBlockTextureName(RefStrings.MODID + ":waste_earth"); waste_mycelium = new WasteEarth(Material.ground, true).setBlockName("waste_mycelium").setStepSound(Block.soundTypeGrass).setLightLevel(1F).setCreativeTab(MainRegistry.blockTab).setHardness(0.6F).setBlockTextureName(RefStrings.MODID + ":waste_mycelium_side"); - waste_trinitite = new BlockOre(Material.sand).setBlockName("waste_trinitite").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setResistance(2.5F).setBlockTextureName(RefStrings.MODID + ":waste_trinitite"); - waste_trinitite_red = new BlockOre(Material.sand).setBlockName("waste_trinitite_red").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setResistance(2.5F).setBlockTextureName(RefStrings.MODID + ":waste_trinitite_red"); + waste_trinitite = new BlockOre(Material.sand).noFortune().setBlockName("waste_trinitite").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setResistance(2.5F).setBlockTextureName(RefStrings.MODID + ":waste_trinitite"); + waste_trinitite_red = new BlockOre(Material.sand).noFortune().setBlockName("waste_trinitite_red").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setResistance(2.5F).setBlockTextureName(RefStrings.MODID + ":waste_trinitite_red"); waste_log = new WasteLog(Material.wood).setBlockName("waste_log").setStepSound(Block.soundTypeWood).setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(2.5F); waste_leaves = new WasteLeaves(Material.leaves).setBlockName("waste_leaves").setStepSound(Block.soundTypeGrass).setCreativeTab(MainRegistry.blockTab).setHardness(0.1F).setBlockTextureName(RefStrings.MODID + ":waste_leaves"); waste_planks = new BlockOre(Material.wood).setBlockName("waste_planks").setStepSound(Block.soundTypeWood).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setResistance(2.5F).setBlockTextureName(RefStrings.MODID + ":waste_planks"); diff --git a/src/main/java/com/hbm/blocks/generic/BlockOre.java b/src/main/java/com/hbm/blocks/generic/BlockOre.java index 6f643733b..93b95e163 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockOre.java +++ b/src/main/java/com/hbm/blocks/generic/BlockOre.java @@ -241,10 +241,17 @@ public class BlockOre extends Block { return 1; } + public boolean allowFortune = true; + + public BlockOre noFortune() { + this.allowFortune = false; + return this; + } + @Override public int quantityDroppedWithBonus(int fortune, Random rand) { - if(fortune > 0 && Item.getItemFromBlock(this) != this.getItemDropped(0, rand, fortune)) { + if(fortune > 0 && Item.getItemFromBlock(this) != this.getItemDropped(0, rand, fortune) && allowFortune) { int mult = rand.nextInt(fortune + 2) - 1; if(mult < 0) { diff --git a/src/main/java/com/hbm/handler/nei/BreederRecipeHandler.java b/src/main/java/com/hbm/handler/nei/BreederRecipeHandler.java index ed488b371..8f91f8d75 100644 --- a/src/main/java/com/hbm/handler/nei/BreederRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/BreederRecipeHandler.java @@ -1,7 +1,6 @@ package com.hbm.handler.nei; import java.awt.Rectangle; -import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Map; diff --git a/src/main/java/com/hbm/handler/nei/CrystallizerRecipeHandler.java b/src/main/java/com/hbm/handler/nei/CrystallizerRecipeHandler.java index 358aac421..0502656e0 100644 --- a/src/main/java/com/hbm/handler/nei/CrystallizerRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/CrystallizerRecipeHandler.java @@ -31,7 +31,7 @@ public class CrystallizerRecipeHandler extends TemplateRecipeHandler { public RecipeSet(Object input, ItemStack result) { this.input = new PositionedStack(input, 75, 24); - this.acid = new PositionedStack(ItemFluidIcon.addQuantity(new ItemStack(ModItems.fluid_icon, 1, Fluids.ACID.ordinal()), TileEntityMachineCrystallizer.acidRequired), 39, 24); + this.acid = new PositionedStack(ItemFluidIcon.addQuantity(new ItemStack(ModItems.fluid_icon, 1, Fluids.ACID.getID()), TileEntityMachineCrystallizer.acidRequired), 39, 24); this.result = new PositionedStack(result, 135, 24); } @@ -126,7 +126,7 @@ public class CrystallizerRecipeHandler extends TemplateRecipeHandler { for (Map.Entry recipe : recipes.entrySet()) { if(NEIServerUtils.areStacksSameTypeCrafting(ingredient, ItemFluidIcon.addQuantity( - new ItemStack(ModItems.fluid_icon, 1, Fluids.ACID.ordinal()), TileEntityMachineCrystallizer.acidRequired))) { + new ItemStack(ModItems.fluid_icon, 1, Fluids.ACID.getID()), TileEntityMachineCrystallizer.acidRequired))) { if(recipe.getKey() instanceof ItemStack) { this.arecipes.add(new RecipeSet(recipe.getKey(), (ItemStack)recipe.getValue())); diff --git a/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java b/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java index 7cba240f0..4b139f1f9 100644 --- a/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java +++ b/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java @@ -2,11 +2,12 @@ package com.hbm.handler.nei; import static codechicken.lib.gui.GuiDraw.drawTexturedModalRect; +import java.awt.Rectangle; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; +import java.util.LinkedList; import java.util.List; -import java.util.Map; import java.util.Map.Entry; import com.hbm.lib.RefStrings; @@ -16,11 +17,17 @@ import codechicken.nei.NEIServerUtils; import codechicken.nei.PositionedStack; import codechicken.nei.recipe.TemplateRecipeHandler; import net.minecraft.block.Block; +import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; public abstract class NEIUniversalHandler extends TemplateRecipeHandler { + public LinkedList transferRectsRec = new LinkedList(); + public LinkedList transferRectsGui = new LinkedList(); + public LinkedList> guiRec = new LinkedList>(); + public LinkedList> guiGui = new LinkedList>(); + /// SETUP /// public final String display; public final String key; @@ -169,4 +176,16 @@ public abstract class NEIUniversalHandler extends TemplateRecipeHandler { } } } + + @Override + public void loadTransferRects() { + transferRectsGui = new LinkedList(); + //guiGui = new LinkedList>(); + + transferRects.add(new RecipeTransferRect(new Rectangle(147, 1, 18, 18), key)); + //transferRectsGui.add(new RecipeTransferRect(new Rectangle(18 * 2 + 2, 89 - 7 - 11, 18 * 5 - 4, 18 + 16), key)); + //guiGui.add(GUIMachineAssembler.class); + RecipeTransferRectHandler.registerRectsToGuis(getRecipeTransferRectGuis(), transferRects); + //RecipeTransferRectHandler.registerRectsToGuis(guiGui, transferRectsGui); + } } diff --git a/src/main/java/com/hbm/handler/nei/RadiolysisRecipeHandler.java b/src/main/java/com/hbm/handler/nei/RadiolysisRecipeHandler.java index edd81d147..9d5d619d4 100644 --- a/src/main/java/com/hbm/handler/nei/RadiolysisRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/RadiolysisRecipeHandler.java @@ -8,7 +8,6 @@ import java.util.LinkedList; import java.util.List; import java.util.Map.Entry; -import com.hbm.blocks.ModBlocks; import com.hbm.inventory.gui.GUIRadiolysis; import com.hbm.inventory.recipes.RadiolysisRecipes; import com.hbm.lib.RefStrings; @@ -16,8 +15,6 @@ import com.hbm.lib.RefStrings; import codechicken.nei.NEIServerUtils; import codechicken.nei.PositionedStack; import codechicken.nei.recipe.TemplateRecipeHandler; -import codechicken.nei.recipe.TemplateRecipeHandler.RecipeTransferRect; -import codechicken.nei.recipe.TemplateRecipeHandler.RecipeTransferRectHandler; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.item.ItemStack; diff --git a/src/main/java/com/hbm/handler/nei/SILEXRecipeHandler.java b/src/main/java/com/hbm/handler/nei/SILEXRecipeHandler.java index dd624fc18..ed1132d76 100644 --- a/src/main/java/com/hbm/handler/nei/SILEXRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/SILEXRecipeHandler.java @@ -10,12 +10,10 @@ import java.util.Map; import com.hbm.inventory.gui.GUISILEX; import com.hbm.inventory.recipes.SILEXRecipes; import com.hbm.inventory.recipes.SILEXRecipes.SILEXRecipe; -import com.hbm.items.ModItems; import com.hbm.items.machine.ItemFELCrystal.EnumWavelengths; import com.hbm.lib.RefStrings; import com.hbm.util.I18nUtil; import com.hbm.util.WeightedRandomObject; -import com.hbm.inventory.RecipesCommon.ComparableStack; import codechicken.nei.NEIServerUtils; import codechicken.nei.PositionedStack; @@ -23,7 +21,6 @@ import codechicken.nei.recipe.TemplateRecipeHandler; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.gui.inventory.GuiContainer; -import net.minecraft.init.Items; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; diff --git a/src/main/java/com/hbm/items/tool/ItemPowerNetTool.java b/src/main/java/com/hbm/items/tool/ItemPowerNetTool.java index 7151b97c4..d1e5eef45 100644 --- a/src/main/java/com/hbm/items/tool/ItemPowerNetTool.java +++ b/src/main/java/com/hbm/items/tool/ItemPowerNetTool.java @@ -102,7 +102,7 @@ public class ItemPowerNetTool extends Item { list.add(EnumChatFormatting.RED + "Right-click cable to analyze the power net."); list.add(EnumChatFormatting.RED + "Links (cables, poles, etc.) are YELLOW"); list.add(EnumChatFormatting.RED + "Subscribers (any receiver) are BLUE"); - list.add(EnumChatFormatting.RED + "Links with mismatching netowrk info (BUGGED!) are RED"); + list.add(EnumChatFormatting.RED + "Links with mismatching network info (BUGGED!) are RED"); list.add(EnumChatFormatting.RED + "Displays stats such as link and subscriber count"); list.add(EnumChatFormatting.RED + "Proxies are connection points for multiblock links (e.g. 4 for substations)"); list.add(EnumChatFormatting.RED + "Particles only spawn in a " + radius + " block radius!"); diff --git a/src/main/java/com/hbm/items/tool/ItemRBMKTool.java b/src/main/java/com/hbm/items/tool/ItemRBMKTool.java index e5f1da2c3..34f5ef405 100644 --- a/src/main/java/com/hbm/items/tool/ItemRBMKTool.java +++ b/src/main/java/com/hbm/items/tool/ItemRBMKTool.java @@ -17,7 +17,6 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.ChatComponentText; import net.minecraft.util.ChatComponentTranslation; import net.minecraft.util.ChatStyle; import net.minecraft.util.EnumChatFormatting; diff --git a/src/main/resources/assets/hbm/textures/gui/nei/gui_nei.png b/src/main/resources/assets/hbm/textures/gui/nei/gui_nei.png index 48188cfd44478d41f77b864376a704f113c65f2f..ecdd6955099a67f0b843ee7faf0434d12169e612 100644 GIT binary patch literal 1635 zcmc&!`BM^j6#qh+N4jdBp=R0^yPBn29$TxD0Y;`mQJE(l>KdL=rdfnpBZlP8Ivz+y znX(xPI%TGaXp!2XcA=FL33;SRq9kMzOMgN?^?v!hd7t;@eP-TKhz$=hH-(u30L(Gl zk-GqZ=v@dfUaE(fqt_GlU_c7S;EnZm%J?u9fTb`Daw|Uj()4gY(P?~z(M(dWT>)bE z-`g;z0h`Ll258q;V7f1#Js!Ptnd0}W<*y3Nb9bNjyUn(LCQu!Y4>RN*eI&HZQP$@< zMePa>_sPTF$RDP{?iith+TPR;zIn}f7Ra(#N2_6!7nG~Dij90uGTjaB&9;38(>cHF zjq;4=$CDsl9J0i4-8GzOLX$Z@G~P-)i@7N_bYNjicI@8I86`>>UWG2L-0HlW;@PIQ z#(N0|>dSZ%UJIz$BUC`ko|aNy6i!D3m{nd4ntyUC2AYu^sjpHK*Mmeck55^%seTEi zi=kq$ejx--n^^mwR88PKA9UzmM8(n@Mnc70J}8UE*^r7G1p;Rxk+=qb-yhO(&%EG1 z#QZim))j(C=)1Gf|CSuYjT4+y6-4MPBj$^Jb>3A7 z9|N#Vy}(RI;cOa}oyi=X+@;-4s(qac?~c(9xvUO`V}10ZPHW%OG>eaUvWMU192ckV z56WH-eF{N}Mn*U3M0xSdLnlU^Xaw!Y=l8+mJQkX>^lWEc4Ceu}q zP0m^YyduSTSlXtr6`}(Tuh@0F66OX&jXHu;)6=^ZiZn@r*MpiNkCrtK^xKnVgj$jb zC^P}vcLKygC|GU{{;2>IkpcL1Em-9Z`H55{(Z+kT`tfG>JbV9U?CR=-mcCjEYcaQE zhg=0u0&@Z5g4CKM^ckmY**r~10xUI zKY%#&9;WbSICT9j^l=b&YP9*w{zSSdh28jNe-@Nr%4C`8hwiHk>j?kPS`f#ZjAGC7 z?lw5oDN;7V=;(yu$oEQlcik9$baeTTtx2sZWhBD^g^STFrZqd}cU}=)xDr3q*@+ok!Pp#_v)3;mn^>1MAAidOf)=>LkJeAj|Og(JDagtPwxW3#MP literal 1102 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|G$6%N?Bp530R%N1DIGvAtEY=& zNX4ADcLMWnc`>wIR7~<0Op(rE>HNM!`@^b^si8mZwuD9}-4}TC;NXADpca=z6REQ` zh8H%x^nQ7|)mL-&>E8*N-(LOMcJ`2PL$;~6e?srCpkMdx*YD4pK2MluWBC4qPn)7b zvQpQd%l~Y(p~HU9xTw?D(Wt2(xgqE%W?&mS^d%-?KfBEH?{ zu_^=q;kdc?w?$Sk6|7Br$+_mj4N-=W^cTkV;S85^*u^%~S64@;7=5TW`(3Na_h-$# zY4aF1$S^h}FfkltVQAuHU=e2EP-77AVNjUC;9xL>ByKFzU;4k`xsY+Af6a{*OQ-a{ zwK};?a^L+$L37h~F#24ae(C?e%D<(%zsyPK*!zoDPyEWFAnoeXy4lwoUH?2(Wf0vI z{@nbV+5*?5RwyykI?wCp<_%|G9A3b8_NeaV3eE$EH-tamo+~zwA!c=C6_fT8u7>tR zU_=#soHu{Idi}mC3z<`=PoKV$=%u;zP1){~$tAJonP>LT-+%vou2oo~^*8?Z!-Y|sj1WcU{v%5d&^v1qbG*D9ufE{+4Xq2dieuR0n!CM0}GK45vbXvVqcpC9~J z{&6ZIIr+}(p8>nI)-z;1@@g>MeOmOu*8Q&k?Q)XO|IAsFeQZa~9n;T6st2S(D_ISW zCl)6>EH2;4^rNd<_TSERDi0=xma+ys&aZ2qZ@OBGVQb-!NNYxkhaV<8Feu!3FuS4s z@WMHM%d5|)PO(4Q`d;wsS+m;v--~NDp7{N{`pT}2adAw