From 4847e8dd117388b1473feb93b7791b1ababfec28 Mon Sep 17 00:00:00 2001 From: John Haddon Date: Mon, 27 Mar 2023 12:53:53 +0100 Subject: [PATCH] USD PrimitiveAlgo : Fix bugs handling normals - `primvars:normals` takes precedence over UsdGeomPointBased `normals` when reading. - Writing always creates `primvars:normals`, because it can round-trip indexed normals while UsdGeomPointBased `normals` can not. Note that I haven't updated the code for loading skinned normals. I don't have test data for this, and USD doesn't expose skinning of facevarying or indexed primvars in UsdSkelSkinningQuery, so fixing that is a bigger task. --- Changes | 10 ++++ .../IECoreUSD/src/IECoreUSD/PrimitiveAlgo.cpp | 36 ++++++++++--- .../IECoreUSD/test/IECoreUSD/USDSceneTest.py | 53 ++++++++++++++++++- .../data/normalsAttributeAndPrimVar.usda | 16 ++++++ .../test/IECoreUSD/data/normalsPrimVar.usda | 15 ++++++ 5 files changed, 121 insertions(+), 9 deletions(-) create mode 100644 contrib/IECoreUSD/test/IECoreUSD/data/normalsAttributeAndPrimVar.usda create mode 100644 contrib/IECoreUSD/test/IECoreUSD/data/normalsPrimVar.usda diff --git a/Changes b/Changes index 7de921ec59..f5843a6fc0 100644 --- a/Changes +++ b/Changes @@ -1,3 +1,13 @@ +10.4.x.x (relative to 10.4.6.0) +======== + +Fixes +----- + +- USD::PrimitiveAlgo : + - Fixed reading of primitives containing `primvars:normals`. These are now correctly loaded as a primitive variable called `N`, taking precedence over the UsdGeomPointBased `normals` attribute. + - Fixed writing of indexed normals so that the indexing is retained on load. Note that this means that normals are now _always_ written as `primvars:normals` and never via the UsdGeomPointBased `normals` attribute. + 10.4.6.0 (relative to 10.4.5.0) ======== diff --git a/contrib/IECoreUSD/src/IECoreUSD/PrimitiveAlgo.cpp b/contrib/IECoreUSD/src/IECoreUSD/PrimitiveAlgo.cpp index 48a6bcfc53..53accaf467 100644 --- a/contrib/IECoreUSD/src/IECoreUSD/PrimitiveAlgo.cpp +++ b/contrib/IECoreUSD/src/IECoreUSD/PrimitiveAlgo.cpp @@ -97,6 +97,11 @@ void IECoreUSD::PrimitiveAlgo::writePrimitiveVariable( const std::string &name, writePrimitiveVariable( "st", primitiveVariable, primvarsAPI, time ); return; } + else if( name == "N" && runTimeCast( primitiveVariable.data ) ) + { + writePrimitiveVariable( "normals", primitiveVariable, primvarsAPI, time ); + return; + } const pxr::SdfValueTypeName valueTypeName = DataAlgo::valueTypeName( primitiveVariable.data.get() ); pxr::UsdGeomPrimvar usdPrimVar = primvarsAPI.CreatePrimvar( pxr::TfToken( name ), valueTypeName ); @@ -121,11 +126,6 @@ void IECoreUSD::PrimitiveAlgo::writePrimitiveVariable( const std::string &name, { pointBased.CreatePointsAttr().Set( PrimitiveAlgo::toUSDExpanded( value ), time ); } - else if( name == "N" ) - { - pointBased.CreateNormalsAttr().Set( PrimitiveAlgo::toUSDExpanded( value ), time ); - pointBased.SetNormalsInterpolation( PrimitiveAlgo::toUSD( value.interpolation ) ); - } else if( name == "velocity" ) { pointBased.CreateVelocitiesAttr().Set( PrimitiveAlgo::toUSDExpanded( value ), time ); @@ -469,6 +469,23 @@ void IECoreUSD::PrimitiveAlgo::readPrimitiveVariables( const pxr::UsdGeomPrimvar primitive->variables.erase( it ); } } + + // USD uses "normals" for normals and we use "N". + + it = primitive->variables.find( "normals" ); + if( it != primitive->variables.end() ) + { + if( auto d = runTimeCast( it->second.data ) ) + { + // Force the interpretation, since some USD files + // use `vector3f` rather than `normal3f`. I'm looking + // at you, `arnold-usd`. + d->setInterpretation( GeometricData::Normal ); + primitive->variables["N"] = it->second; + primitive->variables.erase( it ); + } + } + } void IECoreUSD::PrimitiveAlgo::readPrimitiveVariables( const pxr::UsdGeomPointBased &pointBased, pxr::UsdTimeCode time, IECoreScene::Primitive *primitive, const Canceller *canceller ) @@ -485,9 +502,14 @@ void IECoreUSD::PrimitiveAlgo::readPrimitiveVariables( const pxr::UsdGeomPointBa } Canceller::check( canceller ); - if( auto n = boost::static_pointer_cast( DataAlgo::fromUSD( pointBased.GetNormalsAttr(), time ) ) ) + if( !primitive->variables.count( "N" ) ) { - primitive->variables["N"] = IECoreScene::PrimitiveVariable( PrimitiveAlgo::fromUSD( pointBased.GetNormalsInterpolation() ), n ); + // Only load `PointBased::GetNormalsAttr()` if we didn't already load `primvars:normals`. + // From the USD API docs : "If normals and primvars:normals are both specified, the latter has precedence." + if( auto n = boost::static_pointer_cast( DataAlgo::fromUSD( pointBased.GetNormalsAttr(), time ) ) ) + { + primitive->variables["N"] = IECoreScene::PrimitiveVariable( PrimitiveAlgo::fromUSD( pointBased.GetNormalsInterpolation() ), n ); + } } } diff --git a/contrib/IECoreUSD/test/IECoreUSD/USDSceneTest.py b/contrib/IECoreUSD/test/IECoreUSD/USDSceneTest.py index 10998d84a2..2212956c75 100644 --- a/contrib/IECoreUSD/test/IECoreUSD/USDSceneTest.py +++ b/contrib/IECoreUSD/test/IECoreUSD/USDSceneTest.py @@ -1370,7 +1370,9 @@ def testPointBasedPrimvars( self ) : # Make sure we redirect Cortex primitive variables to the correct # attributes of UsdGeomPointBased instead of writing them to - # arbitrary primvars. + # arbitrary primvars. We don't use the `normals` attribute though, + # since USD documents `primvars:normals` to take precedence, and + # it is the only way we can preserve indexed normals. stage = pxr.Usd.Stage.Open( fileName ) primvarsAPI = pxr.UsdGeom.PrimvarsAPI( stage.GetPrimAtPath( "/test" ) ) @@ -1382,7 +1384,8 @@ def testPointBasedPrimvars( self ) : usdMesh = pxr.UsdGeom.Mesh( stage.GetPrimAtPath( "/test" ) ) self.assertTrue( usdMesh.GetPointsAttr().HasAuthoredValue() ) - self.assertTrue( usdMesh.GetNormalsAttr().HasAuthoredValue() ) + self.assertFalse( usdMesh.GetNormalsAttr().HasAuthoredValue() ) + self.assertTrue( primvarsAPI.GetPrimvar( "normals" ) ) self.assertTrue( usdMesh.GetVelocitiesAttr().HasAuthoredValue() ) if pxr.Usd.GetVersion() >= ( 0, 19, 11 ) : self.assertTrue( usdMesh.GetAccelerationsAttr().HasAuthoredValue() ) @@ -3333,5 +3336,51 @@ def testInvalidPrimitiveVariables( self ) : del goodCube["uv"] self.assertEqual( goodCube, badCube ) + def testNormalsPrimVar( self ) : + + root = IECoreScene.SceneInterface.create( os.path.dirname( __file__ ) + "/data/normalsPrimVar.usda", IECore.IndexedIO.OpenMode.Read ) + mesh = root.child( "mesh" ).readObject( 0 ) + + self.assertNotIn( "normals", mesh ) + self.assertIn( "N", mesh ) + self.assertEqual( mesh["N"].interpolation, IECoreScene.PrimitiveVariable.Interpolation.FaceVarying ) + self.assertIsNotNone( mesh["N"].indices ) + + def testNormalsPrimVarBeatsNormalsAttribute( self ) : + + root = IECoreScene.SceneInterface.create( os.path.dirname( __file__ ) + "/data/normalsAttributeAndPrimVar.usda", IECore.IndexedIO.OpenMode.Read ) + mesh = root.child( "mesh" ).readObject( 0 ) + + self.assertNotIn( "normals", mesh ) + self.assertIn( "N", mesh ) + self.assertEqual( mesh["N"].data, IECore.V3fVectorData( [ imath.V3f( 0, 0, 1 ) ] * 3, IECore.GeometricData.Interpretation.Normal ) ) + self.assertEqual( mesh["N"].interpolation, IECoreScene.PrimitiveVariable.Interpolation.FaceVarying ) + self.assertIsNone( mesh["N"].indices ) + + def testRoundTripIndexedNormals( self ) : + + mesh = IECoreScene.MeshPrimitive( + IECore.IntVectorData( [ 3, 3 ] ), + IECore.IntVectorData( [ 0, 2, 1, 2, 3, 1 ] ), + "linear", + IECore.V3fVectorData( [ + imath.V3f( 0, 1, 0 ), imath.V3f( 1, 1, 0 ), imath.V3f( 0, 0, 0 ), imath.V3f( 1, 0, 0 ) + ] ) + ) + + mesh["N"] = IECoreScene.PrimitiveVariable( + IECoreScene.PrimitiveVariable.Interpolation.FaceVarying, + IECore.V3fVectorData( [ imath.V3f( 0, 0, 1 ) ], IECore.GeometricData.Interpretation.Normal ), + IECore.IntVectorData( [ 0, 0, 0, 0, 0, 0 ] ) + ) + + fileName = os.path.join( self.temporaryDirectory(), "indexedNormals.usda" ) + root = IECoreScene.SceneInterface.create( fileName, IECore.IndexedIO.OpenMode.Write ) + root.createChild( "mesh" ).writeObject( mesh, 0.0 ) + del root + + root = IECoreScene.SceneInterface.create( fileName, IECore.IndexedIO.OpenMode.Read ) + self.assertEqual( root.child( "mesh").readObject( 0.0 ), mesh ) + if __name__ == "__main__": unittest.main() diff --git a/contrib/IECoreUSD/test/IECoreUSD/data/normalsAttributeAndPrimVar.usda b/contrib/IECoreUSD/test/IECoreUSD/data/normalsAttributeAndPrimVar.usda new file mode 100644 index 0000000000..0e44e18fe7 --- /dev/null +++ b/contrib/IECoreUSD/test/IECoreUSD/data/normalsAttributeAndPrimVar.usda @@ -0,0 +1,16 @@ +#usda 1.0 + +def Mesh "mesh" +{ + int[] faceVertexCounts = [3] + int[] faceVertexIndices = [0, 1, 3] + point3f[] points = [(0, 0, 0), (0, 1, 0), (1, 0, 0)] + normal3f[] primvars:normals = [(0, 0, 1), (0, 0, 1), (0, 0, 1)] ( + elementSize = 3 + interpolation = "faceVarying" + ) + normal3f[] normals = [(0, 0, -1), (0, 0, -1), (0, 0, -1)] ( + interpolation = "vertex" + ) + uniform token subdivisionScheme = "none" +} diff --git a/contrib/IECoreUSD/test/IECoreUSD/data/normalsPrimVar.usda b/contrib/IECoreUSD/test/IECoreUSD/data/normalsPrimVar.usda new file mode 100644 index 0000000000..5e82dd82a2 --- /dev/null +++ b/contrib/IECoreUSD/test/IECoreUSD/data/normalsPrimVar.usda @@ -0,0 +1,15 @@ +#usda 1.0 + +def Mesh "mesh" +{ + float3[] extent = [(-1.0000002, -1, -1.0000005), (1, 1, 1.0000001)] + int[] faceVertexCounts = [4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3] + int[] faceVertexIndices = [0, 1, 21, 20, 1, 2, 22, 21, 2, 3, 23, 22, 3, 4, 24, 23, 4, 5, 25, 24, 5, 6, 26, 25, 6, 7, 27, 26, 7, 8, 28, 27, 8, 9, 29, 28, 9, 10, 30, 29, 10, 11, 31, 30, 11, 12, 32, 31, 12, 13, 33, 32, 13, 14, 34, 33, 14, 15, 35, 34, 15, 16, 36, 35, 16, 17, 37, 36, 17, 18, 38, 37, 18, 19, 39, 38, 19, 0, 20, 39, 20, 21, 41, 40, 21, 22, 42, 41, 22, 23, 43, 42, 23, 24, 44, 43, 24, 25, 45, 44, 25, 26, 46, 45, 26, 27, 47, 46, 27, 28, 48, 47, 28, 29, 49, 48, 29, 30, 50, 49, 30, 31, 51, 50, 31, 32, 52, 51, 32, 33, 53, 52, 33, 34, 54, 53, 34, 35, 55, 54, 35, 36, 56, 55, 36, 37, 57, 56, 37, 38, 58, 57, 38, 39, 59, 58, 39, 20, 40, 59, 40, 41, 61, 60, 41, 42, 62, 61, 42, 43, 63, 62, 43, 44, 64, 63, 44, 45, 65, 64, 45, 46, 66, 65, 46, 47, 67, 66, 47, 48, 68, 67, 48, 49, 69, 68, 49, 50, 70, 69, 50, 51, 71, 70, 51, 52, 72, 71, 52, 53, 73, 72, 53, 54, 74, 73, 54, 55, 75, 74, 55, 56, 76, 75, 56, 57, 77, 76, 57, 58, 78, 77, 58, 59, 79, 78, 59, 40, 60, 79, 60, 61, 81, 80, 61, 62, 82, 81, 62, 63, 83, 82, 63, 64, 84, 83, 64, 65, 85, 84, 65, 66, 86, 85, 66, 67, 87, 86, 67, 68, 88, 87, 68, 69, 89, 88, 69, 70, 90, 89, 70, 71, 91, 90, 71, 72, 92, 91, 72, 73, 93, 92, 73, 74, 94, 93, 74, 75, 95, 94, 75, 76, 96, 95, 76, 77, 97, 96, 77, 78, 98, 97, 78, 79, 99, 98, 79, 60, 80, 99, 80, 81, 101, 100, 81, 82, 102, 101, 82, 83, 103, 102, 83, 84, 104, 103, 84, 85, 105, 104, 85, 86, 106, 105, 86, 87, 107, 106, 87, 88, 108, 107, 88, 89, 109, 108, 89, 90, 110, 109, 90, 91, 111, 110, 91, 92, 112, 111, 92, 93, 113, 112, 93, 94, 114, 113, 94, 95, 115, 114, 95, 96, 116, 115, 96, 97, 117, 116, 97, 98, 118, 117, 98, 99, 119, 118, 99, 80, 100, 119, 100, 101, 121, 120, 101, 102, 122, 121, 102, 103, 123, 122, 103, 104, 124, 123, 104, 105, 125, 124, 105, 106, 126, 125, 106, 107, 127, 126, 107, 108, 128, 127, 108, 109, 129, 128, 109, 110, 130, 129, 110, 111, 131, 130, 111, 112, 132, 131, 112, 113, 133, 132, 113, 114, 134, 133, 114, 115, 135, 134, 115, 116, 136, 135, 116, 117, 137, 136, 117, 118, 138, 137, 118, 119, 139, 138, 119, 100, 120, 139, 120, 121, 141, 140, 121, 122, 142, 141, 122, 123, 143, 142, 123, 124, 144, 143, 124, 125, 145, 144, 125, 126, 146, 145, 126, 127, 147, 146, 127, 128, 148, 147, 128, 129, 149, 148, 129, 130, 150, 149, 130, 131, 151, 150, 131, 132, 152, 151, 132, 133, 153, 152, 133, 134, 154, 153, 134, 135, 155, 154, 135, 136, 156, 155, 136, 137, 157, 156, 137, 138, 158, 157, 138, 139, 159, 158, 139, 120, 140, 159, 140, 141, 161, 160, 141, 142, 162, 161, 142, 143, 163, 162, 143, 144, 164, 163, 144, 145, 165, 164, 145, 146, 166, 165, 146, 147, 167, 166, 147, 148, 168, 167, 148, 149, 169, 168, 149, 150, 170, 169, 150, 151, 171, 170, 151, 152, 172, 171, 152, 153, 173, 172, 153, 154, 174, 173, 154, 155, 175, 174, 155, 156, 176, 175, 156, 157, 177, 176, 157, 158, 178, 177, 158, 159, 179, 178, 159, 140, 160, 179, 160, 161, 181, 180, 161, 162, 182, 181, 162, 163, 183, 182, 163, 164, 184, 183, 164, 165, 185, 184, 165, 166, 186, 185, 166, 167, 187, 186, 167, 168, 188, 187, 168, 169, 189, 188, 169, 170, 190, 189, 170, 171, 191, 190, 171, 172, 192, 191, 172, 173, 193, 192, 173, 174, 194, 193, 174, 175, 195, 194, 175, 176, 196, 195, 176, 177, 197, 196, 177, 178, 198, 197, 178, 179, 199, 198, 179, 160, 180, 199, 180, 181, 201, 200, 181, 182, 202, 201, 182, 183, 203, 202, 183, 184, 204, 203, 184, 185, 205, 204, 185, 186, 206, 205, 186, 187, 207, 206, 187, 188, 208, 207, 188, 189, 209, 208, 189, 190, 210, 209, 190, 191, 211, 210, 191, 192, 212, 211, 192, 193, 213, 212, 193, 194, 214, 213, 194, 195, 215, 214, 195, 196, 216, 215, 196, 197, 217, 216, 197, 198, 218, 217, 198, 199, 219, 218, 199, 180, 200, 219, 200, 201, 221, 220, 201, 202, 222, 221, 202, 203, 223, 222, 203, 204, 224, 223, 204, 205, 225, 224, 205, 206, 226, 225, 206, 207, 227, 226, 207, 208, 228, 227, 208, 209, 229, 228, 209, 210, 230, 229, 210, 211, 231, 230, 211, 212, 232, 231, 212, 213, 233, 232, 213, 214, 234, 233, 214, 215, 235, 234, 215, 216, 236, 235, 216, 217, 237, 236, 217, 218, 238, 237, 218, 219, 239, 238, 219, 200, 220, 239, 220, 221, 241, 240, 221, 222, 242, 241, 222, 223, 243, 242, 223, 224, 244, 243, 224, 225, 245, 244, 225, 226, 246, 245, 226, 227, 247, 246, 227, 228, 248, 247, 228, 229, 249, 248, 229, 230, 250, 249, 230, 231, 251, 250, 231, 232, 252, 251, 232, 233, 253, 252, 233, 234, 254, 253, 234, 235, 255, 254, 235, 236, 256, 255, 236, 237, 257, 256, 237, 238, 258, 257, 238, 239, 259, 258, 239, 220, 240, 259, 240, 241, 261, 260, 241, 242, 262, 261, 242, 243, 263, 262, 243, 244, 264, 263, 244, 245, 265, 264, 245, 246, 266, 265, 246, 247, 267, 266, 247, 248, 268, 267, 248, 249, 269, 268, 249, 250, 270, 269, 250, 251, 271, 270, 251, 252, 272, 271, 252, 253, 273, 272, 253, 254, 274, 273, 254, 255, 275, 274, 255, 256, 276, 275, 256, 257, 277, 276, 257, 258, 278, 277, 258, 259, 279, 278, 259, 240, 260, 279, 260, 261, 281, 280, 261, 262, 282, 281, 262, 263, 283, 282, 263, 264, 284, 283, 264, 265, 285, 284, 265, 266, 286, 285, 266, 267, 287, 286, 267, 268, 288, 287, 268, 269, 289, 288, 269, 270, 290, 289, 270, 271, 291, 290, 271, 272, 292, 291, 272, 273, 293, 292, 273, 274, 294, 293, 274, 275, 295, 294, 275, 276, 296, 295, 276, 277, 297, 296, 277, 278, 298, 297, 278, 279, 299, 298, 279, 260, 280, 299, 280, 281, 301, 300, 281, 282, 302, 301, 282, 283, 303, 302, 283, 284, 304, 303, 284, 285, 305, 304, 285, 286, 306, 305, 286, 287, 307, 306, 287, 288, 308, 307, 288, 289, 309, 308, 289, 290, 310, 309, 290, 291, 311, 310, 291, 292, 312, 311, 292, 293, 313, 312, 293, 294, 314, 313, 294, 295, 315, 314, 295, 296, 316, 315, 296, 297, 317, 316, 297, 298, 318, 317, 298, 299, 319, 318, 299, 280, 300, 319, 300, 301, 321, 320, 301, 302, 322, 321, 302, 303, 323, 322, 303, 304, 324, 323, 304, 305, 325, 324, 305, 306, 326, 325, 306, 307, 327, 326, 307, 308, 328, 327, 308, 309, 329, 328, 309, 310, 330, 329, 310, 311, 331, 330, 311, 312, 332, 331, 312, 313, 333, 332, 313, 314, 334, 333, 314, 315, 335, 334, 315, 316, 336, 335, 316, 317, 337, 336, 317, 318, 338, 337, 318, 319, 339, 338, 319, 300, 320, 339, 320, 321, 341, 340, 321, 322, 342, 341, 322, 323, 343, 342, 323, 324, 344, 343, 324, 325, 345, 344, 325, 326, 346, 345, 326, 327, 347, 346, 327, 328, 348, 347, 328, 329, 349, 348, 329, 330, 350, 349, 330, 331, 351, 350, 331, 332, 352, 351, 332, 333, 353, 352, 333, 334, 354, 353, 334, 335, 355, 354, 335, 336, 356, 355, 336, 337, 357, 356, 337, 338, 358, 357, 338, 339, 359, 358, 339, 320, 340, 359, 340, 341, 361, 360, 341, 342, 362, 361, 342, 343, 363, 362, 343, 344, 364, 363, 344, 345, 365, 364, 345, 346, 366, 365, 346, 347, 367, 366, 347, 348, 368, 367, 348, 349, 369, 368, 349, 350, 370, 369, 350, 351, 371, 370, 351, 352, 372, 371, 352, 353, 373, 372, 353, 354, 374, 373, 354, 355, 375, 374, 355, 356, 376, 375, 356, 357, 377, 376, 357, 358, 378, 377, 358, 359, 379, 378, 359, 340, 360, 379, 1, 0, 380, 2, 1, 380, 3, 2, 380, 4, 3, 380, 5, 4, 380, 6, 5, 380, 7, 6, 380, 8, 7, 380, 9, 8, 380, 10, 9, 380, 11, 10, 380, 12, 11, 380, 13, 12, 380, 14, 13, 380, 15, 14, 380, 16, 15, 380, 17, 16, 380, 18, 17, 380, 19, 18, 380, 0, 19, 380, 360, 361, 381, 361, 362, 381, 362, 363, 381, 363, 364, 381, 364, 365, 381, 365, 366, 381, 366, 367, 381, 367, 368, 381, 368, 369, 381, 369, 370, 381, 370, 371, 381, 371, 372, 381, 372, 373, 381, 373, 374, 381, 374, 375, 381, 375, 376, 381, 376, 377, 381, 377, 378, 381, 378, 379, 381, 379, 360, 381] + point3f[] points = [(0.14877813, -0.98768836, -0.048340943), (0.12655823, -0.98768836, -0.09194993), (0.09194993, -0.98768836, -0.12655823), (0.048340935, -0.98768836, -0.14877811), (0, -0.98768836, -0.15643455), (-0.048340935, -0.98768836, -0.1487781), (-0.09194992, -0.98768836, -0.1265582), (-0.12655818, -0.98768836, -0.0919499), (-0.14877807, -0.98768836, -0.048340924), (-0.15643452, -0.98768836, 0), (-0.14877807, -0.98768836, 0.048340924), (-0.12655818, -0.98768836, 0.091949895), (-0.091949895, -0.98768836, 0.12655817), (-0.048340924, -0.98768836, 0.14877805), (-4.6621107e-9, -0.98768836, 0.15643449), (0.04834091, -0.98768836, 0.14877804), (0.09194988, -0.98768836, 0.12655815), (0.12655815, -0.98768836, 0.09194989), (0.14877804, -0.98768836, 0.048340913), (0.15643448, -0.98768836, 0), (0.29389283, -0.95105654, -0.095491566), (0.25000018, -0.95105654, -0.18163574), (0.18163574, -0.95105654, -0.25000015), (0.09549155, -0.95105654, -0.2938928), (0, -0.95105654, -0.30901715), (-0.09549155, -0.95105654, -0.29389277), (-0.18163571, -0.95105654, -0.2500001), (-0.2500001, -0.95105654, -0.1816357), (-0.2938927, -0.95105654, -0.09549153), (-0.30901706, -0.95105654, 0), (-0.2938927, -0.95105654, 0.09549153), (-0.25000006, -0.95105654, 0.18163568), (-0.18163568, -0.95105654, 0.25000006), (-0.09549153, -0.95105654, 0.29389268), (-9.209424e-9, -0.95105654, 0.30901703), (0.0954915, -0.95105654, 0.29389265), (0.18163563, -0.95105654, 0.25000003), (0.25, -0.95105654, 0.18163565), (0.29389265, -0.95105654, 0.095491506), (0.309017, -0.95105654, 0), (0.43177092, -0.8910065, -0.14029087), (0.3672863, -0.8910065, -0.2668491), (0.2668491, -0.8910065, -0.36728626), (0.14029086, -0.8910065, -0.43177086), (0, -0.8910065, -0.45399073), (-0.14029086, -0.8910065, -0.43177083), (-0.26684904, -0.8910065, -0.36728618), (-0.36728615, -0.8910065, -0.266849), (-0.43177077, -0.8910065, -0.14029081), (-0.45399064, -0.8910065, 0), (-0.43177077, -0.8910065, 0.14029081), (-0.36728612, -0.8910065, 0.26684898), (-0.26684898, -0.8910065, 0.36728612), (-0.14029081, -0.8910065, 0.4317707), (-1.3529972e-8, -0.8910065, 0.45399058), (0.14029078, -0.8910065, 0.43177068), (0.26684892, -0.8910065, 0.3672861), (0.36728606, -0.8910065, 0.26684895), (0.43177065, -0.8910065, 0.1402908), (0.45399052, -0.8910065, 0), (0.55901736, -0.809017, -0.18163574), (0.47552857, -0.809017, -0.3454917), (0.3454917, -0.809017, -0.47552854), (0.18163572, -0.809017, -0.5590173), (0, -0.809017, -0.58778554), (-0.18163572, -0.809017, -0.55901724), (-0.34549165, -0.809017, -0.47552842), (-0.4755284, -0.809017, -0.3454916), (-0.5590171, -0.809017, -0.18163566), (-0.58778536, -0.809017, 0), (-0.5590171, -0.809017, 0.18163566), (-0.47552836, -0.809017, 0.34549156), (-0.34549156, -0.809017, 0.47552833), (-0.18163566, -0.809017, 0.55901706), (-1.7517365e-8, -0.809017, 0.5877853), (0.18163562, -0.809017, 0.55901706), (0.3454915, -0.809017, 0.4755283), (0.47552827, -0.809017, 0.34549153), (0.559017, -0.809017, 0.18163563), (0.58778524, -0.809017, 0), (0.67249894, -0.70710677, -0.21850814), (0.5720618, -0.70710677, -0.41562718), (0.41562718, -0.70710677, -0.5720617), (0.21850812, -0.70710677, -0.6724989), (0, -0.70710677, -0.7071071), (-0.21850812, -0.70710677, -0.6724988), (-0.4156271, -0.70710677, -0.5720616), (-0.57206154, -0.70710677, -0.41562706), (-0.6724987, -0.70710677, -0.21850805), (-0.70710695, -0.70710677, 0), (-0.6724987, -0.70710677, 0.21850805), (-0.57206154, -0.70710677, 0.415627), (-0.415627, -0.70710677, 0.5720615), (-0.21850805, -0.70710677, 0.6724986), (-2.1073424e-8, -0.70710677, 0.7071068), (0.21850799, -0.70710677, 0.6724986), (0.4156269, -0.70710677, 0.5720614), (0.5720614, -0.70710677, 0.41562697), (0.6724985, -0.70710677, 0.21850802), (0.70710677, -0.70710677, 0), (0.7694214, -0.58778524, -0.25000015), (0.65450895, -0.58778524, -0.47552854), (0.47552854, -0.58778524, -0.6545089), (0.25000012, -0.58778524, -0.7694213), (0, -0.58778524, -0.80901736), (-0.25000012, -0.58778524, -0.7694212), (-0.47552845, -0.58778524, -0.65450877), (-0.6545087, -0.58778524, -0.4755284), (-0.7694211, -0.58778524, -0.25000006), (-0.8090172, -0.58778524, 0), (-0.7694211, -0.58778524, 0.25000006), (-0.65450865, -0.58778524, 0.47552836), (-0.47552836, -0.58778524, 0.6545086), (-0.25000006, -0.58778524, 0.769421), (-2.4110586e-8, -0.58778524, 0.8090171), (0.24999999, -0.58778524, 0.769421), (0.47552827, -0.58778524, 0.65450853), (0.65450853, -0.58778524, 0.4755283), (0.7694209, -0.58778524, 0.25), (0.809017, -0.58778524, 0), (0.8473981, -0.45399052, -0.27533633), (0.7208399, -0.45399052, -0.5237208), (0.5237208, -0.45399052, -0.72083986), (0.2753363, -0.45399052, -0.847398), (0, -0.45399052, -0.89100695), (-0.2753363, -0.45399052, -0.847398), (-0.5237207, -0.45399052, -0.7208397), (-0.7208396, -0.45399052, -0.5237206), (-0.8473978, -0.45399052, -0.2753362), (-0.89100677, -0.45399052, 0), (-0.8473978, -0.45399052, 0.2753362), (-0.7208396, -0.45399052, 0.5237206), (-0.5237206, -0.45399052, 0.72083956), (-0.2753362, -0.45399052, 0.8473977), (-2.6554064e-8, -0.45399052, 0.89100665), (0.27533615, -0.45399052, 0.8473976), (0.5237205, -0.45399052, 0.7208395), (0.72083944, -0.45399052, 0.52372056), (0.84739757, -0.45399052, 0.27533618), (0.8910065, -0.45399052, 0), (0.9045091, -0.30901697, -0.2938928), (0.7694214, -0.30901697, -0.55901736), (0.55901736, -0.30901697, -0.76942134), (0.29389277, -0.30901697, -0.904509), (0, -0.30901697, -0.951057), (-0.29389277, -0.30901697, -0.90450895), (-0.55901724, -0.30901697, -0.7694212), (-0.76942116, -0.30901697, -0.5590172), (-0.90450877, -0.30901697, -0.2938927), (-0.9510568, -0.30901697, 0), (-0.90450877, -0.30901697, 0.2938927), (-0.7694211, -0.30901697, 0.5590171), (-0.5590171, -0.30901697, 0.76942104), (-0.2938927, -0.30901697, 0.90450865), (-2.8343694e-8, -0.30901697, 0.95105666), (0.29389262, -0.30901697, 0.9045086), (0.559017, -0.30901697, 0.769421), (0.7694209, -0.30901697, 0.55901706), (0.90450853, -0.30901697, 0.29389265), (0.95105654, -0.30901697, 0), (0.93934804, -0.15643437, -0.30521268), (0.7990572, -0.15643437, -0.580549), (0.580549, -0.15643437, -0.7990571), (0.30521265, -0.15643437, -0.9393479), (0, -0.15643437, -0.98768884), (-0.30521265, -0.15643437, -0.93934786), (-0.5805489, -0.15643437, -0.79905695), (-0.7990569, -0.15643437, -0.5805488), (-0.9393477, -0.15643437, -0.30521256), (-0.9876886, -0.15643437, 0), (-0.9393477, -0.15643437, 0.30521256), (-0.7990568, -0.15643437, 0.58054876), (-0.58054876, -0.15643437, 0.79905677), (-0.30521256, -0.15643437, 0.93934757), (-2.9435407e-8, -0.15643437, 0.9876885), (0.30521247, -0.15643437, 0.93934757), (0.58054864, -0.15643437, 0.7990567), (0.79905665, -0.15643437, 0.5805487), (0.9393475, -0.15643437, 0.3052125), (0.98768836, -0.15643437, 0), (0.95105714, 0, -0.30901718), (0.80901754, 0, -0.5877856), (0.5877856, 0, -0.8090175), (0.30901715, 0, -0.951057), (0, 0, -1.0000005), (-0.30901715, 0, -0.95105696), (-0.5877855, 0, -0.8090173), (-0.80901724, 0, -0.5877854), (-0.9510568, 0, -0.30901706), (-1.0000002, 0, 0), (-0.9510568, 0, 0.30901706), (-0.8090172, 0, 0.58778536), (-0.58778536, 0, 0.8090171), (-0.30901706, 0, 0.95105666), (-2.9802322e-8, 0, 1.0000001), (0.30901697, 0, 0.9510566), (0.58778524, 0, 0.80901706), (0.809017, 0, 0.5877853), (0.95105654, 0, 0.309017), (1, 0, 0), (0.93934804, 0.15643437, -0.30521268), (0.7990572, 0.15643437, -0.580549), (0.580549, 0.15643437, -0.7990571), (0.30521265, 0.15643437, -0.9393479), (0, 0.15643437, -0.98768884), (-0.30521265, 0.15643437, -0.93934786), (-0.5805489, 0.15643437, -0.79905695), (-0.7990569, 0.15643437, -0.5805488), (-0.9393477, 0.15643437, -0.30521256), (-0.9876886, 0.15643437, 0), (-0.9393477, 0.15643437, 0.30521256), (-0.7990568, 0.15643437, 0.58054876), (-0.58054876, 0.15643437, 0.79905677), (-0.30521256, 0.15643437, 0.93934757), (-2.9435407e-8, 0.15643437, 0.9876885), (0.30521247, 0.15643437, 0.93934757), (0.58054864, 0.15643437, 0.7990567), (0.79905665, 0.15643437, 0.5805487), (0.9393475, 0.15643437, 0.3052125), (0.98768836, 0.15643437, 0), (0.9045091, 0.30901697, -0.2938928), (0.7694214, 0.30901697, -0.55901736), (0.55901736, 0.30901697, -0.76942134), (0.29389277, 0.30901697, -0.904509), (0, 0.30901697, -0.951057), (-0.29389277, 0.30901697, -0.90450895), (-0.55901724, 0.30901697, -0.7694212), (-0.76942116, 0.30901697, -0.5590172), (-0.90450877, 0.30901697, -0.2938927), (-0.9510568, 0.30901697, 0), (-0.90450877, 0.30901697, 0.2938927), (-0.7694211, 0.30901697, 0.5590171), (-0.5590171, 0.30901697, 0.76942104), (-0.2938927, 0.30901697, 0.90450865), (-2.8343694e-8, 0.30901697, 0.95105666), (0.29389262, 0.30901697, 0.9045086), (0.559017, 0.30901697, 0.769421), (0.7694209, 0.30901697, 0.55901706), (0.90450853, 0.30901697, 0.29389265), (0.95105654, 0.30901697, 0), (0.8473981, 0.45399052, -0.27533633), (0.7208399, 0.45399052, -0.5237208), (0.5237208, 0.45399052, -0.72083986), (0.2753363, 0.45399052, -0.847398), (0, 0.45399052, -0.89100695), (-0.2753363, 0.45399052, -0.847398), (-0.5237207, 0.45399052, -0.7208397), (-0.7208396, 0.45399052, -0.5237206), (-0.8473978, 0.45399052, -0.2753362), (-0.89100677, 0.45399052, 0), (-0.8473978, 0.45399052, 0.2753362), (-0.7208396, 0.45399052, 0.5237206), (-0.5237206, 0.45399052, 0.72083956), (-0.2753362, 0.45399052, 0.8473977), (-2.6554064e-8, 0.45399052, 0.89100665), (0.27533615, 0.45399052, 0.8473976), (0.5237205, 0.45399052, 0.7208395), (0.72083944, 0.45399052, 0.52372056), (0.84739757, 0.45399052, 0.27533618), (0.8910065, 0.45399052, 0), (0.7694214, 0.58778524, -0.25000015), (0.65450895, 0.58778524, -0.47552854), (0.47552854, 0.58778524, -0.6545089), (0.25000012, 0.58778524, -0.7694213), (0, 0.58778524, -0.80901736), (-0.25000012, 0.58778524, -0.7694212), (-0.47552845, 0.58778524, -0.65450877), (-0.6545087, 0.58778524, -0.4755284), (-0.7694211, 0.58778524, -0.25000006), (-0.8090172, 0.58778524, 0), (-0.7694211, 0.58778524, 0.25000006), (-0.65450865, 0.58778524, 0.47552836), (-0.47552836, 0.58778524, 0.6545086), (-0.25000006, 0.58778524, 0.769421), (-2.4110586e-8, 0.58778524, 0.8090171), (0.24999999, 0.58778524, 0.769421), (0.47552827, 0.58778524, 0.65450853), (0.65450853, 0.58778524, 0.4755283), (0.7694209, 0.58778524, 0.25), (0.809017, 0.58778524, 0), (0.67249894, 0.70710677, -0.21850814), (0.5720618, 0.70710677, -0.41562718), (0.41562718, 0.70710677, -0.5720617), (0.21850812, 0.70710677, -0.6724989), (0, 0.70710677, -0.7071071), (-0.21850812, 0.70710677, -0.6724988), (-0.4156271, 0.70710677, -0.5720616), (-0.57206154, 0.70710677, -0.41562706), (-0.6724987, 0.70710677, -0.21850805), (-0.70710695, 0.70710677, 0), (-0.6724987, 0.70710677, 0.21850805), (-0.57206154, 0.70710677, 0.415627), (-0.415627, 0.70710677, 0.5720615), (-0.21850805, 0.70710677, 0.6724986), (-2.1073424e-8, 0.70710677, 0.7071068), (0.21850799, 0.70710677, 0.6724986), (0.4156269, 0.70710677, 0.5720614), (0.5720614, 0.70710677, 0.41562697), (0.6724985, 0.70710677, 0.21850802), (0.70710677, 0.70710677, 0), (0.55901736, 0.809017, -0.18163574), (0.47552857, 0.809017, -0.3454917), (0.3454917, 0.809017, -0.47552854), (0.18163572, 0.809017, -0.5590173), (0, 0.809017, -0.58778554), (-0.18163572, 0.809017, -0.55901724), (-0.34549165, 0.809017, -0.47552842), (-0.4755284, 0.809017, -0.3454916), (-0.5590171, 0.809017, -0.18163566), (-0.58778536, 0.809017, 0), (-0.5590171, 0.809017, 0.18163566), (-0.47552836, 0.809017, 0.34549156), (-0.34549156, 0.809017, 0.47552833), (-0.18163566, 0.809017, 0.55901706), (-1.7517365e-8, 0.809017, 0.5877853), (0.18163562, 0.809017, 0.55901706), (0.3454915, 0.809017, 0.4755283), (0.47552827, 0.809017, 0.34549153), (0.559017, 0.809017, 0.18163563), (0.58778524, 0.809017, 0), (0.43177092, 0.8910065, -0.14029087), (0.3672863, 0.8910065, -0.2668491), (0.2668491, 0.8910065, -0.36728626), (0.14029086, 0.8910065, -0.43177086), (0, 0.8910065, -0.45399073), (-0.14029086, 0.8910065, -0.43177083), (-0.26684904, 0.8910065, -0.36728618), (-0.36728615, 0.8910065, -0.266849), (-0.43177077, 0.8910065, -0.14029081), (-0.45399064, 0.8910065, 0), (-0.43177077, 0.8910065, 0.14029081), (-0.36728612, 0.8910065, 0.26684898), (-0.26684898, 0.8910065, 0.36728612), (-0.14029081, 0.8910065, 0.4317707), (-1.3529972e-8, 0.8910065, 0.45399058), (0.14029078, 0.8910065, 0.43177068), (0.26684892, 0.8910065, 0.3672861), (0.36728606, 0.8910065, 0.26684895), (0.43177065, 0.8910065, 0.1402908), (0.45399052, 0.8910065, 0), (0.29389283, 0.95105654, -0.095491566), (0.25000018, 0.95105654, -0.18163574), (0.18163574, 0.95105654, -0.25000015), (0.09549155, 0.95105654, -0.2938928), (0, 0.95105654, -0.30901715), (-0.09549155, 0.95105654, -0.29389277), (-0.18163571, 0.95105654, -0.2500001), (-0.2500001, 0.95105654, -0.1816357), (-0.2938927, 0.95105654, -0.09549153), (-0.30901706, 0.95105654, 0), (-0.2938927, 0.95105654, 0.09549153), (-0.25000006, 0.95105654, 0.18163568), (-0.18163568, 0.95105654, 0.25000006), (-0.09549153, 0.95105654, 0.29389268), (-9.209424e-9, 0.95105654, 0.30901703), (0.0954915, 0.95105654, 0.29389265), (0.18163563, 0.95105654, 0.25000003), (0.25, 0.95105654, 0.18163565), (0.29389265, 0.95105654, 0.095491506), (0.309017, 0.95105654, 0), (0.14877813, 0.98768836, -0.048340943), (0.12655823, 0.98768836, -0.09194993), (0.09194993, 0.98768836, -0.12655823), (0.048340935, 0.98768836, -0.14877811), (0, 0.98768836, -0.15643455), (-0.048340935, 0.98768836, -0.1487781), (-0.09194992, 0.98768836, -0.1265582), (-0.12655818, 0.98768836, -0.0919499), (-0.14877807, 0.98768836, -0.048340924), (-0.15643452, 0.98768836, 0), (-0.14877807, 0.98768836, 0.048340924), (-0.12655818, 0.98768836, 0.091949895), (-0.091949895, 0.98768836, 0.12655817), (-0.048340924, 0.98768836, 0.14877805), (-4.6621107e-9, 0.98768836, 0.15643449), (0.04834091, 0.98768836, 0.14877804), (0.09194988, 0.98768836, 0.12655815), (0.12655815, 0.98768836, 0.09194989), (0.14877804, 0.98768836, 0.048340913), (0.15643448, 0.98768836, 0), (0, -1, 0), (0, 1, 0)] + vector3f[] primvars:normals = [(0.19055483, -0.979722, -0.06191525), (0.16209552, -0.979722, -0.11776949), (0.26987028, -0.94272256, -0.19607228), (0.31725168, -0.9427225, -0.10308106), (0.117769316, -0.9797222, -0.16209525), (0.19607219, -0.94272256, -0.26987016), (0.06191498, -0.9797221, -0.19055463), (0.10308122, -0.94272256, -0.31725124), (-3.364468e-8, -0.979722, -0.20036127), (-5.0122537e-8, -0.94272256, -0.33357793), (-0.06191503, -0.9797221, -0.19055498), (-0.10308135, -0.9427225, -0.31725165), (-0.11776939, -0.979722, -0.16209596), (-0.19607234, -0.94272244, -0.26987052), (-0.16209564, -0.97972214, -0.11776961), (-0.2698704, -0.94272244, -0.19607225), (-0.19055481, -0.97972214, -0.06191536), (-0.31725168, -0.94272244, -0.10308145), (-0.20036118, -0.9797221, 0), (-0.3335782, -0.94272244, -2.445003e-9), (-0.1905548, -0.979722, 0.061915364), (-0.31725168, -0.94272244, 0.10308135), (-0.1620956, -0.9797221, 0.11776917), (-0.2698704, -0.94272244, 0.19607206), (-0.11776935, -0.97972214, 0.16209549), (-0.19607231, -0.94272244, 0.26987037), (-0.06191499, -0.9797221, 0.19055465), (-0.10308128, -0.94272244, 0.31725168), (3.878692e-8, -0.97972214, 0.20036079), (8.679761e-8, -0.94272244, 0.3335782), (0.061915062, -0.9797221, 0.19055459), (0.10308137, -0.9427225, 0.31725168), (0.11776939, -0.9797221, 0.16209562), (0.19607231, -0.9427225, 0.26987046), (0.16209565, -0.9797221, 0.11776941), (0.2698704, -0.9427225, 0.1960725), (0.19055483, -0.979722, 0.06191539), (0.3172517, -0.9427223, 0.10308149), (0.2003612, -0.97972214, 5.3155725e-7), (0.33357817, -0.9427225, 2.3716537e-7), (0.38084608, -0.88226575, -0.276701), (0.4477115, -0.8822657, -0.14546996), (0.27670082, -0.88226575, -0.38084605), (0.14547019, -0.8822658, -0.44771138), (-6.0538156e-8, -0.88226575, -0.47075167), (-0.14547038, -0.8822658, -0.4477115), (-0.27670106, -0.8822657, -0.38084617), (-0.3808462, -0.88226575, -0.27670094), (-0.44771162, -0.88226575, -0.14547022), (-0.4707519, -0.8822656, 8.91257e-8), (-0.44771168, -0.8822656, 0.14547035), (-0.38084623, -0.8822656, 0.276701), (-0.2767009, -0.8822657, 0.3808463), (-0.14547026, -0.88226557, 0.4477117), (4.03588e-8, -0.88226557, 0.47075197), (0.14547035, -0.8822656, 0.44771162), (0.27670097, -0.8822656, 0.38084623), (0.3808462, -0.88226557, 0.27670115), (0.44771168, -0.8822657, 0.14547026), (0.47075182, -0.88226575, 1.9338594e-7), (0.48513824, -0.80025196, -0.35247377), (0.57031447, -0.800252, -0.18530576), (0.3524735, -0.80025196, -0.48513845), (0.1853063, -0.80025196, -0.57031435), (-2.8748087e-8, -0.80025184, -0.5996641), (-0.18530652, -0.80025184, -0.57031435), (-0.3524738, -0.8002519, -0.48513836), (-0.4851384, -0.8002518, -0.35247374), (-0.5703144, -0.8002519, -0.18530639), (-0.59966403, -0.80025184, 5.226927e-8), (-0.57031447, -0.8002519, 0.18530646), (-0.48513836, -0.80025184, 0.35247388), (-0.35247368, -0.8002518, 0.4851385), (-0.1853063, -0.80025184, 0.57031447), (0, -0.8002518, 0.5996641), (0.18530637, -0.8002518, 0.57031447), (0.3524738, -0.8002517, 0.48513862), (0.48513848, -0.8002518, 0.35247383), (0.57031447, -0.8002518, 0.18530637), (0.5996641, -0.80025184, 6.272313e-7), (0.5787126, -0.69878876, -0.42045945), (0.6803178, -0.6987887, -0.22104782), (0.42045927, -0.69878864, -0.5787128), (0.22104853, -0.6987885, -0.68031764), (-6.326302e-8, -0.6987885, -0.71532834), (-0.22104874, -0.6987885, -0.6803176), (-0.42045954, -0.6987885, -0.57871264), (-0.57871276, -0.6987885, -0.42045945), (-0.6803177, -0.69878846, -0.22104861), (-0.71532834, -0.6987884, -4.3629678e-9), (-0.68031764, -0.6987886, 0.22104856), (-0.57871276, -0.69878846, 0.42045954), (-0.4204594, -0.69878846, 0.5787129), (-0.22104853, -0.6987884, 0.68031776), (-6.544453e-9, -0.69878846, 0.71532834), (0.22104873, -0.6987886, 0.6803177), (0.4204596, -0.6987884, 0.5787129), (0.5787128, -0.6987884, 0.42045942), (0.68031764, -0.6987884, 0.22104855), (0.71532834, -0.6987884, 7.700638e-7), (0.6588076, -0.5804008, -0.4786518), (0.77447516, -0.5804007, -0.25164133), (0.47865164, -0.58040076, -0.65880775), (0.251642, -0.58040065, -0.7744749), (-1.0327206e-7, -0.5804007, -0.81433105), (-0.2516423, -0.58040076, -0.77447474), (-0.47865197, -0.5804007, -0.6588075), (-0.6588078, -0.5804006, -0.47865167), (-0.7744749, -0.5804006, -0.25164208), (-0.81433105, -0.58040065, -2.2949349e-8), (-0.7744748, -0.58040065, 0.25164208), (-0.6588076, -0.5804007, 0.47865182), (-0.4786517, -0.58040065, 0.65880775), (-0.2516421, -0.5804005, 0.7744749), (7.649785e-9, -0.5804005, 0.8143311), (0.25164223, -0.5804005, 0.7744748), (0.47865188, -0.5804005, 0.65880764), (0.65880775, -0.5804005, 0.4786518), (0.7744749, -0.5804005, 0.25164208), (0.8143312, -0.5804005, 7.955774e-7), (0.7232909, -0.4479936, -0.52550167), (0.85027975, -0.44799364, -0.2762717), (0.52550143, -0.44799367, -0.7232911), (0.27627233, -0.4479938, -0.85027945), (-4.8727664e-8, -0.4479938, -0.8940367), (-0.27627268, -0.4479938, -0.85027933), (-0.5255018, -0.44799376, -0.72329074), (-0.723291, -0.4479937, -0.52550143), (-0.8502794, -0.44799373, -0.27627245), (-0.8940367, -0.44799387, -3.4805485e-8), (-0.85027933, -0.44799384, 0.27627248), (-0.72329086, -0.4479938, 0.52550167), (-0.52550155, -0.44799367, 0.723291), (-0.2762725, -0.4479936, 0.85027945), (1.0441647e-7, -0.44799352, 0.8940367), (0.27627262, -0.44799355, 0.85027945), (0.52550155, -0.44799352, 0.7232909), (0.72329104, -0.44799355, 0.5255016), (0.8502795, -0.4479936, 0.2762725), (0.8940368, -0.44799355, 8.979815e-7), (0.7705239, -0.3047886, -0.5598185), (0.9058056, -0.3047886, -0.29431307), (0.55981827, -0.30478865, -0.7705241), (0.29431382, -0.3047887, -0.9058053), (-6.531397e-9, -0.30478865, -0.95241994), (-0.29431415, -0.30478862, -0.90580523), (-0.5598186, -0.30478868, -0.7705238), (-0.7705241, -0.30478865, -0.5598183), (-0.9058053, -0.3047886, -0.29431394), (-0.95241994, -0.30478874, -1.63285e-8), (-0.9058052, -0.3047887, 0.294314), (-0.77052397, -0.30478838, 0.5598185), (-0.5598184, -0.3047884, 0.7705241), (-0.29431388, -0.30478853, 0.9058053), (1.6001928e-7, -0.30478856, 0.95241994), (0.2943141, -0.30478862, 0.90580523), (0.55981845, -0.3047886, 0.77052397), (0.770524, -0.30478856, 0.55981845), (0.9058053, -0.3047885, 0.29431394), (0.9524201, -0.3047884, 9.209273e-7), (0.79933476, -0.1542486, -0.58075076), (0.9396746, -0.15424868, -0.3053178), (0.5807505, -0.15424871, -0.7993349), (0.3053185, -0.15424871, -0.9396744), (0, -0.15424863, -0.98803204), (-0.3053189, -0.15424865, -0.9396742), (-0.58075094, -0.15424861, -0.7993345), (-0.79933476, -0.15424854, -0.5807505), (-0.9396743, -0.15424845, -0.30531862), (-0.9880321, -0.1542483, 3.1473653e-9), (-0.9396743, -0.1542483, 0.3053187), (-0.79933465, -0.15424842, 0.58075076), (-0.5807506, -0.1542486, 0.79933476), (-0.30531856, -0.15424868, 0.9396744), (7.5536775e-8, -0.15424864, 0.98803204), (0.30531874, -0.15424861, 0.9396743), (0.58075064, -0.15424855, 0.79933476), (0.79933476, -0.1542486, 0.58075064), (0.93967426, -0.15424854, 0.30531868), (0.98803204, -0.15424863, 9.1588316e-7), (0.809017, 3.1095242e-9, -0.58778524), (0.95105684, -1.554763e-9, -0.30901608), (0.58778507, -2.176667e-8, -0.80901706), (0.3090167, -2.1766674e-8, -0.9510566), (0, 0, -1), (-0.30901724, -2.176668e-8, -0.9510565), (-0.5877855, -2.0211916e-8, -0.8090169), (-0.809017, 3.1095257e-9, -0.5877851), (-0.95105654, 1.5547632e-9, -0.30901697), (-0.99999994, -1.554763e-9, 3.109526e-9), (-0.9510564, -3.109526e-9, 0.30901706), (-0.8090169, 0, 0.58778536), (-0.5877852, -1.8657158e-8, 0.8090171), (-0.30901685, -2.4876211e-8, 0.95105654), (0, 0, 0.99999994), (0.30901703, -1.5547632e-9, 0.95105654), (0.5877853, -3.109527e-9, 0.80901706), (0.809017, -1.5547632e-9, 0.58778524), (0.95105654, 0, 0.30901706), (1, 1.5547628e-9, 9.266386e-7), (0.79933476, 0.15424858, -0.58075076), (0.9396746, 0.15424867, -0.3053178), (0.5807505, 0.1542487, -0.7993349), (0.3053185, 0.1542487, -0.9396744), (0, 0.15424864, -0.98803204), (-0.3053189, 0.15424865, -0.9396742), (-0.58075094, 0.15424861, -0.7993345), (-0.7993348, 0.15424857, -0.5807505), (-0.93967444, 0.15424846, -0.30531862), (-0.9880321, 0.1542483, 6.2947305e-9), (-0.9396743, 0.15424828, 0.3053187), (-0.7993347, 0.15424842, 0.58075076), (-0.58075064, 0.15424857, 0.79933476), (-0.30531856, 0.15424863, 0.9396743), (7.8684145e-8, 0.15424864, 0.98803204), (0.30531877, 0.15424864, 0.93967426), (0.5807507, 0.1542486, 0.7993347), (0.79933476, 0.15424861, 0.5807507), (0.93967444, 0.15424857, 0.3053187), (0.98803204, 0.15424863, 9.127358e-7), (0.7705239, 0.30478865, -0.55981857), (0.9058056, 0.30478865, -0.29431307), (0.55981827, 0.30478868, -0.77052414), (0.29431382, 0.3047887, -0.9058053), (-6.531397e-9, 0.30478868, -0.95241994), (-0.29431412, 0.30478865, -0.9058051), (-0.55981857, 0.30478862, -0.7705238), (-0.77052414, 0.30478862, -0.5598183), (-0.9058053, 0.3047886, -0.29431394), (-0.95241994, 0.30478865, -9.797099e-9), (-0.9058053, 0.3047886, 0.294314), (-0.77052397, 0.30478844, 0.5598185), (-0.5598184, 0.3047884, 0.77052414), (-0.29431388, 0.30478853, 0.9058053), (1.6328498e-7, 0.30478856, 0.95241994), (0.29431403, 0.30478862, 0.9058052), (0.55981845, 0.30478862, 0.770524), (0.770524, 0.30478856, 0.55981845), (0.9058053, 0.30478847, 0.29431394), (0.9524201, 0.3047885, 8.9806736e-7), (0.72329086, 0.44799373, -0.52550167), (0.8502798, 0.4479937, -0.2762717), (0.52550143, 0.44799373, -0.72329104), (0.2762724, 0.4479938, -0.8502795), (-4.8727664e-8, 0.4479938, -0.8940367), (-0.27627265, 0.44799381, -0.85027933), (-0.5255018, 0.4479937, -0.72329074), (-0.72329104, 0.4479937, -0.52550143), (-0.8502795, 0.44799376, -0.2762725), (-0.8940367, 0.44799376, -2.7844388e-8), (-0.8502794, 0.44799376, 0.27627248), (-0.72329086, 0.44799376, 0.52550167), (-0.52550155, 0.4479937, 0.723291), (-0.27627254, 0.4479936, 0.85027945), (1.0441647e-7, 0.44799352, 0.8940367), (0.2762726, 0.44799358, 0.8502794), (0.52550155, 0.44799358, 0.723291), (0.723291, 0.44799358, 0.52550155), (0.8502795, 0.44799358, 0.2762725), (0.8940368, 0.4479936, 8.736177e-7), (0.6588076, 0.5804009, -0.47865176), (0.77447504, 0.5804007, -0.2516413), (0.47865167, 0.5804008, -0.65880775), (0.25164196, 0.58040065, -0.7744749), (-9.9447156e-8, 0.5804007, -0.81433094), (-0.25164226, 0.58040076, -0.77447474), (-0.47865197, 0.5804007, -0.6588075), (-0.65880775, 0.58040065, -0.4786517), (-0.77447486, 0.58040065, -0.25164205), (-0.81433105, 0.58040065, -2.2949349e-8), (-0.7744748, 0.58040065, 0.2516421), (-0.6588076, 0.58040065, 0.47865188), (-0.4786517, 0.58040065, 0.6588077), (-0.25164214, 0.5804005, 0.7744749), (5.7373386e-9, 0.58040065, 0.814331), (0.2516423, 0.58040065, 0.77447474), (0.47865182, 0.5804006, 0.65880764), (0.65880764, 0.5804006, 0.47865173), (0.7744749, 0.5804005, 0.25164205), (0.8143312, 0.5804005, 7.9748986e-7), (0.57871246, 0.69878876, -0.42045948), (0.68031776, 0.6987887, -0.22104785), (0.42045924, 0.69878864, -0.57871276), (0.22104855, 0.6987885, -0.6803177), (-6.326302e-8, 0.6987885, -0.71532834), (-0.22104873, 0.6987885, -0.68031764), (-0.4204595, 0.6987885, -0.57871264), (-0.57871276, 0.69878864, -0.42045936), (-0.68031764, 0.6987886, -0.22104856), (-0.71532834, 0.69878846, 0), (-0.6803177, 0.6987886, 0.22104858), (-0.57871276, 0.69878846, 0.42045954), (-0.4204594, 0.69878846, 0.5787129), (-0.2210485, 0.6987884, 0.68031776), (-6.544453e-9, 0.6987884, 0.71532834), (0.22104873, 0.6987886, 0.6803177), (0.4204595, 0.6987884, 0.5787129), (0.57871276, 0.6987884, 0.4204595), (0.68031764, 0.6987884, 0.22104858), (0.7153284, 0.6987884, 7.700639e-7), (0.48513818, 0.8002519, -0.35247388), (0.57031447, 0.80025196, -0.18530583), (0.3524735, 0.8002519, -0.4851385), (0.18530631, 0.80025196, -0.57031435), (-3.1361548e-8, 0.80025196, -0.599664), (-0.18530652, 0.8002519, -0.5703144), (-0.3524738, 0.80025184, -0.48513836), (-0.48513845, 0.8002519, -0.35247365), (-0.5703144, 0.80025196, -0.18530637), (-0.59966403, 0.80025184, 6.010967e-8), (-0.5703144, 0.80025184, 0.18530649), (-0.48513836, 0.8002519, 0.3524738), (-0.35247365, 0.80025184, 0.48513842), (-0.18530631, 0.8002519, 0.5703144), (0, 0.8002518, 0.5996641), (0.18530634, 0.8002518, 0.5703145), (0.3524738, 0.8002517, 0.48513857), (0.48513857, 0.8002517, 0.35247377), (0.57031447, 0.80025184, 0.18530647), (0.5996641, 0.8002518, 6.860343e-7), (0.38084605, 0.8822656, -0.27670118), (0.4477115, 0.88226575, -0.14546995), (0.27670082, 0.8822656, -0.38084638), (0.14547016, 0.8822657, -0.44771147), (-6.642382e-8, 0.8822658, -0.4707516), (-0.14547038, 0.8822658, -0.44771135), (-0.27670103, 0.88226575, -0.38084602), (-0.3808462, 0.8822657, -0.27670082), (-0.44771165, 0.88226575, -0.1454703), (-0.4707519, 0.8822656, 8.91257e-8), (-0.44771162, 0.8822656, 0.14547057), (-0.3808462, 0.8822657, 0.276701), (-0.27670094, 0.88226575, 0.38084617), (-0.14547028, 0.88226557, 0.44771174), (3.9517996e-8, 0.88226557, 0.4707521), (0.14547038, 0.8822656, 0.4477117), (0.276701, 0.8822657, 0.38084623), (0.38084626, 0.8822656, 0.2767011), (0.4477116, 0.88226557, 0.14547035), (0.47075182, 0.88226575, 2.8335245e-7), (0.26987025, 0.94272244, -0.19607252), (0.31725165, 0.9427225, -0.10308105), (0.19607218, 0.9427224, -0.2698706), (0.10308123, 0.94272256, -0.3172515), (-5.0122537e-8, 0.94272256, -0.33357772), (-0.103081346, 0.94272256, -0.3172514), (-0.19607234, 0.94272244, -0.26987028), (-0.26987043, 0.94272256, -0.19607206), (-0.31725168, 0.94272244, -0.10308134), (-0.33357817, 0.94272244, 0), (-0.31725165, 0.94272244, 0.10308159), (-0.26987034, 0.9427225, 0.19607216), (-0.1960723, 0.94272244, 0.26987034), (-0.10308127, 0.9427224, 0.31725186), (8.5575124e-8, 0.9427225, 0.3335782), (0.10308139, 0.94272256, 0.31725168), (0.19607231, 0.94272244, 0.2698704), (0.2698704, 0.9427224, 0.19607238), (0.31725174, 0.9427224, 0.10308139), (0.33357817, 0.94272256, 2.3655411e-7), (0.16209552, 0.9797221, -0.1177691), (0.19055484, 0.9797221, -0.061914824), (0.117769286, 0.9797221, -0.16209552), (0.06191498, 0.97972214, -0.1905549), (-3.4820047e-8, 0.97972214, -0.20036118), (-0.061915036, 0.9797221, -0.19055484), (-0.11776938, 0.97972214, -0.16209547), (-0.1620956, 0.9797222, -0.117768876), (-0.19055478, 0.97972214, -0.061915096), (-0.20036118, 0.9797221, 0), (-0.19055481, 0.979722, 0.06191537), (-0.16209565, 0.9797221, 0.1177694), (-0.117769346, 0.9797221, 0.16209581), (-0.061915006, 0.9797222, 0.19055471), (3.5407755e-8, 0.97972214, 0.20036073), (0.061915062, 0.9797221, 0.19055474), (0.117769405, 0.9797222, 0.16209558), (0.16209568, 0.9797222, 0.11776897), (0.19055487, 0.9797221, 0.061915144), (0.20036116, 0.9797221, 5.303818e-7), (-3.3793834e-9, -1, -1.5952226e-7), (-2.1505167e-9, 1, 2.0883053e-7)] ( + elementSize = 382 + interpolation = "faceVarying" + ) + int[] primvars:normals:indices = [0, 1, 2, 3, 1, 4, 5, 2, 4, 6, 7, 5, 6, 8, 9, 7, 8, 10, 11, 9, 10, 12, 13, 11, 12, 14, 15, 13, 14, 16, 17, 15, 16, 18, 19, 17, 18, 20, 21, 19, 20, 22, 23, 21, 22, 24, 25, 23, 24, 26, 27, 25, 26, 28, 29, 27, 28, 30, 31, 29, 30, 32, 33, 31, 32, 34, 35, 33, 34, 36, 37, 35, 36, 38, 39, 37, 38, 0, 3, 39, 3, 2, 40, 41, 2, 5, 42, 40, 5, 7, 43, 42, 7, 9, 44, 43, 9, 11, 45, 44, 11, 13, 46, 45, 13, 15, 47, 46, 15, 17, 48, 47, 17, 19, 49, 48, 19, 21, 50, 49, 21, 23, 51, 50, 23, 25, 52, 51, 25, 27, 53, 52, 27, 29, 54, 53, 29, 31, 55, 54, 31, 33, 56, 55, 33, 35, 57, 56, 35, 37, 58, 57, 37, 39, 59, 58, 39, 3, 41, 59, 41, 40, 60, 61, 40, 42, 62, 60, 42, 43, 63, 62, 43, 44, 64, 63, 44, 45, 65, 64, 45, 46, 66, 65, 46, 47, 67, 66, 47, 48, 68, 67, 48, 49, 69, 68, 49, 50, 70, 69, 50, 51, 71, 70, 51, 52, 72, 71, 52, 53, 73, 72, 53, 54, 74, 73, 54, 55, 75, 74, 55, 56, 76, 75, 56, 57, 77, 76, 57, 58, 78, 77, 58, 59, 79, 78, 59, 41, 61, 79, 61, 60, 80, 81, 60, 62, 82, 80, 62, 63, 83, 82, 63, 64, 84, 83, 64, 65, 85, 84, 65, 66, 86, 85, 66, 67, 87, 86, 67, 68, 88, 87, 68, 69, 89, 88, 69, 70, 90, 89, 70, 71, 91, 90, 71, 72, 92, 91, 72, 73, 93, 92, 73, 74, 94, 93, 74, 75, 95, 94, 75, 76, 96, 95, 76, 77, 97, 96, 77, 78, 98, 97, 78, 79, 99, 98, 79, 61, 81, 99, 81, 80, 100, 101, 80, 82, 102, 100, 82, 83, 103, 102, 83, 84, 104, 103, 84, 85, 105, 104, 85, 86, 106, 105, 86, 87, 107, 106, 87, 88, 108, 107, 88, 89, 109, 108, 89, 90, 110, 109, 90, 91, 111, 110, 91, 92, 112, 111, 92, 93, 113, 112, 93, 94, 114, 113, 94, 95, 115, 114, 95, 96, 116, 115, 96, 97, 117, 116, 97, 98, 118, 117, 98, 99, 119, 118, 99, 81, 101, 119, 101, 100, 120, 121, 100, 102, 122, 120, 102, 103, 123, 122, 103, 104, 124, 123, 104, 105, 125, 124, 105, 106, 126, 125, 106, 107, 127, 126, 107, 108, 128, 127, 108, 109, 129, 128, 109, 110, 130, 129, 110, 111, 131, 130, 111, 112, 132, 131, 112, 113, 133, 132, 113, 114, 134, 133, 114, 115, 135, 134, 115, 116, 136, 135, 116, 117, 137, 136, 117, 118, 138, 137, 118, 119, 139, 138, 119, 101, 121, 139, 121, 120, 140, 141, 120, 122, 142, 140, 122, 123, 143, 142, 123, 124, 144, 143, 124, 125, 145, 144, 125, 126, 146, 145, 126, 127, 147, 146, 127, 128, 148, 147, 128, 129, 149, 148, 129, 130, 150, 149, 130, 131, 151, 150, 131, 132, 152, 151, 132, 133, 153, 152, 133, 134, 154, 153, 134, 135, 155, 154, 135, 136, 156, 155, 136, 137, 157, 156, 137, 138, 158, 157, 138, 139, 159, 158, 139, 121, 141, 159, 141, 140, 160, 161, 140, 142, 162, 160, 142, 143, 163, 162, 143, 144, 164, 163, 144, 145, 165, 164, 145, 146, 166, 165, 146, 147, 167, 166, 147, 148, 168, 167, 148, 149, 169, 168, 149, 150, 170, 169, 150, 151, 171, 170, 151, 152, 172, 171, 152, 153, 173, 172, 153, 154, 174, 173, 154, 155, 175, 174, 155, 156, 176, 175, 156, 157, 177, 176, 157, 158, 178, 177, 158, 159, 179, 178, 159, 141, 161, 179, 161, 160, 180, 181, 160, 162, 182, 180, 162, 163, 183, 182, 163, 164, 184, 183, 164, 165, 185, 184, 165, 166, 186, 185, 166, 167, 187, 186, 167, 168, 188, 187, 168, 169, 189, 188, 169, 170, 190, 189, 170, 171, 191, 190, 171, 172, 192, 191, 172, 173, 193, 192, 173, 174, 194, 193, 174, 175, 195, 194, 175, 176, 196, 195, 176, 177, 197, 196, 177, 178, 198, 197, 178, 179, 199, 198, 179, 161, 181, 199, 181, 180, 200, 201, 180, 182, 202, 200, 182, 183, 203, 202, 183, 184, 204, 203, 184, 185, 205, 204, 185, 186, 206, 205, 186, 187, 207, 206, 187, 188, 208, 207, 188, 189, 209, 208, 189, 190, 210, 209, 190, 191, 211, 210, 191, 192, 212, 211, 192, 193, 213, 212, 193, 194, 214, 213, 194, 195, 215, 214, 195, 196, 216, 215, 196, 197, 217, 216, 197, 198, 218, 217, 198, 199, 219, 218, 199, 181, 201, 219, 201, 200, 220, 221, 200, 202, 222, 220, 202, 203, 223, 222, 203, 204, 224, 223, 204, 205, 225, 224, 205, 206, 226, 225, 206, 207, 227, 226, 207, 208, 228, 227, 208, 209, 229, 228, 209, 210, 230, 229, 210, 211, 231, 230, 211, 212, 232, 231, 212, 213, 233, 232, 213, 214, 234, 233, 214, 215, 235, 234, 215, 216, 236, 235, 216, 217, 237, 236, 217, 218, 238, 237, 218, 219, 239, 238, 219, 201, 221, 239, 221, 220, 240, 241, 220, 222, 242, 240, 222, 223, 243, 242, 223, 224, 244, 243, 224, 225, 245, 244, 225, 226, 246, 245, 226, 227, 247, 246, 227, 228, 248, 247, 228, 229, 249, 248, 229, 230, 250, 249, 230, 231, 251, 250, 231, 232, 252, 251, 232, 233, 253, 252, 233, 234, 254, 253, 234, 235, 255, 254, 235, 236, 256, 255, 236, 237, 257, 256, 237, 238, 258, 257, 238, 239, 259, 258, 239, 221, 241, 259, 241, 240, 260, 261, 240, 242, 262, 260, 242, 243, 263, 262, 243, 244, 264, 263, 244, 245, 265, 264, 245, 246, 266, 265, 246, 247, 267, 266, 247, 248, 268, 267, 248, 249, 269, 268, 249, 250, 270, 269, 250, 251, 271, 270, 251, 252, 272, 271, 252, 253, 273, 272, 253, 254, 274, 273, 254, 255, 275, 274, 255, 256, 276, 275, 256, 257, 277, 276, 257, 258, 278, 277, 258, 259, 279, 278, 259, 241, 261, 279, 261, 260, 280, 281, 260, 262, 282, 280, 262, 263, 283, 282, 263, 264, 284, 283, 264, 265, 285, 284, 265, 266, 286, 285, 266, 267, 287, 286, 267, 268, 288, 287, 268, 269, 289, 288, 269, 270, 290, 289, 270, 271, 291, 290, 271, 272, 292, 291, 272, 273, 293, 292, 273, 274, 294, 293, 274, 275, 295, 294, 275, 276, 296, 295, 276, 277, 297, 296, 277, 278, 298, 297, 278, 279, 299, 298, 279, 261, 281, 299, 281, 280, 300, 301, 280, 282, 302, 300, 282, 283, 303, 302, 283, 284, 304, 303, 284, 285, 305, 304, 285, 286, 306, 305, 286, 287, 307, 306, 287, 288, 308, 307, 288, 289, 309, 308, 289, 290, 310, 309, 290, 291, 311, 310, 291, 292, 312, 311, 292, 293, 313, 312, 293, 294, 314, 313, 294, 295, 315, 314, 295, 296, 316, 315, 296, 297, 317, 316, 297, 298, 318, 317, 298, 299, 319, 318, 299, 281, 301, 319, 301, 300, 320, 321, 300, 302, 322, 320, 302, 303, 323, 322, 303, 304, 324, 323, 304, 305, 325, 324, 305, 306, 326, 325, 306, 307, 327, 326, 307, 308, 328, 327, 308, 309, 329, 328, 309, 310, 330, 329, 310, 311, 331, 330, 311, 312, 332, 331, 312, 313, 333, 332, 313, 314, 334, 333, 314, 315, 335, 334, 315, 316, 336, 335, 316, 317, 337, 336, 317, 318, 338, 337, 318, 319, 339, 338, 319, 301, 321, 339, 321, 320, 340, 341, 320, 322, 342, 340, 322, 323, 343, 342, 323, 324, 344, 343, 324, 325, 345, 344, 325, 326, 346, 345, 326, 327, 347, 346, 327, 328, 348, 347, 328, 329, 349, 348, 329, 330, 350, 349, 330, 331, 351, 350, 331, 332, 352, 351, 332, 333, 353, 352, 333, 334, 354, 353, 334, 335, 355, 354, 335, 336, 356, 355, 336, 337, 357, 356, 337, 338, 358, 357, 338, 339, 359, 358, 339, 321, 341, 359, 341, 340, 360, 361, 340, 342, 362, 360, 342, 343, 363, 362, 343, 344, 364, 363, 344, 345, 365, 364, 345, 346, 366, 365, 346, 347, 367, 366, 347, 348, 368, 367, 348, 349, 369, 368, 349, 350, 370, 369, 350, 351, 371, 370, 351, 352, 372, 371, 352, 353, 373, 372, 353, 354, 374, 373, 354, 355, 375, 374, 355, 356, 376, 375, 356, 357, 377, 376, 357, 358, 378, 377, 358, 359, 379, 378, 359, 341, 361, 379, 1, 0, 380, 4, 1, 380, 6, 4, 380, 8, 6, 380, 10, 8, 380, 12, 10, 380, 14, 12, 380, 16, 14, 380, 18, 16, 380, 20, 18, 380, 22, 20, 380, 24, 22, 380, 26, 24, 380, 28, 26, 380, 30, 28, 380, 32, 30, 380, 34, 32, 380, 36, 34, 380, 38, 36, 380, 0, 38, 380, 361, 360, 381, 360, 362, 381, 362, 363, 381, 363, 364, 381, 364, 365, 381, 365, 366, 381, 366, 367, 381, 367, 368, 381, 368, 369, 381, 369, 370, 381, 370, 371, 381, 371, 372, 381, 372, 373, 381, 373, 374, 381, 374, 375, 381, 375, 376, 381, 376, 377, 381, 377, 378, 381, 378, 379, 381, 379, 361, 381] + uniform token subdivisionScheme = "none" +}