rail ramps, some performance stuff, fixes

This commit is contained in:
Bob 2023-06-08 21:58:09 +02:00
parent 89c6c799c0
commit 9e8221feef
15 changed files with 1017 additions and 20 deletions

View File

@ -4,8 +4,11 @@
* Chlorine
* Phosgene
* Mustard gas
* Euphemium capacitor
* Used for schrabidium transmutation, has infinite durability
## Changed
* Updated russian localization
* Mist now spawns cloud particles with the correct color instead of standard white
* HE artillery shells and rockets now turn blocks into slag

View File

@ -4,10 +4,10 @@ mod_build_number=4621
credits=HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion algorithms),\
\ Hoboy (textures, models), Doctor17 (russian localization), Drillgon200 (effects, models,\
\ porting), UFFR (RTGs, guns, casings), Pu-238 (Tom impact effects), Bismarck (chinese localization),\
\ Frooz (models), Minecreep (models), VT-6/24 (models, textures), Pheo (textures, various machines,\
\ models, weapons), Vær (gas centrifuges, better worldgen, ZIRNOX, CP-1 parts, starter guide), Adam29\
\ (liquid petroleum, ethanol, electric furnace), Pashtet (russian localization), MartinTheDragon\
\ porting), UFFR (RTGs, guns, casings, euphemium capacitor), Pu-238 (Tom impact effects), Bismarck\
\ (chinese localization), Frooz (models), Minecreep (models), VT-6/24 (models, textures), Pheo (textures,\
\ various machines, models, weapons), Vær (gas centrifuges, better worldgen, ZIRNOX, CP-1 parts, starter guide),\
\ Adam29 (liquid petroleum, ethanol, electric furnace), Pashtet (russian localization), MartinTheDragon\
\ (calculator, chunk-based fallout), haru315 (spiral point algorithm), Sten89 (models), Pixelguru26\
\ (textures), TheBlueHat (textures), Alcater (GUI textures, porting), impbk2002 (project settings),\
\ Burningwater202 (laminate glass), OvermindDL1 (project settings), TehTemmie (reacher radiation function),\

View File

@ -15,6 +15,7 @@ import com.hbm.blocks.rail.RailNarrowCurve;
import com.hbm.blocks.rail.RailNarrowStraight;
import com.hbm.blocks.rail.RailStandardBuffer;
import com.hbm.blocks.rail.RailStandardCurve;
import com.hbm.blocks.rail.RailStandardRamp;
import com.hbm.blocks.rail.RailStandardStraight;
import com.hbm.blocks.siege.*;
import com.hbm.blocks.test.*;
@ -1107,6 +1108,7 @@ public class ModBlocks {
public static Block rail_narrow_curve;
public static Block rail_large_straight;
public static Block rail_large_curve;
public static Block rail_large_ramp;
public static Block rail_large_buffer;
public static Block statue_elb;
@ -2142,6 +2144,7 @@ public class ModBlocks {
rail_narrow_curve = new RailNarrowCurve().setBlockName("rail_narrow_curve").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_narrow_neo");
rail_large_straight = new RailStandardStraight().setBlockName("rail_large_straight").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight");
rail_large_curve = new RailStandardCurve().setBlockName("rail_large_curve").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight");
rail_large_ramp = new RailStandardRamp().setBlockName("rail_large_ramp").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight");
rail_large_buffer = new RailStandardBuffer().setBlockName("rail_large_buffer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel");
crate = new BlockCrate(Material.wood).setBlockName("crate").setStepSound(Block.soundTypeWood).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.consumableTab).setBlockTextureName(RefStrings.MODID + ":crate");
@ -3378,6 +3381,7 @@ public class ModBlocks {
register(rail_narrow_curve);
register(rail_large_straight);
register(rail_large_curve);
register(rail_large_ramp);
register(rail_large_buffer);
//Crate

View File

@ -0,0 +1,133 @@
package com.hbm.blocks.rail;
import com.hbm.blocks.BlockDummyable;
import com.hbm.handler.MultiblockHandlerXR;
import com.hbm.lib.Library;
import com.hbm.util.fauxpointtwelve.BlockPos;
import cpw.mods.fml.client.registry.RenderingRegistry;
import net.minecraft.block.material.Material;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.MathHelper;
import net.minecraft.util.Vec3;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
public class RailStandardRamp extends BlockDummyable implements IRailNTM {
public RailStandardRamp() {
super(Material.iron);
}
@Override
public TileEntity createNewTileEntity(World world, int meta) {
return null;
}
public static int renderID = RenderingRegistry.getNextAvailableRenderId();
@Override
public int getRenderType() {
return renderID;
}
@Override
public int[] getDimensions() {
return new int[] {0, 0, 2, 2, 1, 0};
}
@Override
public int getOffset() {
return 2;
}
@Override
public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) {
this.setBlockBounds(0F, 0F, 0F, 1F, 0.125F, 1F);
}
@Override
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) {
this.setBlockBounds(0F, 0F, 0F, 1F, 0.125F, 1F);
return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ);
}
@Override
public Vec3 getSnappingPos(World world, int x, int y, int z, double trainX, double trainY, double trainZ) {
return snapAndMove(world, x, y, z, trainX, trainY, trainZ, 0, 0, 0, 0, new RailContext());
}
@Override
public Vec3 getTravelLocation(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info, MoveContext context) {
return snapAndMove(world, x, y, z, trainX, trainY, trainZ, motionX, motionY, motionZ, speed, info);
}
/* Very simple function determining the snapping position and adding the motion value to it, if desired. */
public Vec3 snapAndMove(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info) {
int[] pos = this.findCore(world, x, y, z);
if(pos == null) return Vec3.createVectorHelper(trainX, trainY, trainZ);
int cX = pos[0];
int cY = pos[1];
int cZ = pos[2];
int meta = world.getBlockMetadata(cX, cY, cZ) - this.offset;
ForgeDirection dir = ForgeDirection.getOrientation(meta);
ForgeDirection rot = dir.getRotation(ForgeDirection.UP);
Vec3 vec = Vec3.createVectorHelper(trainX, trainY, trainZ);
if(speed == 0) {
//return vec;
}
if(dir == Library.POS_X || dir == Library.NEG_X) {
double targetX = trainX;
if(motionX > 0) {
targetX += speed;
info.yaw(-90F);
} else {
targetX -= speed;
info.yaw(90F);
}
double dist = (cX + 0.5 - targetX + 2.5) / 5;
vec.xCoord = MathHelper.clamp_double(targetX, cX - 2, cX + 3);
vec.yCoord = MathHelper.clamp_double(dir == Library.POS_X ? cY + dist : cY + 1 - dist, cY, cY + 1);
vec.zCoord = cZ + 0.5 + rot.offsetZ * 0.5;
info.dist(Math.abs(targetX - vec.xCoord) * Math.signum(speed));
info.pos(new BlockPos(cX + (motionX * speed > 0 ? 3 : -3), cY + (motionX * speed > 0 ^ dir == Library.POS_X ? 1 : 0), cZ));
} else {
double targetZ = trainZ;
if(motionZ > 0) {
targetZ += speed;
info.yaw(0F);
} else {
targetZ -= speed;
info.yaw(180F);
}
double dist = (cZ + 0.5 - targetZ + 2.5) / 5;
vec.xCoord = cX + 0.5 + rot.offsetX * 0.5;
vec.yCoord = MathHelper.clamp_double(dir == Library.POS_Z ? cY + dist : cY + 1 - dist, cY, cY + 1);
vec.zCoord = MathHelper.clamp_double(targetZ, cZ - 2,cZ + 3);
info.dist(Math.abs(targetZ - vec.zCoord) * Math.signum(speed));
info.pos(new BlockPos(cX, cY + (motionZ * speed > 0 ^ dir == Library.POS_Z ? 1 : 0), cZ + (motionZ * speed > 0 ? 3 : -3)));
}
return vec;
}
@Override
public TrackGauge getGauge(World world, int x, int y, int z) {
return TrackGauge.STANDARD;
}
protected boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) {
return MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * o, y + dir.offsetY * o, z + dir.offsetZ * o, getDimensions(), x, y, z, dir) &&
MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * o, y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {1, -1, 2, 2, 1, 0}, x, y, z, dir);
}
protected void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) {
MultiblockHandlerXR.fillSpace(world, x + dir.offsetX * o, y + dir.offsetY * o, z + dir.offsetZ * o, getDimensions(), this, dir);
MultiblockHandlerXR.fillSpace(world, x + dir.offsetX * o, y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {1, -1, 2, 2, 1, 0}, this, dir);
}
}

