From 39ca87d7a988c1d5dc149498f1a70296211156ed Mon Sep 17 00:00:00 2001 From: Bob Date: Sat, 4 May 2024 22:23:19 +0200 Subject: [PATCH] the feds are trying to poison me --- changelog | 9 +- src/main/java/com/hbm/blocks/ModBlocks.java | 3 + .../java/com/hbm/blocks/machine/BlockICF.java | 7 ++ .../hbm/blocks/machine/MachineICFPress.java | 39 ++++++++ .../java/com/hbm/inventory/gui/GUIICF.java | 11 ++- .../recipes/CrystallizerRecipes.java | 3 +- .../inventory/recipes/ReformingRecipes.java | 10 ++ src/main/java/com/hbm/items/ModItems.java | 12 +++ src/main/java/com/hbm/main/ClientProxy.java | 1 + .../tileentity/RenderICFController.java | 45 +++++++++ .../hbm/tileentity/machine/TileEntityICF.java | 25 ++++- .../machine/TileEntityICFController.java | 93 +++++++++++++++++- .../blocks/machine_icf_press_side.png | Bin 0 -> 518 bytes .../textures/blocks/machine_icf_press_top.png | Bin 0 -> 513 bytes .../textures/gui/processing/gui_icf_press.png | Bin 0 -> 1910 bytes .../hbm/textures/gui/reactors/gui_icf.png | Bin 5304 -> 5311 bytes .../hbm/textures/models/machines/icf.png | Bin 9728 -> 25656 bytes 17 files changed, 250 insertions(+), 8 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/machine/MachineICFPress.java create mode 100644 src/main/java/com/hbm/render/tileentity/RenderICFController.java create mode 100644 src/main/resources/assets/hbm/textures/blocks/machine_icf_press_side.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/machine_icf_press_top.png create mode 100644 src/main/resources/assets/hbm/textures/gui/processing/gui_icf_press.png diff --git a/changelog b/changelog index 4bfc0e045..5616123d3 100644 --- a/changelog +++ b/changelog @@ -24,8 +24,11 @@ * Certain earlygame things can now be recycled like stirling engines and gears * Antenna part recycling has been moved to the anvil * NTM's pickaxes now have a break speed bonus for glass -* renamed the foundry slag outlet to foundry spill outlet because people always assume it's for slag and only slag (it is not) +* Renamed the foundry slag outlet to foundry spill outlet because people always assume it's for slag and only slag (it is not) * The description for heatable/coolable fluid tags is now written in the same line as the label +* Rubber can now be made from acidizing latex with sour gas (requires just 25mB) +* Heating oil can now be reformed into naphtha +* Coker naphtha can now also be reformed like the other naphtha types (yields refgas instead of petgas as a byproduct) ## Fixed * Fixed DFC receivers not outputting power @@ -34,4 +37,6 @@ * Fixed general weirdness with the schrabidium transmutator item IO * Fixed certain tooltips using the backslash escape character despite not needing them * Hopefully fixed the immense lag caused by tom post impact mechanics, burning grass will now only spread 20% of the time (instead of 100) and the world destruction handler will only process half the blocks per chunk -* Hopefully fixed an issue where substations would not reliably connect to cable blocks \ No newline at end of file +* Hopefully fixed an issue where substations would not reliably connect to cable blocks +* Fixed assembler rendering bugging out with Angelica installed and a door template loaded +* Fixed medium pylon localizations \ No newline at end of file diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 29740b894..da8088dd5 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -892,6 +892,7 @@ public class ModBlocks { public static Block iter; public static Block plasma_heater; + public static Block machine_icf_press; public static Block icf; public static Block icf_controller; public static Block icf_laser_component; @@ -2009,6 +2010,7 @@ public class ModBlocks { iter = new MachineITER().setBlockName("iter").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":iter"); plasma_heater = new MachinePlasmaHeater().setBlockName("plasma_heater").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":plasma_heater"); + machine_icf_press = new MachineICFPress().setBlockName("machine_icf_press").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); icf = new MachineICF().setBlockName("icf").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); icf_controller = new MachineICFController().setBlockName("icf_controller").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":icf_casing"); icf_laser_component = new BlockICFLaserComponent().setBlockName("icf_laser_component").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab); @@ -3343,6 +3345,7 @@ public class ModBlocks { GameRegistry.registerBlock(iter, iter.getUnlocalizedName()); GameRegistry.registerBlock(plasma_heater, plasma_heater.getUnlocalizedName()); + register(machine_icf_press); register(icf_laser_component); register(icf_controller); register(icf_block); diff --git a/src/main/java/com/hbm/blocks/machine/BlockICF.java b/src/main/java/com/hbm/blocks/machine/BlockICF.java index 4daee8fa0..442433aba 100644 --- a/src/main/java/com/hbm/blocks/machine/BlockICF.java +++ b/src/main/java/com/hbm/blocks/machine/BlockICF.java @@ -23,6 +23,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; public class BlockICF extends BlockContainer implements IBlockCT { @@ -211,5 +212,11 @@ public class BlockICF extends BlockContainer implements IBlockCT { super.onChunkUnload(); this.isLoaded = false; } + + @Override + public boolean canConnect(ForgeDirection dir) { + if(this.getBlockMetadata() != 1) return false; + return dir != ForgeDirection.UNKNOWN; + } } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineICFPress.java b/src/main/java/com/hbm/blocks/machine/MachineICFPress.java new file mode 100644 index 000000000..c8c4f2aed --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/MachineICFPress.java @@ -0,0 +1,39 @@ +package com.hbm.blocks.machine; + +import com.hbm.lib.RefStrings; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.BlockContainer; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.world.World; + +public class MachineICFPress extends BlockContainer { + + @SideOnly(Side.CLIENT) private IIcon iconTop; + + public MachineICFPress() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return null; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + this.iconTop = iconRegister.registerIcon(RefStrings.MODID + ":machine_icf_press_top"); + this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":machine_icf_press_side"); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int metadata) { + return side == 1 ? this.iconTop : (side == 0 ? this.iconTop : this.blockIcon); + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIICF.java b/src/main/java/com/hbm/inventory/gui/GUIICF.java index 9b74b86e2..30904fc21 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIICF.java +++ b/src/main/java/com/hbm/inventory/gui/GUIICF.java @@ -4,6 +4,7 @@ import com.hbm.inventory.container.ContainerICF; import com.hbm.lib.RefStrings; import com.hbm.render.util.GaugeUtil; import com.hbm.tileentity.machine.TileEntityICF; +import com.hbm.util.BobMathUtil; import net.minecraft.client.Minecraft; import net.minecraft.client.resources.I18n; @@ -30,6 +31,8 @@ public class GUIICF extends GuiInfoContainer { icf.tanks[0].renderTankInfo(this, x, y, guiLeft + 44, guiTop + 18, 16, 70); icf.tanks[1].renderTankInfo(this, x, y, guiLeft + 188, guiTop + 18, 16, 70); icf.tanks[2].renderTankInfo(this, x, y, guiLeft + 224, guiTop + 18, 16, 70); + + this.drawCustomInfoStat(x, y, guiLeft + 8, guiTop + 18, 16, 70, x, y, icf.maxLaser <= 0 ? "OFFLINE" : (BobMathUtil.getShortNumber(icf.laser) + "TU - " + (icf.laser * 1000 / icf.maxLaser) / 10D + "%")); } @Override @@ -42,7 +45,13 @@ public class GUIICF extends GuiInfoContainer { @Override protected void drawGuiContainerBackgroundLayer(float interp, int x, int y) { Minecraft.getMinecraft().getTextureManager().bindTexture(texture); - drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, 114); + drawTexturedModalRect(guiLeft + 36, guiTop + 122, 36, 122, 176, 108); + + if(icf.maxLaser > 0) { + int p = (int) (icf.laser * 70 / icf.maxLaser); + drawTexturedModalRect(guiLeft + 8, guiTop + 88 - p, 212, 192 - p, 16, p); + } GaugeUtil.drawSmoothGauge(guiLeft + 196, guiTop + 98, this.zLevel, 0D, 5, 2, 1, 0xFF00AF); diff --git a/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java b/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java index e73b9d47e..95f88f353 100644 --- a/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java @@ -106,7 +106,8 @@ public class CrystallizerRecipes extends SerializableRecipe { registerRecipe(new ComparableStack(ModItems.powder_semtex_mix), new CrystallizerRecipe(ModItems.ingot_semtex, baseTime)); registerRecipe(new ComparableStack(ModItems.powder_desh_ready), new CrystallizerRecipe(ModItems.ingot_desh, baseTime)); registerRecipe(new ComparableStack(ModItems.powder_meteorite), new CrystallizerRecipe(ModItems.fragment_meteorite, utilityTime)); - registerRecipe(CD.dust(), new CrystallizerRecipe(ModItems.ingot_rubber, baseTime), new FluidStack(Fluids.FISHOIL, 250)); + registerRecipe(CD.dust(), new CrystallizerRecipe(ModItems.ingot_rubber, utilityTime), new FluidStack(Fluids.FISHOIL, 250)); + registerRecipe(LATEX.ingot(), new CrystallizerRecipe(ModItems.ingot_rubber, mixingTime), new FluidStack(Fluids.SOURGAS, 25)); registerRecipe(new ComparableStack(ModItems.powder_sawdust), new CrystallizerRecipe(ModItems.cordite, mixingTime), new FluidStack(Fluids.NITROGLYCERIN, 250)); registerRecipe(new ComparableStack(ModItems.meteorite_sword_treated), new CrystallizerRecipe(ModItems.meteorite_sword_etched, baseTime)); diff --git a/src/main/java/com/hbm/inventory/recipes/ReformingRecipes.java b/src/main/java/com/hbm/inventory/recipes/ReformingRecipes.java index 168fbe902..ce8b44627 100644 --- a/src/main/java/com/hbm/inventory/recipes/ReformingRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ReformingRecipes.java @@ -22,6 +22,11 @@ public class ReformingRecipes extends SerializableRecipe { @Override public void registerDefaults() { + recipes.put(Fluids.HEATINGOIL, new Triplet( + new FluidStack(Fluids.NAPHTHA, 50), + new FluidStack(Fluids.PETROLEUM, 15), + new FluidStack(Fluids.HYDROGEN, 10) + )); recipes.put(Fluids.NAPHTHA, new Triplet( new FluidStack(Fluids.REFORMATE, 50), new FluidStack(Fluids.PETROLEUM, 15), @@ -32,6 +37,11 @@ public class ReformingRecipes extends SerializableRecipe { new FluidStack(Fluids.AROMATICS, 10), new FluidStack(Fluids.HYDROGEN, 5) )); + recipes.put(Fluids.NAPHTHA_COKER, new Triplet( + new FluidStack(Fluids.REFORMATE, 50), + new FluidStack(Fluids.REFORMGAS, 10), + new FluidStack(Fluids.HYDROGEN, 5) + )); recipes.put(Fluids.LIGHTOIL, new Triplet( new FluidStack(Fluids.AROMATICS, 50), new FluidStack(Fluids.REFORMGAS, 10), diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 89a8cfb28..2715971de 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -1182,6 +1182,10 @@ public class ModItems { public static Item watz_pellet; public static Item watz_pellet_depleted; + public static Item icf_pellet_empty; + public static Item icf_pellet; + public static Item icf_pellet_depleted; + public static Item scrap_plastic; public static Item scrap; public static Item scrap_oil; @@ -3835,6 +3839,10 @@ public class ModItems { watz_pellet = new ItemWatzPellet().setUnlocalizedName("watz_pellet").setTextureName(RefStrings.MODID + ":watz_pellet"); watz_pellet_depleted = new ItemWatzPellet().setUnlocalizedName("watz_pellet_depleted").setTextureName(RefStrings.MODID + ":watz_pellet"); + + icf_pellet_empty = new Item().setUnlocalizedName("icf_pellet_empty").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":icf_pellet_empty"); + icf_pellet = new Item().setUnlocalizedName("icf_pellet").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":icf_pellet"); + icf_pellet_depleted = new Item().setUnlocalizedName("icf_pellet_depleted").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":icf_pellet"); trinitite = new ItemNuclearWaste().setUnlocalizedName("trinitite").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":trinitite_new"); nuclear_waste_long = new ItemWasteLong().setUnlocalizedName("nuclear_waste_long").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":nuclear_waste_long"); @@ -6778,6 +6786,10 @@ public class ModItems { GameRegistry.registerItem(watz_pellet, watz_pellet.getUnlocalizedName()); GameRegistry.registerItem(watz_pellet_depleted, watz_pellet_depleted.getUnlocalizedName()); + + GameRegistry.registerItem(icf_pellet_empty, icf_pellet_empty.getUnlocalizedName()); + GameRegistry.registerItem(icf_pellet, icf_pellet.getUnlocalizedName()); + GameRegistry.registerItem(icf_pellet_depleted, icf_pellet_depleted.getUnlocalizedName()); GameRegistry.registerItem(debris_graphite, debris_graphite.getUnlocalizedName()); GameRegistry.registerItem(debris_metal, debris_metal.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 82fba3eb0..9e561dcef 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -377,6 +377,7 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityITER.class, new RenderITER()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachinePlasmaHeater.class, new RenderPlasmaHeater()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityICF.class, new RenderICF()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityICFController.class, new RenderICFController()); //Watz ClientRegistry.bindTileEntitySpecialRenderer(TileEntityWatz.class, new RenderWatz()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityWatzPump.class, new RenderWatzPump()); diff --git a/src/main/java/com/hbm/render/tileentity/RenderICFController.java b/src/main/java/com/hbm/render/tileentity/RenderICFController.java new file mode 100644 index 000000000..9bc0d69ba --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderICFController.java @@ -0,0 +1,45 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.render.util.BeamPronter; +import com.hbm.render.util.BeamPronter.EnumBeamType; +import com.hbm.render.util.BeamPronter.EnumWaveType; +import com.hbm.tileentity.machine.TileEntityICFController; + +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.Vec3; + +public class RenderICFController extends TileEntitySpecialRenderer { + + @Override + public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float f) { + + TileEntityICFController controller = (TileEntityICFController) tile; + + if(controller.laserLength > 0) { + + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5, y + 0.5, z + 0.5); + GL11.glRotatef(90, 0F, 1F, 0F); + switch(tile.getBlockMetadata()) { + case 4: GL11.glRotatef(90, 0F, 1F, 0F); break; + case 3: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 2: GL11.glRotatef(0, 0F, 1F, 0F); break; + } + + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glPushAttrib(GL11.GL_LIGHTING_BIT); + GL11.glDisable(GL11.GL_LIGHTING); + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240F, 240F); + BeamPronter.prontBeam(Vec3.createVectorHelper(controller.laserLength, 0, 0), EnumWaveType.SPIRAL, EnumBeamType.SOLID, 0x202020, 0x100000, 0, 1, 0F, 10, 0.125F); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glPopAttrib(); + + GL11.glPopMatrix(); + } + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityICF.java b/src/main/java/com/hbm/tileentity/machine/TileEntityICF.java index 1d481dbc2..e946b7d0a 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityICF.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityICF.java @@ -10,6 +10,7 @@ import com.hbm.tileentity.TileEntityMachineBase; import api.hbm.fluid.IFluidStandardTransceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -19,6 +20,9 @@ import net.minecraft.world.World; public class TileEntityICF extends TileEntityMachineBase implements IGUIProvider, IFluidStandardTransceiver { + public long laser; + public long maxLaser; + public FluidTank[] tanks; public TileEntityICF() { @@ -37,13 +41,30 @@ public class TileEntityICF extends TileEntityMachineBase implements IGUIProvider @Override public void updateEntity() { - for(int i = 0; i < 3; i++) tanks[i].setFill(tanks[i].getMaxFill()); - if(!worldObj.isRemote) { + for(int i = 0; i < 3; i++) tanks[i].setFill(tanks[i].getMaxFill()); + + this.networkPackNT(150); + this.laser = 0; + this.maxLaser = 0; } } + @Override public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeLong(laser); + buf.writeLong(maxLaser); + for(int i = 0; i < 3; i++) tanks[i].serialize(buf); + } + + @Override public void deserialize(ByteBuf buf) { + super.deserialize(buf); + this.laser = buf.readLong(); + this.maxLaser = buf.readLong(); + for(int i = 0; i < 3; i++) tanks[i].deserialize(buf); + } + @Override public boolean isItemValidForSlot(int slot, ItemStack stack) { return slot < 5; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityICFController.java b/src/main/java/com/hbm/tileentity/machine/TileEntityICFController.java index 3db737fc1..8f3354591 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityICFController.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityICFController.java @@ -4,17 +4,24 @@ import java.util.ArrayList; import java.util.HashSet; import java.util.List; +import com.hbm.blocks.ModBlocks; import com.hbm.tileentity.TileEntityTickingBase; import com.hbm.util.fauxpointtwelve.BlockPos; import api.hbm.energymk2.IEnergyReceiverMK2; import io.netty.buffer.ByteBuf; +import net.minecraft.block.Block; +import net.minecraft.entity.Entity; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.DamageSource; import net.minecraftforge.common.util.ForgeDirection; public class TileEntityICFController extends TileEntityTickingBase implements IEnergyReceiverMK2 { public long power; + public int laserLength; public int cellCount; public int emitterCount; @@ -76,6 +83,8 @@ public class TileEntityICFController extends TileEntityTickingBase implements IE if(!worldObj.isRemote) { + this.networkPackNT(50); + if(this.assembled) { for(BlockPos pos : ports) { for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { @@ -83,9 +92,64 @@ public class TileEntityICFController extends TileEntityTickingBase implements IE if(this.getMaxPower() > 0) this.trySubscribe(worldObj, portPos.getX(), portPos.getY(), portPos.getZ(), dir); } } + + if(this.power > 0) { + + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()); + + for(int i = 1; i < 50; i++) { + this.laserLength = i; + + Block b = worldObj.getBlock(xCoord + dir.offsetX * i, yCoord, zCoord + dir.offsetZ * i); + if(b == ModBlocks.icf) { + TileEntity tile = worldObj.getTileEntity(xCoord + dir.offsetX * (i + 8), yCoord - 3, zCoord + dir.offsetZ * (i + 8)); + if(tile instanceof TileEntityICF) { + TileEntityICF icf = (TileEntityICF) tile; + icf.laser += this.getPower(); + icf.maxLaser += this.getMaxPower(); + break; + } + } + + if(!b.isAir(worldObj, xCoord + dir.offsetX * i, yCoord, zCoord + dir.offsetZ * i)) { + float hardness = b.getExplosionResistance(null); + if(hardness < 6000) worldObj.func_147480_a(xCoord + dir.offsetX * i, yCoord, zCoord + dir.offsetZ * i, false); + break; + } + } + + double blx = Math.min(xCoord, xCoord + dir.offsetX * laserLength) + 0.2; + double bux = Math.max(xCoord, xCoord + dir.offsetX * laserLength) + 0.8; + double bly = Math.min(yCoord, yCoord + dir.offsetY * laserLength) + 0.2; + double buy = Math.max(yCoord, yCoord + dir.offsetY * laserLength) + 0.8; + double blz = Math.min(zCoord, zCoord + dir.offsetZ * laserLength) + 0.2; + double buz = Math.max(zCoord, zCoord + dir.offsetZ * laserLength) + 0.8; + + List list = worldObj.getEntitiesWithinAABB(Entity.class, AxisAlignedBB.getBoundingBox(blx, bly, blz, bux, buy, buz)); + + for(Entity e : list) { + e.attackEntityFrom(DamageSource.inFire, 50); + e.setFire(5); + } + + this.setPower(0); + } else { + this.laserLength = 0; + } + + } else { + this.laserLength = 0; } + } else { - this.networkPackNT(50); + if(this.laserLength > 0 && worldObj.rand.nextInt(5) == 0) { + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + double offXZ = worldObj.rand.nextDouble() * 0.25 - 0.125; + double offY = worldObj.rand.nextDouble() * 0.25 - 0.125; + double dist = 0.55; + worldObj.spawnParticle("reddust", xCoord + 0.5 + dir.offsetX * dist + rot.offsetX * offXZ, yCoord + 0.5 + offY, zCoord + 0.5 + dir.offsetZ * dist + rot.offsetZ * offXZ, 0, 0, 0); + } } } @@ -94,6 +158,7 @@ public class TileEntityICFController extends TileEntityTickingBase implements IE buf.writeLong(power); buf.writeInt(capacitorCount); buf.writeInt(turbochargerCount); + buf.writeInt(laserLength); } @Override public void deserialize(ByteBuf buf) { @@ -101,12 +166,15 @@ public class TileEntityICFController extends TileEntityTickingBase implements IE this.power = buf.readLong(); this.capacitorCount = buf.readInt(); this.turbochargerCount = buf.readInt(); + this.laserLength = buf.readInt(); } @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); + this.power = nbt.getLong("power"); + this.assembled = nbt.getBoolean("assembled"); this.cellCount = nbt.getInteger("cellCount"); this.emitterCount = nbt.getInteger("emitterCount"); @@ -125,6 +193,8 @@ public class TileEntityICFController extends TileEntityTickingBase implements IE public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); + nbt.setLong("power", power); + nbt.setBoolean("assembled", assembled); nbt.setInteger("cellCount", cellCount); nbt.setInteger("emitterCount", emitterCount); @@ -150,6 +220,25 @@ public class TileEntityICFController extends TileEntityTickingBase implements IE @Override public long getMaxPower() { - return capacitorCount * 1_000_000 + turbochargerCount * 2_500_000; //TEMP + return (long) (Math.sqrt(capacitorCount) * 5_000_000 + Math.sqrt(Math.min(turbochargerCount, capacitorCount)) * 10_000_000); + } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord + 0.5 - 50, + yCoord, + zCoord + 0.5 - 50, + xCoord + 0.5 + 50, + yCoord + 1, + zCoord + 0.5 + 50 + ); + } + + return bb; } } diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_icf_press_side.png b/src/main/resources/assets/hbm/textures/blocks/machine_icf_press_side.png new file mode 100644 index 0000000000000000000000000000000000000000..f9f1ce193810610a56066ad6774601b89da9c99d GIT binary patch literal 518 zcmV+h0{Q)kP)Lwtxd~|k!7mUnq{|by&a(wW zNRb56#YYM^Aq0X`xO1|(wb?zPljK6D-Mupz5IZ}g(fsrOl9<0ERuxDIySp$N!Ojjy zDF`8wO-jM-ZA8j0gb<+i_n+|W)fwP{K{jm}_#O!T@7-@MKYc|tO_KtDet_0#g#g|s z9}=Y4qoHm2b#(=R>VkWFP}h8Uf7yj{eYV+b%6=q*785=S@RyslGC#n+}zxCVdosi7-rAk zrtVv_^$4+63V)6zK#0L@3n8t=0`FlmnXD59 z7_+%&?J7T*hXHZN$5YhPH+iV^F$V7M$qym~P{o?nZbOEBZ~&{%uvnzr`l12p)#VXl zj8OmN`+WYGut)s$iiHq}5yZC(VisViS{`*YO3ibwu7?N00|k|~p7MjqqyPW_07*qo IM6N<$f_Yc%KmY&$ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_icf_press_top.png b/src/main/resources/assets/hbm/textures/blocks/machine_icf_press_top.png new file mode 100644 index 0000000000000000000000000000000000000000..a8dc67183f37e1327c5b31155699c6c55e784473 GIT binary patch literal 513 zcmV+c0{;DpP)VRI>kp1c(N6oTJC@Y)Zj2l3>g z{y`C4TE7N=jvhP&ED&XVNp!b>bnf*JKAwCaT`reCaQPLo%pVc3*5AQX zavd9*hVQ4R0Hh(fyUUv=uX^}xe{06T!NDEIRfRDIt>Xbok!7&IKiV{B42MGi>beeP zqkG42{uB|}Vqh)nHLO-ECifo$C6E9EMw4G~`I7UqGq$ZaU@(9@&w<;}yyz9afBiYI zi{F;AWyTm_0Zl`!nYC@s0HC!-#FA>=moCdPVBk@r%`4@bwxv$nWzaMj)1s{X%8SD1 zB+{QG_|6eAC`*!LgYsv}yOY_5YWIWy7BNee>b^GTe9_O@jH)UbkH@B!DI!+&M^Mjt1=1`om7AGkt&F?!0-s-}m0`_f7@iw^&;^ zSO5U5aa+B=0RUoHLV%fx!G$E;iZVFkBb#u6W(G?$Bc24nbPdk?tH2c6NZ*dwUJpBy z@bBA&ynrFgVaU;6#Ip4p8G4syXWc# z2EWeg5YwjchHXaY_sR7G@oqX)?49nrD~va(u1D@M!R$w)(JZlzdqL4b%_>ktr+aQ_ zb{L*|*Rea=*4CE6u{XOaaTe&U$n_ED0Z6a|0T)5W17k2}1t@ldfGl&cay!6AK!Jt* zUm?ZIdHqCoZ)o2mH>*S3z9f&!WDOsmqtp*F3XQSR46S^sf4^SWI@TYiRng=6_i9zT z&PrQ-!GH`}B;DtfJy1rOHYvSGQ?KHXDAlyWSpwPd*D7@+Oy=ur#oX$O!W>b+4nJEB zT;&uJhabmq=A(J{ELsO9CMJHT$0g?a(&+~&v-c>0$42`E&yfi*I}hgbq7X;OanS&kWu37w=mnXY z6YoUy^~ZT#lc;vck61W@>#a?Q5}53aC3%5~#z`V{z`70?i2_LrvKK$i$d4+O4&fJF zsDg|?rzLRvT)jm3*36Z$>Ev?Ai#ZzrGVqMq;yFIqxBzQHN^->}pJROV zqy#+oyt!BF6BAJaE;J#Q+SZtfH)1+Kf`KH#<#9Df-dM?4Ph%>A69?GFjrUs9ZXz0- znDXGnh%vBvflFg`kiy~wpGDIK5xPLVS4r9e=v)(uLRYpb29#et6F6UaeZ6d&Ot|dQ z)HxUH8sBGw8l}@ry-1|)k)&Yu7gk@hsZ||AoNP~O$TSnwOBU?FnD7K+BE>be=GIJe zGq#<{(KR4qKrXWdv2Nphq7C8Q?Xq#mX$F(#pd9M#Txi^_zWs9*@N~uhlMEo+; zDeNrwd!$3{GXlFJM_Up5BK zovDe@q9NMk)BWIPCEDcjNGWkd80Mw;13W(783JYbSe5HHi1<-?x#216Fly zqn?48dq-r1a~<+s@m)DP(eNa&odkY-)N6fm_C@SmZf7XmE;r zNB9Z&cjo##K#=wiiqoR=h_941Pj%V)dnWdF$FhUjb%)1BP21k4N_*N{Zj2~Ts?)YZ zJ}Fn9QnHp&Q@atv5vAQW(o}hT+v`V`Nyfk7Gm~z5LQ_2sV5T?9q+zqq4IlGgsN%=h zyidNE?@YaGU+e4%Z5HNXd(8XuoT=hS>%WWX$7vtw?1xa(OtOs>#a(LWP25sU{y=wl zcu8?6m1TeR%IgY&EHXHJBr{GpDElu38MY|DGCtx4=R(isg;L+S&-!x^Y$e^-mgKKx zu$rUppf;k>C{93AifI*x%iSZxiq@?L3U@U12cJBsSF6a>Fy{UT3zzF=r92FUH)c2Z PO&^c*!FyM13P1h_qP0iJ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/gui/reactors/gui_icf.png b/src/main/resources/assets/hbm/textures/gui/reactors/gui_icf.png index 1020325235eef332d5bab024b4bf12499af75c3c..dc17d2e910e19d6d7efdb90f8b205cc44a4efd02 100644 GIT binary patch literal 5311 zcmbVQXIK;4*4`mBDFy{pK!HPV(xgc-QQ;`c0Yp%csuV?)SdXzn(X4tBFyRgBirdvqOyyVb;Ap%lx%{&l8O79Rku3C=?Oli z8QpH>pXRE;%?DFoojHB+fzatduUo!vJdJZs?7W&hb*nfuAb^n`(%ZNYv_?Za%?d3o zFB7Urw^M?vWZL`rTm6&`rDz~ z*R@h>&qrDYtRh;+Cnj3k+Ss48yon?gMiNh?n;yn%r~aiO9CLc2vi@QmeqiYq#$isVd2OvYG4O#(kBfTemdx@pA|aD& zuHBZgP9PkYX(BaDe#e>SJ|0xM%KBcE#KUkoMSI$tyOv(mig7|Kl}H}ErJ)Le6MkBD z9!wWmQ5#HCs1>~I5)y(k?Ph~%o22{+Zd{lhzy(KqyE{;chYS>q6V z*;a1fEhWMN;?PLr-aH#jtsS=OTl80atafMk{6kE!Lt|Z@@rDlef$<8WHEsvJv}o2x zq0=f@v2Nw=-(xs!^$ui9yHlmMv-6s6?*sR~O5WR(9&s<5BLpU30mMbSX6l zR!hOq)0WjqrL&Tkvtq;sXlkOMYbC!`Hc+$jn24ijy$w=u7n-Ojw&%@$xd-m7o$Aq7+{%XE>S)qA!)M#w?Ixp%!P4R4r;X92E zi1G1p&)n%ilN-Fvca4f?>L!X4^a{u#)P?@9 zcjC=PZ+cu1LB4~@^}lz!d$irReXexz^5X!zHzQ`743Cro2lzibLr(pT+kFv=eV4<_ ztEzI!^{#n&c^RSI4eg$a1>kt&FgizBQ0|94Kc7Tb3=HAAZURwW51E@fN1y6z?*90a zT1pD4pGdfd`n!^`Bo$XMSXf!c?j--kLnbPT(^N2?dKy)_AxmV`YP^G4n~n+hNL`^0 z8H*tG_lrxqQ+zuiL=mxYb15(0q)WHz95<4Z9vR#uB(g!>9zY%faK5s<+;Xm)4laj(4aP%* z{;7~KDx(KI^ZdA%FO2Qxd+~}du|_&Q;+f3Yy&D$)=JJ_E>-|~A6eNZ4&FpfT%Ivyw zC{<2TwfzvTZku)a}%mCBFNO;@gZa|a^p{B7_dtSg5!cg0IAXfPvOKZFO(Qrmu^q2L~C z{&U>4hjSg$_!$SV!#7b$F(Qxk|610({2uvAu0hM#gYI5(4q<(++L-@IEltn{)nzjUG!75R{^9pxp~BeMmL3gq|wh)w7CMBO%R*t zl{smPSAo>{?J>(7_UU(rs$kMM9cIzL%l-@_=-yDlPrThUB`QH_q zb}4V4!#KUq_Cc~+9s*ofNGmWyE6Pt3YQZtZ0}%@>kaV1DyW7mjp}&RMWf8Fgi*Nn0 z0&{8ggDFWv24}gIcPj4PlKCapJkwz~l&7=pK0h3WtNt&^{AXn`#NQgX+P)7aheEnP zt-zAoe+#cJAz^1Y;omf6W(G)-e?oD+H@F?G``0TiwDoVw3(De!{=@VDh~NYEd4m6D z?#ahiQ}*jyZ1%0q6BG8J`Hs%B`#ob&ezJyl{3nSp^GUH1X>B695kF2y9OSQuz(@ixlMU{5B5$CqaLIx%?>_Ie;z==| znCeqxRbpYXq_x^!CKuLM9z7TaCGoet$B)FeqdHTJpA#>0+SBqw*{Ay|-O7mX$GxlT zEx6BLqgD8}k4!qIRmhe?fz4r%Eaz=N5DGW81pVLn+udGa{k8vo8=)3hP@WxnQLakv8E^qz3 z9QjPa!M1XuH0po~YJ=BHD;0{)<1J{HkoOX+Xl#u6JwGbMZ1b6zPZ|&V!+$8++S;%@ zHkJYYYY9Z~`fR`Ex?cM803RMf4@f97^b$P}fc3%oz`%Zt798-fJA3bUa4&$lUa__)tXT5;2pU;L`?29kPmP zv()$5WCYyg#if~2KR5vs;FPgxMh|&*@9ujo1nc2ptoFhv_PdFCH_1R40a|9v$CKpU zXjS8H$!A-;f1(Y7bXux=tEUsdgG%h)cidzBvSj+AYU-DNZdY3P_~?W9>*^`*_oEbX z^oJh+X9)wA%<*X74^8aZj$Rh1FoO2;ryj$__q3(gTC~v0SdkZ%=~+G>j@KhCpTAol z_KPUQt#WX1=;-KJ*V;>St7@Wi2IQerCT?F~U|@riIB~D28#I(OxE;fmk-t}r;iJA7 zjjgL}5}+E#8@JAt=7S6_r#2NNfB6x9VIKZZF!<-C>0=t=ChtLu0X;5R0!@7g_hL)z zd?~9cv@L(s1@|UH8GPUlu{+oKdRW-8kdP3N7#$8-pI*7QhRT<0XTWO8%i&HLt)Jb> zKb1?zaDZc!zZzXnZ)jbnz1egL!_${yel}AgE}j-&jco3L_LAyrI%(O3@MK{meaq2x zRYZlw?WM+yjo52dLZC=$YHH2yyvs|r;0VeS;+kIC7geEL`EFtmJ2$b=|yp1gS7L84NlUR&Q|iOKNn^h$&tQZ`PCRsPc8S;uT+swjFF0upC?6 zzCSWK*+Wb7l&#ly7GEm08LK*O4HYU{D}nXbCht@^C-R0VJtYEhFMNFk-CW;&J*k2& zRl2DIB>FSAc*Lz=t2R#AU&F{bZ18{GqDXsD^D_3W1bl4_-Md>naI0L$AXIHjZ#{ea zroO0c(xlbI9UWFBA!a>4jUTY8eRbYJURSmlDIy{wz5V3XClhpR4N>wPl5_m^XMgE0 z2Mz|T{i+s6N5mxl`zYY+r=5iB`;jSe?agzt&2h3n zr*Qf(Q5?N~m!^FOZL^l9f!4jlidH;q)8d=fT1le!wr-wF64@Q57Lwopg@YDW?sXPk+WV zOtpCbteITj-(|{S$N@~zWiczbjSrn-4POE>Owq$?WdeN1K%{324>qqY8OAqcP3L)S z#{&$7)!^afWp>7g?E}iN zNYC5~R_io{&(bJ`|62n`5L~=-#|eKP+{3O>t&7e+?yA0>P`QCGc4le|r^A z^J;jyK`oeH_k8z*s88Fs| zr)!UZNDYf#u%W@pMAJ5h2Q*PGv;kDs0VV=|2X>+|{B1XyHklZISEkS5|M;N=$C1&@ zwS4!XES;+aVfWPeUYbHKFLy(J6aaBTm#SxO2H{g_5qq;DOX;zy%n{RXg5jr{HZ)rm zS!nFRn_EqX#Tc?BoC4?i6RwY#8jSaa7>U1UM_CHq)&x-X_*UT(lmt1L6nOMm2;0qr z?YN(E0$_!}O9B(ccnLn2p8WIre35x=5I(n`!60tF zQ()OFX!bmJM(;x*%lPL405+i8_E0@51yesJ5D+4o5ODwB#ua-6YHaBGCQtmdNq=y*Vv`ra<1bU{G^|~ z$o5*lg*!W|Hq;>!8DJH!HZ3*%OuxFZ$~|Sy#R|EWxI2TutTqwb3WM(ib7=caej<}~ zcYN@XnVFJX#i55C!zMpGY|&d=$6@3H_?&=vSqF5hqpSOoNL2HlYKobgb52W3n{Eu6 zYJ13mxa04iH7E+{hV7InW;#PJXn(Az!N(%o>Wxv7%B+nBu^yaiJ-aH#fIp9o^$iVu z#`Hm@xG_V4o4Ix~G?QuVyONT*-Q6R-Z=;ensIzo4#-45Rtmw5OhD8^Px)|3gOEGDV zp;z-)|J=Ygv2R+-wI8d9)i0}#OSsE00v}Z4Ns|(^*t?;jcBWwQ9JP?Vt3e9Ehwy7I zm(mI3Tns5J77k=xhHqLpMw*1|%_qUYxpU`qPM-Xb8yu;(%eFRscvk>HR19SYQ0Jv$ zxXU4`RHNwTk}#=eddHU_TY0S7>zni5l37*F-T72yK!V&4bi@#hNL=Xe4j*E_AzSsl zxiK?M^s(r*koBe_jf~2#z#Et{{L3DP_5bOG%ONz~Ku)J_<%ZeZ6NR#8r{2^(HVAAR zC3sFvbJgOTqLozMgRpy&SiTNuNXako~zOU$!Kn0^S%CNlK zDTHj$v&Jo}cvA-_d$*gjp4TDet@(zGe@LSoiR*dL z$o5pA*KrQ=f@9SvUfQp zu!}}g9f#U;Yo{m^sd<-Tw|#=}NCpLsImt&Gv@sAxRjwO8nva53A${B)G8?XGXRD6& zK;{!_yyir^%`gQgiq5f2;$aJCFsDX8o^sEuG8@==+;k0z&5fg1s3`WfbeaX^(#)qR zw5>Qz0;|adT1yqljGTwf>c9F{pQk7+4v{u1Eu9{M8*jEzhUi_bVc_#aRZN*n+H literal 5304 zcmaJ_c|4Te+dqSly~viWvV|xj4>D6(BV^x0vTsG!%uJqyC|e@is1(`veJ#afNeD5v zY}v-n472#%>Up2%_r8C;=W~BPbMA9r=Um_Oy{_+dpL?PV^fZ|nco_fy%-ULNh5*2z zE)3AqLO<5`a-E+7;u#blmu@NbBKHy7e_?b&cHc#oP8e z0vh!70&bBmA6LJ6PIH}FG3Rz_HJ?ZhqklwOSHi&X-9^o%oHgv+x#w+Il@!;Q5uPeH zt*_Uvd_B^`#>K_J?$O4gn3Q!TJi)=+`R&w%YWGB6hBAJ#7C#n(`kA>#HpLGf zpFT>#Y%wO>{V!M!dF>9cnAO>ui55z}Yz`t4XTi{R;`GNy=YEm<393gC=L$-s7(i~Zvmk(mwd9w+w1 zzuMHVW|x)1IlKb`xK5rtxqv60RxLjLxi?THbJEtr;>w#o@oYFF3^CW!IdG+UYIxZ- zI5`hqx1W^{H*Ttn!PwmbS%YpcU}|PoT3wyfSlr@qG|nP_@M`|xhqp$HT-~&qkh(7jpQvt5W?p!47R0pAgm0^T$acNR z%P5%o92w7(Cjgg}l-wHTd#X|6kK@&N)AwQamW|CIr7p=C)YsQrjvj6L1A;jakqcpZ zrW7OSO>VBPzJwu6EC(l|R0OyT%RBf1={Fjj3{+e( z$6k*;{EKO^j6Bp-io-Agm>QNHn|-IK|^PPc4rz8UFPd_56qlg7#8u^LcY))Nwg< z!*X2qbk-7bp!r}@du5rtBY4Y#K$cM@<%Cb7kbfX=<+-7hGW0x92_D|wx6gBzWTf~n zsUV-M>L+wYqw~VNBbRn%O&=JaaGl9nq8JN+&e7Oq^)DDP4#RAm*}K51XP64IwqXzu zkLLR0CCq@c|8s27q1}^-(3%RT>yat_yOKsK*w3+UsD#7e&%9vnlqcz15v{=x5?|pi zDnMt)Y1Pi^4xVHe{^*eE|E%xn2GlXA;yS149nkH7CD=0~;w$9&UaF50-rF!|N!1PM zI*Pf@M92g6{vjVnP6(QUJo@#btz5iK_EW(jz@csRG2Y@=S2m&Q@tJb1lkftV_`lt3 z<5}LKfknHJkTe{}m|l`O^?B=f_Zt8D!ns-2sxw^fK>m~`v!+wL0@9q?K=_}omi8#` zv(2+aj~l<;^A71gn^9c#QRE2CD|sf#LDZ(8&ap$Y<9&N(3knNsA@x}jv%7|dOlJp^ z*Cv|r5pge;+VQFfhaALT`yKf=JE z(J@7i@=k88l;-bxc+vGBr#XXo=gC$O>0@}Tpt=dZy#}!DJXVW`sIbf#_-luhThT0? z{S=c&ylo8(-ZnVx4}YjLJc*&`4PK6nkAvm@?W$9On~4+In|AiQ#wek*iZ;$r@Re6ncfsSbLfWZI+)Q5={W!zWsA*Q(Klcp`=61nC+ww=ElB&_Psh{c5zw7I8h#w`(!HeE8oi)qinz$I^K3Ub->luTl9564QZ zFvHr7{#1C%iCjn6&m+z1;!cEY0l3cEjZct-LcxMR7fMDPWZTLeA)bl)j2AU$G}yRm zW_4*>(&fWj{(lXjA_7G`Y#C)J_FGBYmx?x1weQgiwY87ug%}77ZWwKc7&Y@EuAD^~ zEXf;blh3B&ae`*J-a5(kTmkR+go>G*0{lA#dEi`IW3z}Hi=${I5Eaqc#DT!V?t$Zj zCQ8Vw6DRxHMGiG9>d9>OF84MF!x~(K#D01~SDru2;Z{%+zwb^{=(UrJ`{UW!nh)26ql=O<3C{8`0k(FtMTuuk0WacrB_ zFK0ZDt8S{cx|#RGC$h4#vOf&8@S->T3SWBsv0}P;@N;!lT0ueK>l$9Cm&Q>S1rah( z>y)5!HkZ2q#;pexrS8+7r015@(97iPgLB;0cFGr=XRa@^n)J?Y7-^sq+Gx=lZ%#?z zl7FK2n+6N-yF!LMSyy}YOl7->xOT}+bb0Dl;}D&gUxiqW$rd+0SP zMkzKM24GTkk_PaRJ*dFK&ST*8Fl)ghO9HYUG}8arFP|aEq8~1=^P;yajYNq$sMbsj z_x#e_-`3ab6pIhO#wQ@~ZvXiEV3OK7=hsjgmgTx%d^a7Gcu;IQyuPv6wzd=8LJyqI z9xOCRq=?YDmm_>!nFHNlFl&7gHW7mh2?408dZKjuLZ~-s=rhQ#rswt=Y!y?dus_q* zuY*?07LQH+tC<$MD8Ce4Q5S`@_tnKJ;JN)p-clBX&LpMLmX*Hv0G4v((J?1^^qG!c zD$7F7BAfchCog#g28gVFq!^akT%V_P^lZma9JRy!@DZKyJ6pj&T=vq)>+5V05fM80 zd`FncQ_MzS40QFmJj%%6mtoX;5IQ4^Hq8&;2<%n@cXl^iD^cueTNRVHX0cdo+9Vu% zLJ`}9H{A<0x$v@^DyfspZVrafR64N>PnXxyy0IpnUeTMMM|qTefOsN;n1f|W6;Q|h zEX2nGklYlgz&SKL44vEP>`J-6FYlDpDPZ}<@6QsNL4dzM=q^k7%P}Fa$`M+!9ckok z!PZcmM==O0L)sp!&j(GB--HXX`KwJWjq-lEl%|-Polk8nk0dQNcYZH!pifcnf8-pB z{!n3g&cn-Vx}WP!5a$&C>dDU`D=xCFE-4hdtg=eWb1N$=cCs&_E5(HRYwe_Qds}fZ zT>AZA`$0DQ4v%_zdMtzprym#!-Vjxs^w7wZ%qoWm1r4IW^?H~jD^SndH`YmL@1hEB zobYha)I|br=7_D2G}%ZZF^G&E8M%-{o3%wEPCe?~e7F$|oc`Jjf}BG6;t(2odC)yq z7kP9>^UjzVlrs$VDPi06H|`PIuNw=kvoOedTJxAtckIt|-oJ1pNkKV-rK-Bxw^}hF!+?5HlTHtq_h_#Rh69 zM+MVKtwigeBeMY+*I!V*rUvn@DKIvR7#qRu(({1L^?B$~APtMu&8eVC!ANwAASC|#2poZP^vW6c z(o`*a4ny;x%k***m-iq^9UhMlpNXwXnLr*mZ_^?iFZ|OPkOi4cYS|g=_mr2KHpLnR z<-qBu^Jcp{IosO!BZ890Alw@7&cV1r;<5v!jG^f6zM4Oj|M50!ebwQTq^`z8-)k)$fkSi(j% zo{qEU0ll=sWhr+d4jrYaj$3qBh=4=1hX_A2p*tLwco65gpGU*cT4#2cKyMg;fR*3r z1XCdej!Zy}_W}eqCA!3WJDV65n-p=&1f8yJv2)*Y9y&b{eI*>F{9aMUf&+M&4nRB{U>J@ zJI{NxfAQb8Jw{&uaTadL++xp+&ei)S3)ZwDtZt`#X{ThNFx$>E0XxWt(qVA&31b3x z4nf{M3WaOn1yJFM)Dru@8FILTzv+gyQtxMqVJ8gN^H<&2i(vr$MNA+4S3JbNbTyN> zqPRw)giFig&1g<1bfDCQI?|2e1BKY)KS6<&`V1f+Z=RqVB+g^wzv`{$wTQ||0C0Hw zz9~cLL{2RYvRZBa)!!Mmq(4NSKV%z5b>v1*kTaty^#Digl{( zTc7^brt88x5Q5BbA66EYbs7}97kpeJ!TF5T~E4Q;6`paN>$wx^e)Eb8qIS zTgYNYP!qh9wyHcCbfUL;oB1uG1p*K$NLg=RP4jMg9HEIXX>N|)*||T~=zFZay?w!& zEZwyE`cLS=*d+Ym-jdMaggEHd=fQ)RMZYJ?0jqXO8Pl_~G;57S1p(Cukux*5-|j-h zGOhQmQ{%^KeFI5^3oH=CMVwBcfF!{NV5W|(>K(8QEOJ2C;Ra-i8sjAxA?eGuw6?;& zWL}Pj5a{L@sl=XWh~fGfi`tBx{J@Rx^PnUfa>nf$*m3zZ3LdPrdM0FI<~OFQZWf=Y zdfNQ7!t9P1y@u^K%o6(Y?E~bjb#+hO9N=nl|>;@e;^c+fT7$@K$9ncGUc@p~iqoQ{G-n zcTf#-LX<{6G`YU1(jV|QD-~S7u|Lox)yN_Se>t16*6^gbVWB%2c6$s1-_UTLm8H6cu;~PC#p&a-9IrZoHx296Z$bI(69Hhs;Vk8)j^C?c~oK|`vaVN z@&;k!_5*kK>V`KVZwy^!=9+jm3YW)Ga*iWxL&)#`66#l_VYyy)lZ{J7s2%)ReE{V% zKZ!t`i~W%+5wgCKO*F1zPWv{|+tZT$ELi2NIopWv*72--LddsJ3GDt_{R#8o$<4Qf z@s##~?Zn96Ei-5^e3?u@v3ezLLuAucKMgJ{@g#X>dq#I~zGOXu{K|Y_wzKCdfcFYv zmtU%--~{}fo8b%6w68HrUG3DlyBU!silw&qf7sU4l5o8EhN<1VII&9pYR@s>J)FM6 zK(O%CpH@E7e$I*KR?-yQh!;I?E#&P`2P!P;6U(-h(n*fWxCkov!aGcXtC*ePl3-OM zs$cVna8lFp!FURoBJMJ$l~9Oe_uZP9R_y9ku0S96(n5@q&j%{)te&q0Y9iF9PGkOM zz-l-I&gJ!Z_)J)=uMFsudnt#Wst)O2yNQ4AQD5RbH8fpE*~ahr-;B*!6#MV@bNmQJ Zu#Kl>acUdS ztZBm-Bpv92;;dL%HxI9aIX&Ft7FVpnY|f*S&+36C6o zsm%B4G|=zM*Q?u6cmJ=izczerXlVSZa59KCo0O_)koi+ zC7w!zris>}sin5L({Td0Km-Ahmu@A(0D8fU)`eYBM#d)WW=>Vs)%d;+9dR&lTerWp zBj~`HCs6CP}v6ghea%U#v9UJL@onu z;?J8CEw`I!OzB%M88&CpRR_0XQ8%)8&*s_s|fL6L&kmiH%YA(fV z=7Le`bB;gLI&1Eu~GU+*w^MnWZww^Fs)h;Uq{?yD4lI4P`%W)~St*hjX6YI!^5`ghi zSoYoM7Bi^i+;zb#X%9zU61@j6A(ri%P1S)b_OF-rQR9>W}G~_ z5HMvsB{`c#)Vhv#z_j^OV&^wl9AZS}N{^`|r9<%zf4sOJRBKadC)T!pV!&n*r*!b` zy@hZgmWPStQba`J!Z@LZh03;A16dR)S>C2ihGZ@_@r8VCGfeVR$9KXuM-x6Hm!p@+ zyUd>ge}utG3>uO$M?9dRhc#e}+>CA|He0YAi?PAe#M3P-mdAjqN5!W2lamX6UXR{qBYW`^QySj% z&Fj;I$^0+}r&6v2WFvXa#cNwzHDtR2f3mhfp1BkJQ)A_JGt3-45nDh#8AlHGK=uXc zWL;%AT@1oz4`65St}1IHQ?j+)pq7fDN$<2YPb3kKTh$!U?RSGdk_g${1BtrwnCnwo$D=mE4 zs{BP4e>gwuo*H^fnQVbww%VMg2ANJhKzoD#rv^urEL7v6nfyr5B280J10yZG6&!qP z6dVzJez?HtOe6=99=W6m*gI$j7r1pjx&E-PhPW0Ax?X#7z8yz9YO0^O6yqi-Qjt&t5T8u$+R0{p>dpk9my6OAEci#$=__`N?Db3CosnAxqqf)=jKy@`O9jG8{?z(Yye_Pw4?D&p3}{z$xYbkM%-;|-~x`OPVJKK|D0!>l{2$fzjLCuhd# zFYh%aj|PPoWxs?FFI2gYF8xx_&IRR27y9lVr@R+xNLt5CHzOMaM&`X3Znttn%sgCp@2p%DC?+&wE^)ItKsk~dNFy<@l0-VKL& zAd<1Lq>OH88;%_y2|0i0>IYOxpOr1&44uyuAFUYGeWOuH-WB`4Rpig!`QAV_b#O*y zNA{iV(=#D6c<1ks9?ZYKAP}I~v4T`k(a|*xol0VC-+a*ga_42wVz=rA z=C97a(%14P_B4TO>Tlonx3iAf>vYlrk{{aN@tNuMYs=ht7*=e%fmSIng#j2kdr#!Z zv~fggn^2cl0+WbX*vGf)fHde=YJAMWL;ZI~vawHaC@2+5I59bN>BN1&t+xyA(V9bf zp0?Npk|2Sj57aq|YMu{fXT|sDGo!{9E#UAL{Mn$Z&3*#YMX}B6yRnHezeNwH!46am zRL=+A@j?BLH<(RCus})poOM-Fz)M{kAdU+>zHXB3VMeb`oliD_MB?Q7;3s%$g5$VH zB}DMVq2b*{?CIE{oUgd$0|Orythm3da0+iNL#uvTygyRcf@xWWv)8b}d>$JI4k5s! z{$=~N9$8`LdYw>rFywM)ro0E2boi~b^>skq_x;y0&!DCvS@$JqnoMZ;17NXtkKR_`3ratZQT4%CFEft_8RIxO%Domv zlV&uXn;o63Mms^4b8=U9ozK&KoE2zW<6~5Q*z??$Gue<*nNIRq?3wQ5H*55fv0RIc zz*e(->qZgS$@bLxJdWhUhaiB<|AW_-?E`Egy8ZZM8mmZ)Rls$-M>_t#)7M351Aqmp zl>P-=FMFT#vN92bJ);E_8o~vCcBiW2j75wi3i&5~Rw(i5!MB|}H=Y@-+2DleHSJjk zhg#m8)m6RmMGwH>{L0@Go2rKqiw-^P&Mc|;s$5cmr4n>!Mn;ZZP68>k3ZrN`6X6fKHoXF2^W*{1&SGbt2!-tVw{uT2f>vv~Y z#y^^f66go^{qEGr-oIVxcqcOAL-%_h$CSJDp_Futu_V?EBTyo#%{64r%l%?iX-`4d zSE`6vS3@Npy?yX>C*{GsHl2ObIa1fgZWPxawcc+z$NfVCR?`8Ux^;9n}%*w5zMD)OC-y>s(G5 z?6$;6cw9wRHj8tWp>*B9C@r&?jhyeMQ56D}b@NAG>Ldr9L#W=KR6J>uV+TN(0_X{Z z>xh-y+b2!OSH-S>+obieFvbniVXkPbiRc)NIDASvsZ6nMii#w1xx^3L5Y2l*#11?d ziZ32^ajrXYeF~vZqUC7vlGM(>W+B5{{`}s;lyv}0l0R?0<8*v#iz0f0kCY9nqZ%&H zEE%9jXYg6tv0>+?-sgxhZ@qkKe?O;E;RAz;feF_&+piDVajb_}+M3IUGS>>dkdjy8 zlnIX?zvN$iNco=Wt)5O2xg6ypfM_SEnOH7ezOOhD-_GPxda*TZ0n$(quG0@`jqbP+ z?~etann=<2j`KnuK)MT(Rj`?QVUPpkA9jT51O2Y`>lhV5dp}C}Puc~5bV}K>hF@8> z`&a<6R>umOAJ$LBNo-gGZDoFFn;bZRiiSqk#YNk&!hhzY$kUU=m$+xG=!o|KY%gd% z_|Y6D8sEoYDkPG=r1W(NXE#%WKOH_;4cR`^5XVAI_j~Hec&E?7(RTz_7d_6fcxm z65hFf#3v4Sqr1Kxysovb4qvJpL%yA^S}uIVkfe~x8vTOKrTL_kO$y?}1N$7+?0@#+ z=JEvUiU1rO9Kd)Hc*^g%P+P+53wr$cS!&kuQB&>JUjzb>&-VfVCP|+h6;`1Ts}XaR z!7b9%`j#=|jD&%az~Z`j^$UF4un^9EsOMG$+hfRdhML53-QF)esxZ$_+f$V)mX?-s zeW-Wd>2L*bFic+x8e`_HdrAa6-r6=xUGmLAhaYireG$3QDdUH`ALS0$Vw3K%#&&0` zKU=`!RwHFqlV=r*eCd&whm9d2eWrDe^sh$iM#U}LPtcfbGZTtRTUcJ*SvDUS4X5Kz zIny^M(E8k5NJ`KQ@Z2Wr4Y$p_79A|R)>Lq1rP5Pdq8em)#PpY$h$(Z5AgZ(E%NIFR zfHm%XtR_bnGY2Av^)OP%uU|-gm)ESM88FsgBm{;`47ti`YL7A6u~#X;aDjlcivR?a zL7inkL)c!&)FJ4!yzBUw6M)XPhtO&0;wQuF80NPj`??39;}-ZGO?qrT;M>_DZWFnTRRkCEe6m;y1P|6T8_O^sCb}k zMLY|}XpgcIgjrQ_aoH?cR}YG7u|bEMkg}zGKo4p~$!}^hf?Zq$fV}2r`hoWXDvn$A z$n{>bMZk(MLJ)vD_5NTPAY-6RPNYm;+Eajl#{;0PGPLNx`xhENW+`ARNF-$Ha_I5= zU(K{HNx{eVE;lLBuERZ4x)B$*ep^~w&GYWB9|?azP*Si{BON=IMZL~+bU1Wr(}Pq zDGfP>&Naa>a^X?c)xsY+-ljBX(1hSFKVk_Vsx^>_dVnmKe}y4ZY6CX)~>`RR-*D=$W2c{?v3 zggkHg3$wz)59|G&AAPWt;>Qjbks=_l)teH zc+|HizgAgu1KCp6&d5$UexMb#NE3qWOGf4AgKW^&S~flW*-rQFUJcg*P2{jB^G?D@ zbBP*9)a1pVhw;Xld>e`6+UQi^ZfGD?ek2-Hv&Zn;dT+5AC#rM0(c9%sQnQZDjJ&4i z=e2MiMhjWzj2m1+Kx?;)AUix3ze*fVq{MZ^| z$!(Qg>43HSQfx__Q=bm%3R(S@Y{O84-#Mz1P29#!yU~}1j)Ns^cBsf4lQPqHIyA)h zZbnwP4_il-2X>)tG;}>-j4(HU3BgR_yyP}^7r!hXT!^8Xx#->)@pFtqbn^^|Mcx;=*qDg z5@f*EAJC(EM7g{g=JQWW@)0#ho=?S={5Tb%^h2-Xh#Ce_8OsjsHWC>4hJzKxwe;5f zvDXpE=8bFC5mGor&&ck?>}9V_lJwMSz;>Qae*Aa7MOh7oDNduzIi83*7F{cD<5P7uT|Mv($}GpdqYE9QsZiH?%83c4 zPF1VN&uU4e4`SfPTlFnx&B30JTs0nFc`0F3)$Ayt75B{0;0_|(K%YDA1D8r}3;E2H!U1)e%HbSISc-sO|f;rIL#ycx5Vl;5{xj;Zj!iP8dIL= zLJNg(&wsbO`O?BHrH#5Ho>HgcC+s`oJ7qEw)Q01ib(u0nnk{6K%{k@_H6_CMUKcex zC-G=?CX_Rl0tkhe`d{6AYCFQDYZq4jm@W2&19v;rp{8J(>;eIn4Fbl5CT8K$kCPj?SI zU?r?Q7DM~aVW=o>pY`)`7%Od4*5%Zv1=&77gbMtq2Ek7y^UQ zP$8ilkqC}bbin!R-E>+dlws(#%49&0S1;l?nOFcK+U^SItfLE}e#J7hUkrOmVti!B)wHZQ-SIwk*3;Qg8Ar|ZK`Cd|2UWHExj z`edml)QXnO>P-MRf7pEewps4q-88i0?6`s0Ac8G^d^W<2FjM8mu}ZW<+!~sfFGqs3 z8U=svEq7LeA%S}5`T<$u^zs$E9;oz6m&U{Ww-*0;C&qEmYx``<=)3&tVXcE*LI zn|n(tWrx7$&M;!>=!Hga>$BYjpZ#|1Z=N${?VG5|^{@M&D*E=CD&iX-%LkSVfNb~O z_$!*1h9W-0tToxhviOc`OLKGhz)KgG9uy=c$rR7oHp>j9wYxO6bpZ=v|F=gz)A#*= zZUDRO{49*JMu?6NeHNavjY>=$&*JTO+Qlb&I6i-3I1on{dWlmO{(Kko05>=H{_N{Y zCWfS9I&H}V46Q6^iV)~`|HxZnlcJHh+?iS@S_5Y(5dNGtt%##)O1b$@y>E+Y@TQ-t z?@agJD%E(L{a~5RQh?Gv=d*hqW4BjTNQ)gtfFt8+D11jyyj8UE6{*~6In~fIfBr2KPtJMd`75|v#O!NkCJVv z)Ae-JDaF#j@~Lno91zZa&Xc7u%}kNc)5P;N*>7D?i!qnlnu3bbarS$k574V54X{)- zI1(>zp33eXf?kFU9na*nX4>7t?9p92HKfNb3kwV5YGLWvFeNjYeio940<5jVmUxqW zPu0`11>r|r^Z}&dvZ=N(aC8AdNOmDv0Tp^QP~k%u8%-cTAS;)aEz?LzYo0!3hpu~= zL8e8g)gw@Ez-|+EBtuUH4=Va^k}|ky=u?m-MwRr1Dl|cS4zbKZE7a)t>cnefgz4ny z=_)}ErlelOh}yRqaasaE7NuZ38s+M-Qj769R&0!I z!*H(@4ZE0(+5w7jVHeT#ql?=JaCLb^ZLP@c=;(73BYJxJ@8#tQXoJ9*1&6a9PL~?_*?Cq)#`{;^boT@ zl=Ix~s6zR+R(7o{YsSF^+wj3J07cFA7~sE5sSiC=NaJ}mix<`M+PB_b_bZqblr%;*Y_v8$Zik%M60ha{9T<4 zFpCs|FkWCxq%k|d13?DwbCT9*TL_qR@O4e6FQ3<9eGZiEBVA#)F3Yr`TPd9qugM^W zq=g}c#b*}zH8$R(rAzX*A2 z0bDsUblBIso4L!0+DkFFF;o>UC)?mkuD0RRp&>{xbu@5rI1A`x z*{JE>%83!N)DUFsM@Q?r9A>cnuNUCj&XJ7p-1SRF+`Zfb+6P&_8i zh4KBz58WSg_Tqvpf)XFxjL3d{Iv{VmzLkjz$w9AQIr7eTc|rQNT~8llV83&v_@SmX z5Yq{Fg9;eO>bLp z+wMX=ZQE}AZWiOe0b=+JqJu*+=P;dsVYvH4rEruL9mc8tA%ptYLa?u>7Ew~zy6<5B z!+^amH5BQn!<|3Pfk=D1TK{Iux8!c0EqWYFr}6Yz+s>==*Zp$ghGZ9WOnn$lk3xu> zTPWc-H(~XAzZj0YxeAi^dq)Iq@XSsA_N2-9V0~Y1b=}Mjz&pJDuJ#I8gF5#qo!gnM zsY(Oiu+5~PsFda1^sdWnyuti57v|lNVSn98K8{N(pyjO}co!|T+IV6%N9c>7O zu-2N}P-6%sww^HO1g?T{D4IN&4{!qL&dunkASoGXH+Ja&ftXh9 zlwYw270s-+vI=o3>QB4W$pk?okAulN1QA6UGCb>M*!ds3P_Q6zdi=n~mrLQ*OWR~F zOgL`xACmJMHt^?gGrJCnXxZctnXeVUCLR$5D`BcTz$0Y0+T0Q#Z@@xzbS((-{n5t& z6b9}p;wnmH=o+l1;@?Yl(+qt45hbpLcRos3o=HpNKB;hL~ z`3g2D=F0{({`ZAR)n&$4UnFyRwjHNV1psz8dv61-wd$t)IM`67#7Y#e@CZ9A7lmU% zh`)Vl8%X4@(L$Bcxw*JB4(%7Nu7a=MV0CX-c=H+vy3l&ER%zINAD>{3_W7-ytM}2E zUdIY59winnYeO?Svt;GB@16G>ijhwyOJ3kcL`GNehxN~aTyMwRKD-y9b%bMhSig%t zQJ-H;6VA^51fDbm6DY^v&>b8mVzUNO(JP5p4GYi_rJ)4Y#nDzDa1rDX|<7*TUi!F)MI?|^LdJ_Q z$QMDy{NhC(=Ne{sJ#)Ou`u^K)hwv?5edpJ*`>9%wvV*0<|8Uy%6nyv?TTqP*P%H=n z`(hLm-LZT!(t7c?{Xt16>=pA07``%Gr-hD|#GTV4QznUhMkkfXDAi2Kx9%0Hhu6B4 z%bLRyp4ZegpMLAEG_aG->*6t@JTic-!`Z7K4NJc(`SDtyz|%89odgq>pFgJ4r>Rhh z92t2>L@?aRpS(Mx>W^ZeK()K>xXvHp>q{J0JleTxu>=^xKZSJ2D zt2hNuwV9=tJO3io^bO3>f0j@u@JNRXhsnt0IpWwxMYd!698ZkH4(UpGS=0lkMIVK{ zV$S!+}hFcs`(U@ka*D*%Y$dmlkAYiU`z5^(D^D_}O6Q-hXli#s!jT@`pm z_`RhCgo0x}+vTF|N0Kx&@=$m7_{hkJ(d@SqhaMxZ3)7#ZhU=7&heAG8$=~ir-F>;R z_!{VKGz>3y ztM#I65i%lkJM6+pZHt(GNKQ8RK;VVJg3*gVe<|m`X(e^FU4v9sJ?d)`8lqTTh z(i&e|>s*B5&!$fm)d=#?K4#8AaO4k1(uyUFpG_J*sfePNa4r;Gx)$@>F1O69TMFV> z__593fLhGHv#0Q;1syC>^sS0#-lKCat!ayX+mstaqQQx~({7o&cX71G&7Rwy9#^Nd zn+8UKSr&mO92-BTf__gtBrGd5IJ{-u5DzJ;HFWi05~sqLW*~Fb{7L*xE_RVq@QrFm z?@=KqPa|-s1GXjH)-`Xyk_HdP>>>2e?v!@ciJxD}_<=XTx*naTT}Bhk+{vG?Q&l3Pa!UD_-XaKQ3a4S;;o>7)7fc1GCp3A$Fn>ZwC>BWbTKUISV>k>jiy6d z8B_4#xGBY!`a#$p;&+@3Y;>B}rz1b~yo#9FZ3z2{9gWR!ZffC#=V%8PH&#aH8xZnIR2dPlUOjZ6+eipY1Lf@d zJSJ5#k4Fzj*TzwF{g9ROYc!+qTvby_IoKVnat?H_2%V}0LWLyIb+Mqiu=ORXZepS! z`hl>ZfbSI)^EeQ9ASC|lA$OMhu){up(jqcGDQARt$6<&>W1Jp>sOswQcrJi(Fa~nI z-|vmEs`rpa{!YMxe(fbgM1hOcyjzduQxU4Bn^RrM)9Fqzdhm2DUg0yXeApTgY>Q)7 zIUoA|_Q2oR!Ytt@6r!nwIJ(kh#}MRK20vH4BAl7llgVsnts3>$H$pgFG?RVedb>iEgK~Sx5u+ zN1&2+yQD1zZRfRrG3NL-=4bW!lf||ypiRyQC(+un^ULG-n8qFr`xEvB5+I!pkGBpunV8T#YC6GR5?&D3l~?PtI?;J5j)H6aWn1rO^eDU; zX5YBer`|pm4nYwHezv8Y7=ewrg9FNaop6XcDO67R*)t$W4UIAGg|i4AHwPB%6&F^9 z9vIv!geeOaAZhz$w?DmH2-9E+3tbP4;bV^p)ghw8f$VQ&WOYV_kdj>llq|>UJTs5{ z+8-X6G~;O;5X!2?RVpY-ZLz?5bO?gx5<@Wkx{ZaEO`BO3P+^P--+25Bqqy_tY)N6a zaj*36qQ7^Vxyv1(nsIU!&_Whg+IEz@$!b@;q+Bfn;}(iDo18@a)**)yfo-WJdqQ+# zCu>N}jSWKIuJiTuElDT##k?{%S&H?Xc*}W!+5UhiNE%Qh-LIH+F#j1u$lq*3{Z(Bl ziPul^#UtaNGzAKxTmrX)dcu0CdbB!@G&Q`wJJxg^kp>(**8#?!>NX8-PN7eJ(bNi;|dzW z`cB#o9Ayi92Cu$q8Vja+sHR9xi9wx^|7Rbk!G>C<9*V?897=o`!j68Pj@;;e?F_omsq>?zoCQh!k30~v~rTd)4)gU}K8zUbe{{l(6?TqN0q8ugU3?z~nocBr1t z1Q(1Uk!`B23kz|I9&g?_q`1D^c=Y|RUEb6?w=p_t$3d6E@P;wZf#MAN;GJqEb2*|7 ziNb*fG{@TV@AjNdw$k52$tpwQ@7hhaGL)4(MMEYhM8xi>bXG8AIl6TZk5>&!et&9nzEMR=jA{O%#C~QTq-7XphO2pd2(RLy=m%+r}WZ zcd7KPLeJRd?qobRz+x!ns$T-7LFz%C6Bslo@q1>Z;`v*MPX2^_{K%iLoYGcU_&i)5 zdGDu?WKanV#7AkG9$arHtURf2Ler3e(u`YMreLD80u+xbZ}RE$++z@ST{3t+fg%DrQxqs{3a9Dg)Sj8orIfRSHM;A;Xb$vh0JGL9AP z)?zOy#6?-h)xQwm=}!@4ygAQ)6vpyY7|Jv(AIj(kD*3GI$Y0sXri9k-6@<2T_f1CI zc|y5x)TRe+Xqn2IUr^AI?kpi8@nx>S1KB&C-ORw-$W|gzZ%|rc{OIU6N{gW=Rmif6%w^*1x(L+#P#cUPr@Gr(*)@Z(L) zd1`%LxMsTJ?@sl&D=JC9dsO0=H9vnCDV}a@;V3-6{w3O-uOAJ3P#NNmA&Ke$-#Fv& z>pz!cx(q6lTy4G*3~A{r%#@Kd+t2%li-l_ zb^s~>z&Y%wwd#ys+}-A`9Y=6b1&ro^oelQ)mm-H~4Z986pGTzk1H9^C zJE1=VyH^faAJY0yb)AAEG;G0%J&gjhFuhz@_2#QVoS`8^<^p+wVIawHH0kggUm@C=DZEM7Ji;n!4wcetGkc`$0hoDbwC_1~Gur1d4&6hp- zRWvk;!(E~GI;R=?O(|_hxGSzs&j|UO5CPYxzl;DK)oANLTQO4~k^-ubCCm6cvd-0$ zwU=%{`~^h<<$(_rt|FesvUcQ<-on&Hvh_VK*Vt- z{9~j6m<=RpNzf~VqXHSwtNCX1lnH%TsC!KTMgPh><0)f1`QOV>I$T0XIbiw)BCy~hXMcxGCa`)6cyZ$>K~kBf!j<==CS}J_Qjil2$GI!Bt@+} z0Jut*ZJ9^i2sGo#KnLB(de#cgU!?cUT5+Ail^@b4{4ugu^e{C1^MR`KywKJ*BdAET59nW zOTyZ&(%?J)I6dDX?BtHIR@2he7m}~i5yI#tm1>PAxoJ$67XV&Frn1zLmx3?X_MGPa zMSxna|LL=fv={st>3U_x)o7Zx5a-t~6=nYjQpM$Ydy#6x6$KTn^U%Oi;Zy8A4_VZq zl8@sa(nPTKwCl#2h!HUg$o}QDNVAvoB|-pr)Cg!a#s+O>$6d=gMMKL0&vjq%9XaFe zwA6XqDf~|j@d8>~;Aow5D)lf0isXloQumDO6I&%GA=K12vD3z4excMhyX_I@k;4S~ zkMNAW0N~_=@Z+3TbF&n+i^}E?Bof(ezR6&!LO3<$daLqshFh zw??BkmrRl}`xHQ%fUf>!oFJ>RZU=6(9*G;TjubCzXfcHK;fI0W@@^qxMgjg=qq z7XO=xAH9lhxAgW~FdMPVRfeYrugaC!z{5v0zc5RU!dU2vBJB@udMvxxv+H!9 znqZlb>Q3kvsW0H>&J`9%Q0EwJ?vtoKB)h2y#E|M1>(AYfdL3%L}^xa5E9%y6j58+P$?x1U?&EcI2nB>>oX(+hXkaDRqNGM#-XQ9uhNF$jL<_DDp5y zr!6VuC0*L6m{pJg)6>|kRK56~HE>eT^cZhJk(G_-mJ^pKwe_z^fKYTB z3q?{$v1EnWPrBesmG=b|`5-h>EDO6h9hWCxmf7*_MEg{okfx><7WjM`T13_k4rpGE zsE3X^OG;j<{@m^Aq9!1u$I|%AI*k2N^yQ8Jl!LUrre--Gt*nU&=I>4Kqc!}z?;sD4 zthkBNDc-Mh3xSGHow59!8XJ@Hir0~3v@k3Kc|0=uiWUFcts2vc2vkS;q)v;ihR z2o#s#926{-GJ=T#%W_4hr)TUL)0T;_&+(;!%bd_Dvv;F%kSa;3orH)7O}dPyyvy^~ z!$EZ+yRgq6j!4MhT@b7RU4ETM*jz0W60z7SDzaj%3s2(IfIXrKh~cxyGbi(?o?w4q zp*b*_l`93RoRY5*L(XGZ&#ykEDHL)r@tP?UHFpWkW(SccYbQ_0DukW>Q^g;jI-&eO zblo77N#qnVAOzh9|H6TB793Dn`1{J7-rXum9)Ig`E4Z@>jZa|7tBDt*iGZ9#bg5mG z)^z$PpNk+mjdhgkQ&ncdVa4`^RP+qplV4v*il|k2zrai9+*QFDE-z{GO@&EC`3Z_Y zj!OzcNWFByU!H0Wq;@}`;`|)_>qTD(teoJTX}C+`8?<#%Mp+Tn$(jUnsp6ENAN8;R z=_O`qYAIiF6#SKX^*I1J8&^Wk4~f(`+i-t2>A&cK65}W9P?}*Q^m2BMmE+&E02;<;=pYwhK5m;@yl)auui^rJ<#UDTBlR=5ySG_pEjq`*E3={Kv4D>HS>e)UyIu~{&bO>3wbG%Hm6{11ObGy#C9mwR zFNQiac7R1@YN`LH=(IJP%L+4N_B^z933Zm6+2l#6!9NBc9e{))FmMHkG@oZ0{yz0Wu7Ag8xv4PsRfr8j zCHnj({7SWhGg09@pcx@K2bld2P^8 z6m?wk521D}3qIeYAd1Roz@R4ZhrRTGDHh^C!m-;RLLqIk^nN;wkSEJ)Q^FOd$ZJ$9 ziJ=$t8*Xn0=^N4RVGrTRW$((8K%~-ajd%B#LlL{?AVXSKEHL#jtX@(>Y2_LI= z1N~-ZouXtiOf-{JStwDBDhc@t$}OunAqxITWm8lSU0cJ(;~szj1^QhN;Ph>nuSF1V zchi761c=oY7>vptsPW;m%7e?W5pkgs#q6x>`(2+6&@ z>#vQ00{`4T?Cv|$W1s5IOnxu5CK+pD6-LM}7wO(Jh!*{qUJr1X`iOEz1vt*O$>mHO zw1Pax1u-=p*$!-^{h%k(1)TElZ1h8WXmSB9ELC$fZKw{A4qOEVgXMf_*jSfS`QgMw z>u;xE9J3dIxP-*!aJIxNPO<`&E3YtLCt937CDSS6aAEq&;nuR~uCg}q-Wc8w1*AN@ zW$@d4Q9cU`_X*nu_}6%JpNmySdjorvMYac1U)5X|o0!34p6EHIpT|fJFVnZZ4QJTm zBEt|1_@x|VBoq-5)45r*=)Oi9(Wbd_?;-Q$+LE9@9K!694e`a+d|fk?Ii<@JwQ%*Y zp6hZ_^IkIlfVr~b-Ox<>a~K=d+kDMs{an#0!O0sojbuw|FG?5F<5!@lCuuVp;Jv*c zkXN8x;Sm&v=?my^L`;SL#u@ZEWl6yutN2vLfB!yG{v3QP`zTvuN%p6GhpOR~jZx<^ z^PjUiIYea@4GMbw33+Q{CapmSgL8bj0EJV?e8AEAZz4Rc%{chNC?*NNB)J|2Y=3iIJ=4GfB+jf| zpDI>l+MunJ=4R6?xw#dD*)O4}b$9m|P@A(fOk)mh81-T{^6-=($|d)ZuB6{-rCAm>Ooh*^sE9C-dT&@0s!bCREGjh~mQY04J?1je&|rmnWI5)dz$@y(WSj_7$_c`#tH-M-DnNv8w`YES-h>_-5#B;e zBTvO39adCC@x%?7L7=@6Cql3=&dAf!4&5+l=Sqj&-B=>6o__m49I2inmK}xa+KH&H zO^=c~lKZOnSzIfc{{c+JB5wQnE$aF)+fo#VmGK6&@MeJja#Q;b^JdV#MfJX=^cX7$ zpA6WCWn?H^Tn!utX{r2ecy=$L@;HSI*16V9+;d`eI`yvxcl*{G9Z#h2l$QK@MJd5n zZ~>VIw6Fyz(Dp3SNVE@SJksG*VXsO<+1d>M$JWMvUxd798>*&99F)7U0O2TcB1qa5 zy|_p8&dj%{orOkG-zsa;>r9ng-vt|+5DB}_scjw+BCYC0b2R=qB z|4W!Mjk51(?PZJF_zd*NXeg_k)#v~0?-K#QAXRB(&OE{IXTlFkB%aj;*qMnsk9v#G z2j590`rzAcz2DQPgOR*5?W!{Q`kEHU%V(V9ZhIA|;m`S{C6Lid&K*ZSr>=Ce(}W*eGZ zmUCs-?TyUPCh_PiXBrgNZkD7UX6Mh-Kxt!IIRvyuie66a&ao|?X}sIPK3m~}TCQ96 z4^R)uh-u;!cF+Ex9BpXmRyst9g(In%Ar@xcn%1kP{lk+^xkqsO&A|DJJpx&Ue8X^g zC!B~`ik}g)gcv;h-37p73UGsQw?L{b8ig^}z?;LX7a2{e>;pnYMXdKi#pY@6y-@L= zp0}lnXlb$NxwuAtx2!Fba$>Do2mnmYWeExMmFOOoW#NiyHlT#rPt>?&J(!<91~xLI z8CRAmiu30MY)kZ*%Zf1qTU!pPW{=e0YqC&hUI>`kC0Z0#?qL9VKgBR~$<~A2@pF}H z^7Bdbjq2+8?<@3x2&|~+$;;QXJTXhQw>|BV0z-ZS1eHlQjb>Pe$?^0x8xzYX`4<$p8lryE8g z(7Sur4;b~BPK3b?g}lwz|0sLZa5zj<&&7-?H+tstS_y|Bj4*@fo?=}+J*WRu*q6sc z-SvNeXU0~xBxK+Br9##VlPD=$gvfHqmVIBc4X$v7RFs{`E?FA}*(%DK5z4;r%OLyy zoKbi8_50oT^F04~neQ^^oX_$;pU?Y!#+TS-rkyeFrBNq01a)`+ot+Z9%*@0jQVjhT z*o5jRqJ)boc^*+>%F50b7Pc|;F0UvR2}&bsD-I7oUs6tq7!1Z8=7dVd!*&BO&tC_(Oa@1BM-gGIteY);sH* z6E-zyYE|AC?f(FXNw-P<0y@du-a$Z3zrBD3clW%$pAYCF3j8G;J2N+0>0f3o`H8%w zl$&cGu21M{pWpHVjWQ5{-lX^n%m10%mPi4AgkHI4zPZrb)4uQN<@MF)k0*FMJ|yan zp&duZr=~9kWAsxuFS(FvI&b?$cdZj&4P1fT-J0npW zgTu9ID*XJp^rynZG_T$y>}MIJI{?ktusZGE_3QASWA>8*wl%Sxv^F<^yz~o zA=_{=p^WSb{jW0e&1;~H7WlqpOEI0=(^Hfz+)u}ZRXhq&qJC=m1S0`FCRL+0_J;~Q z_mCZjil^qF>j(IW#EA(E8Wfmc(hq?O8{ge;+uJ=JxSO!5tk5k&9Ruy}1_OX1A&5k) z!l7SWhCOMHllak@#DU)FCkjEEHWi++Hv?>1iL=-^*nGz91z8WKfl)VSf4y1$1~p1Z21RzNJy&ZO7&?u0Vl?`S17n)9|thJO$| zQgw9R<@j(r&k@Sm!1eVdlr`Pg!#*9a5HOK$A)3i8CZ4V!NEx4>U98!QYh@&Ts-2WT zkYNb{Y2J>1c8gzf*M(4^$aRIya~j-3T020GPIr=}n0{)qa8=>bp`h5{I{SBye@qj- z+?QMV9EJ}Ym48W2+I~WAB)$^0VQwiQpeK{+{(V{e%JYc`6)pkM!fQNdVW=tZ8)fW! z9W_?sjs$iqAqr@^cLTqgpPttSdjcEgI1=q|yT0Pch^C2%Yurid-AS*E9*ML)&1$c> zoj~)A5IM5UD5<zBYe9_A%NH)0$v z^RMD?jB)YOmK*8PvWezh9%TV0shcSc4*LRU8L#T-T>3h{9k4P;sEJ8i@qVEfL$_TR zy~fPU%-}egBIC+cmD{-m_Iz(Q@0SLLJSG~!uAl{ny+9)et2#gMEMMMFfvnV!g@pn3 znT{VT(C0mUnnRbnM8u|!_#@w#CcwPeG<|OZ8RJ+at*7Q2PV!f+V-YAM7^^Viy4^*5 zM<^u%L5FQ?Sz22`h)lHd%BV5c^m^|GwbEXfca7t#KP>VYBRiCzW&t^67^Sea6Om?n zl*Gvd>c46yHP^4F*nM)Vqw$J*`DvGO%7!PPsPD{u0liqXf3D*xd2=X?5FuQ;=Aawi zeRrg?FR}&~C<=Ji{f4pf#-6i_9{oZ9nC09wCvV5NJ=~)S zOmg>G&1%QNimCTssssr^GMg&F^rt3I{E}-#)Dt$It5^3mD9O~1y(+FNN=VoZY`VQF zTJrHL^i~Jrw?hIAFEK$Tt_y1YM@t{@nw5lYe*C5#bep`xXPE7L7#8#xX1hI}GiNN_ z;+95@`l^zK+mkGgB3&ifN5fJmiHCJZ&~0w7B$tzVsSG2SRlw!Ay4t2c`%xyd^& z3Dh}1fRYIilmNhrT-e;&vTf}^7CSmSQ< z87^xUcx@%1U<@d(&n@@3<&1U6h9p~;8KeV#0bk2jVvh=QLbwtIjrjAJPH#e8wRsZ$ z^=c8wyadNDG>1x^_;mYfjL;d|S6*B|&nRGLU)bSsJ}jIzwJ3HO z0V;56=GsW}pG<|zVkq!LI9pNEEtW)ok* zz4(8UnTq0&+&>X_X?DebMPu?8e;GU0x&E1{XYc3vUW1?zK!4*`&`J~es6kWZ^!%ru z4pFeTc~U(mWMXAN&NmP=3#b6ow?;CxH~8p#Amvb_A^b>OC2fBVz&dDi)WA0^SQ#ts+@E3toZt4HaEid zW_#pavTb9WPeOQdhVw9w#6e`rO5SrT2@lfHPz2aFz(l4H5h{GQin$C;K7C&C@Y~Yt z?fv9uZ|%-E_e$G3>qMoaKl%~OHwCC**xKev+`-ld5jI4+mH`3$9^4`2UpBX?InIgO z$gs1qfzye6%a)`N!24e2^4NXZC-i|gGH(L#MA1W_soJb$mA}Y}r{&cB|I|_%CYl$L zosaGfTzM}TkUS0-_tXv7Hnvw30NTAPF@yNlDYem=I^Nf>Ttq20QJYYvWI_)BPIsQQ*-_mgfFuNY+U)c?M|5V zH|6l1Eo^<-4@FSZO}PE}K>(s*GDc});frbXvuCAoJ4ByORS>pTFme_pYu5>t<3F;a zY6P_1ukc-X&WoQ0D#Tc;Lu#$mGuNoEAI;u{pv3fhT|gjcTDvDcY|~+-eExEUbA9kk zY)bn=oht`!!fw>Pz)KjrI4I<%L9*R0;peDuoU7U7lW zs`?;gw-m(TE5@uRg4!q0`5CDoz{0UcOTydAD0JdtQ*A}Zr|eMakgoEt3b}U-TS(E@ zUcG^aB5qAE4HY?apJQTpN|&_hu+VlA;Z8*r2l~iF4Gc7%4G!qER)orLImUUO#W35B zWE`d>B7s6#zn*-%Crx3YrGsPma-s6_#2laHhw@3UfD4zW{Qg~bM~Yc1dp#?d#k@At z`S;}(`GpXu8Dxj~Q$t4DRHxf7m*wPyRd*omuY+>48-l(U%8RkYZACCW$^idKq#iYr-R{TQfZ&aKZTWd>YdV` zmBGwy^VmH-XAY{|DYrx(Vc-HDpa?P^MhB5o=`yLtCzZ;aJFS!L(4C`!Q$Nk!XyNKI z1i!8Tfl5T;`Cvx&dLwJ^t#r!cK3gQPm8=}gr><$c z!&3e5**z=UnN?LEdnBe1OLu+JuBkvcMQ*}|@n3otjbHXIxnmwLk|b3{_9=2w+a z4Oj}y&YK0}r{(O>_7^={SYotbg0(1`JHWc^Mt1lhKQ$4Tq00 zw)_x&U6k9|2wBJUUWU$8wy9>1%rx86(I!>TqAC>D$g)j&8q zN)tbqUiZWE(i#Fq|5OnNZ>45w9OEEWXp97(iFIYEgf9Biddz;uN>O4^&nIsn$z&$f)kLa~4z;az+Ie>mYLuXGIX1vSSJi}mw+(OZx z3A#55LsA)WkuHBE+}<2iC&m{Dv0xrVpoxh@(GD)lq#R>u+Lf664nUOb_vlA{GnMP|IKzhfB2+v1s^@Piu4*tigpisJ( zUh1}E*->Zf)~~k=P;*>JZD4896Q(>>?{mON`5W-p4SR&t>9RU6pB9nroAtI7^dQcUm}OW@|J^4&`p2IJKGWwy*-<>B1QQg#eKNAlrhDkn07 zF7i$=J4(6k)PqAvZ_;iM5=G0Pi6sM&R1e7xpmRSoaH(dtuxv004vHys>@?cuFVlc` zhZpvCXOEv84(G5VlcsknXB9@z4e!z!#EkQb6_xQs=eMm=p++q-h#NiYtcI#LAFQr@ z4x&)pozi;0zj7R0&RL`7TATxRzK$3hPCPBj@%B=%UnQNbY||Ji`e||G z-|R?JxnSAnxtiujhFeO>k7!-;^leH?vVikeo0q#3GAc=#kKjFWm z0iG3d5*3o!8%a5%vE9~J9qKH0rZz< z(1U1_W5%1DRdk=zLo1itfk6V7uN^tI_4VzwjF*_4vsK!Xw}ol&3&4%Hh@{pK92vo1 zj^@BI$02Avq3k^^bTV^!V9E83VOKL{HyBDQohZ%>juHpRh{6n_N_ zTz@=kgD2IhxaECb$6PVFK75;)RW?OZb^Eo!2aoXwj|)EE5FDSYY<(`7 zBgQA*a`(bK8*DAjnGx$8WV-jGO)0)^XX5Sc%3LCfah~_>g8DQMH1a;mD1Bm&pG zK|~)vFI_gEIlMa^s4Aohv50c6dys;;@^%r%xe>ycjAEKY``4yV`^TXxTM_g{D$X`c zgqUp)>*z?O9I5fWDj`vCzAm8VaI^S(DE*o91S4EbZBRUbp4*WNk$UyZjj!DK)HD2r z2i)dw-`$Ks?WqR%4XED*em$S_`|1#MP%mp8x%Pvl=Y_OKrdI7=nRLpTYEyHXXT0qf z7fU;b%25-T)XEZUyoeqtxb?4-=$Fq9(P+#qk+YGsX#5FJ9f9>;x>F$`tOVJ@`Vqik zsZK1Mkia#oQK2o0P_l+u^?edQ75DfItnOIriILG@P-tR3mP$fu^52IM)mfpNZ0?N0 z4FaLpuHBcqpAd_pJ?@`I6Hk$x3zm2p`jY0jy^>w&_{wqjKntw@`|Lv#$DlG2BjkKA z{TZ^*-#(#7QwLLAf4hYsi;b6uo=nYCHPGYWw?j`t^M7Vs`)-h+9Bz%#H($9qg|?!# z?WRVmYNbbzES?r58Qrx=zqbRM%BD@=_FW(%IYO~)oVoCSOSY3+%blOaE{^!EggwH) zmIshKC%+Z<5cAjmh@f+3}a^7ig@n zJ4ZJSEE`}-&J15ayJ=F;o0FYwCgf~fTPL^EUPypYJ=DleC6uAT+}i#ZhW)8e)F^Ko zAq=YhlgMdd;d=d}V+=@6u2@Fz)tG%JSDo6U$};gkj?iQ&r7W0N|B<9!(tNj;##APz zeQr;W7c|WscIerl*`PCPee6Q}4DAV}YtCxrDg;HL;|G#MNA_`a%r8 zEq=xu|1?x8E|dzPgmQJ*2M|_`-4-?-?pAf{h593-La!zFfVI@u2Q^|(L)qYjyn2!_ zfad}fBb!EqK}|)>uHSIph*+_2(7&lJnQviUFh(U5U^(ktYA0aOZY@ zL*+$UXbR2ih67)7cF|&jwBbr}7?}|gz&nz)y_|*WiW7hZ;K%>Y$5Zs|F{s~p(K!SU z4CyDV>I>}k)DSds1@hjD2hh|m-`p2xQ#>T|JXanv-uVhwk6e^T{X26OM<%jED?g!i z%L|*%G}&ENGiR79Vb9P3Y&p+rgRvZVXHxcezexop%1rlcxq5h)DwFBNgwV~e346zB z^H}c1rYzcoMgMnWb8`Z2Eg>aNF%G3opb^)X91nGD(MS?ibJI&ZFoCJa0Jm{M#0>x`Ib3E(=^@7CEPvE0OtI!kp*&oNNKwW| zk#F#i$2(N2=3#_sJO8=jmxJPX%53&x*c^pplpbbWR2_o#EEbe5MyzNPeQ8#0*o7cO z8{szsf>|UFprr}pWDuZQ)_5vyVJ$`9GO3P)WTiCW({72TH8OF-7k--;AanpWH(32iwk1y)pNUFUCX5LkXtLRQ1n^lSerT}J7+0tJ1HCkPJATo zwR@3q^sG@LSBI4ff}V0d5iB=~mP@5lHL+x4V^i0HUcV_WCI#!mdXJI(2NOB_(qzd5 z8U1Dqts-aRFgW%Ana~y4niqL<@N+By!@2TTQbG`gp_v)A;@(^)TEBo;+G&W)uH1;D zC z)&Lwcg_3DpU&@PDQ;A0E6Nv#M^J;HB#esjh%? z2+FhACu+#&j@NBhXE1r&AN2+yncVSpX2#mZ$0q{34w-0IZkOH7pgJ~{@Pf7h^ckj3 zjV<&R$iN^7Q|bvv(#XhKXH$>OcjrC>kK1YVzAm<%@Pet~=qPYvyVs7+8@$%pMX1IN z5aVI@-g$|Nk2px>ch6JM0~NrjDKtoJd|cJuE2fr|V>2De*;&^vK~O}dQK33>t%DAL zGrF?2{oEX^zTgKcTtwL=3f*vtO7OE|G-n{>3lS|ynbQL!QDMvavD`@Xe6&fG+avr? zm4vH-`7{wqIuL?bf>|&K*}22R!)9U#l4-aRlBoOUR+uDHG`iPLr^jvl!y{|#V76Vk z`modY4e+BEx*;-7OL%;swfL8>UvIy?C#DNN{$6a>Jv78ZL&NzkhS8u;T3Y)4=ntCW zpn-3j5OglxsL=Wi$z#p2sA;s-%1$KTMad8tbWayEAto<7mlZ0X)Br&bN`1SU35eKw zS`^LGCdIV@rf{R=kVzo-$vw?W!k1A35~94J^6zHbTHCym&c5;_7)Y zdW|kQf5*>JW{6t~iUi`HqA^a(xdefrhD~s;o?TaB$FLp+|6_ zzyFmJ_GZN9eSN0)5QLJ*B-U;WyCfWgvMlzU(BObj)W8%=Sv)ek$n*#nf@J9CDiI=V dXIrlvvn$V?I%H2CN&p`~H&iuMij>Vm{ty0&)>r@l literal 9728 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