View File

@ -207,6 +207,8 @@ public abstract class EntityRailCarBase extends Entity implements ILookOverlay {
double y = posY + rot.yCoord;
double z = posZ + rot.zCoord;
dummy.setPosition(x, y, z);
dummy.setSize(def.width, def.height);
dummy.velocityChanged = true;
worldObj.spawnEntityInWorld(dummy);
this.dummies[i] = dummy;
}
@ -222,7 +224,6 @@ public abstract class EntityRailCarBase extends Entity implements ILookOverlay {
double x = renderX + rot.xCoord;
double y = renderY + rot.yCoord;
double z = renderZ + rot.zCoord;
dummy.setSize(def.width, def.height); // TEMP
dummy.setPosition(x, y, z);
}
}
@ -372,7 +373,7 @@ public abstract class EntityRailCarBase extends Entity implements ILookOverlay {
/** Returns the "true" position of the train, i.e. the block it wants to snap to */
public BlockPos getCurrentAnchorPos() {
return new BlockPos(posX, posY, posZ);
return new BlockPos(posX, posY + 0.25, posZ);
}
public void derail() {

View File

@ -122,13 +122,13 @@ public class EntityEffectHandler {
private static void handleRadiation(EntityLivingBase entity) {
if(ContaminationUtil.isRadImmune(entity))
return;
World world = entity.worldObj;
if(!world.isRemote) {
if(ContaminationUtil.isRadImmune(entity))
return;
int ix = (int)MathHelper.floor_double(entity.posX);
int iy = (int)MathHelper.floor_double(entity.posY);
int iz = (int)MathHelper.floor_double(entity.posZ);
@ -416,6 +416,10 @@ public class EntityEffectHandler {
}
private static void handleOil(EntityLivingBase entity) {
if(entity.worldObj.isRemote)
return;
int oil = HbmLivingProps.getOil(entity);
if(oil > 0) {

View File

@ -153,7 +153,6 @@ public class PollutionHandler {
eggTimer++;
if(eggTimer < 60) return;
eggTimer = 0;
for(Entry<World, PollutionPerWorld> entry : perWorld.entrySet()) {
HashMap<ChunkCoordIntPair, PollutionData> newPollution = new HashMap();
@ -182,8 +181,12 @@ public class PollutionHandler {
PollutionData newData = newPollution.get(chunk.getKey());
if(newData == null) newData = new PollutionData();
for(int i = 0; i < newData.pollution.length; i++) newData.pollution[i] += data.pollution[i];
newPollution.put(chunk.getKey(), newData);
boolean shouldPut = false;
for(int i = 0; i < newData.pollution.length; i++) {
newData.pollution[i] += data.pollution[i];
if(newData.pollution[i] > 0) shouldPut = true;
}
if(shouldPut) newPollution.put(chunk.getKey(), newData);
//apply neighbor data to neighboring chunks
int[][] offsets = new int[][] {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};
@ -192,8 +195,12 @@ public class PollutionHandler {
PollutionData offsetData = newPollution.get(offPos);
if(offsetData == null) offsetData = new PollutionData();
for(int i = 0; i < offsetData.pollution.length; i++) offsetData.pollution[i] += pollutionForNeightbors[i];
newPollution.put(offPos, offsetData);
shouldPut = false;
for(int i = 0; i < offsetData.pollution.length; i++) {
offsetData.pollution[i] += pollutionForNeightbors[i];
if(offsetData.pollution[i] > 0) shouldPut = true;
}
if(shouldPut) newPollution.put(offPos, offsetData);
}
}

View File

@ -788,6 +788,7 @@ public class ClientProxy extends ServerProxy {
RenderingRegistry.registerBlockHandler(new RenderNarrowCurveRail());
RenderingRegistry.registerBlockHandler(new RenderStandardStraightRail());
RenderingRegistry.registerBlockHandler(new RenderStandardCurveRail());
RenderingRegistry.registerBlockHandler(new RenderStandardRampRail());
RenderingRegistry.registerBlockHandler(new RenderBlockRotated(ModBlocks.charge_dynamite.getRenderType(), ResourceManager.charge_dynamite));
RenderingRegistry.registerBlockHandler(new RenderBlockRotated(ModBlocks.charge_c4.getRenderType(), ResourceManager.charge_c4));

View File

@ -478,11 +478,7 @@ public class ModEventHandler {
@SubscribeEvent
public void onLivingUpdate(LivingUpdateEvent event) {
ItemStack[] prevArmor = null;
try {
prevArmor = (ItemStack[]) ReflectionHelper.findField(EntityLivingBase.class, "field_82180_bT", "previousEquipment").get(event.entityLiving);
} catch(Exception e) { }
ItemStack[] prevArmor = event.entityLiving.previousEquipment;
if(event.entityLiving instanceof EntityPlayer && prevArmor != null && event.entityLiving.getHeldItem() != null
&& (prevArmor[0] == null || prevArmor[0].getItem() != event.entityLiving.getHeldItem().getItem())

View File

@ -13,6 +13,10 @@ import org.lwjgl.opengl.GL11;
import com.hbm.blocks.ILookOverlay;
import com.hbm.blocks.ModBlocks;
import com.hbm.blocks.generic.BlockAshes;
import com.hbm.blocks.rail.IRailNTM;
import com.hbm.blocks.rail.IRailNTM.MoveContext;
import com.hbm.blocks.rail.IRailNTM.RailCheckType;
import com.hbm.blocks.rail.IRailNTM.RailContext;
import com.hbm.config.GeneralConfig;
import com.hbm.entity.effect.EntityNukeTorex;
import com.hbm.entity.mob.EntityHunterChopper;
@ -66,6 +70,7 @@ import com.hbm.tileentity.machine.TileEntityNukeFurnace;
import com.hbm.util.I18nUtil;
import com.hbm.util.ItemStackUtil;
import com.hbm.util.LoggingUtil;
import com.hbm.util.fauxpointtwelve.BlockPos;
import com.hbm.wiaj.GuiWorldInAJar;
import com.hbm.wiaj.cannery.CanneryBase;
import com.hbm.wiaj.cannery.Jars;

View File

@ -1333,6 +1333,7 @@ public class ResourceManager {
public static final IModelCustom rail_narrow_curve = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_narrow_bend.obj"));
public static final IModelCustom rail_standard_straight = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard.obj"));
public static final IModelCustom rail_standard_curve = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard_bend.obj"));
public static final IModelCustom rail_standard_ramp = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard_ramp.obj"));
public static final IModelCustom charge_dynamite = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/charge_dynamite.obj"));
public static final IModelCustom charge_c4 = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/charge_c4.obj"));

View File

@ -0,0 +1,80 @@
package com.hbm.render.block;
import org.lwjgl.opengl.GL11;
import com.hbm.blocks.rail.RailStandardRamp;
import com.hbm.main.ResourceManager;
import com.hbm.render.util.ObjUtil;
import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
import net.minecraft.block.Block;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.world.IBlockAccess;
import net.minecraftforge.client.model.obj.WavefrontObject;
public class RenderStandardRampRail implements ISimpleBlockRenderingHandler {
@Override
public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) {
GL11.glPushMatrix();
Tessellator tessellator = Tessellator.instance;
GL11.glTranslated(0, -0.0625, 0);
GL11.glRotated(90, 0, 1, 0);
GL11.glScaled(0.3, 0.3, 0.3);
tessellator.startDrawingQuads();
ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_ramp, block.getIcon(1, 0), tessellator, 0, false);
tessellator.draw();
GL11.glPopMatrix();
}
@Override
public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) {
int meta = world.getBlockMetadata(x, y, z);
if(meta < 12) return true;
Tessellator tessellator = Tessellator.instance;
tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z));
tessellator.setColorOpaque_F(1, 1, 1);
float rotation = 0;
if(meta == 15)
rotation = 90F / 180F * (float) Math.PI;
if(meta == 12)
rotation = 180F / 180F * (float) Math.PI;
if(meta == 14)
rotation = 270F / 180F * (float) Math.PI;
if(meta == 12) tessellator.addTranslation(0.5F, 0F, 0F);
if(meta == 13) tessellator.addTranslation(-0.5F, 0F, 0F);
if(meta == 14) tessellator.addTranslation(0F, 0F, -0.5F);
if(meta == 15) tessellator.addTranslation(0F, 0F, 0.5F);
tessellator.addTranslation(x + 0.5F, y, z + 0.5F);
ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_ramp, block.getIcon(1, 0), tessellator, rotation, true);
tessellator.addTranslation(-x - 0.5F, -y, -z - 0.5F);
if(meta == 12) tessellator.addTranslation(-0.5F, 0F, 0F);
if(meta == 13) tessellator.addTranslation(0.5F, 0F, 0F);
if(meta == 14) tessellator.addTranslation(0F, 0F, 0.5F);
if(meta == 15) tessellator.addTranslation(0F, 0F, -0.5F);
return true;
}
@Override
public boolean shouldRender3DInInventory(int modelId) {
return true;
}
@Override
public int getRenderId() {
return RailStandardRamp.renderID;
}
}

View File

@ -166,7 +166,7 @@ public class TileEntityMachineElectricFurnace extends TileEntityMachineBase impl
power = Library.chargeTEFromItems(slots, 0, power, maxPower);
this.updateConnections();
if(worldObj.getTotalWorldTime() % 40 == 0) this.updateConnections();
this.consumption = 50;
this.maxProgress = 100;

View File

@ -18,3 +18,6 @@ public net.minecraft.client.settings.KeyBinding field_151474_i # pr
# GuiMainMenu
public net.minecraft.client.gui.GuiMainMenu field_73975_c # splashText
# EntityLivingBase
public net.minecraft.entity.EntityLivingBase field_82180_bT # previousEquipment

View File

@ -0,0 +1,759 @@
# Blender v2.79 (sub 0) OBJ File: 'rail_standard_ramp.blend'
# www.blender.org
o Plane.001
v 1.000000 0.562500 -0.187500
v 1.000000 0.562500 0.187500
v -1.000000 0.562500 0.187500
v -1.000000 0.562500 -0.187500
v -1.000000 0.500000 0.187500
v 1.000000 0.500000 0.187500
v -1.000000 0.500000 -0.187500
v 1.000000 0.500000 -0.187500
v -1.000000 0.700000 -0.812500
v 1.000000 0.700000 -0.812500
v -1.000000 0.700000 -1.187500
v 1.000000 0.700000 -1.187500
v -1.000000 0.800000 -1.812500
v 1.000000 0.800000 -1.812500
v -1.000000 0.800000 -2.187500
v 1.000000 0.800000 -2.187500
v -1.000000 0.100000 2.187500
v 1.000000 0.100000 2.187500
v -1.000000 0.100000 1.812500
v 1.000000 0.100000 1.812500
v -1.000000 0.300000 1.187500
v 1.000000 0.300000 1.187500
v -1.000000 0.300000 0.812500
v 1.000000 0.300000 0.812500
v -1.000000 0.762500 -1.187500
v -1.000000 0.762500 -0.812500
v 1.000000 0.762500 -0.812500
v 1.000000 0.762500 -1.187500
v -1.000000 0.862500 -2.187500
v -1.000000 0.862500 -1.812500
v 1.000000 0.862500 -1.812500
v 1.000000 0.862500 -2.187500
v -1.000000 0.162500 1.812500
v -1.000000 0.162500 2.187500
v 1.000000 0.162500 2.187500
v 1.000000 0.162500 1.812500
v -1.000000 0.362500 0.812500
v -1.000000 0.362500 1.187500
v 1.000000 0.362500 1.187500
v 1.000000 0.362500 0.812500
v -0.812500 0.062500 2.500000
v 0.812500 0.062500 2.500000
v -0.812500 1.062500 -2.500000
v 0.812500 1.062500 -2.500000
v -0.812500 0.187500 2.500000
v 0.812500 0.187500 2.500000
v -0.812500 1.187500 -2.500000
v 0.812500 1.187500 -2.500000
v 0.750000 0.062500 2.500000
v 0.750000 1.062500 -2.500000
v 0.750000 0.187500 2.500000
v 0.750000 1.187500 -2.500000
v -0.750000 1.062500 -2.500000
v -0.750000 0.062500 2.500000
v -0.750000 1.187500 -2.500000
v -0.750000 0.187500 2.500000
v 0.625000 0.162500 2.062500
v 0.937500 0.162500 2.062500
v 0.625000 0.162500 1.937500
v 0.937500 0.162500 1.937500
v 0.625000 0.225000 2.062500
v 0.937500 0.225000 2.062500
v 0.625000 0.225000 1.937500
v 0.937500 0.225000 1.937500
v -0.937500 0.162500 2.062500
v -0.625000 0.162500 2.062500
v -0.937500 0.162500 1.937500
v -0.625000 0.162500 1.937500
v -0.937500 0.225000 2.062500
v -0.625000 0.225000 2.062500
v -0.937500 0.225000 1.937500
v -0.625000 0.225000 1.937500
v 0.625000 0.362500 1.062500
v 0.937500 0.362500 1.062500
v 0.625000 0.362500 0.937500
v 0.937500 0.362500 0.937500
v 0.625000 0.425000 1.062500
v 0.937500 0.425000 1.062500
v 0.625000 0.425000 0.937500
v 0.937500 0.425000 0.937500
v -0.937500 0.362500 1.062500
v -0.625000 0.362500 1.062500
v -0.937500 0.362500 0.937500
v -0.625000 0.362500 0.937500
v -0.937500 0.425000 1.062500
v -0.625000 0.425000 1.062500
v -0.937500 0.425000 0.937500
v -0.625000 0.425000 0.937500
v 0.625000 0.562500 0.062500
v 0.937500 0.562500 0.062500
v 0.625000 0.562500 -0.062500
v 0.937500 0.562500 -0.062500
v 0.625000 0.625000 0.062500
v 0.937500 0.625000 0.062500
v 0.625000 0.625000 -0.062500
v 0.937500 0.625000 -0.062500
v -0.937500 0.562500 0.062500
v -0.625000 0.562500 0.062500
v -0.937500 0.562500 -0.062500
v -0.625000 0.562500 -0.062500
v -0.937500 0.625000 0.062500
v -0.625000 0.625000 0.062500
v -0.937500 0.625000 -0.062500
v -0.625000 0.625000 -0.062500
v 0.625000 0.762500 -0.937500
v 0.937500 0.762500 -0.937500
v 0.625000 0.762500 -1.062500
v 0.937500 0.762500 -1.062500
v 0.625000 0.825000 -0.937500
v 0.937500 0.825000 -0.937500
v 0.625000 0.825000 -1.062500
v 0.937500 0.825000 -1.062500
v -0.937500 0.762500 -0.937500
v -0.625000 0.762500 -0.937500
v -0.937500 0.762500 -1.062500
v -0.625000 0.762500 -1.062500
v -0.937500 0.825000 -0.937500
v -0.625000 0.825000 -0.937500
v -0.937500 0.825000 -1.062500
v -0.625000 0.825000 -1.062500
v 0.625000 0.862500 -1.937500
v 0.937500 0.862500 -1.937500
v 0.625000 0.862500 -2.062500
v 0.937500 0.862500 -2.062500
v 0.625000 0.925000 -1.937500
v 0.937500 0.925000 -1.937500
v 0.625000 0.925000 -2.062500
v 0.937500 0.925000 -2.062500
v -0.937500 0.862500 -1.937500
v -0.625000 0.862500 -1.937500
v -0.937500 0.862500 -2.062500
v -0.625000 0.862500 -2.062500
v -0.937500 0.925000 -1.937500
v -0.625000 0.925000 -1.937500
v -0.937500 0.925000 -2.062500
v -0.625000 0.925000 -2.062500
v -0.812500 0.862500 -1.500000
v -0.812500 0.662500 -0.500000
v -0.812500 0.462500 0.500000
v -0.812500 0.262500 1.500000
v 0.812500 0.262500 1.500000
v 0.812500 0.462500 0.500000
v 0.812500 0.662500 -0.500000
v 0.812500 0.862500 -1.500000
v -0.812500 0.987500 -1.500000
v -0.812500 0.787500 -0.500000
v -0.812500 0.587500 0.500000
v -0.812500 0.387500 1.500000
v 0.812500 0.387500 1.500000
v 0.812500 0.587500 0.500000
v 0.812500 0.787500 -0.500000
v 0.812500 0.987500 -1.500000
v 0.750000 0.262500 1.500000
v 0.750000 0.462500 0.500000
v 0.750000 0.662500 -0.500000
v 0.750000 0.862500 -1.500000
v 0.750000 0.387500 1.500000
v 0.750000 0.587500 0.500000
v 0.750000 0.787500 -0.500000
v 0.750000 0.987500 -1.500000
v -0.750000 0.862500 -1.500000
v -0.750000 0.662500 -0.500000
v -0.750000 0.462500 0.500000
v -0.750000 0.262500 1.500000
v -0.750000 0.987500 -1.500000
v -0.750000 0.787500 -0.500000
v -0.750000 0.587500 0.500000
v -0.750000 0.387500 1.500000
vt -0.000000 0.000000
vt 0.187500 1.000000
vt -0.000000 1.000000
vt 0.218750 1.000000
vt 0.406250 0.000000
vt 0.406250 1.000000
vt 0.218750 1.000000
vt 0.406250 0.000000
vt 0.406250 1.000000
vt 0.218750 1.000000
vt 0.406250 0.000000
vt 0.406250 1.000000
vt 0.218750 1.000000
vt 0.406250 0.000000
vt 0.406250 1.000000
vt 0.218750 1.000000
vt 0.406250 0.000000
vt 0.406250 1.000000
vt -0.000000 0.000000
vt 0.187500 1.000000
vt -0.000000 1.000000
vt -0.000000 0.000000
vt 0.187500 1.000000
vt -0.000000 1.000000
vt -0.000000 0.000000
vt 0.187500 1.000000
vt -0.000000 1.000000
vt -0.000000 0.000000
vt 0.187500 1.000000
vt -0.000000 1.000000
vt 0.406250 0.031250
vt 0.593750 -0.000000
vt 0.593750 0.031250
vt 0.218750 1.000000
vt 0.187500 -0.000000
vt 0.218750 -0.000000
vt 0.218750 1.000000
vt 0.187500 -0.000000
vt 0.218750 -0.000000
vt 0.593750 -0.000000
vt 0.406250 0.031250
vt 0.593750 -0.000000
vt 0.406250 0.031250
vt 0.187500 0.000000
vt 0.218750 0.000000
vt 0.406250 0.031250
vt 0.593750 -0.000000
vt 0.593750 0.031250
vt 0.187500 0.000000
vt 0.218750 0.000000
vt 0.406250 0.031250
vt 0.593750 -0.000000
vt 0.593750 0.031250
vt 0.218750 1.000000
vt 0.187500 -0.000000
vt 0.218750 -0.000000
vt 0.406250 0.031250
vt 0.593750 -0.000000
vt 0.593750 0.031250
vt 0.218750 1.000000
vt 0.187500 -0.000000
vt 0.218750 -0.000000
vt 0.593750 -0.000000
vt 0.406250 0.031250
vt 0.218750 1.000000
vt 0.187500 -0.000000
vt 0.218750 -0.000000
vt 0.593750 -0.000000
vt 0.406250 0.031250
vt 0.187500 0.000000
vt 0.218750 0.000000
vt 0.593750 -0.000000
vt 0.406250 0.031250
vt 0.187500 0.000000
vt 0.218750 0.000000
vt 0.406250 0.031250
vt 0.593750 -0.000000
vt 0.593750 0.031250
vt 0.187500 0.000000
vt 0.218750 0.000000
vt 0.437500 0.156250
vt 0.500000 0.656250
vt 0.437500 0.656250
vt 0.531250 0.656250
vt 0.593750 0.156250
vt 0.593750 0.656250
vt 0.593750 0.156250
vt 0.531250 0.656250
vt 0.531250 0.156250
vt 0.531250 0.718750
vt 0.500000 0.656250
vt 0.531250 0.656250
vt 0.500000 0.156250
vt 0.531250 0.656250
vt 0.500000 0.656250
vt 0.406250 0.156250
vt 0.500000 0.656250
vt 0.531250 0.718750
vt 0.500000 0.718750
vt 0.437500 0.156250
vt 0.500000 0.656250
vt 0.437500 0.656250
vt 0.531250 0.656250
vt 0.500000 0.156250
vt 0.531250 0.156250
vt 0.406250 0.156250
vt 0.406250 0.656250
vt 0.531250 0.718750
vt 0.500000 0.656250
vt 0.531250 0.656250
vt 0.500000 0.656250
vt 0.531250 0.718750
vt 0.500000 0.718750
vt 0.437500 0.062500
vt 0.406250 0.125000
vt 0.406250 0.062500
vt 0.437500 0.125000
vt 0.593750 0.156250
vt 0.437500 0.156250
vt 0.593750 0.062500
vt 0.437500 0.031250
vt 0.593750 0.031250
vt 0.593750 0.125000
vt 0.625000 0.062500
vt 0.625000 0.125000
vt 0.437500 0.062500
vt 0.406250 0.125000
vt 0.406250 0.062500
vt 0.437500 0.125000
vt 0.593750 0.156250
vt 0.437500 0.156250
vt 0.593750 0.062500
vt 0.437500 0.031250
vt 0.593750 0.031250
vt 0.593750 0.125000
vt 0.625000 0.062500
vt 0.625000 0.125000
vt 0.437500 0.062500
vt 0.406250 0.125000
vt 0.406250 0.062500
vt 0.437500 0.125000
vt 0.593750 0.156250
vt 0.437500 0.156250
vt 0.593750 0.062500
vt 0.437500 0.031250
vt 0.593750 0.031250
vt 0.593750 0.125000
vt 0.625000 0.062500
vt 0.625000 0.125000
vt 0.437500 0.062500
vt 0.406250 0.125000
vt 0.406250 0.062500
vt 0.437500 0.125000
vt 0.593750 0.156250
vt 0.437500 0.156250
vt 0.593750 0.062500
vt 0.437500 0.031250
vt 0.593750 0.031250
vt 0.593750 0.125000
vt 0.625000 0.062500
vt 0.625000 0.125000
vt 0.437500 0.062500
vt 0.406250 0.125000
vt 0.406250 0.062500
vt 0.437500 0.125000
vt 0.593750 0.156250
vt 0.437500 0.156250
vt 0.593750 0.062500
vt 0.437500 0.031250
vt 0.593750 0.031250
vt 0.593750 0.125000
vt 0.625000 0.062500
vt 0.625000 0.125000
vt 0.437500 0.062500
vt 0.406250 0.125000
vt 0.406250 0.062500
vt 0.437500 0.125000
vt 0.593750 0.156250
vt 0.437500 0.156250
vt 0.593750 0.062500
vt 0.437500 0.031250
vt 0.593750 0.031250
vt 0.593750 0.125000
vt 0.625000 0.062500
vt 0.625000 0.125000
vt 0.437500 0.062500
vt 0.406250 0.125000
vt 0.406250 0.062500
vt 0.437500 0.125000
vt 0.593750 0.156250
vt 0.437500 0.156250
vt 0.593750 0.062500
vt 0.437500 0.031250
vt 0.593750 0.031250
vt 0.593750 0.125000
vt 0.625000 0.062500
vt 0.625000 0.125000
vt 0.437500 0.062500
vt 0.406250 0.125000
vt 0.406250 0.062500
vt 0.437500 0.125000
vt 0.593750 0.156250
vt 0.437500 0.156250
vt 0.593750 0.062500
vt 0.437500 0.031250
vt 0.593750 0.031250
vt 0.593750 0.125000
vt 0.625000 0.062500
vt 0.625000 0.125000
vt 0.437500 0.062500
vt 0.406250 0.125000
vt 0.406250 0.062500
vt 0.437500 0.125000
vt 0.593750 0.156250
vt 0.437500 0.156250
vt 0.593750 0.062500
vt 0.437500 0.031250
vt 0.593750 0.031250
vt 0.593750 0.125000
vt 0.625000 0.062500
vt 0.625000 0.125000
vt 0.437500 0.062500
vt 0.406250 0.125000
vt 0.406250 0.062500
vt 0.437500 0.125000
vt 0.593750 0.156250
vt 0.437500 0.156250
vt 0.593750 0.062500
vt 0.437500 0.031250
vt 0.593750 0.031250
vt 0.593750 0.125000
vt 0.625000 0.062500
vt 0.625000 0.125000
vt 0.406250 0.156250
vt 0.437500 0.656250
vt 0.406250 0.656250
vt 0.406250 0.156250
vt 0.437500 0.656250
vt 0.406250 0.656250
vt 0.406250 0.156250
vt 0.437500 0.656250
vt 0.406250 0.656250
vt 0.406250 0.156250
vt 0.437500 0.656250
vt 0.406250 0.656250
vt 0.500000 0.156250
vt 0.531250 0.156250
vt 0.531250 0.656250
vt 0.500000 0.156250
vt 0.531250 0.156250
vt 0.531250 0.656250
vt 0.500000 0.156250
vt 0.531250 0.156250
vt 0.531250 0.656250
vt 0.500000 0.156250
vt 0.531250 0.156250
vt 0.437500 0.156250
vt 0.500000 0.656250
vt 0.437500 0.156250
vt 0.500000 0.656250
vt 0.437500 0.156250
vt 0.500000 0.656250
vt 0.437500 0.156250
vt 0.500000 0.656250
vt 0.437500 0.656250
vt 0.406250 0.156250
vt 0.437500 0.156250
vt 0.437500 0.656250
vt 0.406250 0.156250
vt 0.437500 0.156250
vt 0.437500 0.656250
vt 0.406250 0.156250
vt 0.437500 0.156250
vt 0.437500 0.656250
vt 0.406250 0.156250
vt 0.437500 0.156250
vt 0.500000 0.156250
vt 0.500000 0.156250
vt 0.531250 0.656250
vt 0.500000 0.656250
vt 0.500000 0.156250
vt 0.531250 0.656250
vt 0.500000 0.656250
vt 0.500000 0.156250
vt 0.531250 0.656250
vt 0.500000 0.656250
vt 0.593750 0.156250
vt 0.531250 0.156250
vt 0.593750 0.156250
vt 0.531250 0.156250
vt 0.593750 0.156250
vt 0.531250 0.156250
vt 0.593750 0.156250
vt 0.531250 0.156250
vt 0.593750 0.156250
vt 0.593750 0.656250
vt 0.593750 0.156250
vt 0.593750 0.656250
vt 0.593750 0.156250
vt 0.593750 0.656250
vt 0.593750 0.156250
vt 0.593750 0.656250
vt 0.406250 -0.000000
vt 0.187500 1.000000
vt 0.187500 1.000000
vt 0.593750 0.031250
vt 0.593750 0.031250
vt 0.406250 -0.000000
vt 0.406250 -0.000000
vt 0.187500 1.000000
vt 0.406250 -0.000000
vt 0.187500 1.000000
vt 0.593750 0.031250
vt 0.187500 1.000000
vt 0.593750 0.031250
vt 0.593750 0.031250
vt 0.406250 -0.000000
vt 0.593750 0.656250
vt 0.500000 0.718750
vt 0.406250 0.656250
vt 0.531250 0.656250
vt 0.500000 0.718750
vt 0.531250 0.656250
vt 0.406250 0.656250
vt 0.406250 0.656250
vt 0.406250 0.656250
vt 0.406250 0.656250
vt 0.593750 0.656250
vt 0.593750 0.656250
vt 0.593750 0.656250
vt 0.593750 0.656250
vn 0.0000 1.0000 0.0000
vn 0.0000 -1.0000 0.0000
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 1.0000
vn 1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 0.0000 0.9806 0.1961
vn 0.0000 -0.9806 -0.1961
s off
f 2/1/1 4/2/1 3/3/1
f 7/4/2 6/5/2 5/6/2
f 11/7/2 10/8/2 9/9/2
f 15/10/2 14/11/2 13/12/2
f 19/13/2 18/14/2 17/15/2
f 23/16/2 22/17/2 21/18/2
f 27/19/1 25/20/1 26/21/1
f 31/22/1 29/23/1 30/24/1
f 35/25/1 33/26/1 34/27/1
f 39/28/1 37/29/1 38/30/1
f 17/31/3 33/32/3 19/33/3
f 10/34/4 26/35/4 9/36/4
f 18/37/4 34/38/4 17/39/4
f 12/40/5 27/41/5 10/8/5
f 20/42/5 35/43/5 18/14/5
f 11/7/6 28/44/6 12/45/6
f 5/46/3 4/47/3 7/48/3
f 19/13/6 36/49/6 20/50/6
f 13/51/3 29/52/3 15/53/3
f 6/54/4 3/55/4 5/56/4
f 21/57/3 37/58/3 23/59/3
f 14/60/4 30/61/4 13/62/4
f 8/63/5 2/64/5 6/5/5
f 22/65/4 38/66/4 21/67/4
f 16/68/5 31/69/5 14/11/5
f 7/4/6 1/70/6 8/71/6
f 24/72/5 39/73/5 22/17/5
f 15/10/6 32/74/6 16/75/6
f 9/76/3 25/77/3 11/78/3
f 23/16/6 40/79/6 24/80/6
f 141/81/5 46/82/5 42/83/5
f 145/84/3 43/85/3 137/86/3
f 153/87/3 51/88/3 157/89/3
f 46/90/4 49/91/4 42/92/4
f 48/93/7 160/94/7 152/95/7
f 42/83/8 153/96/8 141/81/8
f 44/97/6 52/98/6 48/99/6
f 53/100/5 165/101/5 161/102/5
f 45/103/7 168/104/7 148/105/7
f 43/106/8 161/102/8 137/107/8
f 47/108/6 53/109/6 43/110/6
f 41/111/4 56/112/4 45/113/4
f 61/114/3 59/115/3 57/116/3
f 63/117/6 60/118/6 59/119/6
f 62/120/4 57/121/4 58/122/4
f 64/123/5 58/124/5 60/125/5
f 61/114/1 64/123/1 63/117/1
f 69/126/3 67/127/3 65/128/3
f 71/129/6 68/130/6 67/131/6
f 70/132/4 65/133/4 66/134/4
f 72/135/5 66/136/5 68/137/5
f 69/126/1 72/135/1 71/129/1
f 77/138/3 75/139/3 73/140/3
f 79/141/6 76/142/6 75/143/6
f 78/144/4 73/145/4 74/146/4
f 80/147/5 74/148/5 76/149/5
f 77/138/1 80/147/1 79/141/1
f 85/150/3 83/151/3 81/152/3
f 87/153/6 84/154/6 83/155/6
f 86/156/4 81/157/4 82/158/4
f 88/159/5 82/160/5 84/161/5
f 85/150/1 88/159/1 87/153/1
f 93/162/3 91/163/3 89/164/3
f 95/165/6 92/166/6 91/167/6
f 94/168/4 89/169/4 90/170/4
f 96/171/5 90/172/5 92/173/5
f 93/162/1 96/171/1 95/165/1
f 101/174/3 99/175/3 97/176/3
f 103/177/6 100/178/6 99/179/6
f 102/180/4 97/181/4 98/182/4
f 104/183/5 98/184/5 100/185/5
f 101/174/1 104/183/1 103/177/1
f 109/186/3 107/187/3 105/188/3
f 111/189/6 108/190/6 107/191/6
f 110/192/4 105/193/4 106/194/4
f 112/195/5 106/196/5 108/197/5
f 109/186/1 112/195/1 111/189/1
f 117/198/3 115/199/3 113/200/3
f 119/201/6 116/202/6 115/203/6
f 118/204/4 113/205/4 114/206/4
f 120/207/5 114/208/5 116/209/5
f 117/198/1 120/207/1 119/201/1
f 125/210/3 123/211/3 121/212/3
f 127/213/6 124/214/6 123/215/6
f 126/216/4 121/217/4 122/218/4
f 128/219/5 122/220/5 124/221/5
f 125/210/1 128/219/1 127/213/1
f 133/222/3 131/223/3 129/224/3
f 135/225/6 132/226/6 131/227/6
f 134/228/4 129/229/4 130/230/4
f 136/231/5 130/232/5 132/233/5
f 133/222/1 136/231/1 135/225/1
f 140/234/8 54/235/8 41/236/8
f 139/237/8 164/238/8 140/239/8
f 138/240/8 163/241/8 139/242/8
f 137/243/8 162/244/8 138/245/8
f 145/84/7 55/246/7 47/247/7
f 146/248/7 165/249/7 145/250/7
f 147/251/7 166/252/7 146/253/7
f 148/254/7 167/255/7 147/256/7
f 164/257/5 56/258/5 54/235/5
f 163/259/5 168/260/5 164/238/5
f 162/261/5 167/262/5 163/241/5
f 161/263/5 166/264/5 162/244/5
f 144/265/8 50/266/8 44/267/8
f 143/268/8 156/269/8 144/270/8
f 142/271/8 155/272/8 143/273/8
f 141/274/8 154/275/8 142/276/8
f 149/277/7 51/88/7 46/82/7
f 150/278/7 157/279/7 149/280/7
f 151/281/7 158/282/7 150/283/7
f 152/284/7 159/285/7 151/286/7
f 50/287/3 160/94/3 52/288/3
f 156/289/3 159/285/3 160/290/3
f 155/291/3 158/282/3 159/292/3
f 154/293/3 157/279/3 158/294/3
f 45/103/3 140/295/3 41/296/3
f 148/254/3 139/297/3 140/298/3
f 147/251/3 138/299/3 139/300/3
f 146/248/3 137/301/3 138/302/3
f 44/267/5 152/95/5 144/265/5
f 144/270/5 151/286/5 143/268/5
f 143/273/5 150/283/5 142/271/5
f 142/276/5 149/280/5 141/274/5
f 2/1/1 1/70/1 4/2/1
f 7/4/2 8/71/2 6/5/2
f 11/7/2 12/45/2 10/8/2
f 15/10/2 16/75/2 14/11/2
f 19/13/2 20/50/2 18/14/2
f 23/16/2 24/80/2 22/17/2
f 27/19/1 28/44/1 25/20/1
f 31/22/1 32/74/1 29/23/1
f 35/25/1 36/49/1 33/26/1
f 39/28/1 40/79/1 37/29/1
f 17/31/3 34/303/3 33/32/3
f 10/34/4 27/304/4 26/35/4
f 18/37/4 35/305/4 34/38/4
f 12/40/5 28/306/5 27/41/5
f 20/42/5 36/307/5 35/43/5
f 11/7/6 25/20/6 28/44/6
f 5/46/3 3/308/3 4/47/3
f 19/13/6 33/26/6 36/49/6
f 13/51/3 30/309/3 29/52/3
f 6/54/4 2/310/4 3/55/4
f 21/57/3 38/311/3 37/58/3
f 14/60/4 31/312/4 30/61/4
f 8/63/5 1/313/5 2/64/5
f 22/65/4 39/314/4 38/66/4
f 16/68/5 32/315/5 31/69/5
f 7/4/6 4/2/6 1/70/6
f 24/72/5 40/316/5 39/73/5
f 15/10/6 29/23/6 32/74/6
f 9/76/3 26/317/3 25/77/3
f 23/16/6 37/29/6 40/79/6
f 141/81/5 149/277/5 46/82/5
f 145/84/3 47/247/3 43/85/3
f 153/87/3 49/318/3 51/88/3
f 46/90/4 51/319/4 49/91/4
f 48/93/7 52/288/7 160/94/7
f 42/83/8 49/320/8 153/96/8
f 44/97/6 50/321/6 52/98/6
f 53/100/5 55/246/5 165/101/5
f 45/103/7 56/258/7 168/104/7
f 43/106/8 53/100/8 161/102/8
f 47/108/6 55/322/6 53/109/6
f 41/111/4 54/323/4 56/112/4
f 61/114/3 63/117/3 59/115/3
f 63/117/6 64/123/6 60/118/6
f 62/120/4 61/114/4 57/121/4
f 64/123/5 62/120/5 58/124/5
f 61/114/1 62/120/1 64/123/1
f 69/126/3 71/129/3 67/127/3
f 71/129/6 72/135/6 68/130/6
f 70/132/4 69/126/4 65/133/4
f 72/135/5 70/132/5 66/136/5
f 69/126/1 70/132/1 72/135/1
f 77/138/3 79/141/3 75/139/3
f 79/141/6 80/147/6 76/142/6
f 78/144/4 77/138/4 73/145/4
f 80/147/5 78/144/5 74/148/5
f 77/138/1 78/144/1 80/147/1
f 85/150/3 87/153/3 83/151/3
f 87/153/6 88/159/6 84/154/6
f 86/156/4 85/150/4 81/157/4
f 88/159/5 86/156/5 82/160/5
f 85/150/1 86/156/1 88/159/1
f 93/162/3 95/165/3 91/163/3
f 95/165/6 96/171/6 92/166/6
f 94/168/4 93/162/4 89/169/4
f 96/171/5 94/168/5 90/172/5
f 93/162/1 94/168/1 96/171/1
f 101/174/3 103/177/3 99/175/3
f 103/177/6 104/183/6 100/178/6
f 102/180/4 101/174/4 97/181/4
f 104/183/5 102/180/5 98/184/5
f 101/174/1 102/180/1 104/183/1
f 109/186/3 111/189/3 107/187/3
f 111/189/6 112/195/6 108/190/6
f 110/192/4 109/186/4 105/193/4
f 112/195/5 110/192/5 106/196/5
f 109/186/1 110/192/1 112/195/1
f 117/198/3 119/201/3 115/199/3
f 119/201/6 120/207/6 116/202/6
f 118/204/4 117/198/4 113/205/4
f 120/207/5 118/204/5 114/208/5
f 117/198/1 118/204/1 120/207/1
f 125/210/3 127/213/3 123/211/3
f 127/213/6 128/219/6 124/214/6
f 126/216/4 125/210/4 121/217/4
f 128/219/5 126/216/5 122/220/5
f 125/210/1 126/216/1 128/219/1
f 133/222/3 135/225/3 131/223/3
f 135/225/6 136/231/6 132/226/6
f 134/228/4 133/222/4 129/229/4
f 136/231/5 134/228/5 130/232/5
f 133/222/1 134/228/1 136/231/1
f 140/234/8 164/257/8 54/235/8
f 139/237/8 163/259/8 164/238/8
f 138/240/8 162/261/8 163/241/8
f 137/243/8 161/263/8 162/244/8
f 145/84/7 165/101/7 55/246/7
f 146/248/7 166/264/7 165/249/7
f 147/251/7 167/262/7 166/252/7
f 148/254/7 168/260/7 167/255/7
f 164/257/5 168/104/5 56/258/5
f 163/259/5 167/255/5 168/260/5
f 162/261/5 166/252/5 167/262/5
f 161/263/5 165/249/5 166/264/5
f 144/265/8 156/324/8 50/266/8
f 143/268/8 155/325/8 156/269/8
f 142/271/8 154/326/8 155/272/8
f 141/274/8 153/327/8 154/275/8
f 149/277/7 157/89/7 51/88/7
f 150/278/7 158/294/7 157/279/7
f 151/281/7 159/292/7 158/282/7
f 152/284/7 160/290/7 159/285/7
f 50/287/3 156/328/3 160/94/3
f 156/289/3 155/329/3 159/285/3
f 155/291/3 154/330/3 158/282/3
f 154/293/3 153/331/3 157/279/3
f 45/103/3 148/105/3 140/295/3
f 148/254/3 147/256/3 139/297/3
f 147/251/3 146/253/3 138/299/3
f 146/248/3 145/250/3 137/301/3
f 44/267/5 48/93/5 152/95/5
f 144/270/5 152/284/5 151/286/5
f 143/273/5 151/281/5 150/283/5
f 142/276/5 150/278/5 149/280/5